# Official language image. Look for the different tagged releases at: # https://hub.docker.com/r/library/python/tags/ image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:3.7 # Change pip's cache directory to be inside the project directory since we can # only cache local items. variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" # Pip's cache doesn't store the python packages # https://pip.pypa.io/en/stable/reference/pip_install/#caching # # If you want to also cache the installed packages, you have to install # them in a virtualenv and cache it as well. cache: paths: - .cache/pip - venv/ before_script: - pip install virtualenv - make show-version # Print out python version for debugging - virtualenv venv - source venv/bin/activate - make deps stages: # List of stages for jobs, and their order of execution - test - check-warnings - build - deploy unit-test-job: stage: test script: - make test 2>&1 | tee errors.log artifacts: when: always paths: - errors.log reports: junit: nosetests.xml pylint-test-job: stage: test script: - make pylint pyflakes-test-job: stage: test script: - make pyflakes check-deprecation-warnings: before_script: [] stage: check-warnings script: - "if [[ $(grep DeprecationWarning errors.log) ]]; then cat errors.log; exit 1; fi" allow_failure: true build-job: stage: build script: - make buildbot - git clone https://gitlab-ci-token:$SIGNER_TOKEN@$SIGNER_REPO - bash signer/init_keyring.sh - python signer/signer.py --verbose $GPG_KEY "$PWD/dist" artifacts: paths: - dist only: - devel - master sphinx-metadata-job: stage: build script: - printf "{\n\"codename\":\"$CI_COMMIT_BRANCH\",\n" > metadata.json - printf "\"suite\":$(if [ "$CI_COMMIT_BRANCH" == "master" ]; then echo \"stable\"; else echo \"unstable\"; fi),\n" >> metadata.json - printf "\"bversion\":\"$(make show-version)\",\n" >> metadata.json - printf "\"revision\":\"$CI_COMMIT_SHA\",\n" >> metadata.json - printf "\"bnumber\":\"$CI_PIPELINE_ID\",\n" >> metadata.json - printf "\"bdate\":\"$(date '+%Y-%m-%d %T')\"\n}\n" >> metadata.json artifacts: paths: - metadata.json only: - master - devel twine-job: stage: deploy script: - printf "[pypi]\nusername = __token__\npassword = $TWINE_TOKEN\n" > .pypirc - mkdir dist2 - cp dist/*.whl dist/*.tar.gz dist2/. - twine upload 'dist2/*' --skip-existing --config-file .pypirc only: - master pages: stage: deploy script: - make docs - curl -L --header "JOB-TOKEN:$CI_JOB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/devel/download?job=pages" -o devel.zip - curl -L --header "JOB-TOKEN:$CI_JOB_TOKEN" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/master/download?job=pages" -o master.zip - unzip -n '*.zip' || true # Ignore not existing zipfiles - mkdir -p public/"$CI_COMMIT_BRANCH" - mkdir -p public/"$CI_COMMIT_BRANCH"/files - cp -rf doc/_build/html public/"$CI_COMMIT_BRANCH" - cp -rf dist/* public/"$CI_COMMIT_BRANCH"/files/. - cd public/"$CI_COMMIT_BRANCH"/files - echo "<html><body><h1>Directory listing:</h1>" > ./index.html - find -exec echo "<a href='{}'>{}</a><br/>" \; | sort >> ./index.html - echo "</body></html>" >> ./index.html artifacts: name: "$CI_COMMIT_BRANCH" paths: - public only: - master - devel