-
Notifications
You must be signed in to change notification settings - Fork 3
/
.gitlab-ci.yml
142 lines (126 loc) · 3.85 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
# .gitlab-ci.yml -- to test some source code build scenarios
# Copyright (C) 2016-2020 Olaf Meeuwissen
#
# License: GPL-3.0+
variables:
REGISTRY_HUB: "registry.gitlab.com/sane-project/ci-envs"
CONFIGURE_MINI: "--enable-silent-rules"
CONFIGURE_FULL: "--with-usb --with-usb-record-replay --with-avahi --enable-pnm-backend --with-libcurl --with-poppler-glib"
stages:
- tarball
- compile
- snapshot
- release
# This job creates the source tarball that is the *sole* input to our
# compile stage. The job is meant to be run on the stable release of
# Debian GNU/Linux.
make-dist:
image: $REGISTRY_HUB:debian-buster-mini
stage: tarball
script:
- git ls-files | xargs ./tools/style-check.sh
- ./autogen.sh
- ./tools/create-changelog.sh
- ./configure
- make dist
artifacts:
paths:
- sane-backends-*.tar.gz
expire_in: 1 day
.compile_template: &compile_definition
stage: compile
script:
- mkdir build
- cd build
- tar xzf ../sane-backends-*.tar.gz --strip-components=1
- ./configure $CONFIGURE_OPTS
- make -j2 -k $MAKE_FLAGS
debian-9-full:
image: $REGISTRY_HUB:debian-stretch-full
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
debian-10-mini:
image: $REGISTRY_HUB:debian-buster-mini
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI"
MAKE_FLAGS: "CFLAGS=-Werror"
<<: *compile_definition
# In addition to the regular compile check, the full Debian stable
# environment is used to keep some of the HTML documentation that's
# available from our website up-to-date.
debian-10-full:
image: $REGISTRY_HUB:debian-buster-full
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
after_script:
- make -C build/doc html-pages
- rm -rf lists && mkdir lists && mv build/doc/*.html lists/
- cd build/doc && doxygen doxygen-sanei.conf && mv sanei-html ../../doc
artifacts:
paths:
- sane-backends-*.tar.gz
- lists
- doc/sanei-html
expire_in: 1 day
fedora-33-clang:
image: $REGISTRY_HUB:fedora-33-clang
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
<<: *compile_definition
alpine-3.13-musl:
image: $REGISTRY_HUB:alpine-3.13-musl
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
<<: *compile_definition
ubuntu-16.04-lts:
image: $REGISTRY_HUB:ubuntu-xenial-dist
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
# This snapshot stage job makes sure that the source tarball has all
# it needs to rebuild itself, install everything built and cleans up
# without leaving any droppings behind when uninstalling. The build
# result will be available as a snapshot for a limited time period.
# People that prefer a source tarball to work with should use this
# snapshot.
# Some HTML documentation derived from this project's source is also
# uploaded for use by our website so it uses the latest information.
# It gets these artifacts from the full compile job on Debian stable,
# hence the dependency.
make-distcheck:
image: $REGISTRY_HUB:debian-buster-full
stage: snapshot
dependencies:
- debian-10-full
script:
- tar xzf sane-backends-*.tar.gz --strip-components=1
- rm sane-backends-*.tar.gz
- ./configure
- make distcheck
artifacts:
paths:
- sane-backends-*.tar.gz
- lists
- doc/sanei-html
expire_in: 90 days
# For release tags only, this manual job handles putting all of the
# releasables on the Project Releases page. See the script for more
# details.
upload:
image: alpine
stage: release
before_script:
- apk --no-cache add curl git jq
script:
- ./tools/create-release.sh
only:
- tags
when: manual
variables:
GIT_DEPTH: "3"
allow_failure: false