You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

385 lines
10 KiB

cache:
paths:
- .gradle/
- gradle-7.2/
- gradle-7.3.3/
- gradle-7.4/
- gradle-7.5/
- gradle-8.0/
- gradle/
- gradlew
default:
interruptible: true
image: registry.videolan.org/vlc-debian-android-3.0:20230621085943
tags:
- amd64
- docker
stages:
- build
- package
.build-all-base:
stage: build
script:
- mkdir -p ~/.android
- if [ -n "$KEYSTORE_FILE_BASE64" ]; then base64 -d $KEYSTORE_FILE_BASE64 > ~/.android/debug.keystore; fi
- ./buildsystem/compile.sh ${EXTRA_BUILD_PARAM} -a ${ARCH}
variables:
MAKEFLAGS: -j8
# Rebuilds libvlc JNI
.build-libvlc-base:
extends: .build-all-base
rules:
# Explicitely refuse to build anything that would also trigger
# a medialib build
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- medialibrary/**/*
- buildsystem/**/*
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- libvlc/**/*
variables:
EXTRA_BUILD_PARAM: -l
# rebuild the medialibrary JNI component
# This implies rebuilding VLC beforehand
.build-ml-base:
extends: .build-all-base
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- medialibrary/**/*
- buildsystem/**/*
variables:
EXTRA_BUILD_PARAM: -ml
# vlc-android app only: don't rebuild everything but use a published artifact
continuous-app-build:
extends: .build-all-base
script:
- ./buildsystem/compile.sh --init
- ./gradlew assembleDebug
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
continuous-app-build-v4:
extends: .build-all-base
image: registry.videolan.org/vlc-debian-android:20230614051113
script:
- ./buildsystem/compile.sh --init
- ./gradlew assembleDebug -PforceVlc4=true
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
#################################
# Template config instantiation #
#################################
build-libvlc-arm64:
extends: .build-libvlc-base
variables:
ARCH: arm64
build-libvlc-armv7:
extends: .build-libvlc-base
variables:
ARCH: arm
build-libvlc-x86:
extends: .build-libvlc-base
variables:
ARCH: x86
build-libvlc-x86_64:
extends: .build-libvlc-base
variables:
ARCH: x86_64
build-ml-arm64:
extends: .build-ml-base
variables:
ARCH: arm64
build-ml-armv7:
extends: .build-ml-base
variables:
ARCH: arm
build-ml-x86:
extends: .build-ml-base
variables:
ARCH: x86
build-ml-x86_64:
extends: .build-ml-base
variables:
ARCH: x86_64
build-ml-arm64-v4:
extends: .build-ml-base
image: registry.videolan.org/vlc-debian-android:20230614051113
variables:
ARCH: arm64
EXTRA_BUILD_PARAM: -vlc4
build-ml-armv7-v4:
extends: .build-ml-base
image: registry.videolan.org/vlc-debian-android:20230614051113
variables:
ARCH: arm
EXTRA_BUILD_PARAM: -vlc4
build-ml-x86-v4:
extends: .build-ml-base
image: registry.videolan.org/vlc-debian-android:20230614051113
variables:
ARCH: x86
EXTRA_BUILD_PARAM: -vlc4
build-ml-x86_64-v4:
extends: .build-ml-base
image: registry.videolan.org/vlc-debian-android:20230614051113
variables:
ARCH: x86_64
EXTRA_BUILD_PARAM: -vlc4
# Nightly builds: build native & app code, and ship the APK as artifact
nightly-arm64:
extends: .build-all-base
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 != "true"'
variables:
ARCH: arm64
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-armv7:
extends: .build-all-base
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 != "true"'
variables:
ARCH: arm
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86:
extends: .build-all-base
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 != "true"'
variables:
ARCH: x86
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86_64:
extends: .build-all-base
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 != "true"'
variables:
ARCH: x86_64
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
# Weekly builds: build native & app code, and ship the APK as artifact for vlc4
nightly-arm64-v4:
extends: .build-all-base
image: registry.videolan.org/vlc-debian-android:20230614051113
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 == "true"'
variables:
ARCH: arm64
EXTRA_BUILD_PARAM: -vlc4
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-armv7-v4:
extends: .build-all-base
image: registry.videolan.org/vlc-debian-android:20230614051113
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 == "true"'
variables:
ARCH: arm
EXTRA_BUILD_PARAM: -vlc4
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86-v4:
extends: .build-all-base
image: registry.videolan.org/vlc-debian-android:20230614051113
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 == "true"'
variables:
ARCH: x86
EXTRA_BUILD_PARAM: -vlc4
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86_64-v4:
extends: .build-all-base
image: registry.videolan.org/vlc-debian-android:20230614051113
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $VLC4 == "true"'
variables:
ARCH: x86_64
EXTRA_BUILD_PARAM: -vlc4
artifacts:
paths:
- application/app/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
.build-libs-base:
rules:
- if: '$CI_COMMIT_TAG =~ /^libvlc-3.*$/'
stage: build
script:
- mkdir -p $M2_REPO
- ./buildsystem/compile.sh -l -a ${ARCH} -m2 $M2_REPO release ${EXTRA_BUILD_PARAM}
- ./buildsystem/compile.sh -ml -a ${ARCH} -m2 $M2_REPO release -b ${EXTRA_BUILD_PARAM}
artifacts:
expire_in: 1h
when: on_success
paths:
- $CI_PROJECT_DIR/libvlcjni/libvlc/jni/libs/*
- $CI_PROJECT_DIR/medialibrary/jni/libs/*
- $CI_PROJECT_DIR/.dbg/*
variables:
M2_REPO: "$CI_PROJECT_DIR/aars/repository"
.build-libs-base-v4:
image: registry.videolan.org/vlc-debian-android:20230614051113
rules:
- if: '$CI_COMMIT_TAG =~ /^libvlc-4.*$/'
stage: build
script:
- mkdir -p $M2_REPO
- ./buildsystem/compile.sh -l -a ${ARCH} -m2 $M2_REPO release -vlc4
- ./buildsystem/compile.sh -ml -a ${ARCH} -m2 $M2_REPO release -b -vlc4
artifacts:
expire_in: 1h
when: on_success
paths:
- $CI_PROJECT_DIR/libvlcjni/libvlc/jni/libs/*
- $CI_PROJECT_DIR/medialibrary/jni/libs/*
- $CI_PROJECT_DIR/.dbg/*
variables:
M2_REPO: "$CI_PROJECT_DIR/aars/repository"
build-libs-arm64:
extends: .build-libs-base
variables:
ARCH: arm64
build-libs-armv7:
extends: .build-libs-base
variables:
ARCH: arm
build-libs-x86:
extends: .build-libs-base
variables:
ARCH: x86
build-libs-x86_64:
extends: .build-libs-base
variables:
ARCH: x86_64
build-libs-arm64-v4:
extends: .build-libs-base-v4
variables:
ARCH: arm64
EXTRA_BUILD_PARAM: -vlc4
build-libs-armv7-v4:
extends: .build-libs-base-v4
variables:
ARCH: arm
EXTRA_BUILD_PARAM: -vlc4
build-libs-x86-v4:
extends: .build-libs-base-v4
variables:
ARCH: x86
EXTRA_BUILD_PARAM: -vlc4
build-libs-x86_64-v4:
extends: .build-libs-base-v4
variables:
ARCH: x86_64
EXTRA_BUILD_PARAM: -vlc4
publish_libs:
extends: .build-libs-base
stage: package
needs:
- job: "build-libs-arm64"
- job: "build-libs-armv7"
- job: "build-libs-x86"
- job: "build-libs-x86_64"
script:
- mkdir -p $M2_REPO
- ./buildsystem/compile.sh --init -b
- GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p libvlcjni publishToMavenLocal
- GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -p medialibrary publishToMavenLocal
artifacts:
name: "${CI_COMMIT_TAG}.dbg"
paths:
- .dbg/
- $M2_REPO
expire_in: 2 weeks
publish_libs-v4:
extends: .build-libs-base-v4
stage: package
needs:
- job: "build-libs-arm64-v4"
- job: "build-libs-armv7-v4"
- job: "build-libs-x86-v4"
- job: "build-libs-x86_64-v4"
script:
- mkdir -p $M2_REPO
- git config --global --add safe.directory $CI_PROJECT_DIR/libvlcjni
- ./buildsystem/compile.sh --init -b -vlc4
- GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -PforceVlc4=true -p libvlcjni publishToMavenLocal
- GRADLE_ABI=ALL RELEASE_SIGNING_ENABLED=false ./gradlew -Dmaven.repo.local=$M2_REPO -PforceVlc4=true -p medialibrary publishToMavenLocal
artifacts:
name: "${CI_COMMIT_TAG}.dbg"
paths:
- .dbg/
- $M2_REPO
expire_in: 2 weeks
release:
stage: build
rules:
- if: '$CI_COMMIT_TAG =~ /^(\d+\.)?(\d+\.)?(\*|\d+)/'
script:
- ./buildsystem/compile.sh --init
- ./gradlew assembleRelease
artifacts:
name: "${CI_COMMIT_TAG}"
paths:
- application/app/build/outputs/apk/release/VLC-Android-*.apk
# - application/app/build/outputs/mapping/release/mapping.txt
expire_in: 2 weeks