Loading .gitlab-ci.yml 0 → 100644 +96 −0 Original line number Diff line number Diff line stages: - test - build - publish image: python:3.9 variables: PIP_CACHE_DIR: $CI_PROJECT_DIR/cache/pkg PRE_COMMIT_HOME: $CI_PROJECT_DIR/cache/pre-commit .cached-pkgs: cache: key: $CI_JOB_IMAGE paths: [cache/pkg] Code Checks: stage: test image: docker.kodo.org.uk/ci-images/pre-commit:2.15.0-1 cache: key: $CI_JOB_NAME paths: [cache] variables: HOOK_STAGE: commit FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_SOURCE == "push" - if: $CI_PIPELINE_SOURCE == "merge_request_event" variables: HOOK_STAGE: merge-commit script: - git fetch $CI_REPOSITORY_URL $FROM_REF:FROM_REF -f - pre-commit run --hook-stage=$HOOK_STAGE --from-ref=FROM_REF --to-ref=HEAD Commit Graph Check: extends: ["Code Checks"] variables: HOOK_STAGE: push rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_SOURCE == "merge_request_event" Check Tag: stage: test extends: [.cached-pkgs] rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - pip install tomli packaging - | python <<-END import tomli from packaging.version import Version with open("pyproject.toml", "rb") as f: proj = tomli.load(f) assert Version("$CI_COMMIT_TAG") == Version(proj["tool"]["poetry"]["version"]) END Build Package: stage: build extends: [.cached-pkgs] script: - pip install build - python -m build artifacts: paths: [dist] Upload Package: stage: publish extends: [.cached-pkgs] rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - pip install twine - TWINE_USERNAME=gitlab-ci-token TWINE_PASSWORD=$CI_JOB_TOKEN twine upload --verbose --non-interactive --repository-url $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi dist/* Loading
.gitlab-ci.yml 0 → 100644 +96 −0 Original line number Diff line number Diff line stages: - test - build - publish image: python:3.9 variables: PIP_CACHE_DIR: $CI_PROJECT_DIR/cache/pkg PRE_COMMIT_HOME: $CI_PROJECT_DIR/cache/pre-commit .cached-pkgs: cache: key: $CI_JOB_IMAGE paths: [cache/pkg] Code Checks: stage: test image: docker.kodo.org.uk/ci-images/pre-commit:2.15.0-1 cache: key: $CI_JOB_NAME paths: [cache] variables: HOOK_STAGE: commit FROM_REF: $CI_DEFAULT_BRANCH rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_SOURCE == "push" - if: $CI_PIPELINE_SOURCE == "merge_request_event" variables: HOOK_STAGE: merge-commit script: - git fetch $CI_REPOSITORY_URL $FROM_REF:FROM_REF -f - pre-commit run --hook-stage=$HOOK_STAGE --from-ref=FROM_REF --to-ref=HEAD Commit Graph Check: extends: ["Code Checks"] variables: HOOK_STAGE: push rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: FROM_REF: $CI_COMMIT_BEFORE_SHA - if: $CI_PIPELINE_SOURCE == "merge_request_event" Check Tag: stage: test extends: [.cached-pkgs] rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - pip install tomli packaging - | python <<-END import tomli from packaging.version import Version with open("pyproject.toml", "rb") as f: proj = tomli.load(f) assert Version("$CI_COMMIT_TAG") == Version(proj["tool"]["poetry"]["version"]) END Build Package: stage: build extends: [.cached-pkgs] script: - pip install build - python -m build artifacts: paths: [dist] Upload Package: stage: publish extends: [.cached-pkgs] rules: - if: $CI_COMMIT_TAG =~ /^v[0-9]/ script: - pip install twine - TWINE_USERNAME=gitlab-ci-token TWINE_PASSWORD=$CI_JOB_TOKEN twine upload --verbose --non-interactive --repository-url $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi dist/*