]> granicus.if.org Git - libx264/commitdiff
Added gitlab CI
authorKonstantin Pavlov <thresh@videolan.org>
Fri, 5 Apr 2019 12:08:29 +0000 (15:08 +0300)
committerKonstantin Pavlov <thresh@videolan.org>
Tue, 16 Jul 2019 11:34:18 +0000 (14:34 +0300)
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.

.gitlab-ci.yml [new file with mode: 0644]

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..d8cf671
--- /dev/null
@@ -0,0 +1,201 @@
+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