.gitlab-ci.yml 12.1 KB
Newer Older
1
stages:
2
    - style
3
    - build
4
    - test
5

6
style-check:
7
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
8 9 10 11 12
    stage: style
    tags:
        - debian
        - amd64
    script:
13
        - git grep -n -P "\t|\r| $" -- . ':(exclude)*/compat/*' && exit 1
14
        - git grep -n -i "david" -- . ':(exclude)THANKS.md' ':(exclude).gitlab-ci.yml' && exit 1
15 16 17 18 19 20
        - for i in $(git ls-files -- . ':(exclude)*/compat/*'); do
              if [ -n "$(tail -c 1 "$i")" ]; then
                  echo "No newline at end of $i";
                  exit 1;
              fi;
          done
21
        - git remote rm upstream 2> /dev/null || true
22 23
        - git remote add upstream https://code.videolan.org/videolan/dav1d.git
        - git fetch -q upstream master
24 25 26 27 28 29 30 31 32 33 34 35
        - for i in $(git rev-list HEAD ^upstream/master); do
              echo "Checking commit message of $i";
              msg="$(git log --format=%B -n 1 $i)";
              if [ -n "$(echo "$msg" | awk "NR==2")" ]; then
                  echo "Malformed commit message in $i, second line must be empty";
                  exit 1;
              fi;
              if echo "$msg" | head -1 | grep -q '\.$'; then
                  echo "Malformed commit message in $i, trailing period in subject line";
                  exit 1;
              fi;
          done
36

37
build-debian:
38
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
39 40 41 42 43
    stage: build
    tags:
        - debian
        - amd64
    script:
44
        - meson build --buildtype release --werror
45
        - ninja -C build
Marvin Scholz's avatar
Marvin Scholz committed
46
        - cd build && meson test -v
47

48
build-debian-static:
49
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
50 51 52 53 54
    stage: build
    tags:
        - debian
        - amd64
    script:
55
        - meson build --buildtype release --default-library static --werror
56 57 58
        - ninja -C build
        - cd build && meson test -v

59
build-debian32:
60
    image: registry.videolan.org:5000/dav1d-debian-unstable:20181218135732
61 62 63 64 65 66 67 68 69 70 71
    stage: build
    tags:
        - debian
        - amd64
    script:
        - meson build --buildtype release
                      --werror
                      --cross-file /opt/crossfiles/linux32.meson
        - ninja -C build
        - cd build && meson test -v

72
build-win32:
73
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
74 75
    stage: build
    tags:
76 77
        - debian
        - amd64
78
    script:
79
        - wineserver -p && wine wineboot
80 81 82 83 84 85
        - meson build --buildtype release
                      --werror
                      --libdir lib
                      --prefix "$(pwd)/build/dav1d_install"
                      --cross-file /opt/crossfiles/i686-w64-mingw32.meson
                      -Ddefault_library=both
86 87
        - ninja -C build
        - ninja -C build install
88
        - cd build && meson test -v
89 90 91 92 93
    artifacts:
        name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
        paths:
            - build/dav1d_install/
        expire_in: 1 week
94

95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
build-win32-unaligned-stack:
    image: registry.videolan.org:5000/vlc-debian-llvm-mingw:20190218133533
    stage: build
    tags:
        - debian
        - amd64
    script:
        - wineserver -p && wine wineboot
        - meson build --buildtype release
                      --werror
                      --cross-file /opt/crossfiles/i686-w64-mingw32.meson
                      -Dstack_alignment=4
        - ninja -C build
        - cd build && meson test -v

110
build-win64:
111
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
112 113
    stage: build
    tags:
114 115
        - debian
        - amd64
116
    script:
117
        - wineserver -p && wine wineboot
118 119 120 121 122 123
        - meson build --buildtype release
                      --werror
                      --libdir lib
                      --prefix "$(pwd)/build/dav1d_install"
                      --cross-file /opt/crossfiles/x86_64-w64-mingw32.meson
                      -Ddefault_library=both
124 125
        - ninja -C build
        - ninja -C build install
126
        - cd build && meson test -v
127 128 129 130 131
    artifacts:
        name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
        paths:
            - build/dav1d_install/
        expire_in: 1 week
132

133
build-win-arm32:
134
    image: registry.videolan.org:5000/vlc-debian-llvm-mingw:20190218133533
135 136
    stage: build
    tags:
137 138
        - debian
        - amd64
139 140 141 142 143 144 145 146 147 148
    script:
        - meson build --buildtype release
                      --werror
                      --libdir lib
                      --prefix "$(pwd)/build/dav1d_install"
                      --cross-file /opt/crossfiles/armv7-w64-mingw32.meson
                      -Ddefault_library=both
        - ninja -C build

build-win-arm64:
149
    image: registry.videolan.org:5000/vlc-debian-llvm-mingw:20190218133533
150 151
    stage: build
    tags:
152 153
        - debian
        - amd64
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
    script:
        - meson build --buildtype release
                      --werror
                      --libdir lib
                      --prefix "$(pwd)/build/dav1d_install"
                      --cross-file /opt/crossfiles/aarch64-w64-mingw32.meson
                      -Ddefault_library=both
        - ninja -C build
        - ninja -C build install
    artifacts:
        name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
        paths:
            - build/dav1d_install/
        expire_in: 1 week

169 170
build-debian-aarch64:
    stage: build
171
    image: registry.videolan.org:5000/dav1d-debian-unstable-aarch64:20181122182457
172 173 174 175
    tags:
        - aarch64
        - debian
    script:
176
        - meson build --buildtype release --werror
177 178 179 180 181
        - ninja -C build
        - cd build && meson test -v

build-debian-aarch64-clang-5:
    stage: build
182
    image: registry.videolan.org:5000/dav1d-debian-unstable-aarch64:20181122182457
183 184 185 186 187 188 189
    tags:
        - aarch64
        - debian
    script:
        - env CC=clang-5.0 CFLAGS='-integrated-as' meson build --buildtype release
        - ninja -C build
        - cd build && meson test -v
190 191 192 193 194 195

build-macos:
    stage: build
    tags:
        - macos
    script:
196
        - meson build --buildtype release -Ddefault_library=both --werror
197 198
        - ninja -C build
        - cd build && meson test -v
199 200

build-debian-werror:
201
    image: registry.videolan.org:5000/dav1d-debian-unstable-aarch64:20181122182457
202 203
    stage: build
    tags:
204
        - aarch64
205 206
        - debian
    script:
207
        - env CC='clang-7' meson build --buildtype debug --werror
208
        - ninja -C build
209

210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
build-debian-armv7:
    stage: build
    image: registry.videolan.org:5000/dav1d-debian-unstable-armv7:20190202101732
    tags:
        - armv7
        - debian
    script:
        - meson build --buildtype release --werror
        - ninja -C build
        - cd build && meson test -v

build-debian-armv7-clang-5:
    stage: build
    image: registry.videolan.org:5000/dav1d-debian-unstable-armv7:20190202101732
    tags:
        - armv7
        - debian
    script:
        - env CC=clang-5.0 CFLAGS='-integrated-as' meson build --buildtype release
        - ninja -C build
        - cd build && meson test -v

232 233 234 235 236
build-ubuntu-snap:
    stage: build
    image: registry.videolan.org:5000/dav1d-ubuntu-bionic:20190221154127
    tags:
        - debian
237
        - amd64
238 239
    script:
        - snapcraft snap
240 241 242 243 244 245
        - |
           if [ "$CI_PROJECT_NAMESPACE" = "videolan" ]; then
            echo $SNAP_LOGIN | base64 --decode | snapcraft login --with -
            snapcraft push dav1d_*.snap --release edge
            snapcraft logout
           fi
246 247 248 249 250
    artifacts:
        name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
        paths:
            - dav1d_*.snap
        expire_in: 1 week
251
    allow_failure: true
252

253
test-debian:
254
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
255 256 257 258
    stage: test
    tags:
        - debian
        - amd64
Janne Grunau's avatar
Janne Grunau committed
259
    cache:
260
        key: testdata.git-20190215
Janne Grunau's avatar
Janne Grunau committed
261 262
        paths:
            - cache/dav1d-test-data.git/
263
    script:
Janne Grunau's avatar
Janne Grunau committed
264
        - test -d cache || mkdir cache
265
        - test -d cache/dav1d-test-data.git && GIT_DIR=cache/dav1d-test-data.git git fetch --refmap=refs/heads/master:refs/heads/master origin master
Janne Grunau's avatar
Janne Grunau committed
266 267
        - test -d cache/dav1d-test-data.git || git clone --bare https://code.videolan.org/videolan/dav1d-test-data.git cache/dav1d-test-data.git
        - git clone cache/dav1d-test-data.git tests/dav1d-test-data
268
        - meson build --buildtype release -Dtestdata_tests=true -Dlogging=false
269 270
        - ninja -C build
        - cd build && time meson test -v
271
    dependencies: []
272 273

test-debian-asan:
274
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
275 276 277 278 279
    stage: test
    tags:
        - debian
        - amd64
    cache:
280
        key: testdata.git-20190215
281 282 283 284 285 286 287 288 289
        paths:
            - cache/dav1d-test-data.git/
    variables:
        ASAN_OPTIONS: 'detect_leaks=0'
    script:
        - test -d cache || mkdir cache
        - test -d cache/dav1d-test-data.git && GIT_DIR=cache/dav1d-test-data.git git fetch --refmap=refs/heads/master:refs/heads/master origin master
        - test -d cache/dav1d-test-data.git || git clone --bare https://code.videolan.org/videolan/dav1d-test-data.git cache/dav1d-test-data.git
        - git clone cache/dav1d-test-data.git tests/dav1d-test-data
290
        - meson build --buildtype debugoptimized -Dtestdata_tests=true -Dlogging=false -Db_sanitize=address -Dbuild_asm=false
291
        - ninja -C build
292
        - cd build && time meson test -v --setup=sanitizer
293
    dependencies: []
294 295

test-debian-msan:
296
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
297 298 299
    stage: test
    tags:
        - debian
300
        - amd64
301
    cache:
302
        key: testdata.git-20190215
303 304
        paths:
            - cache/dav1d-test-data.git/
305 306
    variables:
        MSAN_OPTIONS: 'exitcode=1'
307 308 309 310 311
    script:
        - test -d cache || mkdir cache
        - test -d cache/dav1d-test-data.git && GIT_DIR=cache/dav1d-test-data.git git fetch --refmap=refs/heads/master:refs/heads/master origin master
        - test -d cache/dav1d-test-data.git || git clone --bare https://code.videolan.org/videolan/dav1d-test-data.git cache/dav1d-test-data.git
        - git clone cache/dav1d-test-data.git tests/dav1d-test-data
312
        - env CC=clang meson build --buildtype debugoptimized -Dtestdata_tests=true -Dlogging=false -Db_sanitize=memory -Db_lundef=false -Dbuild_asm=false
313
        - ninja -C build
314
        - cd build && time meson test -v --setup=sanitizer
315
    dependencies: []
316 317

test-debian-ubsan:
318
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
319 320 321 322 323
    stage: test
    tags:
        - debian
        - amd64
    cache:
324
        key: testdata.git-20190215
325 326
        paths:
            - cache/dav1d-test-data.git/
327 328
    variables:
        UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1'
329 330 331 332 333
    script:
        - test -d cache || mkdir cache
        - test -d cache/dav1d-test-data.git && GIT_DIR=cache/dav1d-test-data.git git fetch --refmap=refs/heads/master:refs/heads/master origin master
        - test -d cache/dav1d-test-data.git || git clone --bare https://code.videolan.org/videolan/dav1d-test-data.git cache/dav1d-test-data.git
        - git clone cache/dav1d-test-data.git tests/dav1d-test-data
334
        - env CC=clang meson build --buildtype debugoptimized -Dtestdata_tests=true -Dlogging=false -Db_sanitize=undefined -Db_lundef=false -Dbuild_asm=false
335
        - ninja -C build
336
        - cd build && time meson test -v --setup=sanitizer
337
    dependencies: []
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361

test-win64:
    image: registry.videolan.org:5000/dav1d-debian-unstable:20190215130514
    stage: test
    tags:
        - debian
        - amd64
    cache:
        key: testdata.git-20190215
        paths:
            - cache/dav1d-test-data.git/
    script:
        - test -d cache || mkdir cache
        - test -d cache/dav1d-test-data.git && GIT_DIR=cache/dav1d-test-data.git git fetch --refmap=refs/heads/master:refs/heads/master origin master
        - test -d cache/dav1d-test-data.git || git clone --bare https://code.videolan.org/videolan/dav1d-test-data.git cache/dav1d-test-data.git
        - git clone cache/dav1d-test-data.git tests/dav1d-test-data
        - wineserver -p && wine wineboot
        - meson build --buildtype release
                      -Dtestdata_tests=true
                      -Dlogging=false
                      --cross-file /opt/crossfiles/x86_64-w64-mingw32.meson
        - ninja -C build
        - cd build && time meson test -v
    dependencies: []