diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..234600a7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,60 @@ +stages: + - lint_test + - build_release +lint: + image: python:3.11 + interruptible: true + only: + - merge_requests + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-lint + - make lint + stage: lint_test +test: + artifacts: + reports: + coverage_report: + coverage_format: cobertura + path: coverage.xml + image: python:3.11 + interruptible: true + only: + - merge_requests + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-tests + - make tests + stage: lint_test +package: + image: python:3.11 + interruptible: true + only: + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-package + - make build + - make upload + stage: build_release +pages: + artifacts: + paths: + - public + except: + refs: + - schedules + image: python:3.11 + interruptible: true + only: + changes: + - docs/**/* + refs: + - master + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - make dev-docs + - make docs + stage: build_release diff --git a/.gitlab-ci.yml.jinja b/.gitlab-ci.yml.jinja new file mode 100644 index 00000000..9f812d03 --- /dev/null +++ b/.gitlab-ci.yml.jinja @@ -0,0 +1,60 @@ +stages: + - lint_test + - build_release +lint: + image: {{ ci_image }} + interruptible: true + only: + - merge_requests + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-lint + - make lint + stage: lint_test +test: + artifacts: + reports: + coverage_report: + coverage_format: cobertura + path: coverage.xml + image: {{ ci_image }} + interruptible: true + only: + - merge_requests + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-tests + - make tests + stage: lint_test +package: + image: {{ ci_image }} + interruptible: true + only: + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - env | sort + - make dev-package + - make build + - make upload + stage: build_release +pages: + artifacts: + paths: + - public + except: + refs: + - schedules + image: {{ ci_image }} + interruptible: true + only: + changes: + - docs/**/* + refs: + - master + - /^v(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$/ + script: + - make dev-docs + - make docs + stage: build_release diff --git a/.vscode/settings.json b/.vscode/settings.json index 8d7eb29a..a56522a8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -72,7 +72,13 @@ "repo_name", "package_name", "module_name", - "test_coverage_threshold" + "ci_image", + "test_coverage_threshold", + "stages", + "lint", + "test", + "package", + "pages" ], "vscode-yaml-sort.noCompatMode": true, "vscode-yaml-sort.sortOnSave": 2, diff --git a/copier.yaml b/copier.yaml index 10706a20..2e94210e 100644 --- a/copier.yaml +++ b/copier.yaml @@ -41,6 +41,10 @@ module_name: default: '{{ package_name|lower|replace("-", "_") }}' help: 'Module name:' type: str +ci_image: + default: python:3.11 + help: 'Container image to run CI:' + type: str test_coverage_threshold: default: 100 help: 'Threshold for test coverage:'