summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: f68aa3602aa87c55070bb489d1ee3557403df6d7 (plain)
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
# .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-bullseye-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
  - (set -x; ./configure $CONFIGURE_OPTS)
  - eval "(set -x; make -j2 -k $MAKE_FLAGS)"

debian-10-full:
  image: $REGISTRY_HUB:debian-buster-full
  variables:
    CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
    MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
  <<: *compile_definition

debian-11-mini:
  image: $REGISTRY_HUB:debian-bullseye-mini
  variables:
    CONFIGURE_OPTS: "$CONFIGURE_MINI"
    MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-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-11-full:
  image: $REGISTRY_HUB:debian-bullseye-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-36-clang:
  image: $REGISTRY_HUB:fedora-36-clang
  variables:
    CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
    MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
  <<: *compile_definition

alpine-3.15-musl:
  image: $REGISTRY_HUB:alpine-3.15-musl
  variables:
    CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
    MAKE_FLAGS: "CFLAGS='-Werror -Wno-pedantic' CXXFLAGS=-Werror"
  <<: *compile_definition

ubuntu-22.04-lts:
  image: $REGISTRY_HUB:ubuntu-jammy-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-bullseye-full
  stage: snapshot
  dependencies:
  - debian-11-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