Newer
Older
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##nightly-}/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 2>/dev/null || true
VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20200702161720
VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64:20200702144729
VLC_WIN_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-mingw:20200703084018
VLC_UWP_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-uwp:20200706065223
VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20200229201904
VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20190717134531
VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-bionic:20190627090437
VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-debian-raspbian:20200213203125
.variables-debian: &variables-debian
HOST_ARCH: x86_64
TRIPLET: $HOST_ARCH-linux-gnu
.variables-snap: &variables-snap
HOST_ARCH: x86_64
TRIPLET: $HOST_ARCH-linux-gnu
.variables-raspbian-arm: &variables-raspbian-arm
HOST_ARCH: arm
TRIPLET: $HOST_ARCH-linux-gnueabihf
HOST_ARCH: i686
TRIPLET: $HOST_ARCH-w64-mingw32
.variables-win64: &variables-win64
HOST_ARCH: x86_64
TRIPLET: $HOST_ARCH-w64-mingw32
.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-arm64: &variables-ios-arm64
TRIPLET: $HOST_ARCH-apple-iphoneos
MAKEFLAGS: -j4
.variables-ios-armv7: &variables-ios-armv7
VLC_PATH: /Users/videolanci/sandbox/bin
HOST_ARCH: armv7
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
.base-template:
- master@videolan/vlc
artifacts:
paths:
- contrib/vlc-contrib-${TRIPLET}-*.tar.bz2
# Common rules for jobs using docker
.docker-template:
extends: .base-template
.win-common:
extends: .docker-template
if [ "${CI_JOB_NAME:0:8}" = "nightly-" ]; then
NIGHTLY_EXTRA_BUILD_FLAGS="-i n -l"
fi
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 $NIGHTLY_EXTRA_BUILD_FLAGS $LIBVLC_EXTRA_BUILD_FLAGS $UWP_EXTRA_BUILD_FLAGS
extras/package/win32/build.sh -c -a $HOST_ARCH $NIGHTLY_EXTRA_BUILD_FLAGS $LIBVLC_EXTRA_BUILD_FLAGS $UWP_EXTRA_BUILD_FLAGS
extends: .win-common
image:
name: $VLC_WIN32_IMAGE
variables: *variables-win32
win64:
extends: .win-common
image:
name: $VLC_WIN64_IMAGE
variables: *variables-win64
win64-llvm:
extends: .win-common
variables:
<<: *variables-win64
WINE_SDK_PATH: /usr/include/wine/wine/windows/
uwp64-libvlc-llvm:
extends: .win-common
image:
name: $VLC_UWP_LLVM_IMAGE
variables:
<<: *variables-win64
LIBVLC_EXTRA_BUILD_FLAGS: -z
UWP_EXTRA_BUILD_FLAGS: -u -w -x
.nightly-win-common:
extends: .win-common
only:
- schedules
except:
after_script:
- mkdir nightlies
- for ext in 7z zip; do mv ${SHORTARCH}/vlc-*-dev-*-debug.${ext} nightlies/$(basename ${SHORTARCH}/vlc-*-dev-*-debug.${ext} | sed "s/\.${ext}/-${CI_COMMIT_SHORT_SHA}\.${ext}/"); done
- for ext in exe msi 7z zip; do mv ${SHORTARCH}/vlc-*-dev-*.${ext} nightlies/$(basename ${SHORTARCH}/vlc-*-dev-*.${ext} | sed "s/\.${ext}/-${CI_COMMIT_SHORT_SHA}\.${ext}/"); done
- cd nightlies && find . -maxdepth 1 -type f -not -name SHA512SUM | xargs shasum -a 512 | tee SHA512SUM
artifacts:
paths:
- nightlies/*
nightly-win32:
extends: .nightly-win-common
image:
name: $VLC_WIN32_IMAGE
variables: *variables-win32
nightly-win64:
extends: .nightly-win-common
image:
name: $VLC_WIN64_IMAGE
variables: *variables-win64
nightly-win64-llvm:
extends: .nightly-win-common
image:
name: $VLC_WIN_LLVM_IMAGE
variables:
<<: *variables-win64
WINE_SDK_PATH: /usr/include/wine/wine/windows/
extends: .docker-template
image:
name: $VLC_DEBIAN_IMAGE
script: |
export NCPU=$(getconf _NPROCESSORS_ONLN)
# 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
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
VLC_TEST_TIMEOUT=60 sh -x ./test/make_check_wrapper.sh -j4
if [ "${CI_JOB_NAME:0:8}" = "nightly-" ]; then
export XZ_OPT="-T 0"
make -j$NCPU distcheck
fi
nightly-debian:
extends: debian
only:
- schedules
except:
after_script:
artifacts:
extends: .docker-template
image:
name: $VLC_SNAP_IMAGE
script: |
cd extras/package/snap
make -f package.mak snap
after_script:
- export VLC_CONTRIB_SHA="$(extras/ci/get-contrib-sha.sh)"
- mv extras/package/snap/parts/vlc/build/contrib/vlc-contrib-*.tar.bz2 contrib/vlc-contrib-${TRIPLET}-${VLC_CONTRIB_SHA}.tar.bz2 2>/dev/null || true
variables: *variables-snap
snap:
extends: .snap-common
nightly-snap:
extends: .snap-common
only:
- schedules
except:
after_script:
- if [ "$CI_PROJECT_NAMESPACE" = "videolan" ]; then /bin/true; else exit 0; fi
- mkdir nightlies
- mv extras/package/snap/vlc_*.snap nightlies/
- echo $SNAP_LOGIN | base64 --decode | snapcraft login --with -
- snapcraft push nightlies/vlc_*.snap --release edge
- cd nightlies && find . -maxdepth 1 -type f -not -name SHA512SUM | xargs shasum -a 512 | tee SHA512SUM
- nightlies/*
#
# Raspbian
#
raspbian-arm:
extends: .docker-template
image:
name: $VLC_RASPBIAN_IMAGE
script: |
if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
echo "Building using prebuilt contribs at $VLC_PREBUILT_CONTRIBS_URL"
extras/package/raspberry/build.sh -p -x -a $HOST_ARCH
else
extras/package/raspberry/build.sh -c -x -a $HOST_ARCH
fi
variables: *variables-raspbian-arm
extends: .base-template
tags:
- macos
if [ "${CI_JOB_NAME:0:8}" = "nightly-" ]; then
NIGHTLY_EXTRA_BUILD_FLAGS="-i n"
fi
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
../extras/package/macosx/build.sh $EXTRA_BUILD_FLAGS $NIGHTLY_EXTRA_BUILD_FLAGS
nightly-macos:
extends: macos
only:
- schedules
except:
after_script:
- mkdir nightlies
- mv build/vlc-*.dmg nightlies/$(basename build/vlc-*.dmg | sed "s/\.dmg/-${CI_COMMIT_SHORT_SHA}\.dmg/")
- mv build/vlc-*.tar.gz nightlies/$(basename build/vlc-*.tar.gz | sed "s/\.tar\.gz/-${CI_COMMIT_SHORT_SHA}\.tar\.gz/")
- cd nightlies && find . -maxdepth 1 -type f -not -name SHA512SUM | xargs shasum -a 512 | tee SHA512SUM
artifacts:
paths:
- nightlies/*
extends: .base-template
tags:
- macos
if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
../extras/package/apple/build.sh --sdk=iphoneos --arch=$HOST_ARCH \
--with-prebuilt-contribs
else
../extras/package/apple/build.sh --sdk=iphoneos --arch=$HOST_ARCH --package-contribs
ios-arm64:
extends: .ios-common
variables: *variables-ios-arm64
ios-armv7:
extends: .ios-common
variables: *variables-ios-armv7
.android-common:
extends: .docker-template
wget https://code.videolan.org/videolan/vlc-android/raw/0daaf5f3a08b5c52b4caaf526633cca7061d04c2/compile-libvlc.sh
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
extends: .android-common
variables: *variables-android-arm
android-arm64:
extends: .android-common
variables: *variables-android-arm64
android-x86:
extends: .android-common
variables: *variables-android-x86
android-x86_64:
extends: .android-common
extends: .docker-template
image:
name: $VLC_DEBIAN_IMAGE
script:
- ./bootstrap
- ./configure
- make doc
- mv doc/doxygen/html public
artifacts:
paths:
- public
only:
- schedules