Compare commits

...

49 Commits

Author SHA1 Message Date
LinuxServer-CI
a2b5099589 Bot Updating Package Versions 2024-07-05 18:34:20 +00:00
LinuxServer-CI
d1de807dbd Bot Updating Package Versions 2024-06-28 09:08:39 +00:00
Roxedus
2d0a689cfa Merge pull request #152 from linuxserver/master-3.20 2024-06-28 11:04:07 +02:00
thespad
32482621b1 Rebase to 3.20 2024-06-27 16:33:46 +01:00
LinuxServer-CI
ae11a9757a Bot Updating Package Versions 2024-06-21 18:34:08 +00:00
LinuxServer-CI
438ca48450 Bot Updating Package Versions 2024-06-14 18:34:10 +00:00
LinuxServer-CI
f4d5ee4d4b Bot Updating Package Versions 2024-05-24 18:36:32 +00:00
LinuxServer-CI
50b7879b20 Bot Updating Templated Files 2024-05-24 18:34:18 +00:00
LinuxServer-CI
3a54e1e8a4 Bot Updating Templated Files 2024-05-24 18:32:03 +00:00
LinuxServer-CI
0fa6c3b178 Bot Updating Package Versions 2024-05-17 18:34:23 +00:00
LinuxServer-CI
5f8befb76f Bot Updating Package Versions 2024-05-10 18:34:30 +00:00
LinuxServer-CI
b4c8ae5421 Bot Updating Templated Files 2024-05-10 18:30:46 +00:00
LinuxServer-CI
0457e2e6c9 Bot Updating Package Versions 2024-05-03 18:34:58 +00:00
LinuxServer-CI
f2adb642db Bot Updating Templated Files 2024-05-03 18:30:46 +00:00
LinuxServer-CI
d7534720d4 Bot Updating Package Versions 2024-04-26 18:31:53 +00:00
LinuxServer-CI
44ed891b5b Bot Updating Package Versions 2024-04-19 18:30:03 +00:00
LinuxServer-CI
c4bfc70a35 Bot Updating Package Versions 2024-04-12 18:27:59 +00:00
LinuxServer-CI
810384ffc8 Bot Updating Package Versions 2024-04-05 18:29:54 +00:00
LinuxServer-CI
3980f54fb1 Bot Updating Package Versions 2024-03-29 18:29:08 +00:00
LinuxServer-CI
e1970defc6 Bot Updating Package Versions 2024-03-22 18:30:26 +00:00
LinuxServer-CI
0654cc0288 Bot Updating Package Versions 2024-03-15 18:35:44 +00:00
LinuxServer-CI
7cf45e7130 Bot Updating Templated Files 2024-03-15 18:30:00 +00:00
LinuxServer-CI
696994332b Bot Updating Package Versions 2024-03-07 13:54:12 +00:00
LinuxServer-CI
bbcf5f8d5a Bot Updating Templated Files 2024-03-07 13:51:18 +00:00
Andrew Berry
1aedaec411 Enable the PHP opcache and disable revalidation (#149)
* Enable the PHP opcache and disable revalidation

* Add opcache update to changelog
2024-03-07 08:49:31 -05:00
LinuxServer-CI
dee7bdbd92 Bot Updating Templated Files 2024-03-06 17:56:36 +00:00
Eric Nemchik
a721071117 Cleanup default site conf (#142)
* Cleanup default site conf

Signed-off-by: Eric Nemchik <eric@nemchik.com>

* update dates

---------

Signed-off-by: Eric Nemchik <eric@nemchik.com>
Co-authored-by: aptalca <541623+aptalca@users.noreply.github.com>
2024-03-06 12:52:31 -05:00
LinuxServer-CI
2e5e686e36 Bot Updating Package Versions 2024-03-01 18:31:19 +00:00
LinuxServer-CI
86fa1c70a3 Bot Updating Templated Files 2024-02-23 18:31:22 +00:00
LinuxServer-CI
2b2f8dfd6d Bot Updating Templated Files 2024-02-23 18:29:36 +00:00
LinuxServer-CI
46eacc80b8 Bot Updating Package Versions 2024-02-18 21:49:23 +00:00
LinuxServer-CI
0f3c2b0401 Bot Updating Package Versions 2024-02-17 15:45:10 +00:00
Adam
837c5942db Merge pull request #145 from linuxserver/feature/add_dom_php_extension
Add DOM php extension
2024-02-17 14:35:30 +00:00
Chris Hunt
879e81fb6b Add DOM php extension 2024-02-17 08:29:57 +00:00
LinuxServer-CI
c5500f1c10 Bot Updating Package Versions 2024-02-16 18:29:23 +00:00
LinuxServer-CI
0830b88bd6 Bot Updating Package Versions 2024-02-09 18:29:01 +00:00
LinuxServer-CI
27f3745f2a Bot Updating Package Versions 2024-02-02 18:30:25 +00:00
LinuxServer-CI
bbecc0b09a Bot Updating Package Versions 2024-01-26 16:43:37 +00:00
LinuxServer-CI
dad5208309 Bot Updating Templated Files 2024-01-26 16:39:55 +00:00
Eric Nemchik
d999bb49de Merge pull request #140 from linuxserver/3.19
Rebase to Alpine 3.19
2024-01-26 10:37:50 -06:00
LinuxServer-CI
6b588ea844 Bot Updating Package Versions 2024-01-19 18:31:46 +00:00
LinuxServer-CI
d893aac03f Bot Updating Package Versions 2024-01-12 18:35:54 +00:00
LinuxServer-CI
6432966c54 Bot Updating Templated Files 2024-01-12 18:32:20 +00:00
LinuxServer-CI
4ea20437ae Bot Updating Templated Files 2024-01-12 18:30:36 +00:00
LinuxServer-CI
883863471c Bot Updating Package Versions 2024-01-05 18:32:08 +00:00
Eric Nemchik
ca4da80275 Rebase to Alpine 3.19
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 18:12:50 -06:00
LinuxServer-CI
578be1f1f3 Bot Updating Package Versions 2023-12-22 18:31:05 +00:00
LinuxServer-CI
4cb619e62d Bot Updating Package Versions 2023-12-15 18:32:01 +00:00
LinuxServer-CI
c5eeeea25f Bot Updating Package Versions 2023-12-08 18:32:04 +00:00
14 changed files with 425 additions and 398 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-master: external-trigger-master:
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/master' if: github.ref == 'refs/heads/master'

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-master: package-trigger-master:
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/master' if: github.ref == 'refs/heads/master'

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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -9,22 +9,24 @@ ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca" LABEL maintainer="aptalca"
# environment settings
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-pdo_pgsql \
php82-pdo_mysql \ php83-pdo_sqlite \
php82-tokenizer && \ php83-pdo_mysql \
php83-opcache \
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 && \
@@ -40,6 +42,7 @@ RUN \
tar xf \ tar xf \
/tmp/heimdall.tar.gz -C \ /tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \ /app/www-tmp --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

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.20
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -9,22 +9,24 @@ ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca" LABEL maintainer="aptalca"
# environment settings
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-pdo_pgsql \
php82-pdo_mysql \ php83-pdo_sqlite \
php82-tokenizer && \ php83-pdo_mysql \
php83-opcache \
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 && \
@@ -40,6 +42,7 @@ RUN \
tar xf \ tar xf \
/tmp/heimdall.tar.gz -C \ /tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \ /app/www-tmp --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/tmp/* /tmp/*

226
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'
@@ -33,8 +34,8 @@ pipeline {
CI_PORT='80' CI_PORT='80'
CI_SSL='false' CI_SSL='false'
CI_DELAY='120' CI_DELAY='120'
CI_DOCKERENV='TZ=US/Pacific' CI_DOCKERENV=''
CI_AUTH='user:password' CI_AUTH=''
CI_WEBPATH='' CI_WEBPATH=''
} }
stages { stages {
@@ -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' ''',
@@ -130,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+)/
@@ -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=master -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 master of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch master 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 master --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 master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
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 master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
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 master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
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{
@@ -424,14 +495,16 @@ pipeline {
} }
steps{ steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\ -d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'", "name":"'${LS_REPO}'",
"mirror":true,\ "mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\ "issues_access_level":"disabled",\
"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 master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
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}:latest || : done
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
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-latest")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
fi
docker manifest push --purge ${MANIFESTIMAGE}:latest
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)
@@ -74,7 +74,6 @@ This image provides various versions that are available via tags. Please read th
Access the web gui at http://SERVERIP:PORT Access the web gui at http://SERVERIP:PORT
### Adding password protection ### Adding password protection
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container. This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container.
@@ -87,7 +86,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:latest image: lscr.io/linuxserver/heimdall:latest
@@ -97,7 +95,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 +112,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:latest lscr.io/linuxserver/heimdall:latest
``` ```
@@ -130,7 +128,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 +199,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 +264,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 +291,10 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **27.06.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **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

@@ -6,7 +6,6 @@ external_type: github_stable
release_type: stable release_type: stable
release_tag: latest release_tag: latest
ls_branch: master ls_branch: master
build_armhf: false
repo_vars: repo_vars:
- EXT_GIT_BRANCH = '2.x' - EXT_GIT_BRANCH = '2.x'
- EXT_USER = 'linuxserver' - EXT_USER = 'linuxserver'
@@ -25,6 +24,6 @@ repo_vars:
- CI_PORT='80' - CI_PORT='80'
- CI_SSL='false' - CI_SSL='false'
- CI_DELAY='120' - CI_DELAY='120'
- CI_DOCKERENV='TZ=US/Pacific' - CI_DOCKERENV=''
- CI_AUTH='user:password' - CI_AUTH=''
- CI_WEBPATH='' - CI_WEBPATH=''

View File

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

View File

@@ -28,27 +28,27 @@ 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" }
- { external_port: "443", internal_port: "443", port_desc: "https gui" } - { external_port: "443", internal_port: "443", port_desc: "https gui" }
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
Access the web gui at http://SERVERIP:PORT Access the web gui at http://SERVERIP:PORT
### Adding password protection ### Adding password protection
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container. This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. Uncomment the `basic auth` lines in `/config/nginx/site-confs/default.conf` and restart the container.
# changelog # changelog
changelogs: changelogs:
- { date: "27.06.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- { 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,11 +1,8 @@
## Version 2023/04/13 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2024/06/27 - 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;
listen [::]:80 default_server; listen *:443 ssl default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _; server_name _;
@@ -19,11 +16,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;

0
root/migrations/02-default-location Normal file → Executable file
View File