Skip to content
Snippets Groups Projects
Commit 7184c07b authored by Marc-Antoine Drouin's avatar Marc-Antoine Drouin
Browse files

ci: add CI configuration

parent 57a5114b
No related branches found
No related tags found
No related merge requests found
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
# https://pip.pypa.io/en/stable/topics/caching/
cache:
paths:
- .cache/pip
- .cache/pre-commit
before_script:
- python --version ; pip --version
- pip install virtualenv
- virtualenv venv
- source venv/bin/activate
stages:
- quality
- test
- release
- docs
pre-commit:
stage: quality
image: python:3.12
script:
- pip install pre-commit
- pre-commit run --all-files
ruff:
stage: quality
image: python:3.12
script:
- pip install ruff
- ruff check --output-format=gitlab src/cigas_ptrms tests > gl-code-quality-report.json
artifacts:
reports:
codequality: gl-code-quality-report.json
mypy:
stage: quality
image: python:3.12
script:
- pip install .[dev]
- mypy src/cigas_ptrms tests
allow_failure: true
test:
stage: test
image: python:$PYTHON_VERSION
needs: ["pre-commit", "ruff"]
script:
- pip install -e .[dev]
- pytest
coverage: '/\d+\%\s*$/'
artifacts:
when: always
reports:
junit: coverage.xml
parallel:
matrix:
- PYTHON_VERSION: ["3.11", "3.12"]
deploy:
stage: release
image: python:3.12
needs: ["test"]
script:
- pip install build twine
- python -m build
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
only:
- tags
artifacts:
paths:
- dist
when: on_success
expire_in: "1 week"
prepare_release:
stage: release
image: python:3.12
needs:
- deploy
rules:
- if: '$CI_COMMIT_TAG =~ /^?\d+\.\d+\.\d+$/'
script:
- pip install generate-changelog
- generate-changelog -o notes -t $CI_COMMIT_TAG > release_notes.md
artifacts:
paths:
- release_notes.md
release_job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- job: prepare_release
artifacts: true
rules:
- if: '$CI_COMMIT_TAG =~ /^?\d+\.\d+\.\d+$/'
before_script:
- ""
script:
- echo "Creating release"
release:
name: "Release $CI_COMMIT_TAG"
description: release_notes.md
tag_name: "$CI_COMMIT_TAG"
ref: "$CI_COMMIT_SHA"
pages:
stage: docs
image: python:3.12
needs: ["test"]
script:
- pip install .[docs]
- cd docs
- make html
- mv build/html ../public
artifacts:
paths:
- public
only:
- main
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment