[vlc-devel] [PATCH v3 2/2] CI: Add GitLab CI

Hugo Beauzée-Luyssen hugo at beauzee.fr
Tue Oct 22 18:03:02 CEST 2019



On Tue, Oct 22, 2019, at 5:28 PM, Marvin Scholz wrote:
> Co-authored-by: Konstantin Pavlov <thresh at videolan.org>
> ---
>  extras/ci/gitlab-ci.yml | 320 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 320 insertions(+)
>  create mode 100644 extras/ci/gitlab-ci.yml
> 
> diff --git a/extras/ci/gitlab-ci.yml b/extras/ci/gitlab-ci.yml
> new file mode 100644
> index 0000000000..e66d305186
> --- /dev/null
> +++ b/extras/ci/gitlab-ci.yml
> @@ -0,0 +1,320 @@
> +stages:
> +    - build
> +
> +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"
> +
> +variables:
> +    VLC_WIN32_IMAGE: 
> registry.videolan.org/vlc-debian-win32:20190416165205
> +    VLC_WIN64_IMAGE: 
> registry.videolan.org/vlc-debian-win64:20190416180622
> +    VLC_WIN64_LLVM_IMAGE: 

Nitpick, this isn't WIN64 specific

> registry.videolan.org/vlc-debian-llvm-mingw:20190621125349
> +    VLC_DEBIAN_IMAGE: 
> registry.videolan.org/vlc-debian-unstable:20190416182140
> +    VLC_ANDROID_IMAGE: 
> registry.videolan.org/vlc-debian-android:20190717134531
> +
> +.variables-debian: &variables-debian
> +        HOST_ARCH: x86_64
> +        TRIPLET: $HOST_ARCH-linux-gnu
> +
> +.variables-win32: &variables-win32
> +        HOST_ARCH: i686
> +        TRIPLET: $HOST_ARCH-w64-mingw32
> +
> +.variables-win64: &variables-win64
> +        HOST_ARCH: x86_64
> +        TRIPLET: $HOST_ARCH-w64-mingw32
> +
> +.variables-win64-llvm: &variables-win64-llvm
> +        HOST_ARCH: x86_64
> +        TRIPLET: $HOST_ARCH-w64-mingw32
> +        WINE_SDK_PATH: /usr/include/wine/wine/windows/
> +
> +.variables-macos: &variables-macos
> +        VLC_PATH: /Users/videolanci/sandbox/bin
> +        VLC_FORCE_KERNELVERSION: 18
> +        HOST_ARCH: x86_64
> +        TRIPLET: $HOST_ARCH-apple-darwin$VLC_FORCE_KERNELVERSION
> +
> +.variables-ios: &variables-ios
> +        VLC_PATH: /Users/videolanci/sandbox/bin
> +        HOST_ARCH: aarch64
> +        TRIPLET: $HOST_ARCH-apple-iphoneos
> +        MAKEFLAGS: -j4
> +
> +.variables-android-arm: &variables-android-arm
> +        ANDROID_ARCH: arm
> +        TRIPLET: arm-linux-androideabi
> +
> +.variables-android-arm64: &variables-android-arm64
> +        ANDROID_ARCH: arm64
> +        TRIPLET: aarch64-linux-android
> +
> +.variables-android-x86: &variables-android-x86
> +        ANDROID_ARCH: x86
> +        TRIPLET: i686-linux-android
> +
> +.variables-android-x86_64: &variables-android-x86_64
> +        ANDROID_ARCH: x86_64
> +        TRIPLET: x86_64-linux-android
> +
> +#
> +# Common rules for jobs
> +#
> +.contrib-common: &contrib-common
> +    stage: build
> +    tags:
> +        - docker
> +        - amd64
> +        - zorin
> +    only:
> +        refs:
> +            - merge_requests
> +            - gitlab-ci
> +        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 &>/dev/null 
> || true

Are there case where this move can fail without the actual build to have failed before?

> +
> +.continuous-common:
> +    stage: build
> +    tags:
> +        - docker
> +        - amd64
> +        - zorin
> +    only:
> +        refs:
> +            - merge_requests
> +            - gitlab-ci
> +    except:
> +        changes:
> +            - "contrib/**/*"
> +            - "extras/tools/**/*"
> +
> +#
> +# Windows continuous
> +#
> +.win-continuous:
> +    extends: .continuous-common
> +    script: |
> +        set -x
> +        extras/package/win32/build.sh -p -a $HOST_ARCH
> +    artifacts:
> +        paths:
> +            - win??/vlc-*-win??.exe
> +
> +win32:
> +    extends: .win-continuous
> +    image:
> +        name: $VLC_WIN32_IMAGE
> +    variables: *variables-win32
> +
> +win64:
> +    extends: .win-continuous
> +    image:
> +        name: $VLC_WIN64_IMAGE
> +    variables: *variables-win64
> +
> +win64-llvm:
> +    extends: .win-continuous
> +    image:
> +        name: $VLC_WIN64_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_WIN64_LLVM_IMAGE
> +    variables: *variables-win64-llvm
> +
> +#
> +# Debian continuous
> +#
> +debian:
> +    extends: .continuous-common
> +    image:
> +        name: $VLC_DEBIAN_IMAGE
> +    script: |
> +        export NCPU=$(getconf _NPROCESSORS_ONLN)
> +        cd extras/tools && ./bootstrap && make -j$NCPU -k\

I'm not a big fan of make -k || make -j1 to detect errors. This might waste a lost of CPU depending on what contrib fails.
I agree that it's harder to see what failed, but I'd rather waste my time looking for an error than to make all other jobs wait for a doomed task to complete.

However, if other people prefer to keep it that way, then let's keep it

> +        export PATH=`pwd`/build/bin:$PATH
> +        cd ../../
> +        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
> +        cd ../../
> +        ./bootstrap
> +        ./configure
> +        make -j$NCPU -k
> +        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 -k
> +        export PATH=`pwd`/build/bin:$PATH
> +        cd ../../
> +        cd contrib && mkdir native && cd native
> +        ../bootstrap
> +        make list
> +        make -j$NCPU fetch
> +        make -j$NCPU -k
> +        make package
> +        cd ../../
> +        ./bootstrap
> +        ./configure
> +        make -j$NCPU -k
> +        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:
> +    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]
> +    script: |
> +        mkdir build && cd build
> +        ../extras/package/macosx/build.sh -c -p
> +    artifacts:
> +        paths:
> +            - contrib/vlc-contrib-*.tar.bz2
> +            - build/vlc-*-dev.dmg
> +    variables: *variables-macos
> +
> +#
> +# iOS continuous
> +#
> +ios:
> +    extends: .continuous-common
> +    tags: [macos]
> +    script: |
> +        mkdir build && cd build
> +        ../extras/package/apple/build.sh --sdk=iphoneos --arch=aarch64 
> \
> +            --with-prebuilt-contribs
> +    variables: *variables-ios
> +
> +#
> +# iOS contrib
> +#
> +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
> +    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
> +
> +android-arm:
> +    extends: .android-continuous
> +    variables: *variables-android-arm
> +
> +android-arm64:
> +    extends: .android-continuous
> +    variables: *variables-android-arm64
> +
> +android-x86:
> +    extends: .android-continuous
> +    variables: *variables-android-x86
> +
> +android-x86_64:
> +    extends: .android-continuous
> +    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
> +
> -- 
> 2.20.1 (Apple Git-117)
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

-- 
  Hugo Beauzée-Luyssen
  hugo at beauzee.fr


More information about the vlc-devel mailing list