diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..f1723d7772df9d8b0ad5fe6c0551619aebb38da5 --- /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 \ No newline at end of file diff --git a/Makefile b/Makefile index 7ffe9c89c13de8e85638e529333bdf6b390486ef..6a37ddcd55067696dd619ab6d98059ab4164ccc0 100644 --- a/Makefile +++ b/Makefile @@ -105,7 +105,12 @@ show-version: FORCE #------------------------------------------------------------------------------- -deps: deps-python +deps: deps-python deps-python-dev + +deps-python-dev: FORCE + @echo "\n$(GREEN)*** Installing Python development dependencies ***$(NC)\n" + @pip3 install -r requirements-dev.pip + deps-python: FORCE @echo "\n${GREEN}*** Installing Python dependencies ***${NC}\n" diff --git a/requirements-dev.pip b/requirements-dev.pip new file mode 100644 index 0000000000000000000000000000000000000000..40ac01bc8e600249217704e4d5b5f6bf9334bd32 --- /dev/null +++ b/requirements-dev.pip @@ -0,0 +1,11 @@ +ipranges +typedcols +setuptools +wheel +twine +docutils<0.18 +nose==1.3.7 +pyflakes==2.1.0 +pylint==2.2.2 +sphinx==1.8.4 +sphinx-rtd-theme==0.4.2