From 17a76d12febc8acbf016ab25f2353cd173c54ba1 Mon Sep 17 00:00:00 2001 From: thelamer Date: Thu, 16 Jan 2020 13:36:03 -0800 Subject: [PATCH] bumping to ffmpeg 4.2.2 --- .github/ISSUE_TEMPLATE.md | 34 +++++ .github/PULL_REQUEST_TEMPLATE.md | 39 ++++++ Dockerfile | 36 ++--- Dockerfile.aarch64 | 50 +++---- Dockerfile.armhf | 52 +++----- Jenkinsfile | 220 ++++++++++++++++++++----------- jenkins-vars.yml | 2 +- 7 files changed, 273 insertions(+), 160 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..fa8065b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,34 @@ +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + +If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. + + + +------------------------------ + +## Expected Behavior + + +## Current Behavior + + +## Steps to Reproduce + + +1. +2. +3. +4. + +## Environment +**OS:** +**CPU architecture:** x86_64/arm32/arm64 +**How docker service was installed:** + + +## Command used to create docker container (run/create/compose/screenshot) + + +## Docker logs + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..26d5031 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,39 @@ + + +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] + + + + + + + + + + + + + + + + + +------------------------------ + +We welcome all PR’s though this doesn’t guarantee it will be accepted. + +## Description: + + +## Benefits of this PR and context: + + +## How Has This Been Tested? + + + + + +## Source / References: + diff --git a/Dockerfile b/Dockerfile index b7b276b..208bb5b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,28 +11,28 @@ ENV \ # versions ENV \ AOM=v1.0.0 \ - FDKAAC=0.1.5 \ - FFMPEG_HARD=4.2.1 \ - FONTCONFIG=2.13.91 \ + FDKAAC=2.0.1 \ + FFMPEG_HARD=4.2.2 \ + FONTCONFIG=2.13.92 \ FREETYPE=2.9.1 \ - FRIBIDI=0.19.7 \ - KVAZAAR=1.2.0 \ - LAME=3.99.5 \ + FRIBIDI=1.0.8 \ + KVAZAAR=1.3.0 \ + LAME=3.100 \ LIBASS=0.14.0 \ - LIBDRM=2.4.98 \ - LIBVA=2.4.1 \ + LIBDRM=2.4.100 \ + LIBVA=2.6.0 \ LIBVDPAU=1.2 \ LIBVIDSTAB=1.1.0 \ - NVCODEC=n9.0.18.1 \ - OGG=1.3.2 \ + 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.8.0 \ - X265=3.1.1 \ - XVID=1.3.4 + VPX=1.8.2 \ + X265=3.2.1 \ + XVID=1.3.7 RUN \ echo "**** install build packages ****" && \ @@ -148,12 +148,12 @@ RUN \ echo "**** grabbing fribidi ****" && \ mkdir -p /tmp/fribidi && \ curl -Lf \ - https://github.com/fribidi/fribidi/archive/${FRIBIDI}.tar.gz | \ + 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 && \ - ./bootstrap --no-config && \ + ./autogen.sh && \ ./configure \ --disable-static \ --enable-shared && \ @@ -178,7 +178,7 @@ RUN \ echo "**** grabbing lame ****" && \ mkdir -p /tmp/lame && \ curl -Lf \ - http://downloads.sourceforge.net/project/lame/lame/3.99/lame-${LAME}.tar.gz | \ + 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 ****" && \ @@ -396,7 +396,7 @@ RUN \ echo "**** grabbing x264 ****" && \ mkdir -p /tmp/x264 && \ curl -Lf \ - https://download.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2 | \ + https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \ tar -jx --strip-components=1 -C /tmp/x264 RUN \ echo "**** compiling x264 ****" && \ @@ -423,7 +423,7 @@ RUN \ echo "**** grabbing xvid ****" && \ mkdir -p /tmp/xvid && \ curl -Lf \ - http://downloads.xvid.org/downloads/xvidcore-${XVID}.tar.gz | \ + https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \ tar -zx --strip-components=1 -C /tmp/xvid RUN \ echo "**** compiling xvid ****" && \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 474571d..9885d89 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -11,28 +11,27 @@ ENV \ # versions ENV \ AOM=v1.0.0 \ - FDKAAC=0.1.5 \ - FFMPEG_HARD=4.2.1 \ - FONTCONFIG=2.13.91 \ - FREETYPE=2.8.1 \ - FRIBIDI=0.19.7 \ - KVAZAAR=1.2.0 \ - LAME=3.99.5 \ + FDKAAC=2.0.1 \ + FFMPEG_HARD=4.2.2 \ + FREETYPE=2.9.1 \ + FRIBIDI=1.0.8 \ + KVAZAAR=1.3.0 \ + LAME=3.100 \ LIBASS=0.14.0 \ LIBDRM=2.4.98 \ - LIBVA=2.4.1 \ + LIBVA=2.6.0 \ LIBVDPAU=1.2 \ LIBVIDSTAB=1.1.0 \ - NVCODEC=n9.0.18.1 \ - OGG=1.3.2 \ + 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.8.0 \ - X265=3.1.1 \ - XVID=1.3.4 + VPX=1.8.2 \ + X265=3.2.1 \ + XVID=1.3.7 RUN \ echo "**** install build packages ****" && \ @@ -50,6 +49,7 @@ RUN \ git \ gperf \ libexpat1-dev \ + libfontconfig1-dev \ libxext-dev \ libgcc-7-dev \ libgomp1 \ @@ -119,30 +119,16 @@ RUN \ --enable-shared && \ make && \ make install -RUN \ - echo "**** grabbing fontconfig ****" && \ - mkdir -p /tmp/fontconfig && \ - curl -Lf \ - https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \ - tar -zx --strip-components=1 -C /tmp/fontconfig -RUN \ - echo "**** compiling fontconfig ****" && \ - cd /tmp/fontconfig && \ - ./configure \ - --disable-static \ - --enable-shared && \ - make && \ - make install RUN \ echo "**** grabbing fribidi ****" && \ mkdir -p /tmp/fribidi && \ curl -Lf \ - https://github.com/fribidi/fribidi/archive/${FRIBIDI}.tar.gz | \ + 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 && \ - ./bootstrap --no-config && \ + ./autogen.sh && \ ./configure \ --disable-static \ --enable-shared && \ @@ -167,7 +153,7 @@ RUN \ echo "**** grabbing lame ****" && \ mkdir -p /tmp/lame && \ curl -Lf \ - http://downloads.sourceforge.net/project/lame/lame/3.99/lame-${LAME}.tar.gz | \ + 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 ****" && \ @@ -341,7 +327,7 @@ RUN \ echo "**** grabbing x264 ****" && \ mkdir -p /tmp/x264 && \ curl -Lf \ - https://download.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2 | \ + https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \ tar -jx --strip-components=1 -C /tmp/x264 RUN \ echo "**** compiling x264 ****" && \ @@ -369,7 +355,7 @@ RUN \ echo "**** grabbing xvid ****" && \ mkdir -p /tmp/xvid && \ curl -Lf \ - http://downloads.xvid.org/downloads/xvidcore-${XVID}.tar.gz | \ + https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \ tar -zx --strip-components=1 -C /tmp/xvid RUN \ echo "**** compiling xvid ****" && \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf index f0d0f17..aa08f8d 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -11,28 +11,27 @@ ENV \ # versions ENV \ AOM=v1.0.0 \ - FDKAAC=0.1.5 \ - FFMPEG_HARD=4.2.1 \ - FONTCONFIG=2.13.91 \ - FREETYPE=2.8.1 \ - FRIBIDI=0.19.7 \ - KVAZAAR=1.2.0 \ - LAME=3.99.5 \ + FDKAAC=2.0.1 \ + FFMPEG_HARD=4.2.2 \ + FREETYPE=2.9.1 \ + FRIBIDI=1.0.8 \ + KVAZAAR=1.3.0 \ + LAME=3.100 \ LIBASS=0.14.0 \ LIBDRM=2.4.98 \ - LIBVA=2.4.1 \ + LIBVA=2.6.0 \ LIBVDPAU=1.2 \ LIBVIDSTAB=1.1.0 \ - NVCODEC=n9.0.18.1 \ - OGG=1.3.2 \ + 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.8.0 \ - X265=3.1.1 \ - XVID=1.3.4 + VPX=1.8.2 \ + X265=3.2.1 \ + XVID=1.3.7 RUN \ echo "**** install build packages ****" && \ @@ -50,6 +49,7 @@ RUN \ git \ gperf \ libexpat1-dev \ + libfontconfig1-dev \ libxext-dev \ libgcc-7-dev \ libgomp1 \ @@ -120,30 +120,16 @@ RUN \ --enable-shared && \ make && \ make install -RUN \ - echo "**** grabbing fontconfig ****" && \ - mkdir -p /tmp/fontconfig && \ - curl -Lf \ - https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \ - tar -zx --strip-components=1 -C /tmp/fontconfig -RUN \ - echo "**** compiling fontconfig ****" && \ - cd /tmp/fontconfig && \ - ./configure \ - --disable-static \ - --enable-shared && \ - make && \ - make install RUN \ echo "**** grabbing fribidi ****" && \ mkdir -p /tmp/fribidi && \ curl -Lf \ - https://github.com/fribidi/fribidi/archive/${FRIBIDI}.tar.gz | \ + 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 && \ - ./bootstrap --no-config && \ + ./autogen.sh && \ ./configure \ --disable-static \ --enable-shared && \ @@ -168,7 +154,7 @@ RUN \ echo "**** grabbing lame ****" && \ mkdir -p /tmp/lame && \ curl -Lf \ - http://downloads.sourceforge.net/project/lame/lame/3.99/lame-${LAME}.tar.gz | \ + 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 ****" && \ @@ -344,7 +330,7 @@ RUN \ echo "**** grabbing x264 ****" && \ mkdir -p /tmp/x264 && \ curl -Lf \ - https://download.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2 | \ + https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \ tar -jx --strip-components=1 -C /tmp/x264 RUN \ echo "**** compiling x264 ****" && \ @@ -366,7 +352,7 @@ RUN \ echo "**** compiling x265 ****" && \ cd /tmp/x265/build/linux && \ curl -fL \ - https://sources.debian.org/data/main/x/x265/3.1.1-2/debian/patches/0001-Fix-arm-flags.patch \ + https://sources.debian.org/data/main/x/x265/3.2.1-1/debian/patches/0001-Fix-arm-flags.patch \ > arm.patch && \ patch ../../source/CMakeLists.txt < arm.patch && \ cmake \ @@ -379,7 +365,7 @@ RUN \ echo "**** grabbing xvid ****" && \ mkdir -p /tmp/xvid && \ curl -Lf \ - http://downloads.xvid.org/downloads/xvidcore-${XVID}.tar.gz | \ + https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \ tar -zx --strip-components=1 -C /tmp/xvid RUN \ echo "**** compiling xvid ****" && \ diff --git a/Jenkinsfile b/Jenkinsfile index 2f0b81f..af48eda 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,6 +2,10 @@ pipeline { agent { label 'X86-64-MULTI' } + options { + buildDiscarder(logRotator(numToKeepStr: '10', daysToKeepStr: '60')) + parallelsAlwaysFailFast() + } // Input to determine if this is a package check parameters { string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') @@ -10,6 +14,8 @@ pipeline { environment { BUILDS_DISCORD=credentials('build_webhook_url') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') + GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') + GITLAB_NAMESPACE=credentials('gitlab-namespace-id') BUILD_VERSION_ARG = 'FFMPEG_VERSION' LS_USER = 'linuxserver' LS_REPO = 'docker-ffmpeg' @@ -42,22 +48,7 @@ pipeline { env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.PULL_REQUEST = env.CHANGE_ID - env.LICENSE_TAG = sh( - script: '''#!/bin/bash - if [ -e LICENSE ] ; then - cat LICENSE | md5sum | cut -c1-8 - else - echo none - fi''', - returnStdout: true).trim() - env.FUNDING_TAG = sh( - script: '''#!/bin/bash - if [ -e ./.github/FUNDING.yml ] ; then - cat ./.github/FUNDING.yml | md5sum | cut -c1-8 - else - echo none - fi''', - returnStdout: true).trim() + env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE.md ./.github/PULL_REQUEST_TEMPLATE.md' } script{ env.LS_RELEASE_NUMBER = sh( @@ -105,7 +96,7 @@ pipeline { steps{ script{ env.EXT_RELEASE = sh( - script: ''' echo 4.2.1 ''', + script: ''' echo 4.2.2 ''', returnStdout: true).trim() env.RELEASE_LINK = 'custom_command' } @@ -130,6 +121,9 @@ pipeline { steps { script{ env.IMAGE = env.DOCKERHUB_IMAGE + env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME + env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/' + env.CONTAINER_NAME + env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { @@ -148,6 +142,9 @@ pipeline { steps { script{ env.IMAGE = env.DEV_DOCKERHUB_IMAGE + env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME + env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME + env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { @@ -166,6 +163,9 @@ pipeline { steps { script{ env.IMAGE = env.PR_DOCKERHUB_IMAGE + env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME + env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME + env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST } else { @@ -221,35 +221,32 @@ pipeline { TEMPDIR=$(mktemp -d) docker pull linuxserver/jenkins-builder:latest docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=bin -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest - docker pull linuxserver/doc-builder:latest - docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=bin -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest - if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \ - [ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \ - [ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ] || \ - [ "$(cat ${TEMPDIR}/${LS_REPO}/.github/FUNDING.yml | md5sum | cut -c1-8)" != "${FUNDING_TAG}" ]; then + CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) + cd ${TEMPDIR}/docker-${CONTAINER_NAME} + NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) + if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then mkdir -p ${TEMPDIR}/repo git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} - git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f bin - cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/ - cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ - cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/ + cd ${TEMPDIR}/repo/${LS_REPO} + git checkout -f bin + cd ${TEMPDIR}/docker-${CONTAINER_NAME} mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github - cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.github/FUNDING.yml ${TEMPDIR}/repo/${LS_REPO}/.github/FUNDING.yml + cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/ - git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md LICENSE ./.github/FUNDING.yml - git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git commit -m 'Bot Updating Templated Files' - git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all + git add ${TEMPLATED_FILES} + git commit -m 'Bot Updating Templated Files' + git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} else echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} fi mkdir -p ${TEMPDIR}/gitbook git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation - if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then - cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ + if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then + cp ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ cd ${TEMPDIR}/gitbook/docker-documentation/ git add images/docker-${CONTAINER_NAME}.md - git commit -m 'Bot Updating Templated Files' + git commit -m 'Bot Updating Documentation' git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all fi rm -Rf ${TEMPDIR}''' @@ -276,6 +273,26 @@ pipeline { } } } + /* ####################### + GitLab Mirroring + ####################### */ + // Ping into Gitlab to mirror this repo and have a registry endpoint + stage("GitLab Mirror"){ + when { + environment name: 'EXIT_STATUS', value: '' + } + steps{ + sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ + -d '{"namespace_id":'${GITLAB_NAMESPACE}',\ + "name":"'${LS_REPO}'", + "mirror":true,\ + "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ + "issues_access_level":"disabled",\ + "merge_requests_access_level":"disabled",\ + "repository_access_level":"enabled",\ + "visibility":"public"}' ''' + } + } /* ############### Build Container ############### */ @@ -424,19 +441,32 @@ pipeline { credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', usernameVariable: 'DOCKERUSER', passwordVariable: 'DOCKERPASS' + ], + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: 'Quay.io-Robot', + usernameVariable: 'QUAYUSER', + passwordVariable: 'QUAYPASS' ] ]) { - echo 'Logging into DockerHub' sh '''#! /bin/bash - echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin + set -e + echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin + echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin + echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin + for PUSHIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do + docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG} + docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:bin + docker push ${PUSHIMAGE}:bin + docker push ${PUSHIMAGE}:${META_TAG} + done + for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do + docker rmi \ + ${DELETEIMAGE}:${META_TAG} \ + ${DELETEIMAGE}:bin || : + done ''' - sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:bin" - sh "docker push ${IMAGE}:bin" - sh "docker push ${IMAGE}:${META_TAG}" - sh '''docker rmi \ - ${IMAGE}:${META_TAG} \ - ${IMAGE}:bin || :''' - } } } @@ -453,46 +483,81 @@ pipeline { credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', usernameVariable: 'DOCKERUSER', passwordVariable: 'DOCKERPASS' + ], + [ + $class: 'UsernamePasswordMultiBinding', + credentialsId: 'Quay.io-Robot', + usernameVariable: 'QUAYUSER', + passwordVariable: 'QUAYPASS' ] ]) { sh '''#! /bin/bash - echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin - ''' - sh '''#! /bin/bash + set -e + echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin + echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin + echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin + echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin if [ "${CI}" == "false" ]; then docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} - fi''' - sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-bin" - sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-bin" - sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-bin" - sh "docker push ${IMAGE}:amd64-${META_TAG}" - sh "docker push ${IMAGE}:arm32v7-${META_TAG}" - sh "docker push ${IMAGE}:arm64v8-${META_TAG}" - sh "docker push ${IMAGE}:amd64-bin" - sh "docker push ${IMAGE}:arm32v7-bin" - sh "docker push ${IMAGE}:arm64v8-bin" - sh "docker manifest push --purge ${IMAGE}:bin || :" - sh "docker manifest create ${IMAGE}:bin ${IMAGE}:amd64-bin ${IMAGE}:arm32v7-bin ${IMAGE}:arm64v8-bin" - sh "docker manifest annotate ${IMAGE}:bin ${IMAGE}:arm32v7-bin --os linux --arch arm" - sh "docker manifest annotate ${IMAGE}:bin ${IMAGE}:arm64v8-bin --os linux --arch arm64 --variant v8" - sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :" - sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}" - sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm" - sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8" - sh "docker manifest push --purge ${IMAGE}:bin" - sh "docker manifest push --purge ${IMAGE}:${META_TAG}" - sh '''docker rmi \ - ${IMAGE}:amd64-${META_TAG} \ - ${IMAGE}:amd64-bin \ - ${IMAGE}:arm32v7-${META_TAG} \ - ${IMAGE}:arm32v7-bin \ - ${IMAGE}:arm64v8-${META_TAG} \ - ${IMAGE}:arm64v8-bin \ + fi + for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}"; do + docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} + docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} + docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-bin + docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-bin + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-bin + docker push ${MANIFESTIMAGE}:amd64-${META_TAG} + docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} + docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} + docker push ${MANIFESTIMAGE}:amd64-bin + docker push ${MANIFESTIMAGE}:arm32v7-bin + docker push ${MANIFESTIMAGE}:arm64v8-bin + 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 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 annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 + docker manifest push --purge ${MANIFESTIMAGE}:bin + docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} + done + for LEGACYIMAGE in "${GITHUBIMAGE}" "${QUAYIMAGE}"; do + docker tag ${IMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:amd64-${META_TAG} + docker tag ${IMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-${META_TAG} + docker tag ${IMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-${META_TAG} + docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:bin + docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:${META_TAG} + docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-bin + docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-bin + docker push ${LEGACYIMAGE}:amd64-${META_TAG} + docker push ${LEGACYIMAGE}:arm32v7-${META_TAG} + docker push ${LEGACYIMAGE}:arm64v8-${META_TAG} + docker push ${LEGACYIMAGE}:bin + docker push ${LEGACYIMAGE}:${META_TAG} + docker push ${LEGACYIMAGE}:arm32v7-bin + docker push ${LEGACYIMAGE}:arm64v8-bin + done + ''' + sh '''#! /bin/bash + for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do + docker rmi \ + ${DELETEIMAGE}:amd64-${META_TAG} \ + ${DELETEIMAGE}:amd64-bin \ + ${DELETEIMAGE}:arm32v7-${META_TAG} \ + ${DELETEIMAGE}:arm32v7-bin \ + ${DELETEIMAGE}:arm64v8-${META_TAG} \ + ${DELETEIMAGE}:arm64v8-bin || : + done + docker rmi \ lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ - lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' + lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || : + ''' } } } @@ -576,16 +641,19 @@ pipeline { sh 'echo "build aborted"' } else if (currentBuild.currentResult == "SUCCESS"){ - sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } else { - sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' } } } + cleanup { + cleanWs() + } } } diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 8c68366..99f99ce 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -3,7 +3,7 @@ # jenkins variables project_name: docker-ffmpeg external_type: na -custom_version_command: "echo 4.2.1" +custom_version_command: "echo 4.2.2" release_type: prerelease release_tag: bin ls_branch: bin