-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
149 lines (123 loc) · 3.11 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# SPDX-FileCopyrightText: Magenta ApS <https://magenta.dk>
# SPDX-License-Identifier: MPL-2.0
stages:
- sync
- lint
- build
- test
- coverage
- release
- docs
variables:
IMAGE_SHA: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}
PYTEST_COV_MODULE: fastramqpi
PYTEST_COV_FAIL_UNDER: 100
PRECOMMIT_USE_POETRY: "true"
POETRY_VERSION: "1.7.1"
# Conditions
#############
# Global Conditions
.if-default-branch-refs: &if-default-branch-refs
if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
.if-tag: &if-tag
if: '$CI_COMMIT_TAG'
.if-tag-semver: &if-tag-semver
if: '$CI_COMMIT_TAG =~ /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/'
.if-merge-request: &if-merge-request
if: '$CI_MERGE_REQUEST_IID'
include:
- project: labs/salt-automation
file:
- gitlab-ci-templates/common/no-interrupt.v1.yml
- gitlab-ci-templates/common/conventional-commits.v1.yml
- gitlab-ci-templates/common/conventional-commits-changelog-meta.v1.yml
- gitlab-ci-templates/python/pypi-cc.v1.yml
- project: rammearkitektur/os2mo
file:
- gitlab-ci-templates/integration-test-meta.v1.yml
- project: labs/salt-automation
file:
- gitlab-ci-templates/common/pre-commit.v1.yml
rules:
- <<: *if-merge-request
- project: labs/salt-automation
file:
- gitlab-ci-templates/python/pytest.v1.yml
inputs:
pytest_addopts: "-m 'not integration_test'"
rules:
- <<: *if-merge-request
# Workflow
###########
workflow:
rules:
- <<: *if-tag
- <<: *if-default-branch-refs
- <<: *if-merge-request
Integration-test:
extends:
- .integration-test:mo
rules:
- <<: *if-merge-request
# Docs
#######
.docs:rules:deploy-master-docs:
rules:
- <<: *if-tag-semver
when: never
- <<: *if-default-branch-refs
Export Changelog:
extends:
- .docs:export-changelog
variables:
CHANGELOG_EXTRA_FLAGS: --start-rev=6.0.0
rules:
- <<: *if-merge-request
- !reference [".docs:rules:deploy-master-docs", rules]
.build-docs:
stage: docs
needs:
- Export Changelog
image: python:3.10
variables:
POETRY_VERSION: 1.3.2
POETRY_VIRTUALENVS_CREATE: "false"
before_script:
- pip3 install poetry==${POETRY_VERSION}
- cd docs && poetry install --no-interaction
script:
- cat $CI_PROJECT_DIR/.changelog.md >> src/changelog.md
- mkdocs build --strict --site-dir=$CI_PROJECT_DIR/site
artifacts:
paths:
- $CI_PROJECT_DIR/site
expire_in: 1 week
rules:
- <<: *if-merge-request
- !reference [".docs:rules:deploy-master-docs", rules]
Build and deploy branch docs:
extends:
- .build-docs
environment:
name: docs/$CI_COMMIT_REF_SLUG
url: $CI_JOB_URL/artifacts/file/site/index.html
auto_stop_in: 1 week
rules:
- <<: *if-merge-request
Build master docs:
extends:
- .build-docs
- .docs:rules:deploy-master-docs
# To release to GitLab Pages, the job must be called 'pages'
pages:
stage: docs
extends:
- .docs:rules:deploy-master-docs
needs:
- Build master docs
image: alpine:latest
script:
- cp -r $CI_PROJECT_DIR/site public
artifacts:
paths:
- public/