Verified Commit f7d815fc authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Tidy CI config and use templates for some jobs

parent 43b8a4ba
Loading
Loading
Loading
Loading
+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
@@ -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)
@@ -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
@@ -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
@@ -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/*