[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