-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
209 lines (189 loc) · 5.5 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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml
# For more information on DevOps with GNOME technologies, see:
# https://gitlab.gnome.org/GNOME/Initiatives/-/wikis/DevOps-with-Flatpak
- project: "GNOME/citemplates"
file: "flatpak/flatpak_ci_initiative.yml"
variables:
CRATE_NAME: "memories"
TYPOS_UPSTREAM: "https://github.com/crate-ci/typos/releases/download/v1.22.7/typos-v1.22.7-x86_64-unknown-linux-musl.tar.gz"
.devel-variables:
variables:
BUNDLE: "com.maxrdz.Memories.Devel.flatpak"
MANIFEST_PATH: "com.maxrdz.Memories.Devel.json"
FLATPAK_MODULE: "memories"
APP_ID: "com.maxrdz.Memories.Devel"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
.release-variables:
variables:
BUNDLE: "com.maxrdz.Memories.flatpak"
MANIFEST_PATH: "build-aux/flatpak/com.maxrdz.Memories.json"
FLATPAK_MODULE: "memories"
APP_ID: "com.maxrdz.Memories"
RUNTIME_REPO: "https://dl.flathub.org/repo/flathub.flatpakrepo"
stages:
- check
- build
- test
- deploy
.report-runtime: &report-runtime
# Report the installed versions of the runtime
- flatpak info org.gnome.Platform
- flatpak info org.gnome.Sdk
# Print the date, since appstream depends on local timezone
- date && date -u
.build-flatpak: &build-flatpak
- rewrite-flatpak-manifest ${MANIFEST_PATH} ${FLATPAK_MODULE} ${CONFIG_OPTS}
- flatpak-builder --user --disable-rofiles-fuse --force-clean --keep-build-dirs --stop-at=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH}
- flatpak build-finish --socket=x11 --share=network flatpak_app
potfiles:
image: alpine
stage: check
interruptible: true
script:
- apk add --no-cache intltool gettext git
# tldr: If the POTFILES.in isn't up to date, error.
- sh ./build-aux/generate-potfile.sh
- git diff --exit-code ':(exclude)data/demo-album'
commit-validation:
image: 'python:3.12-alpine'
stage: check
interruptible: true
script:
- python build-aux/validate-commit.py "${CI_COMMIT_TITLE}"
typos:
image: alpine
stage: check
interruptible: true
script:
- apk add --no-cache wget tar
- wget ${TYPOS_UPSTREAM}
- mkdir .tmp
- tar -xzf typos-v*.tar.gz -C .tmp/
- ./.tmp/typos
cargo-deny:
image: rust
stage: check
interruptible: true
script:
- cargo install cargo-deny --locked
- cargo deny check
cargo-fmt:
image: 'rust:slim'
stage: check
interruptible: true
script:
- rustup component add rustfmt
# Create blank versions of our configured files
# so rustfmt does not yell about non-existent files or completely empty files
- echo -e "" >> src/config.rs
- rustc -Vv && cargo -Vv
- cargo fmt --version
- cargo fmt --all -- --color=always --check
cargo-clippy:
extends: ['.devel-variables']
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
stage: build
tags:
- flatpak
interruptible: true
script:
- *report-runtime
- *build-flatpak
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak-builder --user --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH} <<END
cargo clippy -- -D warnings
END
cargo-test:
extends: ['.devel-variables']
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
stage: build
tags:
- flatpak
interruptible: true
script:
- *report-runtime
- *build-flatpak
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak-builder --user --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH} <<END
cargo test
END
cargo-doc:
extends: ['.devel-variables']
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
stage: build
tags:
- flatpak
artifacts:
expire_in: 1 week
name: 'Code Documentation'
paths:
- doc
interruptible: true
script:
- *report-runtime
- *build-flatpak
- >
xvfb-run -a -s "-screen 0 1024x768x24"
flatpak-builder --user --disable-rofiles-fuse --build-shell=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH} <<END
ninja src/doc
END
- cp -r .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/src/doc doc
- chmod -R a=rwx doc
flatpak@x86_64:
extends: ['.flatpak@x86_64', '.devel-variables']
stage: build
interruptible: true
artifacts:
expire_in: 1 week
variables:
RUN_TESTS: "0"
CONFIG_OPTS: "-Dprofile=devel"
flatpak@aarch64:
extends: ['.flatpak@aarch64', '.devel-variables']
stage: build
interruptible: true
artifacts:
expire_in: 1 week
variables:
RUN_TESTS: "0"
CONFIG_OPTS: "-Dprofile=devel"
sast:
stage: test
nightly@x86_64:
extends: ".publish_nightly"
stage: deploy
tags:
- flatpak
dependencies:
- flatpak@x86_64
nightly@aarch64:
extends: ".publish_nightly"
stage: deploy
tags:
- flatpak
dependencies:
- flatpak@aarch64
pages:
stage: deploy
dependencies:
- cargo-doc
script:
- mkdir public
- mv doc/* public
- cd public
# Make an index.html file in the `public/` dir to reroute to
# the `memories` subdirectory where the actual documentation is at.
# This makes the user not encounter a 404 at the root of the pages site.
- touch index.html
- echo "<meta http-equiv=\"refresh\" content=\"0; url=${CRATE_NAME}\">" > index.html
artifacts:
expire_in: 1 week
paths:
# GitLab Pages only deploys build under "public" directory.
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH