From f48d16300ec039eb658024dd7c785d7c87f2db36 Mon Sep 17 00:00:00 2001 From: Rajmund Hruska <rajmund.hruska@cesnet.cz> Date: Mon, 2 May 2022 12:20:04 +0000 Subject: [PATCH] Add GitLab CI/CD --- .gitlab-ci.yml | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4def72d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,108 @@ +# 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.6 + +# 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 + - build + - deploy + +unit-test-job: + stage: test + script: + - make test + +pylint-test-job: + stage: test + script: + - make pylint + +pyflakes-test-job: + stage: test + script: + - make pyflakes + +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 -- GitLab