Compare commits

...

2 Commits

Author SHA1 Message Date
LinuxServer-CI
230ad93b35 Bot Updating Package Versions 2023-05-27 03:20:24 +00:00
LinuxServer-CI
cc3e0b590e Bot Updating Templated Files 2023-05-27 03:16:34 +00:00
2 changed files with 65 additions and 86 deletions

121
Jenkinsfile vendored
View File

@@ -40,7 +40,12 @@ pipeline {
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
sh '''docker pull quay.io/skopeo/stable:v1 || : ''' sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
@@ -204,12 +209,12 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { 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 env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
@@ -337,6 +342,8 @@ pipeline {
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
@@ -428,8 +435,7 @@ pipeline {
} }
steps{ steps{
sh '''#! /bin/bash sh '''#! /bin/bash
set -e PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/swag") | .uuid' || :)
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/swag") | .uuid')
if [ -z "${PACKAGE_UUID}" ]; then if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh" echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -539,9 +545,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm32v7-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
stage('Build ARM64') { stage('Build ARM64') {
@@ -574,9 +583,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm64v8-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
} }
@@ -637,13 +649,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -661,13 +666,6 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -768,17 +766,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
done
'''
} }
} }
} }
@@ -872,29 +859,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
if [ -n "${SEMVER}" ]; then
docker rmi \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm32v7-${SEMVER} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
fi
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
@@ -965,7 +929,6 @@ pipeline {
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
not {environment name: 'CHANGE_ID', value: ''} not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
@@ -1019,16 +982,24 @@ pipeline {
echo "$escaped_table" echo "$escaped_table"
} }
# Retrieve JSON data from URL if [[ "${CI}" = "true" ]]; then
data=$(get_json "$CI_JSON_URL") # Retrieve JSON data from URL
# Create table from JSON data data=$(get_json "$CI_JSON_URL")
table=$(build_table "$data") # Create table from JSON data
echo -e "$table" table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \ "https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"''' -d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} }
} }
@@ -1055,6 +1026,14 @@ pipeline {
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
'''
cleanWs() cleanWs()
} }
} }

View File

@@ -21,8 +21,8 @@ azure-mgmt-core 1.4.0 python
azure-mgmt-dns 8.0.0 python azure-mgmt-dns 8.0.0 python
bash 5.2.15-r0 apk bash 5.2.15-r0 apk
beautifulsoup4 4.12.2 python beautifulsoup4 4.12.2 python
boto3 1.26.137 python boto3 1.26.142 python
botocore 1.29.137 python botocore 1.29.142 python
brotli-libs 1.0.9-r9 apk brotli-libs 1.0.9-r9 apk
bs4 0.0.1 python bs4 0.0.1 python
busybox 1.35.0 binary busybox 1.35.0 binary
@@ -75,11 +75,11 @@ certbot-plugin-gandi 1.4.3 python
certifi 2023.5.7 python certifi 2023.5.7 python
cffi 1.15.1 python cffi 1.15.1 python
charset-normalizer 3.1.0 python charset-normalizer 3.1.0 python
cloudflare 2.11.3 python cloudflare 2.11.6 python
configobj 5.0.8 python configobj 5.0.8 python
coreutils 9.1-r0 apk coreutils 9.1-r0 apk
cryptography 40.0.2 python cryptography 40.0.2 python
curl 8.0.1-r0 apk curl 8.1.0-r1 apk
dataclasses-json 0.5.7 python dataclasses-json 0.5.7 python
distro 1.8.0 python distro 1.8.0 python
dns-lexicon 3.11.7 python dns-lexicon 3.11.7 python
@@ -103,8 +103,8 @@ gnupg-utils 2.2.40-r0 apk
gnupg-wks-client 2.2.40-r0 apk gnupg-wks-client 2.2.40-r0 apk
gnutls 3.7.8-r3 apk gnutls 3.7.8-r3 apk
google-api-core 2.11.0 python google-api-core 2.11.0 python
google-api-python-client 2.86.0 python google-api-python-client 2.87.0 python
google-auth 2.18.1 python google-auth 2.19.0 python
google-auth-httplib2 0.1.0 python google-auth-httplib2 0.1.0 python
googleapis-common-protos 1.59.0 python googleapis-common-protos 1.59.0 python
gpg 2.2.40-r0 apk gpg 2.2.40-r0 apk
@@ -133,7 +133,7 @@ libbsd 0.11.7-r0 apk
libbz2 1.0.8-r4 apk libbz2 1.0.8-r4 apk
libc-utils 0.7.2-r3 apk libc-utils 0.7.2-r3 apk
libcrypto3 3.0.8-r4 apk libcrypto3 3.0.8-r4 apk
libcurl 8.1.0-r1 apk libcurl 8.1.1-r1 apk
libdav1d 1.0.0-r2 apk libdav1d 1.0.0-r2 apk
libedit 20221030.3.1-r0 apk libedit 20221030.3.1-r0 apk
libevent 2.1.12-r5 apk libevent 2.1.12-r5 apk
@@ -167,7 +167,7 @@ libstdc++ 12.2.1_git20220924-r4 apk
libtasn1 4.19.0-r0 apk libtasn1 4.19.0-r0 apk
libunistring 1.1-r0 apk libunistring 1.1-r0 apk
libuuid 2.38.1-r1 apk libuuid 2.38.1-r1 apk
libwebp 1.2.4-r1 apk libwebp 1.2.4-r2 apk
libx11 1.8.4-r0 apk libx11 1.8.4-r0 apk
libxau 1.0.10-r0 apk libxau 1.0.10-r0 apk
libxcb 1.15-r0 apk libxcb 1.15-r0 apk
@@ -193,7 +193,7 @@ msal 1.22.0 python
msal-extensions 1.0.0 python msal-extensions 1.0.0 python
msrest 0.7.1 python msrest 0.7.1 python
musl 1.2.3-r5 apk musl 1.2.3-r5 apk
musl-utils 1.2.3-r4 apk musl-utils 1.2.3-r5 apk
mypy-extensions 1.0.0 python mypy-extensions 1.0.0 python
nano 7.0-r0 apk nano 7.0-r0 apk
ncurses-libs 6.3_p20221119-r0 apk ncurses-libs 6.3_p20221119-r0 apk
@@ -229,7 +229,7 @@ packaging 23.1 python
parsedatetime 2.6 python parsedatetime 2.6 python
pcre 8.45-r2 apk pcre 8.45-r2 apk
pcre2 10.42-r0 apk pcre2 10.42-r0 apk
perl 5.36.0-r1 apk perl 5.36.0-r2 apk
perl-error 0.17029-r1 apk perl-error 0.17029-r1 apk
perl-git 2.38.5-r0 apk perl-git 2.38.5-r0 apk
php-cli 8.1.19 binary php-cli 8.1.19 binary
@@ -290,7 +290,7 @@ pkb-client 1.2 python
popt 1.19-r0 apk popt 1.19-r0 apk
portalocker 2.7.0 python portalocker 2.7.0 python
procps 3.3.17-r2 apk procps 3.3.17-r2 apk
protobuf 4.23.1 python protobuf 4.23.2 python
publicsuffixlist 0.9.4 python publicsuffixlist 0.9.4 python
pyOpenSSL 23.1.1 python pyOpenSSL 23.1.1 python
pyRFC3339 1.1 python pyRFC3339 1.1 python
@@ -306,7 +306,7 @@ python-transip 0.6.0 python
python3 3.10.11-r0 apk python3 3.10.11-r0 apk
pytz 2023.3 python pytz 2023.3 python
readline 8.2.0-r0 apk readline 8.2.0-r0 apk
requests 2.30.0 python requests 2.31.0 python
requests-file 1.5.1 python requests-file 1.5.1 python
requests-mock 1.10.0 python requests-mock 1.10.0 python
requests-oauthlib 1.3.1 python requests-oauthlib 1.3.1 python
@@ -322,12 +322,12 @@ sqlite-libs 3.40.1-r0 apk
ssl_client 1.35.0-r29 apk ssl_client 1.35.0-r29 apk
tiff 4.4.0-r3 apk tiff 4.4.0-r3 apk
tldextract 3.4.4 python tldextract 3.4.4 python
typing-inspect 0.8.0 python typing-inspect 0.9.0 python
typing_extensions 4.5.0 python typing_extensions 4.6.2 python
tzdata 2023c-r0 apk tzdata 2023c-r0 apk
unixodbc 2.3.11-r0 apk unixodbc 2.3.11-r0 apk
uritemplate 4.1.1 python uritemplate 4.1.1 python
urllib3 1.26.15 python urllib3 1.26.16 python
utmps-libs 0.1.2.0-r1 apk utmps-libs 0.1.2.0-r1 apk
wheel 0.40.0 python wheel 0.40.0 python
whois 5.5.14-r0 apk whois 5.5.14-r0 apk