Commit 98ee9d2f authored by Konstantin Pavlov's avatar Konstantin Pavlov
Browse files

Added gitlab CI

Supported targets:
 - debian amd64
 - debian aarch64
 - windows 32 bit
 - windows 64 bit
 - macos 64bit

The tests are ran on all supported targets (via wine on windows).

The release jobs are only available on master/stable branches in
videolan/x264 repository, and must be ran manually when a developer
wishes to upload the artifacts.
parent 5493be84
stages:
- build
- test
- release
.variables-debian-amd64: &variables-debian-amd64
_TRIPLET: ""
_PLATFORMSUFFIX: ""
_PATH: "debian-x86_64"
_WRAPPER: ""
.variables-debian-aarch64: &variables-debian-aarch64
_TRIPLET: ""
_PLATFORMSUFFIX: ""
_PATH: "debian-aarch64"
_WRAPPER: ""
.variables-win32: &variables-win32
_TRIPLET: "i686-w64-mingw32"
_PLATFORMSUFFIX: ".exe"
_PATH: "win32"
_WRAPPER: "wine"
.variables-win64: &variables-win64
_TRIPLET: "x86_64-w64-mingw32"
_PLATFORMSUFFIX: ".exe"
_PATH: "win64"
_WRAPPER: "wine64"
.variables-macos: &variables-macos
_TRIPLET: "x86_64-apple-darwin17"
_PLATFORMSUFFIX: ""
_PATH: "macos-x86_64"
_WRAPPER: ""
.build:
stage: build
script: |
set -x
curl -L -- https://download.videolan.org/videolan/x264/av.tar.gz > av.tar.gz && tar xfzv av.tar.gz
cd av
./bootstrap
make -j$(getconf _NPROCESSORS_ONLN)
cd ..
export PKG_CONFIG_PATH=`/bin/ls -d $PWD/av/*/lib/pkgconfig`
./configure --enable-pic --enable-strip --extra-ldflags="-static"
make -j$(getconf _NPROCESSORS_ONLN) x264 checkasm
artifacts:
name: "$CI_PROJECT_PATH_SLUG-$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- x264${_PLATFORMSUFFIX}
- checkasm8${_PLATFORMSUFFIX}
- checkasm10${_PLATFORMSUFFIX}
expire_in: 1 week
build-debian-amd64:
extends: .build
image: registry.videolan.org/x264-debian-unstable:20190404162201
tags:
- docker
- amd64
variables: *variables-debian-amd64
build-debian-aarch64:
extends: .build
image: registry.videolan.org/x264-debian-unstable-aarch64:20190405100031
tags:
- docker
- aarch64
variables: *variables-debian-aarch64
.build-win:
extends: build-debian-amd64
script: |
set -x
curl -f -o vlc-contrib-${_TRIPLET}-latest.tar.bz2 https://nightlies.videolan.org/build/${_PATH}/last/vlc-contrib-${_TRIPLET}-`date +%Y%m%d`.tar.bz2 || curl -f -o vlc-contrib-${_TRIPLET}-latest.tar.bz2 https://nightlies.videolan.org/build/${_PATH}/last/vlc-contrib-${_TRIPLET}-`date --date=yesterday +%Y%m%d`.tar.bz2
bunzip2 vlc-contrib-${_TRIPLET}-latest.tar.bz2
tar xvf vlc-contrib-${_TRIPLET}-latest.tar
sed -i "s#@@CONTRIB_PREFIX@@#`pwd`/${_TRIPLET}#g" ${_TRIPLET}/lib/pkgconfig/*.pc
export PKG_CONFIG_LIBDIR=`pwd`/${_TRIPLET}/lib/pkgconfig
./configure --host=${_TRIPLET} --cross-prefix=${_TRIPLET}- --enable-pic --enable-strip
make -j$(getconf _NPROCESSORS_ONLN) x264 checkasm
build-win32:
extends: .build-win
variables: *variables-win32
build-win64:
extends: .build-win
variables: *variables-win64
build-macos:
extends: .build
tags:
- macos
script: |
set -x
export PATH="$HOME/local/bin/:/usr/local/bin/:$PATH"
curl -O https://nightlies.videolan.org/build/contribs/vlc-contrib-${_TRIPLET}-latest.tar.bz2
bunzip2 vlc-contrib-${_TRIPLET}-latest.tar.bz2
tar xvf vlc-contrib-${_TRIPLET}-latest.tar
sed -i.bak "s#@@CONTRIB_PREFIX@@#`pwd`/${_TRIPLET}#g" ${_TRIPLET}/lib/pkgconfig/*.pc
export PKG_CONFIG_LIBDIR=`pwd`/${_TRIPLET}/lib/pkgconfig
./configure --enable-strip
make -j$(getconf _NPROCESSORS_ONLN) x264 checkasm
variables: *variables-macos
.test: &test
stage: test
script: |
set -x
${_WRAPPER} ./checkasm8${_PLATFORMSUFFIX}
${_WRAPPER} ./checkasm10${_PLATFORMSUFFIX}
artifacts:
expire_in: 10 minutes
test-debian-amd64:
<<: *test
extends: build-debian-amd64
dependencies:
- build-debian-amd64
variables: *variables-debian-amd64
test-debian-aarch64:
<<: *test
extends: build-debian-aarch64
dependencies:
- build-debian-aarch64
variables: *variables-debian-aarch64
test-win32:
<<: *test
extends: build-win32
dependencies:
- build-win32
variables: *variables-win32
test-win64:
<<: *test
extends: build-win64
dependencies:
- build-win64
variables: *variables-win64
test-macos:
<<: *test
extends: build-macos
dependencies:
- build-macos
variables: *variables-macos
.release: &release
stage: release
script: |
set -x
_VERSION=$(./version.sh | grep _VERSION -| cut -d\ -f4-| sed 's, ,-,g' | sed 's,",,')
mv x264${_PLATFORMSUFFIX} x264-${_VERSION}${_PLATFORMSUFFIX}
when: manual
only:
- master@videolan/x264
- stable@videolan/x264
artifacts:
name: "$CI_PROJECT_PATH_SLUG-$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- x264-*${_PLATFORMSUFFIX}
expire_in: '10 minutes'
release-debian-amd64:
<<: *release
extends: build-debian-amd64
dependencies:
- build-debian-amd64
variables: *variables-debian-amd64
release-debian-aarch64:
<<: *release
extends: build-debian-aarch64
dependencies:
- build-debian-aarch64
variables: *variables-debian-aarch64
release-win32:
<<: *release
extends: build-win32
dependencies:
- build-win32
variables: *variables-win32
release-win64:
<<: *release
extends: build-win64
dependencies:
- build-win64
variables: *variables-win64
release-macos:
<<: *release
extends: build-macos
dependencies:
- build-macos
variables: *variables-macos
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment