spawner/.gitlab-ci.yml

93 lines
1.8 KiB
YAML

image: python:3.10
stages:
- build
- linter
- tests
- deploy
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
# Trigger only if python file changes
.py_changes: &py_changes
only:
refs:
- merge_requests
- branches
- tags
changes:
- .gitlab-ci.yml
- "**/*.py"
.poetry: &poetry
<<: *py_changes
before_script:
- python -m pip install poetry>=1.7
- poetry config virtualenvs.in-project true
- poetry install
# Build
Poetry install:
stage: build
<<: *poetry
script:
- poetry version
# Linter
Ruff check:
stage: linter
<<: *poetry
script:
- poetry run ruff check .
Ruff format:
stage: linter
<<: *poetry
script:
- poetry run ruff format
# Tests
Pytest:
stage: tests
<<: *poetry
script:
- poetry run pytest
--cov-report xml:coverage.xml
--junitxml=report.xml
coverage: '/^TOTAL\s+\d+\s+\d+\s+(\d+\%)$/'
artifacts:
expire_in: 1 day
reports:
junit: report.xml
coverage_report:
coverage_format: cobertura
path: coverage.xml
# Deployment
Deploy2PyPI:
stage: deploy
cache: {}
rules:
- if: '$CI_COMMIT_TAG =~ /^(v|V)?(\d+)(\.\d+)+?$/ && $PYPI_TOKEN'
variables:
POETRY_PYPI_TOKEN_PYPI: $PYPI_TOKEN
before_script:
- python -m pip install poetry>=1.7
script:
- poetry publish --build
environment:
name: PyPI
url: https://pypi.org/project/glicid-spawner/
Deploy2SWH:
stage: deploy
cache: {}
rules:
- if: '$CI_COMMIT_TAG =~ /^(v|V)?(\d+)(\.\d+)+?$/'
script:
- curl -X POST https://archive.softwareheritage.org/api/1/origin/save/git/url/${CI_PROJECT_URL}/
environment:
name: Software Heritage
url: https://archive.softwareheritage.org/browse/origin/?origin_url=${CI_PROJECT_URL}