-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
140 lines (127 loc) · 2.43 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
variables:
FF_USE_FASTZIP: "true"
CACHE_COMPRESSION_LEVEL: "fastest"
ARTIFACT_COMPRESSION_LEVEL: "fast"
stages:
- build
- test
- lint
- tag
- release
- audit
- benchmark
build:
stage: build
script: cargo build
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
test:
stage: test
script: cargo test --tests
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
doc-test:
stage: test
script: cargo test --doc
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
clippy:
stage: lint
script: cargo clippy
allow_failure: true
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
format:
stage: lint
script: cargo fmt --check
allow_failure: true
tag:
stage: tag
rules:
- if: $CI_COMMIT_TITLE =~ /\d\.\d\.\d/
- if: $CI_COMMIT_TAG
when: never
script:
- git tag -a v$CI_COMMIT_TITLE $CI_COMMIT_ID -m "CI automated tag"
- git push https://kyra.nz/multisql/multisql.git v$CI_COMMIT_TITLE
publish:
stage: release
script: cargo publish
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_TAG
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
release:
stage: release
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_TAG
script:
- echo releasing version
release:
name: v$CI_COMMIT_TAG
description: "Automatic Release: v$CI_COMMIT_TAG"
tag_name: $CI_COMMIT_TAG
ref: $CI_COMMIT_SHA
benchmark:
stage: benchmark
script: cargo bench
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
artifacts:
paths:
- target/criterion/
coverage:
stage: audit
script: cargo tarpaulin --out Xml
coverage: '/^\d+.\d+% coverage/'
cache:
- key: $CI_PROJECT_ID
paths:
- target/
- Cargo.lock
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: cobertura.xml
paths:
- cobertura.xml
licenses:
stage: audit
script:
- cargo license --tsv > licenses.tsv
- cat licenses.tsv
artifacts:
paths:
- licenses.tsv
updates:
stage: audit
script:
- cargo outdated > updates.txt
- cat updates.txt
- "[[ $(wc -l <updates.txt) != 2 ]] && exit 1"
allow_failure: true
artifacts:
when: always
paths:
- updates.txt