Loading .gitlab-ci.yml +31 −101 Original line number Diff line number Diff line stages: - test - acceptance - build - publish include: - project: dom/project-templates file: /pipeline-templates/pre-commit.yml - project: dom/project-templates ref: tmp file: /pipeline-templates/python-package.yml image: python:3.8 .python: image: python:3.12 variables: PIP_CACHE_DIR: $CI_PROJECT_DIR/.cache/pip PIP_CACHE_DIR: $CI_PROJECT_DIR/cache/pkg PIP_NO_COMPILE: "true" PIP_NO_CLEAN: "true" cache: key: all paths: - .cache/ - .eggs/ key: $CI_JOB_IMAGE paths: [cache] # Unit Tests .unittest: stage: test image: python:$PY_VERSION Loading @@ -36,22 +35,24 @@ cache: junit: results.$PY_VERSION/junit.xml Unit Tests (Py 3.10): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.10' Unit Tests (Py 3.11): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.11' Unit Tests (Py 3.12): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.12' publish:unittests: stage: publish Publish Unit Tests: stage: deploy extends: [.python] when: always dependencies: &unittests - Unit Tests (Py 3.10) Loading @@ -72,10 +73,9 @@ publish:unittests: junit: junit.xml # Aggregate Coverage coverage: stage: acceptance Aggregate Coverage: stage: test extends: [.python] when: always dependencies: *unittests needs: *unittests Loading @@ -89,11 +89,13 @@ coverage: paths: - results publish:coverage: stage: publish Publish Coverage: stage: deploy extends: [.python] when: always dependencies: [coverage] needs: [coverage] dependencies: [Aggregate Coverage] needs: [Aggregate Coverage] script: - pip install --upgrade coverage - coverage html --fail-under=0 -d results/coverage.html Loading @@ -102,75 +104,3 @@ publish:coverage: when: always paths: - results # Quality Assurance Code Analysis: stage: test variables: FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - when: always before_script: - pip install pre-commit script: - git fetch $CI_REPOSITORY_URL $FROM_REF:FROM_REF -f - pre-commit run --hook-stage=commit --from-ref=FROM_REF --to-ref=${CI_COMMIT_SHA} Commit Graph Analysis: stage: test variables: FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_TRIGGERED == "merge_request_event" before_script: - pip install pre-commit script: - pre-commit run --hook-stage=push --from-ref=FROM_REF --to-ref=${CI_COMMIT_SHA} # Package publishing Check Tag: stage: test rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - test `./setup.py --version` == ${CI_COMMIT_TAG#v} Build Packages: stage: build script: - ./setup.py bdist_wheel sdist artifacts: paths: - dist Upload Packages: stage: publish rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ dependencies: - Build Packages script: - pip install twine - TWINE_PASSWORD=$CI_JOB_TOKEN TWINE_USERNAME=gitlab-ci-token twine upload --verbose --non-interactive --repository-url $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi dist/* Loading
.gitlab-ci.yml +31 −101 Original line number Diff line number Diff line stages: - test - acceptance - build - publish include: - project: dom/project-templates file: /pipeline-templates/pre-commit.yml - project: dom/project-templates ref: tmp file: /pipeline-templates/python-package.yml image: python:3.8 .python: image: python:3.12 variables: PIP_CACHE_DIR: $CI_PROJECT_DIR/.cache/pip PIP_CACHE_DIR: $CI_PROJECT_DIR/cache/pkg PIP_NO_COMPILE: "true" PIP_NO_CLEAN: "true" cache: key: all paths: - .cache/ - .eggs/ key: $CI_JOB_IMAGE paths: [cache] # Unit Tests .unittest: stage: test image: python:$PY_VERSION Loading @@ -36,22 +35,24 @@ cache: junit: results.$PY_VERSION/junit.xml Unit Tests (Py 3.10): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.10' Unit Tests (Py 3.11): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.11' Unit Tests (Py 3.12): extends: [.unittest] extends: [.python, .unittest] variables: PY_VERSION: '3.12' publish:unittests: stage: publish Publish Unit Tests: stage: deploy extends: [.python] when: always dependencies: &unittests - Unit Tests (Py 3.10) Loading @@ -72,10 +73,9 @@ publish:unittests: junit: junit.xml # Aggregate Coverage coverage: stage: acceptance Aggregate Coverage: stage: test extends: [.python] when: always dependencies: *unittests needs: *unittests Loading @@ -89,11 +89,13 @@ coverage: paths: - results publish:coverage: stage: publish Publish Coverage: stage: deploy extends: [.python] when: always dependencies: [coverage] needs: [coverage] dependencies: [Aggregate Coverage] needs: [Aggregate Coverage] script: - pip install --upgrade coverage - coverage html --fail-under=0 -d results/coverage.html Loading @@ -102,75 +104,3 @@ publish:coverage: when: always paths: - results # Quality Assurance Code Analysis: stage: test variables: FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - when: always before_script: - pip install pre-commit script: - git fetch $CI_REPOSITORY_URL $FROM_REF:FROM_REF -f - pre-commit run --hook-stage=commit --from-ref=FROM_REF --to-ref=${CI_COMMIT_SHA} Commit Graph Analysis: stage: test variables: FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_TRIGGERED == "merge_request_event" before_script: - pip install pre-commit script: - pre-commit run --hook-stage=push --from-ref=FROM_REF --to-ref=${CI_COMMIT_SHA} # Package publishing Check Tag: stage: test rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - test `./setup.py --version` == ${CI_COMMIT_TAG#v} Build Packages: stage: build script: - ./setup.py bdist_wheel sdist artifacts: paths: - dist Upload Packages: stage: publish rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ dependencies: - Build Packages script: - pip install twine - TWINE_PASSWORD=$CI_JOB_TOKEN TWINE_USERNAME=gitlab-ci-token twine upload --verbose --non-interactive --repository-url $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi dist/*