[vlc-devel] [PATCH 2/2] CI: Restructure and unify contrib and non-contrib jobs
Marvin Scholz
epirat07 at gmail.com
Wed Oct 30 19:26:27 CET 2019
Instead of having separate jobs for prebuilt and non-prebuilt jobs,
just have one job and build contribs when no prebuilt ones are
available.
---
extras/ci/gitlab-ci.yml | 266 ++++++++++++----------------------------
1 file changed, 80 insertions(+), 186 deletions(-)
diff --git a/extras/ci/gitlab-ci.yml b/extras/ci/gitlab-ci.yml
index 423d2724d8..8575a7c1c9 100644
--- a/extras/ci/gitlab-ci.yml
+++ b/extras/ci/gitlab-ci.yml
@@ -5,7 +5,11 @@ default:
before_script:
- set -x
- export VLC_CONTRIB_SHA="$(extras/ci/get-contrib-sha.sh)"
- - export VLC_PREBUILT_CONTRIBS_URL="https://artifacts.videolan.org/vlc/${CI_JOB_NAME}-contrib/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2"
+ - export VLC_PREBUILT_CONTRIBS_URL="https://artifacts.videolan.org/vlc/${CI_JOB_NAME}/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2"
+ - if ! extras/ci/check-url.sh "$VLC_PREBUILT_CONTRIBS_URL"; then unset VLC_PREBUILT_CONTRIBS_URL; fi
+ after_script:
+ - export VLC_CONTRIB_SHA="$(extras/ci/get-contrib-sha.sh)"
+ - mv contrib/vlc-contrib-*.tar.bz2 contrib/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2 >/dev/null || true
variables:
VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20190416165205
@@ -59,277 +63,167 @@ variables:
ANDROID_ARCH: x86_64
TRIPLET: x86_64-linux-android
-#
-# Common rules for jobs
-#
-.contrib-common: &contrib-common
+# Common rules
+.base-template:
stage: build
- tags:
- - docker
- - amd64
- - zorin
only:
refs:
- merge_requests
- master
- changes:
- - "contrib/**/*"
- - "extras/tools/**/*"
- after_script:
- - export VLC_CONTRIB_SHA="$(extras/ci/get-contrib-sha.sh)"
- - mv contrib/vlc-contrib-*.tar.bz2 contrib/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2
+ artifacts:
+ paths:
+ - contrib/vlc-contrib-${TRIPLET}-*.tar.bz2
-.continuous-common:
- stage: build
+# Common rules for jobs using docker
+.docker-template:
+ extends: .base-template
tags:
- docker
- amd64
- zorin
- only:
- refs:
- - merge_requests
- - master
- except:
- changes:
- - "contrib/**/*"
- - "extras/tools/**/*"
#
-# Windows continuous
+# Windows
#
-.win-continuous:
- extends: .continuous-common
+.win-common:
+ extends: .docker-template
script: |
- set -x
- extras/package/win32/build.sh -p -a $HOST_ARCH
- artifacts:
- paths:
- - win??/vlc-*-win??.exe
+ if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+ echo "Building using prebuilt contribs at $VLC_PREBUILT_CONTRIBS_URL"
+ extras/package/win32/build.sh -p -a $HOST_ARCH
+ else
+ extras/package/win32/build.sh -c -a $HOST_ARCH
+ fi
win32:
- extends: .win-continuous
+ extends: .win-common
image:
name: $VLC_WIN32_IMAGE
variables: *variables-win32
win64:
- extends: .win-continuous
+ extends: .win-common
image:
name: $VLC_WIN64_IMAGE
variables: *variables-win64
win64-llvm:
- extends: .win-continuous
+ extends: .win-common
image:
name: $VLC_WIN_LLVM_IMAGE
variables: *variables-win64-llvm
#
-# Windows contrib
-#
-.win-contrib:
- extends: .contrib-common
- script: |
- extras/package/win32/build.sh -l -c -a $HOST_ARCH -i n
- mv contrib/vlc-contrib-*.tar.bz2 contrib/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2
- artifacts:
- paths:
- - contrib/vlc-contrib-${TRIPLET}-*.tar.bz2
- - win??/vlc-*-win??.exe
-
-win32-contrib:
- extends: .win-contrib
- image:
- name: $VLC_WIN32_IMAGE
- variables: *variables-win32
-
-win64-contrib:
- extends: .win-contrib
- image:
- name: $VLC_WIN64_IMAGE
- variables: *variables-win64
-
-win64-llvm-contrib:
- extends: .win-contrib
- image:
- name: $VLC_WIN_LLVM_IMAGE
- variables: *variables-win64-llvm
-
-#
-# Debian continuous
+# Debian
#
debian:
- extends: .continuous-common
+ extends: .docker-template
image:
name: $VLC_DEBIAN_IMAGE
script: |
export NCPU=$(getconf _NPROCESSORS_ONLN)
- cd extras/tools && ./bootstrap && make -j$NCPU --output-sync=recurse
- export PATH=`pwd`/build/bin:$PATH
- cd ../../
+
+ # Build tools
+ ( cd extras/tools && ./bootstrap && make -j$NCPU --output-sync=recurse )
+ export PATH="$(pwd)/extras/tools/build/bin:$PATH"
+
+ # Build contribs
mkdir -p contrib/contrib-$TRIPLET && cd contrib/contrib-$TRIPLET
../bootstrap
- curl -f -L "${VLC_PREBUILT_CONTRIBS_URL}" -o vlc-contrib-$TRIPLET-latest.tar.bz2
- make prebuilt
+ if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+ echo "Building using prebuilt contribs at $VLC_PREBUILT_CONTRIBS_URL"
+ make prebuilt PREBUILT_URL="${VLC_PREBUILT_CONTRIBS_URL}"
+ else
+ make -j$NCPU --output-sync=recurse fetch
+ make -j$NCPU --output-sync=recurse
+ make package
+ fi
cd ../../
- ./bootstrap
- ./configure
- make -j$NCPU
- VLC_TEST_TIMEOUT=60 sh -x ./test/make_check_wrapper.sh -j4
- variables: *variables-debian
-#
-# Debian contrib
-#
-debian-contrib:
- extends: .contrib-common
- image:
- name: $VLC_DEBIAN_IMAGE
- script: |
- export NCPU=$(getconf _NPROCESSORS_ONLN)
- cd extras/tools && ./bootstrap && make -j$NCPU --output-sync=recurse
- export PATH=`pwd`/build/bin:$PATH
- cd ../../
- cd contrib && mkdir native && cd native
- ../bootstrap
- make list
- make -j$NCPU --output-sync=recurse fetch
- make -j$NCPU --output-sync=recurse
- make package
- cd ../../
+ # Build VLC
./bootstrap
./configure
make -j$NCPU
+
+ # Run tests
VLC_TEST_TIMEOUT=60 sh -x ./test/make_check_wrapper.sh -j4
- artifacts:
- paths:
- - contrib/vlc-contrib-*.tar.bz2
variables: *variables-debian
#
-# macOS continuous
+# macOS
#
macos:
- extends: .continuous-common
- tags: [macos]
- script: |
- mkdir -p contrib/contrib-$TRIPLET && cd contrib/contrib-$TRIPLET
- curl -f -L ${VLC_PREBUILT_CONTRIBS_URL} -o vlc-contrib-$TRIPLET-latest.tar.bz2
- cd ../../
- mkdir build && cd build
- ../extras/package/macosx/build.sh
- variables: *variables-macos
-
-#
-# macOS contrib
-#
-macos-contrib:
- extends: .contrib-common
- tags: [macos]
+ extends: .base-template
+ tags:
+ - macos
script: |
+ if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+ echo "Building using prebuilt contribs at $VLC_PREBUILT_CONTRIBS_URL"
+ mkdir -p contrib/contrib-$TRIPLET && cd contrib/contrib-$TRIPLET
+ curl -f -L ${VLC_PREBUILT_CONTRIBS_URL} -o vlc-contrib-$TRIPLET-latest.tar.bz2
+ cd ../../
+ else
+ EXTRA_BUILD_FLAGS="-c"
+ fi
mkdir build && cd build
- ../extras/package/macosx/build.sh -c -p
- artifacts:
- paths:
- - contrib/vlc-contrib-*.tar.bz2
- - build/vlc-*-dev.dmg
+ ../extras/package/macosx/build.sh $EXTRA_BUILD_FLAGS
variables: *variables-macos
#
-# iOS continuous
+# iOS
#
ios:
- extends: .continuous-common
- tags: [macos]
+ extends: .base-template
+ tags:
+ - macos
script: |
mkdir build && cd build
- ../extras/package/apple/build.sh --sdk=iphoneos --arch=aarch64 \
- --with-prebuilt-contribs
+ if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+ ../extras/package/apple/build.sh --sdk=iphoneos --arch=aarch64 \
+ --with-prebuilt-contribs
+ else
+ ../extras/package/apple/build.sh --sdk=iphoneos --arch=aarch64 --package-contribs
+ fi
variables: *variables-ios
#
-# iOS contrib
+# Android
#
-ios-contrib:
- extends: .contrib-common
- tags: [macos]
- script: |
- mkdir build && cd build
- ../extras/package/apple/build.sh --sdk=iphoneos --arch=aarch64 --package-contribs
- artifacts:
- paths:
- - contrib/vlc-contrib-*.tar.bz2
- variables: *variables-ios
-
-#
-# Android continuous
-#
-.android-continuous:
- extends: .continuous-common
+.android-common:
+ extends: .docker-template
image:
name: $VLC_ANDROID_IMAGE
script: |
wget https://code.videolan.org/videolan/vlc-android/raw/master/compile-libvlc.sh
- /bin/sh ./compile-libvlc.sh -a $ANDROID_ARCH --with-prebuilt-contribs
+ if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
+ /bin/sh ./compile-libvlc.sh -a $ANDROID_ARCH --with-prebuilt-contribs
+ else
+ /bin/sh ./compile-libvlc.sh -a $ANDROID_ARCH --package-contribs
+ fi
android-arm:
- extends: .android-continuous
+ extends: .android-common
variables: *variables-android-arm
android-arm64:
- extends: .android-continuous
+ extends: .android-common
variables: *variables-android-arm64
android-x86:
- extends: .android-continuous
+ extends: .android-common
variables: *variables-android-x86
android-x86_64:
- extends: .android-continuous
+ extends: .android-common
variables: *variables-android-x86_64
-#
-# Android contrib
-#
-.android-contrib:
- extends: .contrib-common
- image:
- name: $VLC_ANDROID_IMAGE
- script: |
- wget https://code.videolan.org/videolan/vlc-android/raw/master/compile-libvlc.sh
- /bin/sh ./compile-libvlc.sh -a $ANDROID_ARCH --package-contribs
- artifacts:
- paths:
- - contrib/vlc-contrib-*.tar.bz2
-
-android-arm-contrib:
- extends: .android-contrib
- variables: *variables-android-arm
-
-android-arm64-contrib:
- extends: .android-contrib
- variables: *variables-android-arm64
-
-android-x86-contrib:
- extends: .android-contrib
- variables: *variables-android-x86
-
-android-x86_64-contrib:
- extends: .android-contrib
- variables: *variables-android-x86_64
-
-
#
# VLC Documentation
#
pages:
- tags:
- - docker
- - amd64
- - zorin
+ extends: .docker-template
image:
name: $VLC_DEBIAN_IMAGE
- stage: build
script:
- ./bootstrap
- ./configure
--
2.21.0 (Apple Git-122)
More information about the vlc-devel
mailing list