aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: 71bb70b825056b45f9a50c9e8df18b16a5904686 (plain) (blame)
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
# Builds on multiple systems using different package managers:
#
# - Debian-based systems: Use oldest working/supported debian image for
# reasonable backwards compatibility and ubuntu:rolling for new setups.
# Additionally, ensure that the package works without apparmor.
#
# - Redhat-based systems: Use a centos-like distribution for reasonable
# backwards compatibility and fedora:latest for new setups.
#
# - Alpine: Use it for installing directly from source.

build_ubuntu_package:
    image: ubuntu:rolling
    timeout: 10 minutes
    variables:
        DEBIAN_FRONTEND: noninteractive
    script:
        - apt-get update -qy
        - >
            apt-get install --no-install-recommends -qy
            build-essential fakeroot lintian libapparmor-dev pkg-config gawk
            | grep -Ev '^(Selecting|Preparing to unpack|Unpacking)'
        - ./ci/printenv.sh
        - ./configure || (cat config.log; exit 1)
        - make dist
        - ./mkdeb.sh --enable-fatal-warnings
        - dpkg -i ./*.deb
        - make print-version

build_debian_package:
    image: debian:buster
    timeout: 10 minutes
    variables:
        DEBIAN_FRONTEND: noninteractive
    script:
        - apt-get update -qy
        - >
            apt-get install --no-install-recommends -qy
            build-essential fakeroot lintian libapparmor-dev pkg-config gawk
            | grep -Ev '^(Selecting|Preparing to unpack|Unpacking)'
        - ./ci/printenv.sh
        - ./configure || (cat config.log; exit 1)
        - make dist
        - ./mkdeb.sh --enable-fatal-warnings
        - dpkg -i ./*.deb
        - make print-version

build_no_apparmor:
    image: ubuntu:latest
    timeout: 10 minutes
    variables:
        DEBIAN_FRONTEND: noninteractive
    script:
        - apt-get update -qy
        - >
            apt-get install --no-install-recommends -qy
            build-essential fakeroot lintian pkg-config gawk
            | grep -Ev '^(Selecting|Preparing to unpack|Unpacking)'
        - ./ci/printenv.sh
        - ./configure || (cat config.log; exit 1)
        - make dist
        - >
            ./mkdeb.sh --enable-fatal-warnings
            --disable-apparmor
        - dpkg -i ./*.deb
        - make print-version
        - make print-version | grep -F 'AppArmor support is disabled'

build_redhat_package:
    image: almalinux:latest
    timeout: 10 minutes
    script:
        - dnf update -y
        - dnf install -y rpm-build gcc make
        - ./ci/printenv.sh
        - ./configure || (cat config.log; exit 1)
        - make dist
        - ./platform/rpm/mkrpm.sh --enable-fatal-warnings
        - rpm -i ./*.rpm
        - make print-version

build_fedora_package:
    image: fedora:latest
    timeout: 10 minutes
    script:
        - dnf update -y
        - dnf install -y rpm-build gcc make
        - ./ci/printenv.sh
        - ./configure || (cat config.log; exit 1)
        - make dist
        - ./platform/rpm/mkrpm.sh --enable-fatal-warnings
        - rpm -i ./*.rpm
        - make print-version

build_src_package:
    image: alpine:latest
    timeout: 10 minutes
    script:
        - apk update
        - apk upgrade
        - apk add build-base linux-headers gawk
        - ./ci/printenv.sh
        # Note: Do not use ` --enable-fatal-warnings` because the build
        # currently produces warnings on Alpine (see #6224).
        - >
            ./configure --prefix=/usr
            || (cat config.log; exit 1)
        - make
        - make install-strip
        - make print-version

debian_ci:
    image: registry.salsa.debian.org/salsa-ci-team/ci-image-git-buildpackage:latest
    timeout: 10 minutes
    variables:
        DEBFULLNAME: "$GITLAB_USER_NAME"
        DEBEMAIL: "$GITLAB_USER_EMAIL"
        DEBIAN_FRONTEND: noninteractive
        PKGNAME: firejail
    before_script:
        - git checkout -B ci_build "$CI_COMMIT_SHA"
        - gitlab-ci-enable-sid
        - gitlab-ci-enable-experimental
        - |
            cat >>/etc/apt/sources.list <<EOF
            deb-src http://deb.debian.org/debian sid main
            deb-src http://deb.debian.org/debian experimental main
            EOF
        - apt-get update -qy
        - git config user.name "$DEBFULLNAME"
        - git config user.email "$DEBEMAIL"
        - |
            cd "$CI_PROJECT_DIR/.."
            apt-get source --download-only -t experimental "$PKGNAME" ||
            apt-get source --download-only "$PKGNAME"
        - |
            cd "$CI_PROJECT_DIR"
            tar xf "../${PKGNAME}"_*.debian.tar.*
        - rm -rf debian/patches/
        - |
            VERSION="$(grep ^PACKAGE_VERSION= configure | cut -d "'" -f 2)"
            dch -v "${VERSION}-0.1~ci" 'Non-maintainer upload.'
            git archive -o "../${PKGNAME}_${VERSION}.orig.tar.gz" HEAD
            pristine-tar commit "../${PKGNAME}_${VERSION}.orig.tar.gz" ci_build
            git branch -m pristine-tar origin/pristine-tar
        - git add debian
        - git commit -m 'add debian/'
        - export CI_COMMIT_SHA="$(git rev-parse HEAD)"
    script:
        - apt-get install --no-install-recommends -qy gawk
        - ./ci/printenv.sh
        - gitlab-ci-git-buildpackage
        - gitlab-ci-lintian