Compare commits

...

34 Commits

Author SHA1 Message Date
LinuxServer-CI
eabd8a6738 Bot Updating Package Versions 2023-08-11 18:28:36 +00:00
LinuxServer-CI
82f1f4d934 Bot Updating Package Versions 2023-08-04 18:28:41 +00:00
LinuxServer-CI
7237d6ca9a Bot Updating Package Versions 2023-07-28 18:28:17 +00:00
LinuxServer-CI
2275a8fb64 Bot Updating Package Versions 2023-07-21 18:29:51 +00:00
LinuxServer-CI
d545593107 Bot Updating Package Versions 2023-07-14 18:33:53 +00:00
LinuxServer-CI
34f7492c97 Bot Updating Package Versions 2023-07-07 18:34:07 +00:00
LinuxServer-CI
134b3e9533 Bot Updating Templated Files 2023-07-07 18:31:48 +00:00
LinuxServer-CI
8217bd55ea Bot Updating Package Versions 2023-06-23 18:33:08 +00:00
LinuxServer-CI
1761816c42 Bot Updating Package Versions 2023-06-16 18:28:50 +00:00
LinuxServer-CI
ab5fc6b23d Bot Updating Package Versions 2023-06-09 18:28:46 +00:00
LinuxServer-CI
f9d2fca42c Bot Updating Package Versions 2023-06-07 12:40:54 +00:00
Eric Nemchik
fbe856fab3 Merge pull request #131 from linuxserver/3.18-development
Rebase to Alpine 3.18, deprecate armhf
2023-06-07 07:38:48 -05:00
LinuxServer-CI
5a251cd21c Bot Updating Package Versions 2023-06-02 18:29:27 +00:00
Eric Nemchik
19e3093840 Rebase to Alpine 3.18, deprecate armhf
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-05-31 17:46:44 +00:00
LinuxServer-CI
3e5d65217a Bot Updating Package Versions 2023-05-26 08:48:38 +00:00
LinuxServer-CI
1e5c88de48 Bot Updating Templated Files 2023-05-26 08:46:11 +00:00
LinuxServer-CI
44612aa569 Bot Updating Package Versions 2023-05-19 18:29:53 +00:00
LinuxServer-CI
8706d29fe0 Bot Updating Package Versions 2023-05-16 14:46:34 +00:00
LinuxServer-CI
136dbe61bf Bot Updating Package Versions 2023-05-12 18:28:08 +00:00
LinuxServer-CI
5977b7440e Bot Updating Package Versions 2023-04-28 20:32:24 +02:00
LinuxServer-CI
d04a852a8d Bot Updating Templated Files 2023-04-28 20:29:58 +02:00
LinuxServer-CI
a636e8534c Bot Updating Templated Files 2023-04-28 20:28:24 +02:00
LinuxServer-CI
c5693232f4 Bot Updating Package Versions 2023-04-21 13:30:18 -05:00
LinuxServer-CI
6d7fad2d98 Bot Updating Package Versions 2023-04-18 16:13:45 +02:00
Eric Nemchik
204bad5de9 Merge pull request #126 from linuxserver/move-ssl-include-dev
Move ssl.conf include to default.conf
2023-04-18 09:07:59 -05:00
LinuxServer-CI
3779275528 Bot Updating Package Versions 2023-04-14 13:29:33 -05:00
Eric Nemchik
c4ab19e354 Move ssl.conf include to default.conf 2023-04-13 13:38:47 -05:00
LinuxServer-CI
4ebb4da3fd Bot Updating Package Versions 2023-04-07 13:33:42 -05:00
LinuxServer-CI
0a2d097510 Bot Updating Package Versions 2023-04-02 03:02:51 -05:00
LinuxServer-CI
0852efa2bd Bot Updating Templated Files 2023-04-02 03:00:23 -05:00
LinuxServer-CI
c2ffc6c11d Bot Updating Templated Files 2023-04-02 02:58:49 -05:00
LinuxServer-CI
29a9ac0088 Bot Updating Templated Files 2023-04-02 09:57:15 +02:00
LinuxServer-CI
d05fc41a78 Bot Updating Package Versions 2023-03-26 02:57:47 -05:00
LinuxServer-CI
1ed4b08da3 Bot Updating Package Versions 2023-03-09 10:53:18 -06:00
19 changed files with 459 additions and 490 deletions

View File

@@ -53,7 +53,6 @@ body:
options: options:
- x86-64 - x86-64
- arm64 - arm64
- armhf
validations: validations:
required: true required: true
- type: textarea - type: textarea

View File

@@ -1,12 +0,0 @@
name: Comment on invalid interaction
on:
issues:
types:
- labeled
jobs:
add-comment-on-invalid:
if: github.event.label.name == 'invalid'
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1
secrets: inherit

16
.github/workflows/call_issue_pr_tracker.yml vendored Executable file
View File

@@ -0,0 +1,16 @@
name: Issue & PR Tracker
on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit

13
.github/workflows/call_issues_cron.yml vendored Executable file
View File

@@ -0,0 +1,13 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '14 15 * * *'
workflow_dispatch:
jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit

View File

@@ -14,9 +14,11 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****" echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****"
echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of development branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT\". ****" echo "**** External trigger running off of development branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT\". ****"
echo "External trigger running off of development branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_HEIMDALL_DEVELOPMENT\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" | jq -r '. | .sha' | cut -c1-8) EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" | jq -r '. | .sha' | cut -c1-8)
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
@@ -30,6 +32,7 @@ jobs:
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "**** External version: ${EXT_RELEASE} ****"
echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "**** Retrieving last pushed version ****"
image="linuxserver/heimdall" image="linuxserver/heimdall"
tag="development" tag="development"
@@ -65,14 +68,18 @@ jobs:
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "**** Last pushed version: ${IMAGE_VERSION} ****"
echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****" echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=false \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -82,6 +89,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -2,7 +2,7 @@ name: External Trigger Scheduler
on: on:
schedule: schedule:
- cron: '35 * * * *' - cron: '39 * * * *'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,18 +17,18 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml \ ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml)
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
if [ "$br" == "$ls_branch" ]; then ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
echo "**** Branch ${br} appears to be live; checking workflow. ****" if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
@@ -36,8 +36,10 @@ jobs:
https://api.github.com/repos/linuxserver/docker-heimdall/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-heimdall/actions/workflows/external_trigger.yml/dispatches
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

View File

@@ -14,13 +14,16 @@ jobs:
run: | run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****" echo "**** Github secret PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****" echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** Package trigger running off of development branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT\". ****" echo "**** Package trigger running off of development branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT\". ****"
echo "Package trigger running off of development branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_HEIMDALL_DEVELOPMENT\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \ response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=true \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/development/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
@@ -30,6 +33,7 @@ jobs:
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}" buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****" echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \ curl -iX POST \
"${buildurl}submitDescription" \ "${buildurl}submitDescription" \

View File

@@ -2,7 +2,7 @@ name: Package Trigger Scheduler
on: on:
schedule: schedule:
- cron: '54 7 * * 0' - cron: '14 18 * * 5'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@@ -17,18 +17,16 @@ jobs:
run: | run: |
echo "**** Branches found: ****" echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****" echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml \ ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/jenkins-vars.yml | yq -r '.ls_branch')
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "${br}" == "${ls_branch}" ]; then if [ "${br}" == "${ls_branch}" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****" echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-heimdall/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
@@ -38,9 +36,11 @@ jobs:
sleep 30 sleep 30
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"

View File

@@ -1,9 +1,10 @@
name: Permission check name: Permission check
on: on:
pull_request: pull_request_target:
paths: paths:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@@ -1,23 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6.0.1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.17 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -14,15 +14,12 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \ apk add --no-cache \
php81-ctype \ php82-intl \
php81-curl \ php82-pdo_pgsql \
php81-intl \ php82-pdo_sqlite \
php81-pdo_pgsql \ php82-pdo_mysql \
php81-pdo_sqlite \ php82-tokenizer && \
php81-pdo_mysql \
php81-tokenizer \
php81-zip && \
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.17 FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -14,15 +14,12 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \ RUN \
echo "**** install runtime packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \ apk add --no-cache \
php81-ctype \ php82-intl \
php81-curl \ php82-pdo_pgsql \
php81-intl \ php82-pdo_sqlite \
php81-pdo_pgsql \ php82-pdo_mysql \
php81-pdo_sqlite \ php82-tokenizer && \
php81-pdo_mysql \
php81-tokenizer \
php81-zip && \
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,55 +0,0 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.17
# set version label
ARG BUILD_DATE
ARG VERSION
ARG HEIMDALL_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
RUN \
echo "**** install runtime packages ****" && \
apk add --no-cache --upgrade \
php81-ctype \
php81-curl \
php81-intl \
php81-pdo_pgsql \
php81-pdo_sqlite \
php81-pdo_mysql \
php81-tokenizer \
php81-zip && \
echo "**** configure nginx ****" && \
echo 'fastcgi_param PHP_AUTH_USER $remote_user; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \
echo 'fastcgi_param PHP_AUTH_PW $http_authorization; # Heimdall user authorization' >> \
/etc/nginx/fastcgi_params && \
echo "**** install heimdall ****" && \
mkdir -p \
/heimdall && \
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/commits/2.x" \
| awk '/sha/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/heimdall.tar.gz -L \
"https://github.com/linuxserver/Heimdall/archive/${HEIMDALL_RELEASE}.tar.gz" && \
mkdir -p \
/app/www-tmp && \
tar xf \
/tmp/heimdall.tar.gz -C \
/app/www-tmp --strip-components=1 && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*
# add local files
COPY root/ /
# ports and volumes
EXPOSE 80 443
VOLUME /config

282
Jenkinsfile vendored
View File

@@ -42,10 +42,16 @@ pipeline {
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
sh '''#! /bin/bash
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':development 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:development 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@@ -59,7 +65,7 @@ pipeline {
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/stale.yml ./.github/workflows/call_invalid_helper.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'
} }
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
@@ -167,7 +173,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -190,7 +196,7 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
@@ -213,12 +219,12 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.META_TAG = 'development-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'development-version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
@@ -238,19 +244,16 @@ pipeline {
script{ script{
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml' env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
} }
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash''' sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-jenkins-builder/master/checkrun.sh | /bin/bash'''
sh '''#! /bin/bash sh '''#! /bin/bash
set -e
docker pull ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest
docker run --rm \ docker run --rm \
-e DESTINATION=\"${IMAGE}/${META_TAG}/shellcheck-result.xml\" \ -v ${WORKSPACE}:/mnt \
-e FILE_NAME="shellcheck-result.xml" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e MIMETYPE="text/xml" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
-v ${WORKSPACE}:/mnt \ ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
-e SECRET_KEY=\"${S3_SECRET}\" \ apk add --no-cache py3-pip && \
-e ACCESS_KEY=\"${S3_KEY}\" \ pip install s3cmd && \
-t ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest \ s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
python /upload.py'''
} }
} }
} }
@@ -287,7 +290,7 @@ pipeline {
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
# Stage 2 - Delete old templates # Stage 2 - Delete old templates
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md\n.github/ISSUE_TEMPLATE/issue.bug.md\n.github/ISSUE_TEMPLATE/issue.feature.md" 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"
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,7 +307,7 @@ pipeline {
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 push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old templates" echo "Deleting old and deprecated templates"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
exit 0 exit 0
else else
@@ -323,12 +326,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore echo ".jenkins-external" >> .gitignore
git add .gitignore git add .gitignore
fi fi
git add ${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 push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
@@ -349,6 +353,8 @@ pipeline {
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
@@ -389,6 +395,26 @@ pipeline {
} }
} }
} }
// If this is a development build check the S6 service file perms
stage("Check S6 Service file Permissions"){
when {
branch "development"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
sh '''#! /bin/bash
WRONG_PERM=$(find ./ -path "./.git" -prune -o \\( -name "run" -o -name "finish" -o -name "check" \\) -not -perm -u=x,g=x,o=x -print)
if [[ -n "${WRONG_PERM}" ]]; then
echo "The following S6 service files are missing the executable bit; canceling the faulty build: ${WRONG_PERM}"
exit 1
else
echo "S6 service file perms look good."
fi '''
}
}
}
/* ####################### /* #######################
GitLab Mirroring GitLab Mirroring
####################### */ ####################### */
@@ -420,8 +446,7 @@ pipeline {
} }
steps{ steps{
sh '''#! /bin/bash sh '''#! /bin/bash
set -e PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/heimdall") | .uuid' || :)
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/heimdall") | .uuid')
if [ -z "${PACKAGE_UUID}" ]; then if [ -z "${PACKAGE_UUID}" ]; then
echo "Adding package to Scarf.sh" echo "Adding package to Scarf.sh"
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
@@ -501,41 +526,6 @@ pipeline {
--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} ."
} }
} }
stage('Build ARMHF') {
agent {
label 'ARMHF'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
sh "docker buildx build \
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
--label \"org.opencontainers.image.authors=linuxserver.io\" \
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-heimdall/packages\" \
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-heimdall\" \
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-heimdall\" \
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--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. \" \
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
stage('Build ARM64') { stage('Build ARM64') {
agent { agent {
label 'ARM64' label 'ARM64'
@@ -566,9 +556,12 @@ pipeline {
retry(5) { retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
} }
sh '''docker rmi \ sh '''#! /bin/bash
${IMAGE}:arm64v8-${META_TAG} \ containers=$(docker ps -aq)
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || : '''
} }
} }
} }
@@ -629,13 +622,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -653,13 +639,6 @@ pipeline {
} }
} }
steps { steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{ script{
env.EXIT_STATUS = 'ABORTED' env.EXIT_STATUS = 'ABORTED'
} }
@@ -681,14 +660,13 @@ pipeline {
]) { ]) {
script{ script{
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html' env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
} }
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
docker pull ghcr.io/linuxserver/ci:latest docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
docker run --rm \ docker run --rm \
@@ -707,8 +685,6 @@ pipeline {
-e WEB_SCREENSHOT=\"${CI_WEB}\" \ -e WEB_SCREENSHOT=\"${CI_WEB}\" \
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e DO_REGION="ams3" \
-e DO_BUCKET="lsio-ci" \
-t ghcr.io/linuxserver/ci:latest \ -t ghcr.io/linuxserver/ci:latest \
python3 test_build.py''' python3 test_build.py'''
} }
@@ -761,17 +737,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:development || :
if [ -n "${SEMVER}" ]; then
docker rmi ${DELETEIMAGE}:${SEMVER} || :
fi
done
'''
} }
} }
} }
@@ -804,8 +769,6 @@ pipeline {
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
if [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
@@ -813,49 +776,47 @@ pipeline {
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-development docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-development
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-development
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-development docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-development
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-development docker push ${MANIFESTIMAGE}:amd64-development
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-development
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-development docker push ${MANIFESTIMAGE}:arm64v8-development
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER} docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi fi
docker manifest push --purge ${MANIFESTIMAGE}:development || : docker manifest push --purge ${MANIFESTIMAGE}:development || :
docker manifest create ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm32v7-development ${MANIFESTIMAGE}:arm64v8-development docker manifest create ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:amd64-development ${MANIFESTIMAGE}:arm64v8-development
docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm32v7-development --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm64v8-development --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:development ${MANIFESTIMAGE}:arm64v8-development --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${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}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 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 manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-development")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-development || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-development ${MANIFESTIMAGE}:amd64-development
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-development
fi
docker manifest push --purge ${MANIFESTIMAGE}:development docker manifest push --purge ${MANIFESTIMAGE}:development
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
@@ -865,29 +826,6 @@ pipeline {
done done
''' '''
} }
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-development \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-development \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-development \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
if [ -n "${SEMVER}" ]; then
docker rmi \
${DELETEIMAGE}:amd64-${SEMVER} \
${DELETEIMAGE}:arm32v7-${SEMVER} \
${DELETEIMAGE}:arm64v8-${SEMVER} || :
fi
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
@@ -958,12 +896,78 @@ pipeline {
stage('Pull Request Comment') { stage('Pull Request Comment') {
when { when {
not {environment name: 'CHANGE_ID', value: ''} not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \ sh '''#! /bin/bash
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' ''' # Function to retrieve JSON data from URL
get_json() {
local url="$1"
local response=$(curl -s "$url")
if [ $? -ne 0 ]; then
echo "Failed to retrieve JSON data from $url"
return 1
fi
local json=$(echo "$response" | jq .)
if [ $? -ne 0 ]; then
echo "Failed to parse JSON data from $url"
return 1
fi
echo "$json"
}
build_table() {
local data="$1"
# Get the keys in the JSON data
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
# Check if keys are empty
if [ -z "$keys" ]; then
echo "JSON report data does not contain any keys or the report does not exist."
return 1
fi
# Build table header
local header="| Tag | Passed |\\n| --- | --- |\\n"
# Loop through the JSON data to build the table rows
local rows=""
for build in $keys; do
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
if [ "$status" = "true" ]; then
status="✅"
else
status="❌"
fi
local row="| "$build" | "$status" |\\n"
rows="${rows}${row}"
done
local table="${header}${rows}"
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
echo "$escaped_table"
}
if [[ "${CI}" = "true" ]]; then
# Retrieve JSON data from URL
data=$(get_json "$CI_JSON_URL")
# Create table from JSON data
table=$(build_table "$data")
echo -e "$table"
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
else
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} }
} }
} }
@@ -989,6 +993,14 @@ pipeline {
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash
echo "Performing docker system prune!!"
containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then
docker stop ${containers}
fi
docker system prune -af --volumes || :
'''
cleanWs() cleanWs()
} }
} }

View File

@@ -60,7 +60,7 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | | arm32v7-\<version tag\> | | armhf | | |
## Version Tags ## Version Tags
@@ -242,6 +242,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **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.
* **14.11.22:** - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)). * **14.11.22:** - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)).
* **04.11.22:** - Build commits to upstream branch 2.x. * **04.11.22:** - Build commits to upstream branch 2.x.

View File

@@ -6,6 +6,7 @@ external_type: github_commit
release_type: prerelease release_type: prerelease
release_tag: development release_tag: development
ls_branch: development ls_branch: development
build_armhf: false
repo_vars: repo_vars:
- EXT_GIT_BRANCH = '2.x' - EXT_GIT_BRANCH = '2.x'
- EXT_USER = 'linuxserver' - EXT_USER = 'linuxserver'

View File

@@ -1,227 +1,231 @@
NAME VERSION TYPE NAME VERSION TYPE
alpine-baselayout 3.4.0-r0 apk Reads from stdin without leaking info to the terminal and outputs back to stdout 1, 0, 0, 0 dotnet
alpine-baselayout-data 3.4.0-r0 apk alpine-baselayout 3.4.3-r1 apk
alpine-keys 2.4-r1 apk alpine-baselayout-data 3.4.3-r1 apk
alpine-release 3.17.2-r0 apk alpine-keys 2.4-r1 apk
apache2-utils 2.4.55-r0 apk alpine-release 3.18.2-r0 apk
apk-tools 2.12.10-r1 apk apache2-utils 2.4.57-r3 apk
apr 1.7.2-r0 apk apk-tools 2.14.0-r2 apk
apr-util 1.6.3-r0 apk apr 1.7.4-r0 apk
argon2-libs 20190702-r2 apk apr-util 1.6.3-r1 apk
barryvdh/laravel-ide-helper v2.12.3 php-composer argon2-libs 20190702-r4 apk
barryvdh/reflection-docblock v2.1.0 php-composer barryvdh/laravel-ide-helper v2.12.3 php-composer
bash 5.2.15-r0 apk barryvdh/reflection-docblock v2.1.0 php-composer
brick/math 0.9.3 php-composer bash 5.2.15-r5 apk
brotli-libs 1.0.9-r9 apk brick/math 0.9.3 php-composer
busybox 1.35.0 binary brotli-libs 1.0.9-r14 apk
busybox 1.35.0-r29 apk busybox 1.36.1 binary
busybox-binsh 1.35.0-r29 apk busybox 1.36.1-r2 apk
ca-certificates 20220614-r4 apk busybox-binsh 1.36.1-r2 apk
ca-certificates-bundle 20220614-r4 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.1-r0 apk composer/pcre 3.1.0 php-composer
curl 7.88.1-r0 apk coreutils 9.3-r1 apk
dflydev/dot-access-data v3.0.2 php-composer curl 8.2.1-r0 apk
doctrine/cache 2.2.0 php-composer dflydev/dot-access-data v3.0.2 php-composer
doctrine/dbal 3.5.1 php-composer doctrine/cache 2.2.0 php-composer
doctrine/deprecations v1.0.0 php-composer doctrine/dbal 3.5.1 php-composer
doctrine/event-manager 1.2.0 php-composer doctrine/deprecations v1.0.0 php-composer
doctrine/inflector 2.0.6 php-composer doctrine/event-manager 1.2.0 php-composer
doctrine/instantiator 1.4.1 php-composer doctrine/inflector 2.0.6 php-composer
doctrine/lexer 1.2.3 php-composer doctrine/instantiator 1.4.1 php-composer
dragonmantank/cron-expression v3.3.2 php-composer doctrine/lexer 1.2.3 php-composer
egulias/email-validator 2.1.25 php-composer dragonmantank/cron-expression v3.3.2 php-composer
facade/flare-client-php 1.10.0 php-composer egulias/email-validator 2.1.25 php-composer
facade/ignition 2.17.6 php-composer facade/flare-client-php 1.10.0 php-composer
facade/ignition-contracts 1.0.2 php-composer facade/ignition 2.17.6 php-composer
fideloper/proxy 4.4.2 php-composer facade/ignition-contracts 1.0.2 php-composer
filp/whoops 2.14.6 php-composer fideloper/proxy 4.4.2 php-composer
fzaninotto/faker v1.9.2 php-composer filp/whoops 2.14.6 php-composer
git 2.38.4-r0 apk fzaninotto/faker v1.9.2 php-composer
graham-campbell/bounded-cache v1.3.0 php-composer git 2.40.1-r0 apk
graham-campbell/github v10.6.0 php-composer graham-campbell/bounded-cache v1.3.0 php-composer
graham-campbell/manager v4.7.0 php-composer graham-campbell/github v10.6.0 php-composer
graham-campbell/result-type v1.1.0 php-composer graham-campbell/manager v4.7.0 php-composer
guzzlehttp/guzzle 7.5.0 php-composer graham-campbell/result-type v1.1.0 php-composer
guzzlehttp/promises 1.5.2 php-composer guzzlehttp/guzzle 7.5.0 php-composer
guzzlehttp/psr7 2.4.3 php-composer guzzlehttp/promises 1.5.2 php-composer
hamcrest/hamcrest-php v2.0.1 php-composer guzzlehttp/psr7 2.4.3 php-composer
icu-data-en 72.1-r1 apk hamcrest/hamcrest-php v2.0.1 php-composer
icu-libs 72.1-r1 apk icu-data-en 73.2-r2 apk
jq 1.6-r2 apk icu-libs 73.2-r2 apk
knplabs/github-api v3.6.0 php-composer jq 1.6-r3 apk
laravel/framework v8.83.26 php-composer knplabs/github-api v3.6.0 php-composer
laravel/serializable-closure v1.2.2 php-composer laravel/framework v8.83.26 php-composer
laravel/tinker v2.7.3 php-composer laravel/serializable-closure v1.2.2 php-composer
laravel/ui v3.4.6 php-composer laravel/tinker v2.7.3 php-composer
laravelcollective/html v6.3.0 php-composer laravel/ui v3.4.6 php-composer
league/commonmark 2.3.7 php-composer laravelcollective/html v6.3.0 php-composer
league/config v1.1.1 php-composer league/commonmark 2.3.7 php-composer
league/flysystem 1.1.10 php-composer league/config v1.1.1 php-composer
league/mime-type-detection 1.11.0 php-composer league/flysystem 1.1.10 php-composer
libacl 2.3.1-r1 apk league/mime-type-detection 1.11.0 php-composer
libattr 2.5.1-r2 apk libacl 2.3.1-r3 apk
libbsd 0.11.7-r0 apk libattr 2.5.1-r4 apk
libbz2 1.0.8-r4 apk libbsd 0.11.7-r1 apk
libc-utils 0.7.2-r3 apk libbz2 1.0.8-r5 apk
libcrypto3 3.0.8-r0 apk libc-utils 0.7.2-r5 apk
libcurl 7.88.1-r0 apk libcrypto3 3.1.2-r0 apk
libedit 20221030.3.1-r0 apk libcurl 8.2.1-r0 apk
libexpat 2.5.0-r0 apk libedit 20221030.3.1-r1 apk
libgcc 12.2.1_git20220924-r4 apk libexpat 2.5.0-r1 apk
libintl 0.21.1-r1 apk libgcc 12.2.1_git20220924-r10 apk
libmd 1.0.4-r0 apk libidn2 2.3.4-r1 apk
libpq 15.2-r0 apk libintl 0.21.1-r7 apk
libproc 3.3.17-r2 apk libmd 1.0.4-r2 apk
libssl3 3.0.8-r0 apk libncursesw 6.4_p20230506-r0 apk
libstdc++ 12.2.1_git20220924-r4 apk libpq 15.3-r0 apk
libuuid 2.38.1-r1 apk libproc2 4.0.3-r1 apk
libxml2 2.10.3-r1 apk libssl3 3.1.2-r0 apk
libzip 1.9.2-r2 apk libstdc++ 12.2.1_git20220924-r10 apk
linux-pam 1.5.2-r1 apk libunistring 1.1-r1 apk
logrotate 3.20.1-r3 apk libuuid 2.38.1-r8 apk
mockery/mockery 1.5.1 php-composer libxml2 2.11.4-r0 apk
monolog/monolog 2.8.0 php-composer libzip 1.9.2-r2 apk
musl 1.2.3-r4 apk linux-pam 1.5.2-r10 apk
musl-utils 1.2.3-r4 apk logrotate 3.21.0-r1 apk
myclabs/deep-copy 1.11.0 php-composer mockery/mockery 1.5.1 php-composer
nano 7.0-r0 apk monolog/monolog 2.8.0 php-composer
ncurses-libs 6.3_p20221119-r0 apk musl 1.2.4-r1 apk
ncurses-terminfo-base 6.3_p20221119-r0 apk musl-utils 1.2.4-r1 apk
nesbot/carbon 2.63.0 php-composer myclabs/deep-copy 1.11.0 php-composer
netcat-openbsd 1.130-r4 apk nano 7.2-r1 apk
nette/schema v1.2.3 php-composer ncurses-terminfo-base 6.4_p20230506-r0 apk
nette/utils v3.2.8 php-composer nesbot/carbon 2.63.0 php-composer
nghttp2-libs 1.51.0-r0 apk netcat-openbsd 1.219-r1 apk
nginx 1.22.1-r0 apk nette/schema v1.2.3 php-composer
nikic/php-parser v4.15.2 php-composer nette/utils v3.2.8 php-composer
nunomaduro/collision v5.11.0 php-composer nghttp2-libs 1.55.1-r0 apk
oniguruma 6.9.8-r0 apk nginx 1.24.0-r6 apk
openssl 3.0.8-r0 apk nikic/php-parser v4.15.2 php-composer
opis/closure 3.6.3 php-composer nunomaduro/collision v5.11.0 php-composer
pcre 8.45-r2 apk oniguruma 6.9.8-r1 apk
pcre2 10.42-r0 apk openssl 3.1.2-r0 apk
phar-io/manifest 2.0.3 php-composer opis/closure 3.6.3 php-composer
phar-io/version 3.2.1 php-composer pcre 8.45-r3 apk
php-cli 8.1.16 binary pcre2 10.42-r1 apk
php-fpm 8.1.16 binary phar-io/manifest 2.0.3 php-composer
php-http/cache-plugin 1.7.5 php-composer phar-io/version 3.2.1 php-composer
php-http/client-common 2.6.0 php-composer php-cli 8.2.8 binary
php-http/discovery 1.14.3 php-composer php-fpm 8.2.8 binary
php-http/httplug 2.3.0 php-composer php-http/cache-plugin 1.7.5 php-composer
php-http/message 1.13.0 php-composer php-http/client-common 2.6.0 php-composer
php-http/message-factory v1.0.2 php-composer php-http/discovery 1.14.3 php-composer
php-http/multipart-stream-builder 1.2.0 php-composer php-http/httplug 2.3.0 php-composer
php-http/promise 1.1.0 php-composer php-http/message 1.13.0 php-composer
php81 8.1.16-r0 apk php-http/message-factory v1.0.2 php-composer
php81-common 8.1.16-r0 apk php-http/multipart-stream-builder 1.2.0 php-composer
php81-ctype 8.1.16-r0 apk php-http/promise 1.1.0 php-composer
php81-curl 8.1.16-r0 apk php82 8.2.8-r0 apk
php81-fileinfo 8.1.16-r0 apk php82-common 8.2.8-r0 apk
php81-fpm 8.1.16-r0 apk php82-ctype 8.2.8-r0 apk
php81-intl 8.1.16-r0 apk php82-curl 8.2.8-r0 apk
php81-mbstring 8.1.16-r0 apk php82-fileinfo 8.2.8-r0 apk
php81-mysqlnd 8.1.16-r0 apk php82-fpm 8.2.8-r0 apk
php81-openssl 8.1.16-r0 apk php82-iconv 8.2.8-r0 apk
php81-pdo 8.1.16-r0 apk php82-intl 8.2.8-r0 apk
php81-pdo_mysql 8.1.16-r0 apk php82-mbstring 8.2.8-r0 apk
php81-pdo_pgsql 8.1.16-r0 apk php82-mysqlnd 8.2.8-r0 apk
php81-pdo_sqlite 8.1.16-r0 apk php82-openssl 8.2.8-r0 apk
php81-session 8.1.16-r0 apk php82-pdo 8.2.8-r0 apk
php81-simplexml 8.1.16-r0 apk php82-pdo_mysql 8.2.8-r0 apk
php81-tokenizer 8.1.16-r0 apk php82-pdo_pgsql 8.2.8-r0 apk
php81-xml 8.1.16-r0 apk php82-pdo_sqlite 8.2.8-r0 apk
php81-xmlwriter 8.1.16-r0 apk php82-phar 8.2.8-r0 apk
php81-zip 8.1.16-r0 apk php82-session 8.2.8-r0 apk
phpdocumentor/reflection-common 2.2.0 php-composer php82-simplexml 8.2.8-r0 apk
phpdocumentor/type-resolver 1.6.2 php-composer php82-tokenizer 8.2.8-r0 apk
phpoption/phpoption 1.9.0 php-composer php82-xml 8.2.8-r0 apk
phpunit/php-code-coverage 9.2.19 php-composer php82-xmlwriter 8.2.8-r0 apk
phpunit/php-file-iterator 3.0.6 php-composer php82-zip 8.2.8-r0 apk
phpunit/php-invoker 3.1.1 php-composer phpdocumentor/reflection-common 2.2.0 php-composer
phpunit/php-text-template 2.0.4 php-composer phpdocumentor/type-resolver 1.6.2 php-composer
phpunit/php-timer 5.0.3 php-composer phpoption/phpoption 1.9.0 php-composer
phpunit/phpunit 9.5.26 php-composer phpunit/php-code-coverage 9.2.19 php-composer
popt 1.19-r0 apk phpunit/php-file-iterator 3.0.6 php-composer
procps 3.3.17-r2 apk phpunit/php-invoker 3.1.1 php-composer
psr/cache 1.0.1 php-composer phpunit/php-text-template 2.0.4 php-composer
psr/container 1.1.2 php-composer phpunit/php-timer 5.0.3 php-composer
psr/event-dispatcher 1.0.0 php-composer phpunit/phpunit 9.5.26 php-composer
psr/http-client 1.0.1 php-composer popt 1.19-r2 apk
psr/http-factory 1.0.1 php-composer procps-ng 4.0.3-r1 apk
psr/http-message 1.0.1 php-composer psr/cache 1.0.1 php-composer
psr/log 1.1.4 php-composer psr/container 1.1.2 php-composer
psr/simple-cache 1.0.1 php-composer psr/event-dispatcher 1.0.0 php-composer
psy/psysh v0.11.9 php-composer psr/http-client 1.0.1 php-composer
ralouphie/getallheaders 3.0.3 php-composer psr/http-factory 1.0.1 php-composer
ramsey/collection 1.2.2 php-composer psr/http-message 1.0.1 php-composer
ramsey/uuid 4.2.3 php-composer psr/log 1.1.4 php-composer
readline 8.2.0-r0 apk psr/simple-cache 1.0.1 php-composer
scanelf 1.3.5-r1 apk psy/psysh v0.11.9 php-composer
sebastian/cli-parser 1.0.1 php-composer ralouphie/getallheaders 3.0.3 php-composer
sebastian/code-unit 1.0.8 php-composer ramsey/collection 1.2.2 php-composer
sebastian/code-unit-reverse-lookup 2.0.3 php-composer ramsey/uuid 4.2.3 php-composer
sebastian/comparator 4.0.8 php-composer readline 8.2.1-r1 apk
sebastian/complexity 2.0.2 php-composer scanelf 1.3.7-r1 apk
sebastian/diff 4.0.4 php-composer sebastian/cli-parser 1.0.1 php-composer
sebastian/environment 5.1.4 php-composer sebastian/code-unit 1.0.8 php-composer
sebastian/exporter 4.0.5 php-composer sebastian/code-unit-reverse-lookup 2.0.3 php-composer
sebastian/global-state 5.0.5 php-composer sebastian/comparator 4.0.8 php-composer
sebastian/lines-of-code 1.0.3 php-composer sebastian/complexity 2.0.2 php-composer
sebastian/object-enumerator 4.0.4 php-composer sebastian/diff 4.0.4 php-composer
sebastian/object-reflector 2.0.4 php-composer sebastian/environment 5.1.4 php-composer
sebastian/recursion-context 4.0.4 php-composer sebastian/exporter 4.0.5 php-composer
sebastian/resource-operations 3.0.3 php-composer sebastian/global-state 5.0.5 php-composer
sebastian/type 3.2.0 php-composer sebastian/lines-of-code 1.0.3 php-composer
sebastian/version 3.0.2 php-composer sebastian/object-enumerator 4.0.4 php-composer
shadow 4.13-r0 apk sebastian/object-reflector 2.0.4 php-composer
skalibs 2.12.0.1-r0 apk sebastian/recursion-context 4.0.4 php-composer
sqlite-libs 3.40.1-r0 apk sebastian/resource-operations 3.0.3 php-composer
squizlabs/php_codesniffer 3.7.1 php-composer sebastian/type 3.2.0 php-composer
ssl_client 1.35.0-r29 apk sebastian/version 3.0.2 php-composer
swiftmailer/swiftmailer v6.3.0 php-composer shadow 4.13-r4 apk
symfony/cache v5.4.15 php-composer skalibs 2.13.1.1-r1 apk
symfony/cache-contracts v2.5.2 php-composer sqlite-libs 3.41.2-r2 apk
symfony/console v5.4.15 php-composer squizlabs/php_codesniffer 3.7.1 php-composer
symfony/css-selector v5.4.11 php-composer ssl_client 1.36.1-r2 apk
symfony/deprecation-contracts v2.5.2 php-composer swiftmailer/swiftmailer v6.3.0 php-composer
symfony/error-handler v5.4.15 php-composer symfony/cache v5.4.15 php-composer
symfony/event-dispatcher v5.4.9 php-composer symfony/cache-contracts v2.5.2 php-composer
symfony/event-dispatcher-contracts v2.5.2 php-composer symfony/console v5.4.15 php-composer
symfony/finder v5.4.11 php-composer symfony/css-selector v5.4.11 php-composer
symfony/http-foundation v5.4.15 php-composer symfony/deprecation-contracts v2.5.2 php-composer
symfony/http-kernel v5.4.15 php-composer symfony/error-handler v5.4.15 php-composer
symfony/mime v5.4.14 php-composer symfony/event-dispatcher v5.4.9 php-composer
symfony/options-resolver v5.4.11 php-composer symfony/event-dispatcher-contracts v2.5.2 php-composer
symfony/polyfill-ctype v1.27.0 php-composer symfony/finder v5.4.11 php-composer
symfony/polyfill-iconv v1.27.0 php-composer symfony/http-foundation v5.4.15 php-composer
symfony/polyfill-intl-grapheme v1.27.0 php-composer symfony/http-kernel v5.4.15 php-composer
symfony/polyfill-intl-idn v1.27.0 php-composer symfony/mime v5.4.14 php-composer
symfony/polyfill-intl-normalizer v1.27.0 php-composer symfony/options-resolver v5.4.11 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer symfony/polyfill-ctype v1.27.0 php-composer
symfony/polyfill-php72 v1.27.0 php-composer symfony/polyfill-iconv v1.27.0 php-composer
symfony/polyfill-php73 v1.27.0 php-composer symfony/polyfill-intl-grapheme v1.27.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer symfony/polyfill-intl-idn v1.27.0 php-composer
symfony/polyfill-php81 v1.27.0 php-composer symfony/polyfill-intl-normalizer v1.27.0 php-composer
symfony/process v5.4.11 php-composer symfony/polyfill-mbstring v1.27.0 php-composer
symfony/routing v5.4.15 php-composer symfony/polyfill-php72 v1.27.0 php-composer
symfony/service-contracts v2.5.2 php-composer symfony/polyfill-php73 v1.27.0 php-composer
symfony/string v5.4.15 php-composer symfony/polyfill-php80 v1.27.0 php-composer
symfony/thanks v1.2.10 php-composer symfony/polyfill-php81 v1.27.0 php-composer
symfony/translation v5.4.14 php-composer symfony/process v5.4.11 php-composer
symfony/translation-contracts v2.5.2 php-composer symfony/routing v5.4.15 php-composer
symfony/var-dumper v5.4.14 php-composer symfony/service-contracts v2.5.2 php-composer
symfony/var-exporter v5.4.10 php-composer symfony/string v5.4.15 php-composer
symfony/yaml v5.4.14 php-composer symfony/thanks v1.2.10 php-composer
theseer/tokenizer 1.2.1 php-composer symfony/translation v5.4.14 php-composer
tijsverkoyen/css-to-inline-styles 2.2.5 php-composer symfony/translation-contracts v2.5.2 php-composer
tzdata 2022f-r1 apk symfony/var-dumper v5.4.14 php-composer
utmps-libs 0.1.2.0-r1 apk symfony/var-exporter v5.4.10 php-composer
vlucas/phpdotenv v5.5.0 php-composer symfony/yaml v5.4.14 php-composer
voku/portable-ascii 1.6.1 php-composer theseer/tokenizer 1.2.1 php-composer
webmozart/assert 1.11.0 php-composer tijsverkoyen/css-to-inline-styles 2.2.5 php-composer
xz 5.2.9-r0 apk tzdata 2023c-r1 apk
xz-libs 5.2.9-r0 apk utmps-libs 0.1.2.1-r1 apk
zlib 1.2.13-r0 apk vlucas/phpdotenv v5.5.0 php-composer
zstd-libs 1.5.2-r9 apk voku/portable-ascii 1.6.1 php-composer
webmozart/assert 1.11.0 php-composer
xz-libs 5.4.3-r0 apk
zlib 1.2.13-r1 apk
zstd-libs 1.5.5-r4 apk

View File

@@ -16,7 +16,6 @@ project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version # development version
development_versions: true development_versions: true
@@ -59,6 +58,8 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { 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: "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." }
- { date: "14.11.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." } - { date: "14.11.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))." }
- { date: "04.11.22:", desc: "Build commits to upstream branch 2.x." } - { date: "04.11.22:", desc: "Build commits to upstream branch 2.x." }

View File

@@ -1,4 +1,4 @@
## Version 2022/11/14 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/nginx/site-confs/default.conf.sample ## Version 2023/04/13 - 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;
@@ -9,6 +9,8 @@ server {
server_name _; server_name _;
include /config/nginx/ssl.conf;
root /app/www/public; root /app/www/public;
index index.html index.htm index.php; index index.html index.htm index.php;