diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 189a3b8..f640bd9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,168 +1,168 @@ stages: - docker - build - test - deploy variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG GIT_SUBMODULE_STRATEGY: recursive BUILD_DIR: build-release cache: key: "$CI_COMMIT_REF_SLUG" # ------------------------------------------------------------------------------ .docker_build: stage: docker image: docker:19.03.12 services: - docker:19.03.12-dind variables: # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $IMAGE_TAG-$IMAGE_NAME -f $DOCKERFILE . - docker push $IMAGE_TAG-$IMAGE_NAME rules: - changes: - $DOCKERFILE docker build:debian: variables: IMAGE_NAME: debian-stable DOCKERFILE: tests/ci/docker/debian.mpi extends: .docker_build docker build:manylinux: variables: IMAGE_NAME: manylinux DOCKERFILE: tests/ci/docker/manylinux extends: .docker_build docker build:cuda: variables: IMAGE_NAME: cuda DOCKERFILE: tests/ci/docker/ubuntu_lts.cuda extends: .docker_build # ------------------------------------------------------------------------------ .debian_stable: image: $IMAGE_TAG-debian-stable .manylinux: image: $IMAGE_TAG-manylinux .cuda: image: $IMAGE_TAG-cuda # ------------------------------------------------------------------------------ .build: stage: build variables: COMPILE_LOG: compilation.log script: - scons 2>&1 | tee $COMPILE_LOG artifacts: paths: - build-setup.conf - $COMPILE_LOG - $BUILD_DIR - config.log build_mpi: extends: - .build - .debian_stable before_script: - scons build_tests=True use_googletest=True build_python=True py_exec=python3 use_mpi=True backend=omp fftw_threads=omp verbose=True -h build_cuda: extends: - .build - .cuda before_script: - scons build_tests=True use_googletest=True build_python=True py_exec=python3 use_mpi=False backend=cuda fftw_threads=none verbose=True -h # ------------------------------------------------------------------------------ test_mpi: stage: test dependencies: - build_mpi extends: .debian_stable variables: PYTHONPATH: $CI_PROJECT_DIR/$BUILD_DIR/python TESTS: $BUILD_DIR/tests JUNITXML: results.xml TESTS_LOG: tests.log script: - ls $PYTHONPATH - python3 -c 'import sys; print(sys.path)' - python3 -m pytest -vvv --durations=0 --junitxml=$JUNITXML $TESTS 2>&1 | tee $TESTS_LOG artifacts: paths: - $JUNITXML - $TESTS_LOG reports: junit: - $JUNITXML # ------------------------------------------------------------------------------ wheels: stage: build extends: .manylinux script: - ./tests/ci/build_wheels.sh artifacts: paths: - dist/wheelhouse rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG =~ /^v.*/' # ------------------------------------------------------------------------------ gitlab_package: stage: deploy extends: .manylinux + needs: [wheels] dependencies: - wheels script: - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --verbose --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/wheelhouse/* - rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' pypi_package: stage: deploy extends: .manylinux + needs: [wheels] dependencies: - wheels script: - TWINE_PASSWORD=${PYPI_TOKEN} TWINE_USERNAME=__token__ python -m twine upload dist/wheelhouse/* rules: - if: '$CI_COMMIT_TAG =~ /^v.*/'