Merge pull request #32 from linuxserver/bin-6.0

upgrade to 6.0, update deps
This commit is contained in:
aptalca 2023-06-12 16:03:07 -04:00 committed by GitHub
commit 5105eddd47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 108 additions and 592 deletions

View File

@ -20,7 +20,7 @@ jobs:
echo "**** External trigger running off of bin branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_FFMPEG_BIN\". ****"
echo "External trigger running off of bin branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_FFMPEG_BIN\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****"
EXT_RELEASE=$(echo 5.1.2)
EXT_RELEASE=$(echo 6.0)
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****"
FAILURE_REASON="Can't retrieve external version for ffmpeg branch bin"

View File

@ -12,29 +12,29 @@ ENV \
# versions
ENV \
AOM=v1.0.0 \
FDKAAC=2.0.1 \
FFMPEG_HARD=5.1.2 \
FONTCONFIG=2.13.92 \
FREETYPE=2.9.1 \
FRIBIDI=1.0.8 \
KVAZAAR=2.0.0 \
AOM=v3.6.1 \
FDKAAC=2.0.2 \
FFMPEG_HARD=6.0 \
FONTCONFIG=2.14.2 \
FREETYPE=2.12.1 \
FRIBIDI=1.0.13 \
KVAZAAR=2.2.0 \
LAME=3.100 \
LIBASS=0.14.0 \
LIBDRM=2.4.114 \
LIBVA=2.6.0 \
LIBVDPAU=1.2 \
LIBVIDSTAB=1.1.0 \
LIBVMAF=master \
NVCODEC=n9.1.23.1 \
OGG=1.3.4 \
OPENCOREAMR=0.1.5 \
OPENJPEG=2.3.1 \
OPUS=1.3 \
LIBASS=0.17.1 \
LIBDRM=2.4.115 \
LIBVA=2.18.0 \
LIBVDPAU=1.5 \
LIBVIDSTAB=1.1.1 \
LIBVMAF=2.3.1 \
NVCODEC=n12.0.16.0 \
OGG=1.3.5 \
OPENCOREAMR=0.1.6 \
OPENJPEG=2.5.0 \
OPUS=1.3.1 \
THEORA=1.1.1 \
VORBIS=1.3.6 \
VPX=1.10.0 \
X265=3.4 \
VORBIS=1.3.7 \
VPX=1.13.0 \
X265=3.5 \
XVID=1.3.7
RUN \
@ -55,6 +55,7 @@ RUN \
libxext-dev \
libgcc-10-dev \
libgomp1 \
libharfbuzz-dev \
libpciaccess-dev \
libssl-dev \
libtool \
@ -67,15 +68,18 @@ RUN \
ocl-icd-opencl-dev \
perl \
pkg-config \
python3 \
python3-pip\
python3-setuptools \
python3-wheel \
python3-venv \
x11proto-xext-dev \
xserver-xorg-dev \
xxd \
yasm \
zlib1g-dev && \
pip3 install meson
python3 -m venv /lsiopy && \
pip install -U --no-cache-dir \
pip \
setuptools \
wheel && \
pip install --no-cache-dir meson
# compile 3rd party libs
RUN \
@ -228,9 +232,10 @@ RUN \
RUN \
echo "**** compiling libdrm ****" && \
cd /tmp/libdrm && \
meson \
-Dvalgrind=disabled \
. build && \
meson setup \
--prefix=/usr --libdir=/usr/local/lib/x86_64-linux-gnu \
-Dvalgrind=disabled \
. build && \
ninja -C build && \
ninja -C build install
RUN \
@ -252,29 +257,30 @@ RUN \
echo "**** grabbing libvdpau ****" && \
mkdir -p /tmp/libvdpau && \
git clone \
--branch libvdpau-${LIBVDPAU} \
--branch ${LIBVDPAU} \
--depth 1 https://gitlab.freedesktop.org/vdpau/libvdpau.git \
/tmp/libvdpau
RUN \
echo "**** compiling libvdpau ****" && \
cd /tmp/libvdpau && \
./autogen.sh && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
meson setup \
--prefix=/usr --libdir=/usr/local/lib \
-Ddocumentation=false \
build && \
ninja -C build install
RUN \
echo "**** grabbing vmaf ****" && \
mkdir -p /tmp/vmaf && \
git clone \
--branch ${LIBVMAF} \
https://github.com/Netflix/vmaf.git \
/tmp/vmaf
curl -Lf \
https://github.com/Netflix/vmaf/archive/refs/tags/v${LIBVMAF}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/vmaf
RUN \
echo "**** compiling libvmaf ****" && \
cd /tmp/vmaf/libvmaf && \
meson build --buildtype release && \
meson setup \
--prefix=/usr --libdir=/usr/local/lib \
--buildtype release \
build && \
ninja -vC build && \
ninja -vC build install
RUN \
@ -433,7 +439,7 @@ RUN \
echo "**** grabbing x265 ****" && \
mkdir -p /tmp/x265 && \
curl -Lf \
http://anduin.linuxfromscratch.org/BLFS/x265/x265_${X265}.tar.gz | \
https://bitbucket.org/multicoreware/x265_git/downloads/x265_${X265}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/x265
RUN \
echo "**** compiling x265 ****" && \
@ -514,7 +520,7 @@ RUN \
ldconfig && \
mkdir -p \
/buildout/usr/local/bin \
/buildout/usr/lib/x86_64-linux-gnu \
/buildout/usr/local/lib/x86_64-linux-gnu \
/buildout/etc/OpenCL/vendors && \
cp \
/tmp/ffmpeg/ffmpeg \
@ -522,12 +528,12 @@ RUN \
cp \
/tmp/ffmpeg/ffprobe \
/buildout/usr/local/bin && \
ldd /tmp/ffmpeg/ffmpeg \
| awk '/local/ {print $3}' \
| xargs -i cp -L {} /buildout/usr/lib/ && \
cp -a \
/usr/local/lib/x86_64-linux-gnu/libdrm_* \
/buildout/usr/lib/x86_64-linux-gnu/ && \
/usr/local/lib/lib*so* \
/buildout/usr/local/lib/ && \
cp -a \
/usr/local/lib/x86_64-linux-gnu/lib*so* \
/buildout/usr/local/lib/x86_64-linux-gnu/ && \
echo \
'libnvidia-opencl.so.1' > \
/buildout/etc/OpenCL/vendors/nvidia.icd

View File

@ -12,28 +12,29 @@ ENV \
# versions
ENV \
AOM=v1.0.0 \
FDKAAC=2.0.1 \
FFMPEG_HARD=5.1.2 \
FREETYPE=2.9.1 \
FRIBIDI=1.0.8 \
KVAZAAR=2.0.0 \
AOM=v3.6.1 \
FDKAAC=2.0.2 \
FFMPEG_HARD=6.0 \
FREETYPE=2.12.1 \
FRIBIDI=1.0.13 \
KVAZAAR=2.2.0 \
LAME=3.100 \
LIBASS=0.14.0 \
LIBDRM=2.4.114 \
LIBVA=2.6.0 \
LIBVDPAU=1.2 \
LIBVIDSTAB=1.1.0 \
NVCODEC=n9.1.23.1 \
OGG=1.3.4 \
OPENCOREAMR=0.1.5 \
OPENJPEG=2.3.1 \
OPUS=1.3 \
LIBASS=0.17.1 \
LIBDRM=2.4.115 \
LIBVA=2.18.0 \
LIBVDPAU=1.5 \
LIBVIDSTAB=1.1.1 \
NVCODEC=n12.0.16.0 \
OGG=1.3.5 \
OPENCOREAMR=0.1.6 \
OPENJPEG=2.5.0 \
OPUS=1.3.1 \
THEORA=1.1.1 \
VORBIS=1.3.6 \
VPX=1.10.0 \
X265=3.3 \
VORBIS=1.3.7 \
VPX=1.13.0 \
X265=master \
XVID=1.3.7
# x265 aarch64 build fixes not in a release yet https://bitbucket.org/multicoreware/x265_git/issues/604/linux-arm-aarch64-build-failing-for-high
RUN \
echo "**** install build packages ****" && \
@ -53,6 +54,7 @@ RUN \
libxext-dev \
libgcc-10-dev \
libgomp1 \
libharfbuzz-dev \
libpciaccess-dev \
libssl-dev \
libtool \
@ -63,9 +65,10 @@ RUN \
nasm \
perl \
pkg-config \
python3 \
python3-venv \
x11proto-xext-dev \
xserver-xorg-dev \
xxd \
yasm \
zlib1g-dev
@ -342,9 +345,10 @@ RUN \
RUN \
echo "**** grabbing x265 ****" && \
mkdir -p /tmp/x265 && \
curl -Lf \
https://github.com/videolan/x265/archive/refs/tags/${X265}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/x265
git clone \
--branch ${X265} \
https://bitbucket.org/multicoreware/x265_git.git \
/tmp/x265
RUN \
echo "**** compiling x265 ****" && \
cd /tmp/x265/build/linux && \
@ -416,17 +420,18 @@ RUN \
RUN \
echo "**** arrange files ****" && \
ldconfig && \
mkdir -p /buildout/usr/local/bin && \
mkdir -p \
/buildout/usr/local/bin \
/buildout/usr/local/lib && \
cp \
/tmp/ffmpeg/ffmpeg \
/buildout/usr/local/bin && \
cp \
/tmp/ffmpeg/ffprobe \
/buildout/usr/local/bin && \
mkdir -p /buildout/usr/lib && \
ldd /tmp/ffmpeg/ffmpeg \
| awk '/local/ {print $3}' \
| xargs -i cp -L {} /buildout/usr/lib/
cp -a \
/usr/local/lib/lib*so* \
/buildout/usr/local/lib/
# Storage layer consumed downstream
FROM scratch

View File

@ -1,451 +0,0 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-jammy as buildstage
# set version label
ARG FFMPEG_VERSION
# common env
ENV \
DEBIAN_FRONTEND="noninteractive" \
MAKEFLAGS="-j4"
# versions
ENV \
AOM=v1.0.0 \
FDKAAC=2.0.1 \
FFMPEG_HARD=5.1.2 \
FREETYPE=2.9.1 \
FRIBIDI=1.0.8 \
KVAZAAR=2.0.0 \
LAME=3.100 \
LIBASS=0.14.0 \
LIBDRM=2.4.114 \
LIBVA=2.6.0 \
LIBVDPAU=1.2 \
LIBVIDSTAB=1.1.0 \
NVCODEC=n9.1.23.1 \
OGG=1.3.4 \
OPENCOREAMR=0.1.5 \
OPENJPEG=2.3.1 \
OPUS=1.3 \
THEORA=1.1.1 \
VORBIS=1.3.6 \
VPX=1.10.0 \
X265=3.4 \
XVID=1.3.7
RUN \
echo "**** install build packages ****" && \
apt-get update && \
apt-get install -y \
autoconf \
automake \
bzip2 \
cmake \
diffutils \
g++ \
gcc \
git \
gperf \
libexpat1-dev \
libfontconfig1-dev \
libxext-dev \
libgcc-10-dev \
libgomp1 \
libpciaccess-dev \
libssl-dev \
libtool \
libv4l-dev \
libx11-dev \
libxml2-dev \
make \
nasm \
perl \
pkg-config \
python3 \
x11proto-xext-dev \
xserver-xorg-dev \
yasm \
zlib1g-dev
# compile 3rd party libs
RUN \
echo "**** grabbing aom ****" && \
mkdir -p /tmp/aom && \
git clone \
--branch ${AOM} \
--depth 1 https://aomedia.googlesource.com/aom \
/tmp/aom
RUN \
echo "**** compiling aom ****" && \
cd /tmp/aom && \
rm -rf \
CMakeCache.txt \
CMakeFiles && \
mkdir -p \
aom_build && \
cd aom_build && \
cmake \
-DAOM_TARGET_CPU=generic \
-DBUILD_STATIC_LIBS=0 .. && \
make && \
make install
RUN \
echo "**** grabbing fdk-aac ****" && \
mkdir -p /tmp/fdk-aac && \
curl -Lf \
https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/fdk-aac
RUN \
echo "**** compiling fdk-aac ****" && \
cd /tmp/fdk-aac && \
autoreconf -fiv && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing freetype ****" && \
mkdir -p /tmp/freetype && \
curl -Lf \
https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/freetype
RUN \
echo "**** compiling freetype ****" && \
cd /tmp/freetype && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing fribidi ****" && \
mkdir -p /tmp/fribidi && \
curl -Lf \
https://github.com/fribidi/fribidi/archive/v${FRIBIDI}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/fribidi
RUN \
echo "**** compiling fribidi ****" && \
cd /tmp/fribidi && \
./autogen.sh && \
./configure \
--disable-static \
--enable-shared && \
make -j 1 && \
make install
RUN \
echo "**** grabbing kvazaar ****" && \
mkdir -p /tmp/kvazaar && \
curl -Lf \
https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/kvazaar
RUN \
echo "**** compiling kvazaar ****" && \
cd /tmp/kvazaar && \
./autogen.sh && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing lame ****" && \
mkdir -p /tmp/lame && \
curl -Lf \
http://downloads.sourceforge.net/project/lame/lame/3.100/lame-${LAME}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/lame
RUN \
echo "**** compiling lame ****" && \
cd /tmp/lame && \
cp \
/usr/share/automake-1.16/config.guess \
config.guess && \
cp \
/usr/share/automake-1.16/config.sub \
config.sub && \
./configure \
--disable-frontend \
--disable-static \
--enable-nasm \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing libass ****" && \
mkdir -p /tmp/libass && \
curl -Lf \
https://github.com/libass/libass/archive/${LIBASS}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/libass
RUN \
echo "**** compiling libass ****" && \
cd /tmp/libass && \
./autogen.sh && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing ogg ****" && \
mkdir -p /tmp/ogg && \
curl -Lf \
http://downloads.xiph.org/releases/ogg/libogg-${OGG}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/ogg
RUN \
echo "**** compiling ogg ****" && \
cd /tmp/ogg && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing opencore-amr ****" && \
mkdir -p /tmp/opencore-amr && \
curl -Lf \
http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/opencore-amr
RUN \
echo "**** compiling opencore-amr ****" && \
cd /tmp/opencore-amr && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing openjpeg ****" && \
mkdir -p /tmp/openjpeg && \
curl -Lf \
https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/openjpeg
RUN \
echo "**** compiling openjpeg ****" && \
cd /tmp/openjpeg && \
rm -Rf \
thirdparty/libpng/* && \
curl -Lf \
https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz | \
tar -zx --strip-components=1 -C thirdparty/libpng/ && \
cmake \
-DBUILD_STATIC_LIBS=0 \
-DBUILD_THIRDPARTY:BOOL=ON . && \
make && \
make install
RUN \
echo "**** grabbing opus ****" && \
mkdir -p /tmp/opus && \
curl -Lf \
https://archive.mozilla.org/pub/opus/opus-${OPUS}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/opus
RUN \
echo "**** compiling opus ****" && \
cd /tmp/opus && \
autoreconf -fiv && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing theora ****" && \
mkdir -p /tmp/theora && \
curl -Lf \
http://downloads.xiph.org/releases/theora/libtheora-${THEORA}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/theora
RUN \
echo "**** compiling theora ****" && \
cd /tmp/theora && \
cp \
/usr/share/automake-1.16/config.guess \
config.guess && \
cp \
/usr/share/automake-1.16/config.sub \
config.sub && \
curl -fL \
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
> png.patch && \
patch ./examples/png2theora.c < png.patch && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing vid.stab ****" && \
mkdir -p /tmp/vid.stab && \
curl -Lf \
https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/vid.stab
RUN \
echo "**** compiling vid.stab ****" && \
cd /tmp/vid.stab && \
echo "" > \
CMakeModules/FindSSE.cmake && \
cmake . && \
make && \
make install
RUN \
echo "**** grabbing vorbis ****" && \
mkdir -p /tmp/vorbis && \
curl -Lf \
http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/vorbis
RUN \
echo "**** compiling vorbis ****" && \
cd /tmp/vorbis && \
./configure \
--disable-static \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing vpx ****" && \
mkdir -p /tmp/vpx && \
curl -Lf \
https://github.com/webmproject/libvpx/archive/v${VPX}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/vpx
RUN \
echo "**** compiling vpx ****" && \
cd /tmp/vpx && \
LDFLAGS=-mfloat-abi=hard ./configure \
--disable-debug \
--disable-docs \
--disable-examples \
--disable-install-bins \
--disable-static \
--disable-unit-tests \
--enable-pic \
--enable-shared \
--enable-vp8 \
--enable-vp9 \
--enable-vp9-highbitdepth \
--extra-cflags="-mfloat-abi=hard" \
--extra-cxxflags="-mfloat-abi=hard" && \
make && \
make install
RUN \
echo "**** grabbing x264 ****" && \
mkdir -p /tmp/x264 && \
curl -Lf \
https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \
tar -jx --strip-components=1 -C /tmp/x264
RUN \
echo "**** compiling x264 ****" && \
cd /tmp/x264 && \
./configure \
--disable-cli \
--disable-static \
--enable-pic \
--enable-shared && \
make && \
make install
RUN \
echo "**** grabbing x265 ****" && \
mkdir -p /tmp/x265 && \
curl -Lf \
http://anduin.linuxfromscratch.org/BLFS/x265/x265_${X265}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/x265
RUN \
echo "**** compiling x265 ****" && \
cd /tmp/x265/build/linux && \
curl -fL \
https://sources.debian.org/data/main/x/x265/3.4-2/debian/patches/0001-Fix-arm-flags.patch \
> arm.patch && \
patch ../../source/CMakeLists.txt < arm.patch && \
cmake \
-D ENABLE_ASSEMBLY=OFF \
-D ENABLE_CLI=OFF \
-G "Unix Makefiles" ../../source && \
make && \
make install
RUN \
echo "**** grabbing xvid ****" && \
mkdir -p /tmp/xvid && \
curl -Lf \
https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \
tar -zx --strip-components=1 -C /tmp/xvid
RUN \
echo "**** compiling xvid ****" && \
cd /tmp/xvid/build/generic && \
./configure && \
make && \
make install
# main ffmpeg build
RUN \
echo "**** Versioning ****" && \
if [ -z ${FFMPEG_VERSION+x} ]; then \
FFMPEG=${FFMPEG_HARD}; \
else \
FFMPEG=${FFMPEG_VERSION}; \
fi && \
echo "**** grabbing ffmpeg ****" && \
mkdir -p /tmp/ffmpeg && \
echo "https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2" && \
curl -Lf \
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
tar -jx --strip-components=1 -C /tmp/ffmpeg
RUN \
echo "**** compiling ffmpeg ****" && \
cd /tmp/ffmpeg && \
./configure \
--disable-debug \
--disable-doc \
--disable-ffplay \
--enable-ffprobe \
--enable-gpl \
--enable-libaom \
--enable-libass \
--enable-libfdk_aac \
--enable-libfreetype \
--enable-libkvazaar \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopenjpeg \
--enable-libopus \
--enable-libtheora \
--enable-libv4l2 \
--enable-libvidstab \
--enable-libvorbis \
--enable-libvpx \
--enable-libxml2 \
--enable-libx264 \
--enable-libx265 \
--enable-libxvid \
--enable-nonfree \
--enable-openssl \
--enable-small \
--enable-stripping \
--enable-version3 && \
make
RUN \
echo "**** arrange files ****" && \
ldconfig && \
mkdir -p /buildout/usr/local/bin && \
cp \
/tmp/ffmpeg/ffmpeg \
/buildout/usr/local/bin && \
cp \
/tmp/ffmpeg/ffprobe \
/buildout/usr/local/bin && \
mkdir -p /buildout/usr/lib && \
ldd /tmp/ffmpeg/ffmpeg \
| awk '/local/ {print $3}' \
| xargs -i cp -L {} /buildout/usr/lib/
# Storage layer consumed downstream
FROM scratch
# set version label
ARG BUILD_DATE
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer"
# Add files from buildstage
COPY --from=buildstage /buildout/ /

80
Jenkinsfile vendored
View File

@ -103,7 +103,7 @@ pipeline {
steps{
script{
env.EXT_RELEASE = sh(
script: ''' echo 5.1.2 ''',
script: ''' echo 6.0 ''',
returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command'
}
@ -156,7 +156,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else {
env.CI_TAGS = 'bin-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@ -179,7 +179,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else {
env.CI_TAGS = 'bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
}
@ -202,7 +202,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.CI_TAGS = 'amd64-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else {
env.CI_TAGS = 'bin-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
}
@ -485,44 +485,6 @@ pipeline {
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
}
}
stage('Build ARMHF') {
agent {
label 'ARMHF-NATIVE'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
sh "docker buildx build \
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
--label \"org.opencontainers.image.authors=linuxserver.io\" \
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-ffmpeg/packages\" \
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-ffmpeg\" \
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-ffmpeg\" \
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Ffmpeg\" \
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
}
}
stage('Build ARM64') {
agent {
label 'ARM64'
@ -585,9 +547,7 @@ pipeline {
set -e
docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
docker run --rm \
@ -690,8 +650,6 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
@ -699,49 +657,47 @@ pipeline {
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-bin
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-bin
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-bin
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-bin
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-bin
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-bin
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
docker manifest push --purge ${MANIFESTIMAGE}:bin || :
docker manifest create ${MANIFESTIMAGE}:bin ${MANIFESTIMAGE}:amd64-bin ${MANIFESTIMAGE}:arm32v7-bin ${MANIFESTIMAGE}:arm64v8-bin
docker manifest annotate ${MANIFESTIMAGE}:bin ${MANIFESTIMAGE}:arm32v7-bin --os linux --arch arm
docker manifest create ${MANIFESTIMAGE}:bin ${MANIFESTIMAGE}:amd64-bin ${MANIFESTIMAGE}:arm64v8-bin
docker manifest annotate ${MANIFESTIMAGE}:bin ${MANIFESTIMAGE}:arm64v8-bin --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-bin")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-bin || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-bin ${MANIFESTIMAGE}:amd64-bin
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-bin
fi
docker manifest push --purge ${MANIFESTIMAGE}:bin
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}

View File

@ -2,12 +2,12 @@
# jenkins variables
project_name: docker-ffmpeg
external_type: na
custom_version_command: "echo 5.1.2"
custom_version_command: "echo 6.0"
release_type: prerelease
release_tag: bin
ls_branch: bin
skip_package_check: true
armhf_native: true
build_armhf: false
repo_vars:
- BUILD_VERSION_ARG = 'FFMPEG_VERSION'
- LS_USER = 'linuxserver'