Compare commits

..

28 Commits

Author SHA1 Message Date
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
LinuxServer-CI
369ba1c41b Bot Updating Package Versions 2023-10-27 18:29:08 +00:00
LinuxServer-CI
88e7e1df09 Bot Updating Package Versions 2023-10-20 18:29:37 +00:00
LinuxServer-CI
a694621f78 Bot Updating Templated Files 2023-10-13 18:31:24 +00:00
LinuxServer-CI
0a0c8862f6 Bot Updating Package Versions 2023-10-06 18:41:35 +00:00
LinuxServer-CI
649f2b09a7 Bot Updating Templated Files 2023-10-06 18:35:50 +00:00
LinuxServer-CI
1ab60fda12 Bot Updating Templated Files 2023-10-06 18:29:57 +00:00
7 changed files with 528 additions and 456 deletions

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,11 +15,11 @@ 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-intl \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pdo_mysql \ php83-pdo_mysql \
php82-tokenizer && \ 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 && \

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,11 +15,11 @@ 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-intl \
php82-pdo_pgsql \ php83-pdo_pgsql \
php82-pdo_sqlite \ php83-pdo_sqlite \
php82-pdo_mysql \ php83-pdo_mysql \
php82-tokenizer && \ 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 && \

346
Jenkinsfile vendored
View File

@@ -16,7 +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')
SCARF_TOKEN=credentials('scarf_api_key') 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'
@@ -62,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' ''',
@@ -131,7 +136,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE_CLEAN = sh( env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/ ]//g' ''',
returnStdout: true).trim() returnStdout: true).trim()
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
@@ -149,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}")
@@ -267,115 +272,150 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash withCredentials([
set -e [
TEMPDIR=$(mktemp -d) $class: 'UsernamePasswordMultiBinding',
docker pull ghcr.io/linuxserver/jenkins-builder:latest credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest usernameVariable: 'DOCKERUSER',
# Stage 1 - Jenkinsfile update passwordVariable: 'DOCKERPASS'
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then ]
mkdir -p ${TEMPDIR}/repo ]) {
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} sh '''#! /bin/bash
cd ${TEMPDIR}/repo/${LS_REPO} set -e
git checkout -f development TEMPDIR=$(mktemp -d)
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ docker pull ghcr.io/linuxserver/jenkins-builder:latest
git add Jenkinsfile docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
git commit -m 'Bot Updating Templated Files' # Stage 1 - Jenkinsfile update
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} mkdir -p ${TEMPDIR}/repo
echo "Updating Jenkinsfile" git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
rm -Rf ${TEMPDIR} cd ${TEMPDIR}/repo/${LS_REPO}
exit 0 git checkout -f development
else cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
echo "Jenkinsfile is up to date." git add Jenkinsfile
fi git commit -m 'Bot Updating Templated Files'
# Stage 2 - Delete old templates git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
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" git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git development
for i in ${OLD_TEMPLATES}; do echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
if [[ -f "${i}" ]]; then echo "Updating Jenkinsfile"
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" rm -Rf ${TEMPDIR}
fi exit 0
done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f development
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
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}
echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
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}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f development
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${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") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -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}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/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 Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-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
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
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/
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
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/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ echo "Jenkinsfile is up to date."
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all # Stage 2 - Delete old templates
fi 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"
rm -Rf ${TEMPDIR}''' for i in ${OLD_TEMPLATES}; do
script{ if [[ -f "${i}" ]]; then
env.FILES_UPDATED = sh( TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', fi
returnStdout: true).trim() done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f development
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
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 "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
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}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f development
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
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}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
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/
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 commit -m 'Bot Updating Documentation'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH}
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-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
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
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
cd ${TEMPDIR}/unraid/templates/
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; then
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/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
fi
# Stage 4 - Sync Readme to Docker Hub
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 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
DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "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
rm -Rf ${TEMPDIR}'''
script{
env.FILES_UPDATED = sh(
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
} }
} }
} }
@@ -435,35 +475,6 @@ pipeline {
"visibility":"public"}' ''' "visibility":"public"}' '''
} }
} }
/* #######################
Scarf.sh package registry
####################### */
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "development"
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''#! /bin/bash
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/heimdall") | .uuid' || :)
if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
-H "Authorization: Bearer ${SCARF_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"name":"linuxserver/heimdall",\
"shortDescription":"example description",\
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-heimdall",\
"backendUrl":"https://ghcr.io/linuxserver/heimdall",\
"publicUrl":"https://lscr.io/linuxserver/heimdall"}' || :
else
echo "Package already exists on Scarf.sh"
fi
'''
}
}
/* ############### /* ###############
Build Container Build Container
############### */ ############### */
@@ -598,7 +609,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
@@ -859,37 +871,39 @@ pipeline {
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
} }
} }
// Use helper container to sync the current README on master to the dockerhub endpoint // Add protection to the release branch
stage('Sync-README') { stage('Github-Release-Branch-Protection') {
when { when {
branch "development"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
withCredentials([ echo "Setting up protection for release branch development"
[ sh '''#! /bin/bash
$class: 'UsernamePasswordMultiBinding', curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/development/protection \
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', -d $(jq -c . << EOF
usernameVariable: 'DOCKERUSER', {
passwordVariable: 'DOCKERPASS' "required_status_checks": null,
] "enforce_admins": false,
]) { "required_pull_request_reviews": {
sh '''#! /bin/bash "dismiss_stale_reviews": false,
set -e "require_code_owner_reviews": false,
TEMPDIR=$(mktemp -d) "require_last_push_approval": false,
docker pull ghcr.io/linuxserver/jenkins-builder:latest "required_approving_review_count": 1
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 "restrictions": null,
docker run --rm=true \ "required_linear_history": false,
-e DOCKERHUB_USERNAME=$DOCKERUSER \ "allow_force_pushes": false,
-e DOCKERHUB_PASSWORD=$DOCKERPASS \ "allow_deletions": false,
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ "block_creations": false,
-e DOCKER_REPOSITORY=${IMAGE} \ "required_conversation_resolution": true,
-e GIT_BRANCH=master \ "lock_branch": false,
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \ "allow_fork_syncing": false,
ghcr.io/linuxserver/readme-sync bash -c 'node sync' "required_signatures": false
rm -Rf ${TEMPDIR} ''' }
} EOF
) '''
} }
} }
// 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

147
README.md
View File

@@ -1,6 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-heimdall/blob/development/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-heimdall/blob/development/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
@@ -50,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.
@@ -70,6 +69,7 @@ This image provides various versions that are available via tags. Please read th
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | Stable Heimdall releases. | | latest | ✅ | Stable Heimdall releases. |
| development | ✅ | Latest commit from the github 2.x branch. | | development | ✅ | Latest commit from the github 2.x branch. |
## Application Setup ## Application Setup
Access the web gui at http://SERVERIP:PORT Access the web gui at http://SERVERIP:PORT
@@ -81,13 +81,12 @@ This image now supports password protection through htpasswd. Run the following
## Usage ## Usage
Here are some example snippets to help you get started creating a container. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```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,15 +113,14 @@ 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
``` ```
## Parameters ## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
@@ -131,7 +129,7 @@ Container images are configured using parameters passed at runtime (such as thos
| `-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)
@@ -140,10 +138,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword -e FILE__MYVAR=/run/secrets/mysecretvariable
``` ```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file. Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications ## Umask for running applications
@@ -152,15 +150,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@@ -171,53 +174,100 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it heimdall /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f heimdall`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall` docker exec -it heimdall /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:development`
* To monitor the logs of the container in realtime:
```bash
docker logs -f heimdall
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:development
```
## 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:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull heimdall` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d heimdall` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull heimdall
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d heimdall
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull lscr.io/linuxserver/heimdall:development` * Update the image:
* Stop the running container: `docker stop heimdall`
* Delete the container: `docker rm heimdall` ```bash
docker pull lscr.io/linuxserver/heimdall:development
```
* Stop the running container:
```bash
docker stop heimdall
```
* Delete the container:
```bash
docker rm heimdall
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters) ```bash
docker image prune
* 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`
**Note:** 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)
* 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.
## Building locally ## Building locally
@@ -242,6 +292,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **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,234 @@
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.3-r0 apk alpine-release 3.19.1-r0 apk
apache2-utils 2.4.57-r3 apk apache2-utils 2.4.58-r1 apk
apk-tools 2.14.0-r2 apk apk-tools 2.14.0-r5 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 barryvdh/laravel-ide-helper v2.12.3 php-composer
barryvdh/reflection-docblock v2.1.0 php-composer barryvdh/reflection-docblock v2.1.0 php-composer
bash 5.2.15-r5 apk bash 5.2.21-r0 apk
brick/math 0.9.3 php-composer brick/math 0.9.3 php-composer
brotli-libs 1.0.9-r14 apk brotli-libs 1.1.0-r1 apk
busybox 1.36.1-r2 apk busybox 1.36.1-r15 apk
busybox-binsh 1.36.1-r2 apk busybox-binsh 1.36.1-r15 apk
ca-certificates 20230506-r0 apk c-ares 1.24.0-r1 apk
ca-certificates-bundle 20230506-r0 apk ca-certificates 20230506-r0 apk
clue/stream-filter v1.6.0 php-composer ca-certificates-bundle 20230506-r0 apk
composer/pcre 3.1.0 php-composer clue/stream-filter v1.6.0 php-composer
coreutils 9.3-r1 apk composer 2.7.0 binary
curl 8.3.0-r0 apk composer/pcre 3.1.0 php-composer
dflydev/dot-access-data v3.0.2 php-composer coreutils 9.4-r2 apk
doctrine/cache 2.2.0 php-composer coreutils-env 9.4-r2 apk
doctrine/dbal 3.5.1 php-composer coreutils-fmt 9.4-r2 apk
doctrine/deprecations v1.0.0 php-composer coreutils-sha512sum 9.4-r2 apk
doctrine/event-manager 1.2.0 php-composer curl 8.5.0-r0 apk
doctrine/inflector 2.0.6 php-composer dflydev/dot-access-data v3.0.2 php-composer
doctrine/instantiator 1.4.1 php-composer doctrine/cache 2.2.0 php-composer
doctrine/lexer 1.2.3 php-composer doctrine/dbal 3.5.1 php-composer
dragonmantank/cron-expression v3.3.2 php-composer doctrine/deprecations v1.0.0 php-composer
egulias/email-validator 2.1.25 php-composer doctrine/event-manager 1.2.0 php-composer
facade/flare-client-php 1.10.0 php-composer doctrine/inflector 2.0.6 php-composer
facade/ignition 2.17.6 php-composer doctrine/instantiator 1.4.1 php-composer
facade/ignition-contracts 1.0.2 php-composer doctrine/lexer 1.2.3 php-composer
fideloper/proxy 4.4.2 php-composer dragonmantank/cron-expression v3.3.2 php-composer
filp/whoops 2.14.6 php-composer egulias/email-validator 2.1.25 php-composer
fzaninotto/faker v1.9.2 php-composer facade/flare-client-php 1.10.0 php-composer
git 2.40.1-r0 apk facade/ignition 2.17.6 php-composer
graham-campbell/bounded-cache v1.3.0 php-composer facade/ignition-contracts 1.0.2 php-composer
graham-campbell/github v10.6.0 php-composer fideloper/proxy 4.4.2 php-composer
graham-campbell/manager v4.7.0 php-composer filp/whoops 2.14.6 php-composer
graham-campbell/result-type v1.1.0 php-composer fzaninotto/faker v1.9.2 php-composer
guzzlehttp/guzzle 7.5.0 php-composer git 2.43.0-r0 apk
guzzlehttp/promises 1.5.2 php-composer graham-campbell/bounded-cache v1.3.0 php-composer
guzzlehttp/psr7 2.4.3 php-composer graham-campbell/github v10.6.0 php-composer
hamcrest/hamcrest-php v2.0.1 php-composer graham-campbell/manager v4.7.0 php-composer
icu-data-en 73.2-r2 apk graham-campbell/result-type v1.1.0 php-composer
icu-libs 73.2-r2 apk guzzlehttp/guzzle 7.5.0 php-composer
jq 1.6-r3 apk guzzlehttp/promises 1.5.2 php-composer
knplabs/github-api v3.6.0 php-composer guzzlehttp/psr7 2.4.3 php-composer
laravel/framework v8.83.26 php-composer hamcrest/hamcrest-php v2.0.1 php-composer
laravel/serializable-closure v1.2.2 php-composer hiredis 1.2.0-r0 apk
laravel/tinker v2.7.3 php-composer icu-data-en 74.1-r0 apk
laravel/ui v3.4.6 php-composer icu-libs 74.1-r0 apk
laravelcollective/html v6.3.0 php-composer jq 1.7.1-r0 apk
league/commonmark 2.3.7 php-composer knplabs/github-api v3.6.0 php-composer
league/config v1.1.1 php-composer laravel/framework v8.83.26 php-composer
league/flysystem 1.1.10 php-composer laravel/serializable-closure v1.2.2 php-composer
league/mime-type-detection 1.11.0 php-composer laravel/tinker v2.7.3 php-composer
libacl 2.3.1-r3 apk laravel/ui v3.4.6 php-composer
libattr 2.5.1-r4 apk laravelcollective/html v6.3.0 php-composer
libbsd 0.11.7-r1 apk league/commonmark 2.3.7 php-composer
libbz2 1.0.8-r5 apk league/config v1.1.1 php-composer
libc-utils 0.7.2-r5 apk league/flysystem 1.1.10 php-composer
libcrypto3 3.1.3-r0 apk league/mime-type-detection 1.11.0 php-composer
libcurl 8.3.0-r0 apk libacl 2.3.1-r4 apk
libedit 20221030.3.1-r1 apk libattr 2.5.1-r5 apk
libexpat 2.5.0-r1 apk libbsd 0.11.7-r3 apk
libgcc 12.2.1_git20220924-r10 apk libbz2 1.0.8-r6 apk
libidn2 2.3.4-r1 apk libc-utils 0.7.2-r5 apk
libintl 0.21.1-r7 apk libcrypto3 3.1.4-r5 apk
libmd 1.0.4-r2 apk libcurl 8.5.0-r0 apk
libncursesw 6.4_p20230506-r0 apk libedit 20230828.3.1-r3 apk
libpq 15.4-r0 apk libexpat 2.5.0-r2 apk
libproc2 4.0.4-r0 apk libgcc 13.2.1_git20231014-r0 apk
libssl3 3.1.3-r0 apk libidn2 2.3.4-r4 apk
libstdc++ 12.2.1_git20220924-r10 apk libintl 0.22.3-r0 apk
libunistring 1.1-r1 apk libmd 1.1.0-r0 apk
libuuid 2.38.1-r8 apk libncursesw 6.4_p20231125-r0 apk
libxml2 2.11.4-r0 apk libpq 16.2-r0 apk
libzip 1.9.2-r2 apk libproc2 4.0.4-r0 apk
linux-pam 1.5.2-r10 apk libssl3 3.1.4-r5 apk
logrotate 3.21.0-r1 apk libstdc++ 13.2.1_git20231014-r0 apk
mockery/mockery 1.5.1 php-composer libunistring 1.1-r2 apk
monolog/monolog 2.8.0 php-composer libuuid 2.39.3-r0 apk
musl 1.2.4-r1 apk libxml2 2.11.6-r0 apk
musl-utils 1.2.4-r1 apk libzip 1.10.1-r0 apk
myclabs/deep-copy 1.11.0 php-composer linux-pam 1.5.3-r7 apk
nano 7.2-r1 apk logrotate 3.21.0-r1 apk
ncurses-terminfo-base 6.4_p20230506-r0 apk mockery/mockery 1.5.1 php-composer
nesbot/carbon 2.63.0 php-composer monolog/monolog 2.8.0 php-composer
netcat-openbsd 1.219-r1 apk musl 1.2.4_git20230717-r4 apk
nette/schema v1.2.3 php-composer musl-utils 1.2.4_git20230717-r4 apk
nette/utils v3.2.8 php-composer myclabs/deep-copy 1.11.0 php-composer
nghttp2-libs 1.55.1-r0 apk nano 7.2-r1 apk
nginx 1.24.0-r6 apk ncurses-terminfo-base 6.4_p20231125-r0 apk
nikic/php-parser v4.15.2 php-composer nesbot/carbon 2.63.0 php-composer
nunomaduro/collision v5.11.0 php-composer netcat-openbsd 1.226-r0 apk
oniguruma 6.9.8-r1 apk nette/schema v1.2.3 php-composer
openssl 3.1.3-r0 apk nette/utils v3.2.8 php-composer
opis/closure 3.6.3 php-composer nghttp2-libs 1.58.0-r0 apk
pcre 8.45-r3 apk nginx 1.24.0-r15 apk
pcre2 10.42-r1 apk nikic/php-parser v4.15.2 php-composer
phar-io/manifest 2.0.3 php-composer nunomaduro/collision v5.11.0 php-composer
phar-io/version 3.2.1 php-composer oniguruma 6.9.9-r0 apk
php-http/cache-plugin 1.7.5 php-composer openssl 3.1.4-r5 apk
php-http/client-common 2.6.0 php-composer opis/closure 3.6.3 php-composer
php-http/discovery 1.14.3 php-composer pcre 8.45-r3 apk
php-http/httplug 2.3.0 php-composer pcre2 10.42-r2 apk
php-http/message 1.13.0 php-composer phar-io/manifest 2.0.3 php-composer
php-http/message-factory v1.0.2 php-composer phar-io/version 3.2.1 php-composer
php-http/multipart-stream-builder 1.2.0 php-composer php-http/cache-plugin 1.7.5 php-composer
php-http/promise 1.1.0 php-composer php-http/client-common 2.6.0 php-composer
php82 8.2.10-r0 apk php-http/discovery 1.14.3 php-composer
php82-common 8.2.10-r0 apk php-http/httplug 2.3.0 php-composer
php82-ctype 8.2.10-r0 apk php-http/message 1.13.0 php-composer
php82-curl 8.2.10-r0 apk php-http/message-factory v1.0.2 php-composer
php82-fileinfo 8.2.10-r0 apk php-http/multipart-stream-builder 1.2.0 php-composer
php82-fpm 8.2.10-r0 apk php-http/promise 1.1.0 php-composer
php82-iconv 8.2.10-r0 apk php83 8.3.2-r0 apk
php82-intl 8.2.10-r0 apk php83-common 8.3.2-r0 apk
php82-mbstring 8.2.10-r0 apk php83-ctype 8.3.2-r0 apk
php82-mysqlnd 8.2.10-r0 apk php83-curl 8.3.2-r0 apk
php82-openssl 8.2.10-r0 apk php83-fileinfo 8.3.2-r0 apk
php82-pdo 8.2.10-r0 apk php83-fpm 8.3.2-r0 apk
php82-pdo_mysql 8.2.10-r0 apk php83-iconv 8.3.2-r0 apk
php82-pdo_pgsql 8.2.10-r0 apk php83-intl 8.3.2-r0 apk
php82-pdo_sqlite 8.2.10-r0 apk php83-mbstring 8.3.2-r0 apk
php82-phar 8.2.10-r0 apk php83-mysqlnd 8.3.2-r0 apk
php82-session 8.2.10-r0 apk php83-openssl 8.3.2-r0 apk
php82-simplexml 8.2.10-r0 apk php83-pdo 8.3.2-r0 apk
php82-tokenizer 8.2.10-r0 apk php83-pdo_mysql 8.3.2-r0 apk
php82-xml 8.2.10-r0 apk php83-pdo_pgsql 8.3.2-r0 apk
php82-xmlwriter 8.2.10-r0 apk php83-pdo_sqlite 8.3.2-r0 apk
php82-zip 8.2.10-r0 apk php83-phar 8.3.2-r0 apk
phpdocumentor/reflection-common 2.2.0 php-composer php83-session 8.3.2-r0 apk
phpdocumentor/type-resolver 1.6.2 php-composer php83-simplexml 8.3.2-r0 apk
phpoption/phpoption 1.9.0 php-composer php83-tokenizer 8.3.2-r0 apk
phpunit/php-code-coverage 9.2.19 php-composer php83-xml 8.3.2-r0 apk
phpunit/php-file-iterator 3.0.6 php-composer php83-xmlwriter 8.3.2-r0 apk
phpunit/php-invoker 3.1.1 php-composer php83-zip 8.3.2-r0 apk
phpunit/php-text-template 2.0.4 php-composer phpdocumentor/reflection-common 2.2.0 php-composer
phpunit/php-timer 5.0.3 php-composer phpdocumentor/type-resolver 1.6.2 php-composer
phpunit/phpunit 9.5.26 php-composer phpoption/phpoption 1.9.0 php-composer
popt 1.19-r2 apk phpunit/php-code-coverage 9.2.19 php-composer
procps-ng 4.0.4-r0 apk phpunit/php-file-iterator 3.0.6 php-composer
psr/cache 1.0.1 php-composer phpunit/php-invoker 3.1.1 php-composer
psr/container 1.1.2 php-composer phpunit/php-text-template 2.0.4 php-composer
psr/event-dispatcher 1.0.0 php-composer phpunit/php-timer 5.0.3 php-composer
psr/http-client 1.0.1 php-composer phpunit/phpunit 9.5.26 php-composer
psr/http-factory 1.0.1 php-composer popt 1.19-r3 apk
psr/http-message 1.0.1 php-composer procps-ng 4.0.4-r0 apk
psr/log 1.1.4 php-composer psr/cache 1.0.1 php-composer
psr/simple-cache 1.0.1 php-composer psr/container 1.1.2 php-composer
psy/psysh v0.11.9 php-composer psr/event-dispatcher 1.0.0 php-composer
ralouphie/getallheaders 3.0.3 php-composer psr/http-client 1.0.1 php-composer
ramsey/collection 1.2.2 php-composer psr/http-factory 1.0.1 php-composer
ramsey/uuid 4.2.3 php-composer psr/http-message 1.0.1 php-composer
readline 8.2.1-r1 apk psr/log 1.1.4 php-composer
scanelf 1.3.7-r1 apk psr/simple-cache 1.0.1 php-composer
sebastian/cli-parser 1.0.1 php-composer psy/psysh v0.11.9 php-composer
sebastian/code-unit 1.0.8 php-composer ralouphie/getallheaders 3.0.3 php-composer
sebastian/code-unit-reverse-lookup 2.0.3 php-composer ramsey/collection 1.2.2 php-composer
sebastian/comparator 4.0.8 php-composer ramsey/uuid 4.2.3 php-composer
sebastian/complexity 2.0.2 php-composer readline 8.2.1-r2 apk
sebastian/diff 4.0.4 php-composer scanelf 1.3.7-r2 apk
sebastian/environment 5.1.4 php-composer sebastian/cli-parser 1.0.1 php-composer
sebastian/exporter 4.0.5 php-composer sebastian/code-unit 1.0.8 php-composer
sebastian/global-state 5.0.5 php-composer sebastian/code-unit-reverse-lookup 2.0.3 php-composer
sebastian/lines-of-code 1.0.3 php-composer sebastian/comparator 4.0.8 php-composer
sebastian/object-enumerator 4.0.4 php-composer sebastian/complexity 2.0.2 php-composer
sebastian/object-reflector 2.0.4 php-composer sebastian/diff 4.0.4 php-composer
sebastian/recursion-context 4.0.4 php-composer sebastian/environment 5.1.4 php-composer
sebastian/resource-operations 3.0.3 php-composer sebastian/exporter 4.0.5 php-composer
sebastian/type 3.2.0 php-composer sebastian/global-state 5.0.5 php-composer
sebastian/version 3.0.2 php-composer sebastian/lines-of-code 1.0.3 php-composer
shadow 4.13-r4 apk sebastian/object-enumerator 4.0.4 php-composer
skalibs 2.13.1.1-r1 apk sebastian/object-reflector 2.0.4 php-composer
sqlite-libs 3.41.2-r2 apk sebastian/recursion-context 4.0.4 php-composer
squizlabs/php_codesniffer 3.7.1 php-composer sebastian/resource-operations 3.0.3 php-composer
ssl_client 1.36.1-r2 apk sebastian/type 3.2.0 php-composer
swiftmailer/swiftmailer v6.3.0 php-composer sebastian/version 3.0.2 php-composer
symfony/cache v5.4.15 php-composer shadow 4.14.2-r0 apk
symfony/cache-contracts v2.5.2 php-composer skalibs 2.14.0.1-r0 apk
symfony/console v5.4.15 php-composer sqlite-libs 3.44.2-r0 apk
symfony/css-selector v5.4.11 php-composer squizlabs/php_codesniffer 3.7.1 php-composer
symfony/deprecation-contracts v2.5.2 php-composer ssl_client 1.36.1-r15 apk
symfony/error-handler v5.4.15 php-composer swiftmailer/swiftmailer v6.3.0 php-composer
symfony/event-dispatcher v5.4.9 php-composer symfony/cache v5.4.15 php-composer
symfony/event-dispatcher-contracts v2.5.2 php-composer symfony/cache-contracts v2.5.2 php-composer
symfony/finder v5.4.11 php-composer symfony/console v5.4.15 php-composer
symfony/http-foundation v5.4.15 php-composer symfony/css-selector v5.4.11 php-composer
symfony/http-kernel v5.4.15 php-composer symfony/deprecation-contracts v2.5.2 php-composer
symfony/mime v5.4.14 php-composer symfony/error-handler v5.4.15 php-composer
symfony/options-resolver v5.4.11 php-composer symfony/event-dispatcher v5.4.9 php-composer
symfony/polyfill-ctype v1.27.0 php-composer symfony/event-dispatcher-contracts v2.5.2 php-composer
symfony/polyfill-iconv v1.27.0 php-composer symfony/finder v5.4.11 php-composer
symfony/polyfill-intl-grapheme v1.27.0 php-composer symfony/http-foundation v5.4.15 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer symfony/http-kernel v5.4.15 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer symfony/mime v5.4.14 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer symfony/options-resolver v5.4.11 php-composer
symfony/polyfill-php72 v1.27.0 php-composer symfony/polyfill-ctype v1.27.0 php-composer
symfony/polyfill-php73 v1.27.0 php-composer symfony/polyfill-iconv v1.27.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer symfony/polyfill-intl-grapheme v1.27.0 php-composer
symfony/polyfill-php81 v1.27.0 php-composer symfony/polyfill-intl-idn v1.27.0 php-composer
symfony/process v5.4.11 php-composer symfony/polyfill-intl-normalizer v1.27.0 php-composer
symfony/routing v5.4.15 php-composer symfony/polyfill-mbstring v1.27.0 php-composer
symfony/service-contracts v2.5.2 php-composer symfony/polyfill-php72 v1.27.0 php-composer
symfony/string v5.4.15 php-composer symfony/polyfill-php73 v1.27.0 php-composer
symfony/thanks v1.2.10 php-composer symfony/polyfill-php80 v1.27.0 php-composer
symfony/translation v5.4.14 php-composer symfony/polyfill-php81 v1.27.0 php-composer
symfony/translation-contracts v2.5.2 php-composer symfony/process v5.4.11 php-composer
symfony/var-dumper v5.4.14 php-composer symfony/routing v5.4.15 php-composer
symfony/var-exporter v5.4.10 php-composer symfony/service-contracts v2.5.2 php-composer
symfony/yaml v5.4.14 php-composer symfony/string v5.4.15 php-composer
theseer/tokenizer 1.2.1 php-composer symfony/thanks v1.2.10 php-composer
tijsverkoyen/css-to-inline-styles 2.2.5 php-composer symfony/translation v5.4.14 php-composer
tzdata 2023c-r1 apk symfony/translation-contracts v2.5.2 php-composer
utmps-libs 0.1.2.1-r1 apk symfony/var-dumper v5.4.14 php-composer
vlucas/phpdotenv v5.5.0 php-composer symfony/var-exporter v5.4.10 php-composer
voku/portable-ascii 1.6.1 php-composer symfony/yaml v5.4.14 php-composer
webmozart/assert 1.11.0 php-composer theseer/tokenizer 1.2.1 php-composer
xz-libs 5.4.3-r0 apk tijsverkoyen/css-to-inline-styles 2.2.5 php-composer
zlib 1.2.13-r1 apk tzdata 2024a-r0 apk
zstd-libs 1.5.5-r4 apk utmps-libs 0.1.2.2-r0 apk
vlucas/phpdotenv v5.5.0 php-composer
voku/portable-ascii 1.6.1 php-composer
webmozart/assert 1.11.0 php-composer
xz-libs 5.4.5-r0 apk
zlib 1.3.1-r0 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,7 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { 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

@@ -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