Compare commits

..

51 Commits

Author SHA1 Message Date
LinuxServer-CI
523d744f8a Bot Updating Package Versions 2024-05-24 18:36:26 +00:00
LinuxServer-CI
49ec00127e Bot Updating Templated Files 2024-05-24 18:33:50 +00:00
LinuxServer-CI
b8e058679e Bot Updating Templated Files 2024-05-24 18:31:31 +00:00
LinuxServer-CI
6ebaf00cb6 Bot Updating Package Versions 2024-05-17 18:32:38 +00:00
LinuxServer-CI
9f0cb3aa38 Bot Updating Package Versions 2024-05-10 18:32:33 +00:00
LinuxServer-CI
e10521f93e Bot Updating Templated Files 2024-05-10 18:30:01 +00:00
LinuxServer-CI
b25194e490 Bot Updating Package Versions 2024-05-03 18:35:31 +00:00
LinuxServer-CI
475c877c76 Bot Updating Templated Files 2024-05-03 18:32:54 +00:00
LinuxServer-CI
45367a03b6 Bot Updating Package Versions 2024-04-26 18:29:53 +00:00
LinuxServer-CI
2f3d7bdd94 Bot Updating Package Versions 2024-04-19 18:28:58 +00:00
LinuxServer-CI
7166a2b229 Bot Updating Package Versions 2024-04-12 18:29:01 +00:00
LinuxServer-CI
4ee9ea84b9 Bot Updating Package Versions 2024-04-05 18:29:23 +00:00
LinuxServer-CI
4d728e90a3 Bot Updating Package Versions 2024-03-29 18:28:46 +00:00
LinuxServer-CI
ed8c89fc22 Bot Updating Package Versions 2024-03-22 18:28:42 +00:00
LinuxServer-CI
b2078bfbf6 Bot Updating Package Versions 2024-03-15 18:33:43 +00:00
LinuxServer-CI
fff281c5b8 Bot Updating Templated Files 2024-03-15 18:30:38 +00:00
LinuxServer-CI
9aa3cce066 Bot Updating Package Versions 2024-03-08 13:37:16 +00:00
LinuxServer-CI
09b457bbd4 Bot Updating Templated Files 2024-03-08 13:34:17 +00:00
aptalca
13955c751d Merge pull request #150 from linuxserver/development-parity
Add opcache and clean up default site conf
2024-03-08 08:32:38 -05:00
aptalca
723df80461 Add opcache and clean up default site conf 2024-03-07 09:17:32 -05:00
LinuxServer-CI
3d0d91cad8 Bot Updating Package Versions 2024-03-01 18:30:52 +00:00
LinuxServer-CI
86015b2bb6 Bot Updating Templated Files 2024-02-23 18:32:34 +00:00
LinuxServer-CI
9d09f09b65 Bot Updating Templated Files 2024-02-23 18:29:08 +00:00
LinuxServer-CI
3952031cc4 Bot Updating Package Versions 2024-02-17 15:45:06 +00:00
aptalca
65032223b6 Merge pull request #146 from linuxserver/feature-add_dom_php_extension
Add dom php extension to dev
2024-02-17 10:41:06 -05:00
Chris Hunt
c7475c8fe6 Add dom php extension to dev 2024-02-17 14:46:08 +00:00
LinuxServer-CI
181d9c4aed Bot Updating Package Versions 2024-02-17 08:47:18 +00:00
LinuxServer-CI
51ffe0c841 Bot Updating Package Versions 2024-02-16 21:47:16 +00:00
LinuxServer-CI
e04a704803 Bot Updating Package Versions 2024-02-16 18:30:58 +00:00
LinuxServer-CI
08127222fa Bot Updating Package Versions 2024-02-12 19:46:57 +00:00
LinuxServer-CI
0d894f8ca8 Bot Updating Package Versions 2024-02-09 18:31:07 +00:00
LinuxServer-CI
6ff1368f5f Bot Updating Package Versions 2024-02-02 18:29:58 +00:00
LinuxServer-CI
65c299b32f Bot Updating Package Versions 2024-01-26 16:42:34 +00:00
LinuxServer-CI
6aa0b5611d Bot Updating Templated Files 2024-01-26 16:39:55 +00:00
Eric Nemchik
fc295cdcad Merge pull request #141 from linuxserver/3.19-development
Rebase to Alpine 3.19
2024-01-26 10:37:56 -06:00
LinuxServer-CI
d9800ee920 Bot Updating Package Versions 2024-01-19 18:33:34 +00:00
LinuxServer-CI
5fbe7b8c94 Bot Updating Package Versions 2024-01-12 18:39:53 +00:00
LinuxServer-CI
450b8c49ae Bot Updating Templated Files 2024-01-12 18:36:21 +00:00
LinuxServer-CI
d0c3c7fb32 Bot Updating Templated Files 2024-01-12 18:33:53 +00:00
LinuxServer-CI
18594c2e33 Bot Updating Package Versions 2024-01-05 18:30:38 +00:00
Eric Nemchik
27b68856c7 Rebase to Alpine 3.19
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 19:20:34 -06:00
LinuxServer-CI
9905ef8a45 Bot Updating Package Versions 2023-12-22 18:29:20 +00:00
LinuxServer-CI
157c18a81a Bot Updating Package Versions 2023-12-15 18:31:10 +00:00
LinuxServer-CI
80ed370549 Bot Updating Package Versions 2023-12-08 18:30:20 +00:00
LinuxServer-CI
5544a0e7dd Bot Updating Package Versions 2023-12-01 18:30:22 +00:00
Eric Nemchik
74f43c96f6 Merge pull request #139 from linuxserver/quiet-migration-development
only run migration if conf exists
2023-11-29 08:31:03 -06:00
Eric Nemchik
6cb41d570e only run migration if conf exists
redirect stderr to /dev/null

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-25 10:51:48 -06:00
LinuxServer-CI
dc1f719285 Bot Updating Package Versions 2023-11-24 18:30:38 +00:00
LinuxServer-CI
2a6b03eca7 Bot Updating Package Versions 2023-11-17 18:33:13 +00:00
LinuxServer-CI
5365f6181d Bot Updating Templated Files 2023-11-17 18:30:55 +00:00
LinuxServer-CI
c91ac478c9 Bot Updating Package Versions 2023-11-10 18:29:24 +00:00
13 changed files with 415 additions and 378 deletions

View File

@@ -67,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs linuxserver.io" Provide a full docker log, output of "docker logs heimdall"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs linuxserver.io` Output of `docker logs heimdall`
render: bash render: bash
validations: validations:
required: true required: true

View File

@@ -7,7 +7,7 @@ jobs:
external-trigger-development: external-trigger-development:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/development' if: github.ref == 'refs/heads/development'

View File

@@ -9,7 +9,7 @@ jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

View File

@@ -7,7 +7,7 @@ jobs:
package-trigger-development: package-trigger-development:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: Package Trigger - name: Package Trigger
if: github.ref == 'refs/heads/development' if: github.ref == 'refs/heads/development'

View File

@@ -9,7 +9,7 @@ jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -15,16 +15,21 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
php82-intl \ php83-dom \
php82-pdo_pgsql \ php83-intl \
php82-pdo_sqlite \ php83-opcache \
php82-pdo_mysql \ php83-pdo_mysql \
php82-tokenizer && \ php83-pdo_pgsql \
php83-pdo_sqlite \
php83-tokenizer && \
echo "**** configure nginx ****" && \ echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -15,16 +15,21 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
php82-intl \ php83-dom \
php82-pdo_pgsql \ php83-intl \
php82-pdo_sqlite \ php83-opcache \
php82-pdo_mysql \ php83-pdo_mysql \
php82-tokenizer && \ php83-pdo_pgsql \
php83-pdo_sqlite \
php83-tokenizer && \
echo "**** configure nginx ****" && \ echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \ echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \ /etc/nginx/fastcgi_params && \
echo "**** configure php opcache ****" && \
echo 'opcache.validate_timestamps=0' >> \
/etc/php83/conf.d/00_opcache.ini && \
echo "**** install heimdall ****" && \ echo "**** install heimdall ****" && \
mkdir -p \ mkdir -p \
/heimdall && \ /heimdall && \

204
Jenkinsfile vendored
View File

@@ -16,6 +16,7 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id') GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
EXT_GIT_BRANCH = '2.x' EXT_GIT_BRANCH = '2.x'
EXT_USER = 'linuxserver' EXT_USER = 'linuxserver'
EXT_REPO = 'Heimdall' EXT_REPO = 'Heimdall'
@@ -61,11 +62,16 @@ pipeline {
env.COMMIT_SHA = sh( env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''', script: '''git rev-parse HEAD''',
returnStdout: true).trim() returnStdout: true).trim()
env.GH_DEFAULT_BRANCH = sh(
script: '''git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||' ''',
returnStdout: true).trim()
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT 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.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
} }
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''', script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
@@ -148,7 +154,7 @@ pipeline {
} }
if (env.SEMVER != null) { if (env.SEMVER != null) {
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { if (BRANCH_NAME != "${env.GH_DEFAULT_BRANCH}") {
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
} }
println("SEMVER: ${env.SEMVER}") println("SEMVER: ${env.SEMVER}")
@@ -249,9 +255,11 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.19 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache py3-pip && \ apk add --no-cache python3 && \
pip install s3cmd && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
pip install --no-cache-dir s3cmd && \
s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :''' s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
} }
} }
@@ -270,8 +278,15 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest # Cloned repo paths for templating:
# Stage 1 - Jenkinsfile update # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch development of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch development of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch development --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
@@ -280,16 +295,17 @@ pipeline {
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile" echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@@ -304,15 +320,16 @@ pipeline {
git rm "${i}" git rm "${i}"
done done
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old and deprecated templates" echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
echo "No templates to delete" echo "No templates to delete"
fi fi
# Stage 3 - Update templates echo "Starting Stage 3 - Update templates"
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
@@ -333,19 +350,34 @@ pipeline {
fi fi
git add readme-vars.yml ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
exit 0
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "No templates to update"
fi fi
echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
mkdir -p ${TEMPDIR}/docs mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation cd ${TEMPDIR}/docs/docker-documentation
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
git add docs/images/docker-${CONTAINER_NAME}.md git add docs/images/docker-${CONTAINER_NAME}.md
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation' git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
sleep $((RANDOM % MAXWAIT)) && \
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH})
else
echo "Docs update not needed, skipping"
fi fi
mkdir -p ${TEMPDIR}/unraid mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
@@ -355,9 +387,13 @@ pipeline {
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then 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 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}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -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
echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then
echo "Image is on the ignore list, and already in the deprecation folder."
elif grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated" echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml git add -u unraid/${CONTAINER_NAME}.xml
@@ -368,7 +404,42 @@ pipeline {
git add unraid/${CONTAINER_NAME}.xml git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template' git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to unraid templates failed, trying again in ${MAXWAIT} seconds" && \
sleep $((RANDOM % MAXWAIT)) && \
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH})
else
echo "No updates to Unraid template needed, skipping"
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi
if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then
echo "Docker Hub endpoint doesn't exist. Creating endpoint first."
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \
https://hub.docker.com/v2/repositories/ || :
fi
DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \
-X PATCH \
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi fi
rm -Rf ${TEMPDIR}''' rm -Rf ${TEMPDIR}'''
script{ script{
@@ -432,6 +503,8 @@ pipeline {
"merge_requests_access_level":"disabled",\ "merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\ "repository_access_level":"enabled",\
"visibility":"public"}' ''' "visibility":"public"}' '''
sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
-d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
} }
} }
/* ############### /* ###############
@@ -462,6 +535,7 @@ pipeline {
--label \"org.opencontainers.image.title=Heimdall\" \ --label \"org.opencontainers.image.title=Heimdall\" \
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \ --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -493,6 +567,7 @@ pipeline {
--label \"org.opencontainers.image.title=Heimdall\" \ --label \"org.opencontainers.image.title=Heimdall\" \
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \ --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -521,6 +596,7 @@ pipeline {
--label \"org.opencontainers.image.title=Heimdall\" \ --label \"org.opencontainers.image.title=Heimdall\" \
--label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \ --label \"org.opencontainers.image.description=[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. \" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=false --sbom=false \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) { retry(5) {
@@ -547,7 +623,7 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" != "true" ]; then
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG} LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
else else
LOCAL_CONTAINER=${IMAGE}:${META_TAG} LOCAL_CONTAINER=${IMAGE}:${META_TAG}
@@ -568,7 +644,8 @@ pipeline {
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@@ -643,7 +720,7 @@ pipeline {
--shm-size=1gb \ --shm-size=1gb \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-e IMAGE=\"${IMAGE}\" \ -e IMAGE=\"${IMAGE}\" \
-e DELAY_START=\"${CI_DELAY}\" \ -e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \ -e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \ -e META_TAG=\"${META_TAG}\" \
-e PORT=\"${CI_PORT}\" \ -e PORT=\"${CI_PORT}\" \
@@ -671,12 +748,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -687,7 +758,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
@@ -718,12 +789,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@@ -734,7 +799,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
@@ -763,35 +828,13 @@ pipeline {
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:development || : done
docker manifest create ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm64v8-development --os linux --arch arm64 --variant v8 docker buildx imagetools create -t ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_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}: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 if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
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-development")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-development || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-development ${MANIFESTIMAGE}:amd64-development
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-development
fi
docker manifest push --purge ${MANIFESTIMAGE}:development
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
fi fi
done done
''' '''
@@ -864,39 +907,6 @@ EOF
) ''' ) '''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') {
when {
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
docker pull ghcr.io/linuxserver/readme-sync
docker run --rm=true \
-e DOCKERHUB_USERNAME=$DOCKERUSER \
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
-e DOCKER_REPOSITORY=${IMAGE} \
-e GIT_BRANCH=master \
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
ghcr.io/linuxserver/readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
}
}
}
// If this is a Pull request send the CI link as a comment on it // If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {

View File

@@ -28,7 +28,7 @@ Find us at:
# [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall) # [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fheimdall?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fheimdall) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fheimdall?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-heimdall/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-heimdall/packages)
@@ -49,7 +49,7 @@ Why not use it as your browser start page? It even has the ability to include a
## Supported Architectures ## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/heimdall:development` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/heimdall:development` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -87,7 +87,6 @@ To help you get started creating a container from this image you can either use
```yaml ```yaml
--- ---
version: "2.1"
services: services:
heimdall: heimdall:
image: lscr.io/linuxserver/heimdall:development image: lscr.io/linuxserver/heimdall:development
@@ -97,7 +96,7 @@ services:
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- /path/to/appdata/config:/config - /path/to/heimdall/config:/config
ports: ports:
- 80:80 - 80:80
- 443:443 - 443:443
@@ -114,7 +113,7 @@ docker run -d \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-p 80:80 \ -p 80:80 \
-p 443:443 \ -p 443:443 \
-v /path/to/appdata/config:/config \ -v /path/to/heimdall/config:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/heimdall:development lscr.io/linuxserver/heimdall:development
``` ```
@@ -130,7 +129,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-v /config` | Contains all relevant configuration files. | | `-v /config` | Persistent config files |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@@ -201,7 +200,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
@@ -266,21 +265,6 @@ Below are the instructions for updating containers:
docker image prune docker image prune
``` ```
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once heimdall
```
* You can also remove the old dangling images: `docker image prune`
**warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
@@ -308,6 +292,9 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **07.03.24:** - Enable the opcache and disable file revalidation.
* **06.03.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **23.12.23:** - Rebase to Alpine 3.19 with php 8.3.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf. * **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **13.04.23:** - Move ssl.conf include to default.conf. * **13.04.23:** - Move ssl.conf include to default.conf.
* **20.01.23:** - Rebase to alpine 3.17 with php8.1. * **20.01.23:** - Rebase to alpine 3.17 with php8.1.

View File

@@ -1,228 +1,250 @@
NAME VERSION TYPE NAME VERSION TYPE
Reads from stdin without leaking info to the terminal and outputs back to stdout 1, 0, 0, 0 dotnet Hidden Input 1, 0, 0, 0 dotnet
alpine-baselayout 3.4.3-r1 apk alpine-baselayout 3.4.3-r2 apk
alpine-baselayout-data 3.4.3-r1 apk alpine-baselayout-data 3.4.3-r2 apk
alpine-keys 2.4-r1 apk alpine-keys 2.4-r1 apk
alpine-release 3.18.4-r0 apk alpine-release 3.19.1-r0 apk
apache2-utils 2.4.58-r0 apk apache2-utils 2.4.59-r0 apk
apk-tools 2.14.0-r2 apk apk-tools 2.14.4-r0 apk
apr 1.7.4-r0 apk apr 1.7.4-r0 apk
apr-util 1.6.3-r1 apk apr-util 1.6.3-r1 apk
argon2-libs 20190702-r4 apk argon2-libs 20190702-r5 apk
barryvdh/laravel-ide-helper v2.12.3 php-composer aws/aws-crt-php v1.2.4 php-composer
barryvdh/reflection-docblock v2.1.0 php-composer aws/aws-sdk-php 3.299.1 php-composer
bash 5.2.15-r5 apk barryvdh/laravel-ide-helper v2.15.1 php-composer
brick/math 0.9.3 php-composer barryvdh/reflection-docblock v2.1.1 php-composer
brotli-libs 1.0.9-r14 apk bash 5.2.21-r0 apk
busybox 1.36.1-r4 apk brick/math 0.11.0 php-composer
busybox-binsh 1.36.1-r4 apk brotli-libs 1.1.0-r1 apk
ca-certificates 20230506-r0 apk busybox 1.36.1-r18 apk
ca-certificates-bundle 20230506-r0 apk busybox-binsh 1.36.1-r18 apk
clue/stream-filter v1.6.0 php-composer c-ares 1.27.0-r0 apk
composer/pcre 3.1.0 php-composer ca-certificates 20240226-r0 apk
coreutils 9.3-r1 apk ca-certificates-bundle 20240226-r0 apk
curl 8.4.0-r0 apk carbonphp/carbon-doctrine-types 2.1.0 php-composer
catatonit 0.2.0-r0 apk
clue/stream-filter v1.7.0 php-composer
composer 2.7.6 binary
composer/class-map-generator 1.1.0 php-composer
composer/pcre 3.1.1 php-composer
coreutils 9.4-r2 apk
coreutils-env 9.4-r2 apk
coreutils-fmt 9.4-r2 apk
coreutils-sha512sum 9.4-r2 apk
curl 8.5.0-r0 apk
dflydev/dot-access-data v3.0.2 php-composer dflydev/dot-access-data v3.0.2 php-composer
doctrine/cache 2.2.0 php-composer doctrine/cache 2.2.0 php-composer
doctrine/dbal 3.5.1 php-composer doctrine/dbal 3.8.2 php-composer
doctrine/deprecations v1.0.0 php-composer doctrine/deprecations 1.1.3 php-composer
doctrine/event-manager 1.2.0 php-composer doctrine/event-manager 2.0.0 php-composer
doctrine/inflector 2.0.6 php-composer doctrine/inflector 2.0.9 php-composer
doctrine/instantiator 1.4.1 php-composer doctrine/instantiator 2.0.0 php-composer
doctrine/lexer 1.2.3 php-composer doctrine/lexer 3.0.1 php-composer
dragonmantank/cron-expression v3.3.2 php-composer dragonmantank/cron-expression v3.3.3 php-composer
egulias/email-validator 2.1.25 php-composer egulias/email-validator 4.0.2 php-composer
facade/flare-client-php 1.10.0 php-composer fakerphp/faker v1.23.1 php-composer
facade/ignition 2.17.6 php-composer filp/whoops 2.15.4 php-composer
facade/ignition-contracts 1.0.2 php-composer findutils 4.9.0-r5 apk
fideloper/proxy 4.4.2 php-composer fruitcake/php-cors v1.3.0 php-composer
filp/whoops 2.14.6 php-composer git 2.43.4-r0 apk
fzaninotto/faker v1.9.2 php-composer graham-campbell/bounded-cache v2.2.0 php-composer
git 2.40.1-r0 apk graham-campbell/github v12.4.0 php-composer
graham-campbell/bounded-cache v1.3.0 php-composer graham-campbell/manager v5.1.0 php-composer
graham-campbell/github v10.6.0 php-composer graham-campbell/result-type v1.1.2 php-composer
graham-campbell/manager v4.7.0 php-composer guzzlehttp/guzzle 7.8.1 php-composer
graham-campbell/result-type v1.1.0 php-composer guzzlehttp/promises 2.0.2 php-composer
guzzlehttp/guzzle 7.5.0 php-composer guzzlehttp/psr7 2.6.2 php-composer
guzzlehttp/promises 1.5.2 php-composer guzzlehttp/uri-template v1.0.3 php-composer
guzzlehttp/psr7 2.4.3 php-composer
hamcrest/hamcrest-php v2.0.1 php-composer hamcrest/hamcrest-php v2.0.1 php-composer
icu-data-en 73.2-r2 apk icu-data-en 74.1-r0 apk
icu-libs 73.2-r2 apk icu-libs 74.1-r0 apk
jq 1.6-r3 apk jq 1.7.1-r0 apk
knplabs/github-api v3.6.0 php-composer knplabs/github-api v3.13.0 php-composer
laravel/framework v8.83.26 php-composer laravel/framework v10.44.0 php-composer
laravel/serializable-closure v1.2.2 php-composer laravel/prompts v0.1.15 php-composer
laravel/tinker v2.7.3 php-composer laravel/serializable-closure v1.3.3 php-composer
laravel/ui v3.4.6 php-composer laravel/tinker v2.9.0 php-composer
laravelcollective/html v6.3.0 php-composer laravel/ui v4.4.0 php-composer
league/commonmark 2.3.7 php-composer laravelcollective/html v6.4.1 php-composer
league/config v1.1.1 php-composer lcobucci/jwt 5.2.0 php-composer
league/flysystem 1.1.10 php-composer league/commonmark 2.4.2 php-composer
league/mime-type-detection 1.11.0 php-composer league/config v1.2.0 php-composer
libacl 2.3.1-r3 apk league/flysystem 3.24.0 php-composer
libattr 2.5.1-r4 apk league/flysystem-aws-s3-v3 3.24.0 php-composer
libbsd 0.11.7-r1 apk league/flysystem-local 3.23.1 php-composer
libbz2 1.0.8-r5 apk league/mime-type-detection 1.15.0 php-composer
libacl 2.3.1-r4 apk
libattr 2.5.1-r5 apk
libbsd 0.11.7-r3 apk
libbz2 1.0.8-r6 apk
libc-utils 0.7.2-r5 apk libc-utils 0.7.2-r5 apk
libcrypto3 3.1.4-r0 apk libcrypto3 3.1.5-r0 apk
libcurl 8.4.0-r0 apk libcurl 8.5.0-r0 apk
libedit 20221030.3.1-r1 apk libedit 20230828.3.1-r3 apk
libexpat 2.5.0-r1 apk libexpat 2.6.2-r0 apk
libgcc 12.2.1_git20220924-r10 apk libgcc 13.2.1_git20231014-r0 apk
libidn2 2.3.4-r1 apk libidn2 2.3.4-r4 apk
libintl 0.21.1-r7 apk libintl 0.22.3-r0 apk
libmd 1.0.4-r2 apk libmd 1.1.0-r0 apk
libncursesw 6.4_p20230506-r0 apk libncursesw 6.4_p20231125-r0 apk
libpq 15.4-r0 apk libpq 16.3-r0 apk
libproc2 4.0.4-r0 apk libproc2 4.0.4-r0 apk
libssl3 3.1.4-r0 apk libssl3 3.1.5-r0 apk
libstdc++ 12.2.1_git20220924-r10 apk libstdc++ 13.2.1_git20231014-r0 apk
libunistring 1.1-r1 apk libunistring 1.1-r2 apk
libuuid 2.38.1-r8 apk libuuid 2.39.3-r0 apk
libxml2 2.11.4-r0 apk libxml2 2.11.8-r0 apk
libzip 1.9.2-r2 apk libzip 1.10.1-r0 apk
linux-pam 1.5.2-r10 apk linux-pam 1.5.3-r7 apk
logrotate 3.21.0-r1 apk logrotate 3.21.0-r1 apk
mockery/mockery 1.5.1 php-composer mockery/mockery 1.6.7 php-composer
monolog/monolog 2.8.0 php-composer monolog/monolog 3.5.0 php-composer
musl 1.2.4-r2 apk mtdowling/jmespath.php 2.7.0 php-composer
musl-utils 1.2.4-r2 apk musl 1.2.4_git20230717-r4 apk
myclabs/deep-copy 1.11.0 php-composer musl-utils 1.2.4_git20230717-r4 apk
myclabs/deep-copy 1.11.1 php-composer
nano 7.2-r1 apk nano 7.2-r1 apk
ncurses-terminfo-base 6.4_p20230506-r0 apk ncurses-terminfo-base 6.4_p20231125-r0 apk
nesbot/carbon 2.63.0 php-composer nesbot/carbon 2.72.3 php-composer
netcat-openbsd 1.219-r1 apk netcat-openbsd 1.226-r0 apk
nette/schema v1.2.3 php-composer nette/schema v1.3.0 php-composer
nette/utils v3.2.8 php-composer nette/utils v4.0.4 php-composer
nghttp2-libs 1.57.0-r0 apk nghttp2-libs 1.58.0-r0 apk
nginx 1.24.0-r7 apk nginx 1.24.0-r16 apk
nikic/php-parser v4.15.2 php-composer nikic/php-parser v5.0.0 php-composer
nunomaduro/collision v5.11.0 php-composer nunomaduro/collision v6.4.0 php-composer
oniguruma 6.9.8-r1 apk nunomaduro/termwind v1.15.1 php-composer
openssl 3.1.4-r0 apk oniguruma 6.9.9-r0 apk
opis/closure 3.6.3 php-composer openssl 3.1.5-r0 apk
pcre 8.45-r3 apk pcre 8.45-r3 apk
pcre2 10.42-r1 apk pcre2 10.42-r2 apk
phar-io/manifest 2.0.3 php-composer phar-io/manifest 2.0.3 php-composer
phar-io/version 3.2.1 php-composer phar-io/version 3.2.1 php-composer
php-http/cache-plugin 1.7.5 php-composer php-http/cache-plugin 1.8.1 php-composer
php-http/client-common 2.6.0 php-composer php-http/client-common 2.7.1 php-composer
php-http/discovery 1.14.3 php-composer php-http/discovery 1.19.2 php-composer
php-http/httplug 2.3.0 php-composer php-http/httplug 2.4.0 php-composer
php-http/message 1.13.0 php-composer php-http/message 1.16.0 php-composer
php-http/message-factory v1.0.2 php-composer php-http/message-factory 1.1.0 php-composer
php-http/multipart-stream-builder 1.2.0 php-composer php-http/multipart-stream-builder 1.3.0 php-composer
php-http/promise 1.1.0 php-composer php-http/promise 1.3.0 php-composer
php82 8.2.10-r0 apk php83 8.3.7-r0 apk
php82-common 8.2.10-r0 apk php83-common 8.3.7-r0 apk
php82-ctype 8.2.10-r0 apk php83-ctype 8.3.7-r0 apk
php82-curl 8.2.10-r0 apk php83-curl 8.3.7-r0 apk
php82-fileinfo 8.2.10-r0 apk php83-dom 8.3.7-r0 apk
php82-fpm 8.2.10-r0 apk php83-fileinfo 8.3.7-r0 apk
php82-iconv 8.2.10-r0 apk php83-fpm 8.3.7-r0 apk
php82-intl 8.2.10-r0 apk php83-iconv 8.3.7-r0 apk
php82-mbstring 8.2.10-r0 apk php83-intl 8.3.7-r0 apk
php82-mysqlnd 8.2.10-r0 apk php83-mbstring 8.3.7-r0 apk
php82-openssl 8.2.10-r0 apk php83-mysqlnd 8.3.7-r0 apk
php82-pdo 8.2.10-r0 apk php83-opcache 8.3.7-r0 apk
php82-pdo_mysql 8.2.10-r0 apk php83-openssl 8.3.7-r0 apk
php82-pdo_pgsql 8.2.10-r0 apk php83-pdo 8.3.7-r0 apk
php82-pdo_sqlite 8.2.10-r0 apk php83-pdo_mysql 8.3.7-r0 apk
php82-phar 8.2.10-r0 apk php83-pdo_pgsql 8.3.7-r0 apk
php82-session 8.2.10-r0 apk php83-pdo_sqlite 8.3.7-r0 apk
php82-simplexml 8.2.10-r0 apk php83-phar 8.3.7-r0 apk
php82-tokenizer 8.2.10-r0 apk php83-session 8.3.7-r0 apk
php82-xml 8.2.10-r0 apk php83-simplexml 8.3.7-r0 apk
php82-xmlwriter 8.2.10-r0 apk php83-tokenizer 8.3.7-r0 apk
php82-zip 8.2.10-r0 apk php83-xml 8.3.7-r0 apk
php83-xmlwriter 8.3.7-r0 apk
php83-zip 8.3.7-r0 apk
phpdocumentor/reflection-common 2.2.0 php-composer phpdocumentor/reflection-common 2.2.0 php-composer
phpdocumentor/type-resolver 1.6.2 php-composer phpdocumentor/type-resolver 1.8.0 php-composer
phpoption/phpoption 1.9.0 php-composer phpoption/phpoption 1.9.2 php-composer
phpunit/php-code-coverage 9.2.19 php-composer phpstan/phpdoc-parser 1.25.0 php-composer
phpunit/php-code-coverage 9.2.30 php-composer
phpunit/php-file-iterator 3.0.6 php-composer phpunit/php-file-iterator 3.0.6 php-composer
phpunit/php-invoker 3.1.1 php-composer phpunit/php-invoker 3.1.1 php-composer
phpunit/php-text-template 2.0.4 php-composer phpunit/php-text-template 2.0.4 php-composer
phpunit/php-timer 5.0.3 php-composer phpunit/php-timer 5.0.3 php-composer
phpunit/phpunit 9.5.26 php-composer phpunit/phpunit 9.6.16 php-composer
popt 1.19-r2 apk popt 1.19-r3 apk
procps-ng 4.0.4-r0 apk procps-ng 4.0.4-r0 apk
psr/cache 1.0.1 php-composer psr/cache 3.0.0 php-composer
psr/container 1.1.2 php-composer psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.1 php-composer psr/http-client 1.0.3 php-composer
psr/http-factory 1.0.1 php-composer psr/http-factory 1.0.2 php-composer
psr/http-message 1.0.1 php-composer psr/http-message 2.0 php-composer
psr/log 1.1.4 php-composer psr/log 3.0.0 php-composer
psr/simple-cache 1.0.1 php-composer psr/simple-cache 3.0.0 php-composer
psy/psysh v0.11.9 php-composer psy/psysh v0.12.0 php-composer
ralouphie/getallheaders 3.0.3 php-composer ralouphie/getallheaders 3.0.3 php-composer
ramsey/collection 1.2.2 php-composer ramsey/collection 2.0.0 php-composer
ramsey/uuid 4.2.3 php-composer ramsey/uuid 4.7.5 php-composer
readline 8.2.1-r1 apk readline 8.2.1-r2 apk
scanelf 1.3.7-r1 apk scanelf 1.3.7-r2 apk
sebastian/cli-parser 1.0.1 php-composer sebastian/cli-parser 1.0.1 php-composer
sebastian/code-unit 1.0.8 php-composer sebastian/code-unit 1.0.8 php-composer
sebastian/code-unit-reverse-lookup 2.0.3 php-composer sebastian/code-unit-reverse-lookup 2.0.3 php-composer
sebastian/comparator 4.0.8 php-composer sebastian/comparator 4.0.8 php-composer
sebastian/complexity 2.0.2 php-composer sebastian/complexity 2.0.3 php-composer
sebastian/diff 4.0.4 php-composer sebastian/diff 4.0.5 php-composer
sebastian/environment 5.1.4 php-composer sebastian/environment 5.1.5 php-composer
sebastian/exporter 4.0.5 php-composer sebastian/exporter 4.0.5 php-composer
sebastian/global-state 5.0.5 php-composer sebastian/global-state 5.0.6 php-composer
sebastian/lines-of-code 1.0.3 php-composer sebastian/lines-of-code 1.0.4 php-composer
sebastian/object-enumerator 4.0.4 php-composer sebastian/object-enumerator 4.0.4 php-composer
sebastian/object-reflector 2.0.4 php-composer sebastian/object-reflector 2.0.4 php-composer
sebastian/recursion-context 4.0.4 php-composer sebastian/recursion-context 4.0.5 php-composer
sebastian/resource-operations 3.0.3 php-composer sebastian/resource-operations 3.0.3 php-composer
sebastian/type 3.2.0 php-composer sebastian/type 3.2.1 php-composer
sebastian/version 3.0.2 php-composer sebastian/version 3.0.2 php-composer
shadow 4.13-r4 apk shadow 4.14.2-r0 apk
skalibs 2.13.1.1-r1 apk skalibs 2.14.0.1-r0 apk
sqlite-libs 3.41.2-r2 apk spatie/backtrace 1.5.3 php-composer
squizlabs/php_codesniffer 3.7.1 php-composer spatie/flare-client-php 1.4.4 php-composer
ssl_client 1.36.1-r4 apk spatie/ignition 1.12.0 php-composer
swiftmailer/swiftmailer v6.3.0 php-composer spatie/laravel-ignition 2.4.2 php-composer
symfony/cache v5.4.15 php-composer sqlite-libs 3.44.2-r0 apk
symfony/cache-contracts v2.5.2 php-composer squizlabs/php_codesniffer 3.9.0 php-composer
symfony/console v5.4.15 php-composer ssl_client 1.36.1-r18 apk
symfony/css-selector v5.4.11 php-composer symfony/cache v6.4.3 php-composer
symfony/deprecation-contracts v2.5.2 php-composer symfony/cache-contracts v3.4.0 php-composer
symfony/error-handler v5.4.15 php-composer symfony/console v6.4.3 php-composer
symfony/event-dispatcher v5.4.9 php-composer symfony/css-selector v7.0.3 php-composer
symfony/event-dispatcher-contracts v2.5.2 php-composer symfony/deprecation-contracts v3.4.0 php-composer
symfony/finder v5.4.11 php-composer symfony/error-handler v6.4.3 php-composer
symfony/http-foundation v5.4.15 php-composer symfony/event-dispatcher v7.0.3 php-composer
symfony/http-kernel v5.4.15 php-composer symfony/event-dispatcher-contracts v3.4.0 php-composer
symfony/mime v5.4.14 php-composer symfony/finder v6.4.0 php-composer
symfony/options-resolver v5.4.11 php-composer symfony/http-foundation v6.4.3 php-composer
symfony/polyfill-ctype v1.27.0 php-composer symfony/http-kernel v6.4.3 php-composer
symfony/polyfill-iconv v1.27.0 php-composer symfony/mailer v6.4.3 php-composer
symfony/polyfill-intl-grapheme v1.27.0 php-composer symfony/mime v6.4.3 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer symfony/options-resolver v7.0.0 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer symfony/polyfill-ctype v1.29.0 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer symfony/polyfill-intl-grapheme v1.29.0 php-composer
symfony/polyfill-php72 v1.27.0 php-composer symfony/polyfill-intl-idn v1.29.0 php-composer
symfony/polyfill-php73 v1.27.0 php-composer symfony/polyfill-intl-normalizer v1.29.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer symfony/polyfill-mbstring v1.29.0 php-composer
symfony/polyfill-php81 v1.27.0 php-composer symfony/polyfill-php72 v1.29.0 php-composer
symfony/process v5.4.11 php-composer symfony/polyfill-php80 v1.29.0 php-composer
symfony/routing v5.4.15 php-composer symfony/polyfill-php83 v1.29.0 php-composer
symfony/service-contracts v2.5.2 php-composer symfony/polyfill-uuid v1.29.0 php-composer
symfony/string v5.4.15 php-composer symfony/process v6.4.3 php-composer
symfony/routing v6.4.3 php-composer
symfony/service-contracts v3.4.1 php-composer
symfony/string v7.0.3 php-composer
symfony/thanks v1.2.10 php-composer symfony/thanks v1.2.10 php-composer
symfony/translation v5.4.14 php-composer symfony/translation v6.4.3 php-composer
symfony/translation-contracts v2.5.2 php-composer symfony/translation-contracts v3.4.1 php-composer
symfony/var-dumper v5.4.14 php-composer symfony/uid v6.4.3 php-composer
symfony/var-exporter v5.4.10 php-composer symfony/var-dumper v6.4.3 php-composer
symfony/yaml v5.4.14 php-composer symfony/var-exporter v7.0.3 php-composer
theseer/tokenizer 1.2.1 php-composer symfony/yaml v6.4.3 php-composer
tijsverkoyen/css-to-inline-styles 2.2.5 php-composer theseer/tokenizer 1.2.2 php-composer
tzdata 2023c-r1 apk tijsverkoyen/css-to-inline-styles v2.2.7 php-composer
utmps-libs 0.1.2.1-r1 apk tzdata 2024a-r0 apk
vlucas/phpdotenv v5.5.0 php-composer utmps-libs 0.1.2.2-r0 apk
voku/portable-ascii 1.6.1 php-composer vlucas/phpdotenv v5.6.0 php-composer
voku/portable-ascii 2.0.1 php-composer
webmozart/assert 1.11.0 php-composer webmozart/assert 1.11.0 php-composer
xz-libs 5.4.3-r0 apk xz-libs 5.4.5-r0 apk
zlib 1.2.13-r1 apk zlib 1.3.1-r0 apk
zstd-libs 1.5.5-r4 apk zstd-libs 1.5.5-r8 apk

View File

@@ -28,7 +28,7 @@ common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files." } - { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files" }
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- { external_port: "80", internal_port: "80", port_desc: "http gui" } - { external_port: "80", internal_port: "80", port_desc: "http gui" }
@@ -58,6 +58,9 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "07.03.24:", desc: "Enable the opcache and disable file revalidation."}
- { date: "06.03.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf." }
- { date: "23.12.23:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." }
- { date: "13.04.23:", desc: "Move ssl.conf include to default.conf." } - { date: "13.04.23:", desc: "Move ssl.conf include to default.conf." }
- { date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1." } - { date: "20.01.23:", desc: "Rebase to alpine 3.17 with php8.1." }

View File

@@ -1,4 +1,4 @@
## Version 2023/04/13 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2024/03/06 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/nginx/site-confs/default.conf.sample
server { server {
listen 80 default_server; listen 80 default_server;
@@ -19,11 +19,16 @@ server {
#auth_basic "Restricted"; #auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd; #auth_basic_user_file /config/nginx/.htpasswd;
try_files $uri $uri/ /index.html /index.php$is_args$args; try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
} }
location ~ ^(.+\.php)(.*)$ { location ~ ^(.+\.php)(.*)$ {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_split_path_info ^(.+\.php)(.*)$;
if (!-f $document_root$fastcgi_script_name) { return 404; }
fastcgi_pass 127.0.0.1:9000; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_index index.php;
include /etc/nginx/fastcgi_params; include /etc/nginx/fastcgi_params;

View File

@@ -4,7 +4,7 @@ DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /var/www/localhost/heimdall/public;" OLD_ROOT="root /var/www/localhost/heimdall/public;"
NEW_ROOT="root /app/www/public;" NEW_ROOT="root /app/www/public;"
if grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then
echo "updating root in ${DEFAULT_CONF}" echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}" sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi fi