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
variables:
VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20190416165205
VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64:20190416180622
VLC_WIN_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-mingw:20190621125349
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-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-arm64: &variables-ios-arm64
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
extras/package/win32/build.sh -c -a $HOST_ARCH $NIGHTLY_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
image:
name: $VLC_WIN_LLVM_IMAGE
variables: *variables-win64-llvm
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
.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
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-llvm
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
- cd extras/package/snap
- echo $SNAP_LOGIN | base64 --decode | snapcraft login --with -
- snapcraft push vlc_*.snap --release edge
- snapcraft logout
artifacts:
paths:
- extras/package/snap/vlc_*.snap
#
# 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/")
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
.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