Compare commits

..

95 Commits

Author SHA1 Message Date
LinuxServer-CI ed8c5b0703 Bot Updating Package Versions 2025-09-16 11:52:59 +00:00
Adam c2057ca1ed Merge pull request #520 from linuxserver/previous-version-spaces 2025-08-26 15:57:04 +01:00
thespad 00b7ea5cb3 Trim whitespace around version numbers 2025-08-26 13:48:57 +01:00
LinuxServer-CI 0ec959e8c7 Bot Updating Package Versions 2025-08-26 11:52:59 +00:00
LinuxServer-CI 6159545435 Bot Updating Package Versions 2025-08-19 11:52:47 +00:00
LinuxServer-CI df969acaaf Bot Updating Package Versions 2025-08-14 07:43:42 +00:00
LinuxServer-CI 08b3153c6c Bot Updating Package Versions 2025-08-05 11:55:13 +00:00
LinuxServer-CI e2f5a4881d Bot Updating Package Versions 2025-07-29 11:54:22 +00:00
LinuxServer-CI f46689ba0a Bot Updating Package Versions 2025-07-22 11:54:31 +00:00
LinuxServer-CI 0725c68408 Bot Updating Package Versions 2025-07-15 11:53:36 +00:00
LinuxServer-CI 1fb67f3cf0 Bot Updating Package Versions 2025-07-10 10:48:45 +00:00
LinuxServer-CI 2f2f584fb0 Bot Updating Package Versions 2025-07-08 11:57:46 +00:00
LinuxServer-CI 1247a815de Bot Updating Templated Files 2025-07-08 11:52:20 +00:00
LinuxServer-CI 8c6dafe518 Bot Updating Templated Files 2025-07-08 11:50:11 +00:00
LinuxServer-CI af856445db Bot Updating Package Versions 2025-06-10 11:55:56 +00:00
LinuxServer-CI 103f1d67c6 Bot Updating Templated Files 2025-06-10 11:49:47 +00:00
LinuxServer-CI b621b67f26 Bot Updating Package Versions 2025-05-26 23:56:22 +00:00
LinuxServer-CI 38d52211e9 Bot Updating Package Versions 2025-05-20 11:54:03 +00:00
LinuxServer-CI 6a2d868229 Bot Updating Templated Files 2025-05-20 11:49:27 +00:00
LinuxServer-CI ea707b9e5d Bot Updating Package Versions 2025-05-15 13:08:00 +00:00
LinuxServer-CI 5450bab38a Bot Updating Package Versions 2025-05-06 11:52:08 +00:00
LinuxServer-CI a9aaf78b30 Bot Updating Package Versions 2025-04-22 11:51:24 +00:00
aptalca 716d6dbb2e Merge pull request #505 from linuxserver/previous-trigger
fix external trigger (when upstream marks a previous version as latest on GH)
2025-04-17 11:37:31 -04:00
aptalca 930e6bb596 fix external trigger (when upstream marks a previous version as latest on GH) 2025-04-17 11:28:03 -04:00
LinuxServer-CI d0b76f5482 Bot Updating Package Versions 2025-04-16 08:47:54 +00:00
LinuxServer-CI db360ca162 Bot Updating Package Versions 2025-04-15 17:40:42 +00:00
LinuxServer-CI 98da436987 Bot Updating Package Versions 2025-04-11 08:06:00 +00:00
LinuxServer-CI 76ab834a20 Bot Updating Package Versions 2025-04-08 11:51:58 +00:00
LinuxServer-CI b46c42cacf Bot Updating Package Versions 2025-04-01 11:54:06 +00:00
LinuxServer-CI ce900d8d8e Bot Updating Package Versions 2025-03-18 11:51:25 +00:00
LinuxServer-CI 8bdbbf982e Bot Updating Package Versions 2025-03-11 11:54:13 +00:00
LinuxServer-CI dec81a2751 Bot Updating Package Versions 2025-03-01 14:41:32 +00:00
LinuxServer-CI 1fde72fae4 Bot Updating Package Versions 2025-02-25 11:51:56 +00:00
LinuxServer-CI 21f0bce059 Bot Updating Package Versions 2025-02-18 11:51:34 +00:00
LinuxServer-CI 83d8ac703d Bot Updating Package Versions 2025-02-13 21:02:17 +00:00
LinuxServer-CI 7b5a4358b7 Bot Updating Templated Files 2025-02-13 20:55:09 +00:00
Adam e04f41c4a3 Merge pull request #493 from linuxserver/previous-3.21 2025-02-13 20:53:36 +00:00
LinuxServer-CI fc3e3d2724 Bot Updating Package Versions 2025-02-13 15:37:43 +00:00
thespad a208935571 Rebase to 3.21 2025-02-12 21:23:08 +00:00
LinuxServer-CI 9e202081d7 Bot Updating Package Versions 2025-02-11 11:59:28 +00:00
LinuxServer-CI 2d602b0e46 Bot Updating Templated Files 2025-02-11 11:51:35 +00:00
LinuxServer-CI 8c1048c348 Bot Updating Templated Files 2025-02-04 11:51:49 +00:00
LinuxServer-CI 5bf22d2a8c Bot Updating Templated Files 2025-02-04 11:49:58 +00:00
LinuxServer-CI d05e5a7904 Bot Updating Package Versions 2025-01-28 11:51:55 +00:00
LinuxServer-CI 4ff83c7210 Bot Updating Package Versions 2025-01-21 11:51:59 +00:00
LinuxServer-CI d2ca43078a Bot Updating Package Versions 2025-01-16 18:47:16 +00:00
quietsy 523b71f45c Merge pull request #482 from linuxserver/fix-large-files-previous
Fix uploading large files
2025-01-09 13:35:02 +02:00
quietsy 0f41399c9f Fix uploading large files 2025-01-09 12:49:39 +02:00
LinuxServer-CI 72192aeb47 Bot Updating Package Versions 2025-01-07 11:51:26 +00:00
LinuxServer-CI fecf7673d6 Bot Updating Package Versions 2024-12-24 11:51:31 +00:00
LinuxServer-CI a39017cc73 Bot Updating Package Versions 2024-12-17 12:03:06 +00:00
LinuxServer-CI 2e2b3b9cf6 Bot Updating Templated Files 2024-12-17 11:52:37 +00:00
LinuxServer-CI e17cb4a648 Bot Updating Templated Files 2024-12-17 11:49:24 +00:00
LinuxServer-CI 1cbdb9f4e7 Bot Updating Templated Files 2024-12-05 13:43:02 +00:00
LinuxServer-CI 9d83dc0ece Bot Updating Templated Files 2024-12-03 11:53:05 +00:00
LinuxServer-CI 3abdcce7b0 Bot Updating Templated Files 2024-12-03 11:51:17 +00:00
LinuxServer-CI 05bafbb7b1 Bot Updating Templated Files 2024-12-03 11:49:36 +00:00
LinuxServer-CI 08449338b2 Bot Updating Package Versions 2024-11-26 11:52:15 +00:00
LinuxServer-CI 1cf1a7f450 Bot Updating Package Versions 2024-11-19 11:51:11 +00:00
LinuxServer-CI bfbe03b675 Bot Updating Templated Files 2024-11-12 11:51:44 +00:00
LinuxServer-CI 32117124ec Bot Updating Templated Files 2024-11-12 11:49:18 +00:00
LinuxServer-CI f10a2c5ebb Bot Updating Package Versions 2024-11-05 11:52:27 +00:00
LinuxServer-CI 65336aae28 Bot Updating Package Versions 2024-10-29 11:51:59 +00:00
LinuxServer-CI 5d472c622c Bot Updating Package Versions 2024-10-22 11:50:58 +00:00
LinuxServer-CI 33c48f4405 Bot Updating Package Versions 2024-10-10 14:40:38 +00:00
LinuxServer-CI 7ef7a7025d Bot Updating Package Versions 2024-10-08 11:51:08 +00:00
LinuxServer-CI e4058b48df Bot Updating Package Versions 2024-10-01 11:57:39 +00:00
LinuxServer-CI dbe6f269c5 Bot Updating Templated Files 2024-10-01 11:52:42 +00:00
LinuxServer-CI 5eeca64e8e Bot Updating Templated Files 2024-10-01 11:51:28 +00:00
LinuxServer-CI 8c3a38e0be Bot Updating Templated Files 2024-10-01 11:49:42 +00:00
LinuxServer-CI bd23955995 Bot Updating Package Versions 2024-09-25 23:34:02 +00:00
LinuxServer-CI fb7d5ec411 Bot Updating Package Versions 2024-09-24 11:50:55 +00:00
LinuxServer-CI 7aa8d56075 Bot Updating Package Versions 2024-09-14 16:29:05 +00:00
Eric Nemchik 55012a2508 Merge pull request #455 from linuxserver/ipv6-listen-previous
separate ipv6 listen in default site-conf [previous]
2024-09-14 09:10:11 -07:00
LinuxServer-CI f2aeaf922e Bot Updating Package Versions 2024-09-12 19:34:21 +00:00
LinuxServer-CI 87797a998c Bot Updating Package Versions 2024-09-10 11:51:56 +00:00
LinuxServer-CI 7251f37675 Bot Updating Package Versions 2024-09-03 11:51:42 +00:00
LinuxServer-CI e2cf4b7e1b Bot Updating Package Versions 2024-08-27 11:51:32 +00:00
LinuxServer-CI 6bd06be5b2 Bot Updating Package Versions 2024-08-20 11:55:45 +00:00
LinuxServer-CI 0dba137a29 Bot Updating Templated Files 2024-08-20 11:52:00 +00:00
LinuxServer-CI e150ec8200 Bot Updating Templated Files 2024-08-20 11:50:27 +00:00
LinuxServer-CI a6f3b90552 Bot Updating Package Versions 2024-08-13 11:51:07 +00:00
LinuxServer-CI ce8f20b1a0 Bot Updating Package Versions 2024-08-06 11:50:58 +00:00
LinuxServer-CI 1ed02051f3 Bot Updating Package Versions 2024-07-26 12:52:59 +00:00
LinuxServer-CI 8de888ed1e Bot Updating Package Versions 2024-07-23 11:54:34 +00:00
Eric Nemchik 52caabe6e1 separate ipv6 listen in default site-conf [previous] 2024-07-16 20:40:58 -05:00
LinuxServer-CI abcb894240 Bot Updating Package Versions 2024-07-14 21:22:43 +00:00
aptalca 70c4bd63f1 Merge pull request #451 from linuxserver/previous-escape
fix escape for external version
2024-07-14 17:18:59 -04:00
aptalca a101ff6d14 fix escape for external version 2024-07-14 16:31:21 -04:00
thespad fbdf2b2eb3 Fix release check 2024-07-14 18:37:42 +01:00
LinuxServer-CI e3250f0107 Bot Updating Templated Files 2024-07-14 17:19:41 +00:00
LinuxServer-CI ed224e0523 Bot Updating Templated Files 2024-07-14 17:17:44 +00:00
Adam fa1225fd22 Merge pull request #449 from linuxserver/previous-initial
Initial release for previous tag
2024-07-14 18:16:24 +01:00
thespad 7e34d51683 Remove leading v from version 2024-07-09 16:22:48 +01:00
thespad f1fb49429c Initial release for previous tag 2024-07-09 16:16:27 +01:00
12 changed files with 741 additions and 882 deletions
+2 -2
View File
@@ -24,7 +24,7 @@
## Readme
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nextcloud/edit/master/readme-vars.yml).
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nextcloud/edit/previous/readme-vars.yml).
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-nextcloud)
@@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/master/root), add an entry to the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nextcloud/tree/previous/root), add an entry to the changelog
```yml
changelogs:
+1 -1
View File
@@ -21,7 +21,7 @@
------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-nextcloud/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-nextcloud/blob/previous/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------
+16 -16
View File
@@ -7,31 +7,31 @@ permissions:
contents: read
jobs:
external-trigger-master:
external-trigger-previous:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: External Trigger
if: github.ref == 'refs/heads/master'
if: github.ref == 'refs/heads/previous'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: |
printf "# External trigger for docker-nextcloud\n\n" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
if grep -q "^nextcloud_previous_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^nextcloud_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_previous_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^nextcloud_previous" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nextcloud_previous\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of master branch. To disable this trigger, add \`nextcloud_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of previous branch. To disable this trigger, add \`nextcloud_previous\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1)
EXT_RELEASE=$(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r "first(.[] | select(.tag_name | contains($(( $(curl -u ${{ secrets.CR_USER }}:${{ secrets.CR_PAT }} -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | awk -F '.' '{print $1}' | sort -rV | head -1) -1 ))|tostring ) and (contains( \"rc\" )|not)) | .tag_name)" | sed 's|^v||g')
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^nextcloud_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
if grep -q "^nextcloud_previous_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
@@ -39,7 +39,7 @@ jobs:
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for nextcloud branch master"
FAILURE_REASON="Can't retrieve external version for nextcloud branch previous"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nextcloud/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
@@ -50,7 +50,7 @@ jobs:
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/nextcloud"
tag="latest"
tag="previous"
token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fnextcloud%3Apull" \
| jq -r '.token')
@@ -96,7 +96,7 @@ jobs:
if [ -z "${IMAGE_VERSION}" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag latest"
FAILURE_REASON="Can't retrieve last pushed version for nextcloud tag previous"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
@@ -106,14 +106,14 @@ jobs:
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/previous/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" >> $GITHUB_STEP_SUMMARY
exit 0
else
if [[ "${artifacts_found}" == "false" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="New version ${EXT_RELEASE} for nextcloud tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
FAILURE_REASON="New version ${EXT_RELEASE} for nextcloud tag previous is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
@@ -124,7 +124,7 @@ jobs:
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
fi
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/buildWithParameters?PACKAGE_CHECK=false \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/previous/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
@@ -139,7 +139,7 @@ jobs:
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for nextcloud tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
TRIGGER_REASON="A version change was detected for nextcloud tag previous. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
+1 -1
View File
@@ -15,5 +15,5 @@ jobs:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nextcloud/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nextcloud/blob/previous/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}
+37 -35
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.21
# set version label
ARG BUILD_DATE
@@ -22,44 +22,45 @@ RUN \
imagemagick-pdf \
imagemagick-svg \
libxml2 \
php84-apcu \
php84-bcmath \
php84-bz2 \
php84-dom \
php84-exif \
php84-ftp \
php84-gd \
php84-gmp \
php84-imap \
php84-intl \
php84-ldap \
php84-opcache \
php84-pcntl \
php84-pdo_mysql \
php84-pdo_pgsql \
php84-pdo_sqlite \
php84-pecl-imagick \
php84-pecl-memcached \
php84-pecl-smbclient \
php84-pgsql \
php84-posix \
php84-redis \
php84-sodium \
php84-sqlite3 \
php84-sysvsem \
php84-xmlreader \
php83-apcu \
php83-bcmath \
php83-bz2 \
php83-dom \
php83-exif \
php83-ftp \
php83-gd \
php83-gmp \
php83-imap \
php83-intl \
php83-ldap \
php83-opcache \
php83-pcntl \
php83-pdo_mysql \
php83-pdo_pgsql \
php83-pdo_sqlite \
php83-pecl-imagick \
php83-pecl-mcrypt \
php83-pecl-memcached \
php83-pecl-smbclient \
php83-pgsql \
php83-posix \
php83-redis \
php83-sodium \
php83-sqlite3 \
php83-sysvsem \
php83-xmlreader \
rsync \
samba-client \
util-linux \
sudo && \
echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \
{ \
echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \
} >> /etc/php83/conf.d/apcu.ini && \
{ \
echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \
@@ -69,7 +70,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php84/conf.d/00_opcache.ini" && \
} >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \
echo 'memory_limit=-1'; \
echo 'upload_max_filesize=100G'; \
@@ -78,14 +79,15 @@ RUN \
echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \
} >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \
mkdir -p \
/app/www/src/ && \
if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \
NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \
| jq -r '.[] | select(.prerelease != true) | .tag_name' \
| sed 's|^v||g' | sort -rV | head -1); \
| jq -r "first(.[] | select(.tag_name | contains($(( $(curl -sX GET https://api.github.com/repos/nextcloud/server/releases/latest \
| jq -r '.tag_name' | sed 's|^v||g' | awk -F '.' '{print $1}') -1 ))|tostring ) and (contains( \"rc\" )|not)) | .tag_name)" \
| sed 's|^v||g'); \
fi && \
curl -o \
/tmp/nextcloud.tar.bz2 -L \
+37 -35
View File
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.21
# set version label
ARG BUILD_DATE
@@ -22,44 +22,45 @@ RUN \
imagemagick-pdf \
imagemagick-svg \
libxml2 \
php84-apcu \
php84-bcmath \
php84-bz2 \
php84-dom \
php84-exif \
php84-ftp \
php84-gd \
php84-gmp \
php84-imap \
php84-intl \
php84-ldap \
php84-opcache \
php84-pcntl \
php84-pdo_mysql \
php84-pdo_pgsql \
php84-pdo_sqlite \
php84-pecl-imagick \
php84-pecl-memcached \
php84-pecl-smbclient \
php84-pgsql \
php84-posix \
php84-redis \
php84-sodium \
php84-sqlite3 \
php84-sysvsem \
php84-xmlreader \
php83-apcu \
php83-bcmath \
php83-bz2 \
php83-dom \
php83-exif \
php83-ftp \
php83-gd \
php83-gmp \
php83-imap \
php83-intl \
php83-ldap \
php83-opcache \
php83-pcntl \
php83-pdo_mysql \
php83-pdo_pgsql \
php83-pdo_sqlite \
php83-pecl-imagick \
php83-pecl-mcrypt \
php83-pecl-memcached \
php83-pecl-smbclient \
php83-pgsql \
php83-posix \
php83-redis \
php83-sodium \
php83-sqlite3 \
php83-sysvsem \
php83-xmlreader \
rsync \
samba-client \
util-linux \
sudo && \
echo "**** configure php-fpm to pass env vars ****" && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \
if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php83/php-fpm.conf && \
echo "**** configure php for nextcloud ****" && \
{ \
echo 'apc.enable_cli=1'; \
} >> /etc/php84/conf.d/apcu.ini && \
} >> /etc/php83/conf.d/apcu.ini && \
{ \
echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \
@@ -69,7 +70,7 @@ RUN \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.jit=1255'; \
echo 'opcache.jit_buffer_size=128M'; \
} >> "/etc/php84/conf.d/00_opcache.ini" && \
} >> "/etc/php83/conf.d/00_opcache.ini" && \
{ \
echo 'memory_limit=-1'; \
echo 'upload_max_filesize=100G'; \
@@ -78,14 +79,15 @@ RUN \
echo 'max_execution_time=3600'; \
echo 'output_buffering=0'; \
echo 'always_populate_raw_post_data=-1'; \
} >> "/etc/php84/conf.d/nextcloud.ini" && \
} >> "/etc/php83/conf.d/nextcloud.ini" && \
echo "**** install nextcloud ****" && \
mkdir -p \
/app/www/src/ && \
if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \
NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \
| jq -r '.[] | select(.prerelease != true) | .tag_name' \
| sed 's|^v||g' | sort -rV | head -1); \
| jq -r "first(.[] | select(.tag_name | contains($(( $(curl -sX GET https://api.github.com/repos/nextcloud/server/releases/latest \
| jq -r '.tag_name' | sed 's|^v||g' | awk -F '.' '{print $1}') -1 ))|tostring ) and (contains( \"rc\" )|not)) | .tag_name)" \
| sed 's|^v||g'); \
fi && \
curl -o \
/tmp/nextcloud.tar.bz2 -L \
Vendored
+173 -229
View File
@@ -75,10 +75,8 @@ pipeline {
'''
script{
env.EXIT_STATUS = ''
env.CI_TEST_ATTEMPTED = ''
env.PUSH_ATTEMPTED = ''
env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 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}:previous 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
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' ''',
@@ -111,7 +109,7 @@ pipeline {
script{
env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null)
tagsha=$(git rev-list -n 1 previous-${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then
@@ -149,7 +147,7 @@ pipeline {
steps{
script{
env.EXT_RELEASE = sh(
script: ''' curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1 ''',
script: ''' curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r "first(.[] | select(.tag_name | contains($(( $(curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | awk -F '.' '{print $1}' | sort -rV | head -1) -1 ))|tostring ) and (contains( \\"rc\\" )|not)) | .tag_name)" | sed 's|^v||g' ''',
returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command'
}
@@ -189,10 +187,10 @@ pipeline {
}
}
}
// If this is a master build use live docker endpoints
// If this is a previous build use live docker endpoints
stage("Set ENV live build"){
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -202,22 +200,21 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.CI_TAGS = 'amd64-previous-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-previous-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.CI_TAGS = 'previous-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'previous-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'previous-version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
}
}
}
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "master"}
not {branch "previous"}
environment name: 'CHANGE_ID', value: ''
}
steps {
@@ -227,16 +224,15 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.CI_TAGS = 'amd64-previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.CI_TAGS = 'previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'previous-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -252,17 +248,16 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.CI_TAGS = 'amd64-previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.CI_TAGS = 'previous-' + 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 + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'previous-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'previous-version-' + env.EXT_RELEASE_CLEAN
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.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@@ -285,7 +280,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@@ -297,7 +292,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@@ -309,24 +304,24 @@ pipeline {
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
# Cloned repo paths for templating:
# ${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}/docker-${CONTAINER_NAME}: Cloned branch previous of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch previous 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}
git clone --branch previous --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
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f previous
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile
git commit -m 'Bot Updating Templated Files'
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
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@@ -345,13 +340,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f previous
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@@ -366,20 +361,20 @@ pipeline {
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
fi
mkdir -p ${TEMPDIR}/d2
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:previous
ls -al ${TEMPDIR}/d2
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-previous.d2\\")" readme-vars.yml
if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then
echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit."
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f previous
cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml
git add readme-vars.yml
git commit -m 'Bot Updating Templated Files'
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
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@@ -396,7 +391,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f previous
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
@@ -409,8 +404,8 @@ pipeline {
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@@ -511,7 +506,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@@ -524,10 +519,10 @@ pipeline {
}
}
}
// If this is a master build check the S6 service file perms
// If this is a previous build check the S6 service file perms
stage("Check S6 Service file Permissions"){
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@@ -620,16 +615,13 @@ pipeline {
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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@@ -689,16 +681,13 @@ pipeline {
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 $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@@ -752,14 +741,12 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@@ -780,7 +767,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@@ -803,14 +790,14 @@ pipeline {
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f previous
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
git add package_versions.txt
git commit -m 'Bot Updating Package Versions'
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
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git previous
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process"
else
@@ -828,7 +815,7 @@ pipeline {
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
@@ -842,7 +829,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
@@ -873,7 +860,6 @@ pipeline {
script{
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'
env.CI_TEST_ATTEMPTED = 'true'
}
sh '''#! /bin/bash
set -e
@@ -885,7 +871,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@@ -897,7 +883,7 @@ pipeline {
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \
-e RELEASE_TAG=\"latest\" \
-e RELEASE_TAG=\"previous\" \
-e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \
@@ -909,9 +895,7 @@ pipeline {
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
-t ghcr.io/linuxserver/ci:latest \
python3 test_build.py'''
}
}
@@ -926,9 +910,6 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
env.PUSH_ATTEMPTED = 'true'
}
retry_backoff(5,5) {
sh '''#! /bin/bash
set -e
@@ -940,11 +921,9 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:previous -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
fi
done
'''
@@ -958,45 +937,31 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
script{
env.PUSH_ATTEMPTED = 'true'
}
retry_backoff(5,5) {
sh '''#! /bin/bash
set -e
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
if [[ "${MANIFESTIMAGE%%/*}" =~ \\. ]]; then
MANIFESTIMAGEPLUS="${MANIFESTIMAGE}"
else
MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
fi
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-previous -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-previous -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:previous ${MANIFESTIMAGE}:amd64-previous ${MANIFESTIMAGE}:arm64v8-previous
docker buildx imagetools create -t ${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}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
done
'''
@@ -1006,7 +971,7 @@ pipeline {
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "master"
branch "previous"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@@ -1014,54 +979,36 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to previous",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
jq -n \
--arg tag_name "$META_TAG" \
--arg target_commitish "master" \
--arg ci_url "${CI_URL:-N/A}" \
--arg ls_notes "$AUTO_RELEASE_NOTES" \
--arg remote_notes "$(cat releasebody.json)" \
'{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "previous",\
"name": "'${META_TAG}'",\
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": true}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}
}
// Add protection to the release branch
stage('Github-Release-Branch-Protection') {
when {
branch "master"
branch "previous"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Setting up protection for release branch master"
echo "Setting up protection for release branch previous"
sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/previous/protection \
-d $(jq -c . << EOF
{
"required_status_checks": null,
@@ -1086,13 +1033,98 @@ EOF
) '''
}
}
// If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') {
when {
not {environment name: 'CHANGE_ID', value: ''}
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
# 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
'''
}
}
}
/* ######################
Comment on PR and Send status to Discord
Send status to Discord
###################### */
post {
always {
script {
sh '''#!/bin/bash
rm -rf /config/.ssh/id_sign
rm -rf /config/.ssh/id_sign.pub
git config --global --unset gpg.format
git config --global --unset user.signingkey
git config --global --unset commit.gpgsign
'''
script{
env.JOB_DATE = sh(
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
returnStdout: true).trim()
@@ -1135,94 +1167,6 @@ EOF
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
}
script {
if (env.GITHUBIMAGE =~ /lspipepr/){
if (env.CI_TEST_ATTEMPTED == "true" || env.PUSH_ATTEMPTED == "true"){
sh '''#! /bin/bash
# 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 for commit ${COMMIT_SHA:0:7} : \\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 for commit ${COMMIT_SHA:0:7} : \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
fi
'''
} else {
sh '''#! /bin/bash
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, the build for PR commit ${COMMIT_SHA:0:7} failed and as a result no CI test was attempted and no images were pushed.\\"}"
'''
}
}
}
sh '''#!/bin/bash
rm -rf /config/.ssh/id_sign
rm -rf /config/.ssh/id_sign.pub
git config --global --unset gpg.format
git config --global --unset user.signingkey
git config --global --unset commit.gpgsign
'''
}
cleanup {
sh '''#! /bin/bash
+10 -11
View File
@@ -1,5 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-nextcloud/blob/master/.github/CONTRIBUTING.md -->
<!-- Please read https://github.com/linuxserver/docker-nextcloud/blob/previous/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
@@ -34,8 +34,8 @@ Find us at:
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/nextcloud)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/nextcloud.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/nextcloud)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-nextcloud%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/master/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fnextcloud%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/nextcloud/latest/index.html)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-nextcloud%2Fjob%2Fprevious%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nextcloud/job/previous/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fnextcloud%2Fprevious%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/nextcloud/previous/index.html)
[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are.
@@ -47,7 +47,7 @@ Where are your photos and documents? With Nextcloud you pick a server of your ch
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/nextcloud:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
Simply pulling `lscr.io/linuxserver/nextcloud:previous` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
@@ -135,7 +135,7 @@ If you are using a reverse proxy which validates certificates, you need to [disa
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
@@ -143,7 +143,7 @@ To help you get started creating a container from this image you can either use
---
services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
image: lscr.io/linuxserver/nextcloud:previous
container_name: nextcloud
environment:
- PUID=1000
@@ -169,7 +169,7 @@ docker run -d \
-v /path/to/nextcloud/config:/config \
-v /path/to/data:/data \
--restart unless-stopped \
lscr.io/linuxserver/nextcloud:latest
lscr.io/linuxserver/nextcloud:previous
```
## Parameters
@@ -249,7 +249,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:latest
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:previous
```
## Updating Info
@@ -297,7 +297,7 @@ Below are the instructions for updating containers:
* Update the image:
```bash
docker pull lscr.io/linuxserver/nextcloud:latest
docker pull lscr.io/linuxserver/nextcloud:previous
```
* Stop the running container:
@@ -334,7 +334,7 @@ cd docker-nextcloud
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/nextcloud:latest .
-t lscr.io/linuxserver/nextcloud:previous .
```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
@@ -347,7 +347,6 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **10.07.25:** - Rebase to Alpine 3.22.
* **12.02.25:** - Rebase to Alpine 3.21.
* **09.01.25:** - Fix uploading large files. Existing users should update their nginx confs.
* **09.07.24:** - Add `previous` tag for n-1 releases.
+4 -4
View File
@@ -3,10 +3,10 @@
# jenkins variables
project_name: docker-nextcloud
external_type: na
custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | sort -rV | head -1"
release_type: stable
release_tag: latest
ls_branch: master
custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r \"first(.[] | select(.tag_name | contains($(( $(curl -sX GET https://api.github.com/repos/nextcloud/server/releases | jq -r '.[] | select(.prerelease != true) | .tag_name' | sed 's|^v||g' | awk -F '.' '{print $1}' | sort -rV | head -1) -1 ))|tostring ) and (contains( \\\\\"rc\\\\\" )|not)) | .tag_name)\" | sed 's|^v||g'"
release_type: prerelease
release_tag: previous
ls_branch: previous
repo_vars:
- BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE'
- LS_USER = 'linuxserver'
+456 -540
View File
@@ -1,540 +1,456 @@
NAME VERSION TYPE
Process Wrapper 0.0.0.0 binary (+1 duplicate)
acl-libs 2.3.2-r1 apk
activity 6.0.0-dev.0 npm
agetty 2.41-r9 apk
alpine-baselayout 3.7.0-r0 apk
alpine-baselayout-data 3.7.0-r0 apk
alpine-keys 2.5-r0 apk
alpine-release 3.22.4-r0 apk
alsa-lib 1.2.14-r0 apk
amphp/amp v2.6.5 php-composer
amphp/byte-stream v1.8.2 php-composer
amphp/parallel v1.4.4 php-composer
amphp/parser v1.1.1 php-composer
amphp/process v1.1.9 php-composer
amphp/serialization v1.0.0 php-composer
amphp/sync v1.4.2 php-composer
andrewdalpino/okbloomer 1.0.0 php-composer
anstream 0.6.8 rust-crate
anstyle 1.0.4 rust-crate
anstyle-parse 0.2.3 rust-crate
anstyle-query 1.0.2 rust-crate
anyhow 1.0.79 rust-crate
anyhow 1.0.98 rust-crate
aom-libs 3.12.1-r0 apk
apache2-utils 2.4.67-r0 apk
apk-tools 2.14.9-r3 apk
apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk
arg_enum_proc_macro 0.3.4 rust-crate
argon2-libs 20190702-r5 apk
arrayvec 0.7.4 rust-crate
av-metrics 0.9.1 rust-crate
av1-grain 0.2.3 rust-crate
avahi-libs 0.8-r21 apk
aws/aws-crt-php v1.2.7 php-composer
aws/aws-sdk-php 3.376.2 php-composer
bamarni/composer-bin-plugin 1.8.3 php-composer
bantu/ini-get-wrapper v1.0.1 php-composer
bash 5.2.37-r0 apk
bitflags 2.4.1 rust-crate
bitstream-io 2.2.0 rust-crate
bitstream-io 2.6.0 rust-crate
bitvec 1.0.1 rust-crate
bitvec_helpers 3.1.6 rust-crate
blkid 2.41-r9 apk
brick/math 0.12.1 php-composer
brotli-libs 1.1.0-r2 apk
busybox 1.37.0-r20 apk
busybox-binsh 1.37.0-r20 apk
c-ares 1.34.6-r0 apk
c-client 2007f-r15 apk
ca-certificates 20260413-r0 apk
ca-certificates-bundle 20260413-r0 apk
cairo 1.18.4-r0 apk
catatonit 0.2.1-r0 apk
cfdisk 2.41-r9 apk
cfg-if 1.0.0 rust-crate
christian-riesen/base32 1.6.0 php-composer
cjson 1.7.19-r0 apk
clap 4.4.14 rust-crate
clap_builder 4.4.14 rust-crate
clap_complete 4.4.6 rust-crate
clap_derive 4.4.7 rust-crate
clap_lex 0.6.0 rust-crate
colorchoice 1.0.0 rust-crate
composer 2.10.0 binary
console 0.15.8 rust-crate
coreutils 9.7-r1 apk
coreutils-env 9.7-r1 apk
coreutils-fmt 9.7-r1 apk
coreutils-sha512sum 9.7-r1 apk
crc 3.3.0 rust-crate
crc-catalog 2.4.0 rust-crate
crossbeam 0.8.4 rust-crate
crossbeam-channel 0.5.14 rust-crate
crossbeam-deque 0.8.5 rust-crate
crossbeam-epoch 0.9.18 rust-crate
crossbeam-queue 0.3.11 rust-crate
crossbeam-utils 0.8.19 rust-crate
cups-libs 2.4.18-r0 apk
curl 8.14.1-r2 apk
cweagans/composer-patches 1.7.3 php-composer
dbus-libs 1.16.2-r1 apk
deepdiver/zipstreamer v2.0.3 php-composer
deepdiver1975/tarstreamer v2.1.0 php-composer
dmesg 2.41-r9 apk
doctrine/dbal 3.10.4 php-composer
doctrine/deprecations 1.1.5 php-composer
doctrine/event-manager 2.0.1 php-composer
doctrine/lexer 3.0.1 php-composer
dolby_vision 3.3.1 rust-crate
egulias/email-validator 4.0.4 php-composer
either 1.9.0 rust-crate
errno 0.3.8 rust-crate
fern 0.6.2 rust-crate
ffmpeg 6.1.2-r2 apk
ffmpeg-libavcodec 6.1.2-r2 apk
ffmpeg-libavdevice 6.1.2-r2 apk
ffmpeg-libavfilter 6.1.2-r2 apk
ffmpeg-libavformat 6.1.2-r2 apk
ffmpeg-libavutil 6.1.2-r2 apk
ffmpeg-libpostproc 6.1.2-r2 apk
ffmpeg-libswresample 6.1.2-r2 apk
ffmpeg-libswscale 6.1.2-r2 apk
fftw-double-libs 3.3.10-r6 apk
files_downloadlimit 5.1.0-dev.0 npm
files_pdfviewer 6.0.0-dev.0 npm
findmnt 2.41-r9 apk
findutils 4.10.0-r0 apk
firstrunwizard 6.0.0-dev.0 npm
flock 2.41-r9 apk
fontconfig 2.15.0-r3 apk
freetype 2.13.3-r0 apk
fribidi 1.0.16-r1 apk
fstrim 2.41-r9 apk
funty 2.0.0 rust-crate
fusonic/opengraph v3.0.0 php-composer
gdbm 1.24-r0 apk
gdk-pixbuf 2.42.12-r1 apk
getrandom 0.2.12 rust-crate
ghostscript 10.05.1-r0 apk
giflib 5.2.2-r1 apk
giggsey/libphonenumber-for-php-lite 9.0.9 php-composer
git 2.49.1-r0 apk
git-init-template 2.49.1-r0 apk
glib 2.84.4-r0 apk
glslang-libs 1.4.309.0-r0 apk
gmp 6.3.0-r3 apk
gnu-libiconv 1.17-r2 apk
gnu-libiconv-libs 1.17-r2 apk
gnutls 3.8.13-r0 apk
graphite2 1.3.14-r6 apk
guzzlehttp/guzzle 7.10.0 php-composer
guzzlehttp/promises 2.3.0 php-composer
guzzlehttp/psr7 2.8.0 php-composer
guzzlehttp/uri-template v1.0.4 php-composer
harfbuzz 11.2.1-r0 apk
heck 0.4.1 rust-crate
hexdump 2.41-r9 apk
hexogen/kdtree v0.2.6 php-composer
hwdata-pci 0.395-r0 apk
icewind/searchdav v3.2.0 php-composer
icewind/smb 3.8.1 php-composer
icewind/streams v0.7.8 php-composer
icu-data-en 76.1-r1 apk
icu-libs 76.1-r1 apk
imagemagick 7.1.2.15-r0 apk
imagemagick-heic 7.1.2.15-r0 apk
imagemagick-jpeg 7.1.2.15-r0 apk
imagemagick-jxl 7.1.2.15-r0 apk
imagemagick-libs 7.1.2.15-r0 apk
imagemagick-openexr 7.1.2.15-r0 apk
imagemagick-pango 7.1.2.15-r0 apk
imagemagick-pdf 7.1.2.15-r0 apk
imagemagick-svg 7.1.2.15-r0 apk
imagemagick-tiff 7.1.2.15-r0 apk
imagemagick-webp 7.1.2.15-r0 apk
imath 3.1.12-r0 apk
interpolate_name 0.2.4 rust-crate
itertools 0.10.5 rust-crate
itertools 0.12.0 rust-crate
ivf 0.1.3 rust-crate
jansson 2.14.1-r0 apk
jbig2dec 0.20-r0 apk
joomla/string 3.0.4 php-composer
jq 1.8.1-r0 apk
justinrainbow/json-schema 6.6.4 php-composer
kornrunner/blurhash v1.2.2 php-composer
lab 0.11.0 rust-crate
lame-libs 3.100-r5 apk
laravel/serializable-closure v2.0.4 php-composer
lazy_static 1.4.0 rust-crate
lcms2 2.19-r0 apk
lcobucci/clock 3.0.0 php-composer
ldb 4.21.9-r1 apk
libSvtAv1Enc 2.3.0-r0 apk
libapk2 2.14.9-r3 apk
libarchive 3.8.3-r0 apk
libass 0.17.3-r0 apk
libasyncns 0.8-r4 apk
libattr 2.5.2-r2 apk
libauth-samba 4.21.9-r1 apk
libavif 1.3.0-r0 apk
libblkid 2.41-r9 apk
libbluray 1.3.4-r1 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk
libc 0.2.155 rust-crate
libc 0.2.172 rust-crate
libcap-ng 0.8.5-r0 apk
libcap2 2.78-r0 apk
libcrypto3 3.5.6-r0 apk
libcurl 8.14.1-r2 apk
libdav1d 1.5.1-r0 apk
libde265 1.0.15-r1 apk
libdeflate 1.23-r0 apk
libdovi 3.3.1-r1 apk
libdrm 2.4.124-r0 apk
libeconf 0.6.3-r0 apk
libedit 20250104.3.1-r1 apk
libevent 2.1.12-r8 apk
libexpat 2.7.5-r0 apk
libfdisk 2.41-r9 apk
libffi 3.4.8-r0 apk
libflac 1.4.3-r1 apk
libformw 6.5_p20250503-r0 apk
libgcc 14.2.0-r6 apk
libgomp 14.2.0-r6 apk
libheif 1.19.8-r1 apk
libhwy 1.0.7-r1 apk
libice 1.1.2-r0 apk
libidn2 2.3.7-r0 apk
libintl 0.24.1-r0 apk
libjpeg-turbo 3.1.0-r0 apk
libjxl 0.10.3-r2 apk
libldap 2.6.8-r0 apk
libltdl 2.5.4-r1 apk
libmd 1.1.0-r0 apk
libmemcached-libs 1.1.4-r1 apk
libmount 2.41-r9 apk
libncursesw 6.5_p20250503-r0 apk
libogg 1.3.5-r5 apk
libopenmpt 0.7.15-r0 apk
libpanelw 6.5_p20250503-r0 apk
libpciaccess 0.18.1-r0 apk
libplacebo 6.338.2-r3 apk
libpng 1.6.57-r0 apk
libpq 17.10-r0 apk
libproc2 4.0.4-r3 apk
libpsl 0.21.5-r3 apk
libpulse 17.0-r5 apk
librist 0.2.10-r1 apk
librsvg 2.60.0-r0 apk
libsasl 2.1.28-r8 apk
libsharpyuv 1.5.0-r0 apk
libsm 1.2.5-r0 apk
libsmartcols 2.41-r9 apk
libsmbclient 4.21.9-r1 apk
libsndfile 1.2.2-r2 apk
libsodium 1.0.20-r1 apk
libsrt 1.5.3-r1 apk
libssh 0.11.2-r0 apk
libssl3 3.5.6-r0 apk
libstdc++ 14.2.0-r6 apk
libtasn1 4.21.0-r0 apk
libtheora 1.1.1-r18 apk
libunibreak 6.1-r0 apk
libunistring 1.3-r0 apk
libuuid 2.41-r9 apk
libva 2.22.0-r1 apk
libvdpau 1.5-r4 apk
libvorbis 1.3.7-r2 apk
libvpx 1.15.0-r0 apk
libwbclient 4.21.9-r1 apk
libwebp 1.5.0-r0 apk
libwebpdemux 1.5.0-r0 apk
libwebpmux 1.5.0-r0 apk
libx11 1.8.11-r0 apk
libxau 1.0.12-r0 apk
libxcb 1.17.0-r0 apk
libxdmcp 1.1.5-r1 apk
libxext 1.3.6-r2 apk
libxfixes 6.0.1-r4 apk
libxft 2.3.8-r3 apk
libxml2 2.13.9-r0 apk
libxpm 3.5.19-r0 apk
libxrender 0.9.12-r0 apk
libxt 1.3.1-r0 apk
libxxhash 0.8.3-r0 apk
libyuv 0.0.1887.20251502-r1 apk
libzip 1.11.4-r0 apk
libzmq 4.3.5-r2 apk
lilv-libs 0.24.26-r0 apk
linux-pam 1.7.0-r4 apk
linux-raw-sys 0.4.12 rust-crate
lmdb 0.9.33-r0 apk
log 0.4.20 rust-crate
logger 2.41-r9 apk
logreader 6.0.0 npm
logrotate 3.21.0-r1 apk
losetup 2.41-r9 apk
lsblk 2.41-r9 apk
lscpu 2.41-r9 apk
lz4-libs 1.10.0-r0 apk
marc-mabe/php-enum v4.7.1 php-composer
masterminds/html5 2.9.0 php-composer
maybe-rayon 0.1.1 rust-crate
mbedtls 3.6.6-r0 apk
mcookie 2.41-r9 apk
memchr 2.7.1 rust-crate
mexitek/phpcolors v1.0.4 php-composer
microsoft/azure-storage-blob 1.5.4 php-composer
microsoft/azure-storage-common 1.5.2 php-composer
minimal-lexical 0.2.1 rust-crate
mlocati/ip-lib 1.22.0 php-composer
mount 2.41-r9 apk
mpg123-libs 1.32.10-r0 apk
mtdowling/jmespath.php 2.8.0 php-composer
musl 1.2.5-r12 apk
musl-utils 1.2.5-r12 apk
nano 8.4-r0 apk
ncurses-terminfo-base 6.5_p20250503-r0 apk
nelexa/buffer 1.3.0 php-composer
netcat-openbsd 1.229.1-r0 apk
nettle 3.10.2-r0 apk
new_debug_unreachable 1.0.4 rust-crate
nextcloud 1.0.0 npm
nextcloud/lognormalizer v3.0.1 php-composer
nghttp2-libs 1.69.0-r0 apk
nginx 1.28.3-r2 apk
nom 7.1.3 rust-crate
noop_proc_macro 0.3.0 rust-crate
notifications 6.0.0-dev.0 npm
num-bigint 0.4.4 rust-crate
num-derive 0.4.1 rust-crate
num-integer 0.1.45 rust-crate
num-rational 0.4.1 rust-crate
num-traits 0.2.17 rust-crate
numactl 2.0.18-r0 apk
once_cell 1.19.0 rust-crate
onevpl-libs 2023.3.1-r2 apk
oniguruma 6.9.10-r0 apk
openexr-libiex 3.3.2-r0 apk
openexr-libilmthread 3.3.2-r0 apk
openexr-libopenexr 3.3.2-r0 apk
openexr-libopenexrcore 3.3.2-r0 apk
openjpeg 2.5.3-r0 apk
openssl 3.5.6-r0 apk
opus 1.5.2-r1 apk
orc 0.4.40-r1 apk
p11-kit 0.25.5-r2 apk
pango 1.56.3-r0 apk
paragonie/constant_time_encoding v2.6.3 php-composer
partx 2.41-r9 apk
password_policy 5.0.0-dev.0 npm
paste 1.0.14 rust-crate
pcre2 10.46-r0 apk
pear/archive_tar 1.5.0 php-composer
pear/console_getopt v1.4.3 php-composer
pear/pear-core-minimal v1.10.16 php-composer
pear/pear_exception v1.0.2 php-composer
photos 6.0.0-dev.0 npm
php-http/guzzle7-adapter 1.1.0 php-composer
php-http/httplug 2.4.1 php-composer
php-http/promise 1.3.1 php-composer
php-opencloud/openstack v3.14.0 php-composer
php84 8.4.16-r0 apk
php84-bcmath 8.4.16-r0 apk
php84-bz2 8.4.16-r0 apk
php84-common 8.4.16-r0 apk
php84-ctype 8.4.16-r0 apk
php84-curl 8.4.16-r0 apk
php84-dom 8.4.16-r0 apk
php84-exif 8.4.16-r0 apk
php84-fileinfo 8.4.16-r0 apk
php84-fpm 8.4.16-r0 apk
php84-ftp 8.4.16-r0 apk
php84-gd 8.4.16-r0 apk
php84-gmp 8.4.16-r0 apk
php84-iconv 8.4.16-r0 apk
php84-intl 8.4.16-r0 apk
php84-ldap 8.4.16-r0 apk
php84-mbstring 8.4.16-r0 apk
php84-mysqlnd 8.4.16-r0 apk
php84-opcache 8.4.16-r0 apk
php84-openssl 8.4.16-r0 apk
php84-pcntl 8.4.16-r0 apk
php84-pdo 8.4.16-r0 apk
php84-pdo_mysql 8.4.16-r0 apk
php84-pdo_pgsql 8.4.16-r0 apk
php84-pdo_sqlite 8.4.16-r0 apk
php84-pecl-apcu 5.1.27-r0 apk
php84-pecl-igbinary 3.2.16-r1 apk
php84-pecl-imagick 3.8.0-r1 apk
php84-pecl-imap 1.0.3-r0 apk
php84-pecl-memcached 3.3.0-r0 apk
php84-pecl-msgpack 3.0.0-r0 apk
php84-pecl-redis 6.3.0-r0 apk
php84-pecl-smbclient 1.2.0_pre-r0 apk
php84-pgsql 8.4.16-r0 apk
php84-phar 8.4.16-r0 apk
php84-posix 8.4.16-r0 apk
php84-session 8.4.16-r0 apk
php84-simplexml 8.4.16-r0 apk
php84-sockets 8.4.16-r0 apk
php84-sodium 8.4.16-r0 apk
php84-sqlite3 8.4.16-r0 apk
php84-sysvsem 8.4.16-r0 apk
php84-xml 8.4.16-r0 apk
php84-xmlreader 8.4.16-r0 apk
php84-xmlwriter 8.4.16-r0 apk
php84-zip 8.4.16-r0 apk
phpseclib/phpseclib 2.0.53 php-composer
pimple/pimple v3.6.0 php-composer
pixman 0.46.4-r0 apk
pkgconf 2.4.3-r0 apk
popt 1.19-r4 apk
ppv-lite86 0.2.17 rust-crate
privacy 5.0.0-dev.0 npm
proc-macro2 1.0.76 rust-crate
procps-ng 4.0.4-r3 apk
profiling 1.0.13 rust-crate
profiling-procmacros 1.0.13 rust-crate
psr/cache 3.0.0 php-composer
psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.3 php-composer
psr/http-factory 1.1.0 php-composer
psr/http-message 2.0 php-composer
psr/log 3.0.2 php-composer (+1 duplicate)
punic/punic 3.8.1 php-composer
quote 1.0.35 rust-crate
radium 0.7.0 rust-crate
ralouphie/getallheaders 3.0.3 php-composer
rand 0.8.5 rust-crate
rand_chacha 0.3.1 rust-crate
rand_core 0.6.4 rust-crate
rav1e 0.7.1 rust-crate
rav1e-libs 0.7.1-r2 apk
rayon 1.8.0 rust-crate
rayon-core 1.12.0 rust-crate
readline 8.2.13-r1 apk
recommendations 6.0.0-dev.0 npm
rsync 3.4.3-r0 apk
rubix/ml 2.5.3 php-composer
rubix/tensor 3.0.5 php-composer
rullzer/easytotp v0.1.4 php-composer
runuser 2.41-r9 apk
rustix 0.38.28 rust-crate
sabre/dav 4.7.0 php-composer
sabre/event 5.1.7 php-composer
sabre/http 5.1.12 php-composer
sabre/uri 2.3.4 php-composer
sabre/vobject 4.5.6 php-composer
sabre/xml 2.2.11 php-composer
samba-client 4.21.9-r1 apk
samba-client-libs 4.21.9-r1 apk
samba-common 4.21.9-r1 apk
samba-libs 4.21.9-r1 apk
samba-util-libs 4.21.9-r1 apk
scan_fmt 0.2.6 rust-crate
scanelf 1.3.8-r1 apk
sdl2-compat 2.32.56-r0 apk
sdl3 3.2.16-r0 apk
serd-libs 0.32.4-r0 apk
setarch 2.41-r9 apk
setpriv 2.41-r9 apk
sfdisk 2.41-r9 apk
shaderc 2024.4-r0 apk
shadow 4.17.3-r0 apk
shared-mime-info 2.4-r6 apk
signal-hook 0.3.17 rust-crate
signal-hook-registry 1.4.1 rust-crate
simd_helpers 0.1.0 rust-crate
skalibs-libs 2.14.4.0-r0 apk
sord-libs 0.16.18-r0 apk
soxr 0.1.3-r7 apk
speexdsp 1.2.1-r2 apk
spirv-tools 1.4.313.0-r0 apk
spomky-labs/cbor-php 3.0.4 php-composer
spomky-labs/pki-framework 1.2.1 php-composer
sqlite-libs 3.49.2-r1 apk
sratom 0.6.18-r0 apk
ssl_client 1.37.0-r20 apk
stecman/symfony-console-completion v0.14.0 php-composer
sudo 1.9.17_p2-r0 apk
support 5.0.0-dev.0 npm
symfony/console v6.4.32 php-composer
symfony/css-selector v6.4.24 php-composer
symfony/deprecation-contracts v3.6.0 php-composer (+1 duplicate)
symfony/dom-crawler v6.4.32 php-composer
symfony/event-dispatcher v6.4.32 php-composer
symfony/event-dispatcher-contracts v3.5.1 php-composer
symfony/filesystem v7.4.0 php-composer
symfony/http-foundation v6.4.33 php-composer
symfony/mailer v6.4.31 php-composer
symfony/mime v6.4.32 php-composer
symfony/polyfill-intl-grapheme v1.32.0 php-composer
symfony/polyfill-intl-idn v1.32.0 php-composer
symfony/polyfill-intl-normalizer v1.33.0 php-composer
symfony/polyfill-mbstring v1.31.0 php-composer
symfony/polyfill-php80 v1.31.0 php-composer
symfony/polyfill-php82 v1.31.0 php-composer
symfony/polyfill-php83 v1.31.0 php-composer
symfony/polyfill-php83 v1.33.0 php-composer
symfony/polyfill-php84 v1.33.0 php-composer (+1 duplicate)
symfony/polyfill-php85 v1.33.0 php-composer
symfony/polyfill-uuid v1.29.0 php-composer
symfony/process v6.4.33 php-composer
symfony/routing v6.4.32 php-composer
symfony/service-contracts v3.5.1 php-composer
symfony/string v6.4.30 php-composer
symfony/translation v6.4.32 php-composer
symfony/translation-contracts v3.4.3 php-composer
symfony/uid v6.4.32 php-composer
syn 2.0.48 rust-crate
talloc 2.4.2-r1 apk
tap 1.0.1 rust-crate
tdb-libs 1.4.12-r0 apk
teams 33.0.0-dev.0 npm
terminal_size 0.3.0 rust-crate
tevent 0.16.1-r0 apk
text 7.0.0-dev.1 npm
thiserror 1.0.56 rust-crate
thiserror-impl 1.0.56 rust-crate
tiff 4.7.1-r0 apk
tinyvec 1.9.0 rust-crate
tzdata 2026b-r0 apk
umount 2.41-r9 apk
unicode-ident 1.0.12 rust-crate
unicode-width 0.1.11 rust-crate
utf8parse 0.2.1 rust-crate
util-linux 2.41-r9 apk
util-linux-misc 2.41-r9 apk
utmps-libs 0.1.3.1-r0 apk
uuidgen 2.41-r9 apk
v4l-utils-libs 1.28.1-r1 apk
v_frame 0.3.7 rust-crate
vidstab 1.1.1-r0 apk
viewer 6.0.0-dev.0 npm
vulkan-loader 1.4.313.0-r0 apk
wamania/php-stemmer v4.0.0 php-composer
wapmorgan/mp3info 0.1.1 php-composer
wayland-libs-client 1.23.1-r3 apk
web-auth/cose-lib 4.3.0 php-composer
web-auth/webauthn-lib 4.9.1 php-composer
wipefs 2.41-r9 apk
woltlab/webp-exif v0.1.2 php-composer
wyz 0.5.1 rust-crate
x264-libs 0.164.3108-r0 apk
x265-libs 3.6-r0 apk
xvidcore 1.3.7-r2 apk
xz-libs 5.8.3-r0 apk
y4m 0.8.0 rust-crate
zimg 3.0.5-r3 apk
zix-libs 0.6.2-r0 apk
zlib 1.3.2-r0 apk
zstd-libs 1.5.7-r0 apk
NAME VERSION TYPE
Process Wrapper 0.0.0.0 binary (+1 duplicate)
acl-libs 2.3.2-r1 apk
activity 3.0.0 npm
agetty 2.40.4-r1 apk
alpine-baselayout 3.6.8-r1 apk
alpine-baselayout-data 3.6.8-r1 apk
alpine-keys 2.5-r0 apk
alpine-release 3.21.4-r0 apk
alsa-lib 1.2.12-r0 apk
amphp/amp v2.6.4 php-composer
amphp/byte-stream v1.8.1 php-composer
amphp/parallel v1.4.3 php-composer
amphp/parser v1.1.0 php-composer
amphp/process v1.1.4 php-composer
amphp/serialization v1.0.0 php-composer
amphp/sync v1.4.2 php-composer
aom-libs 3.11.0-r0 apk
apache2-utils 2.4.65-r0 apk
apk-tools 2.14.6-r3 apk
app_api 1.0.0 npm
apr 1.7.5-r0 apk
apr-util 1.6.3-r1 apk
argon2-libs 20190702-r5 apk
avahi-libs 0.8-r19 apk
aws/aws-crt-php v1.2.5 php-composer
aws/aws-sdk-php 3.311.2 php-composer
bamarni/composer-bin-plugin 1.8.2 php-composer
bantu/ini-get-wrapper v1.0.1 php-composer
bash 5.2.37-r0 apk
blkid 2.40.4-r1 apk
brick/math 0.12.1 php-composer
brotli-libs 1.1.0-r2 apk
bruteforcesettings 3.0.0 npm
busybox 1.37.0-r13 apk
busybox-binsh 1.37.0-r13 apk
c-ares 1.34.5-r0 apk
c-client 2007f-r15 apk
ca-certificates 20250619-r0 apk
ca-certificates-bundle 20250619-r0 apk
cairo 1.18.4-r0 apk
catatonit 0.2.0-r0 apk
cfdisk 2.40.4-r1 apk
christian-riesen/base32 1.6.0 php-composer
cjson 1.7.18-r0 apk
composer 2.8.11 binary
coreutils 9.5-r2 apk
coreutils-env 9.5-r2 apk
coreutils-fmt 9.5-r2 apk
coreutils-sha512sum 9.5-r2 apk
cups-libs 2.4.11-r0 apk
curl 8.12.1-r1 apk
cweagans/composer-patches 1.7.3 php-composer
dbus-libs 1.14.10-r4 apk
deepdiver/zipstreamer v2.0.3 php-composer
deepdiver1975/tarstreamer v2.1.0 php-composer
dmesg 2.40.4-r1 apk
doctrine/cache 2.2.0 php-composer
doctrine/dbal 3.9.4 php-composer
doctrine/deprecations 1.1.4 php-composer
doctrine/event-manager 2.0.1 php-composer
doctrine/lexer 3.0.1 php-composer
egulias/email-validator 4.0.3 php-composer
ffmpeg 6.1.2-r1 apk
ffmpeg-libavcodec 6.1.2-r1 apk
ffmpeg-libavdevice 6.1.2-r1 apk
ffmpeg-libavfilter 6.1.2-r1 apk
ffmpeg-libavformat 6.1.2-r1 apk
ffmpeg-libavutil 6.1.2-r1 apk
ffmpeg-libpostproc 6.1.2-r1 apk
ffmpeg-libswresample 6.1.2-r1 apk
ffmpeg-libswscale 6.1.2-r1 apk
fftw-double-libs 3.3.10-r6 apk
files_downloadlimit 3.0.0 npm
files_pdfviewer 3.0.0 npm
findmnt 2.40.4-r1 apk
findutils 4.10.0-r0 apk
firstrunwizard 3.0.0 npm
flock 2.40.4-r1 apk
fontconfig 2.15.0-r1 apk
freetype 2.13.3-r0 apk
fribidi 1.0.16-r0 apk
fstrim 2.40.4-r1 apk
fusonic/opengraph v2.3.0 php-composer
gdbm 1.24-r0 apk
gdk-pixbuf 2.42.12-r1 apk
ghostscript 10.05.1-r0 apk
giflib 5.2.2-r1 apk
giggsey/libphonenumber-for-php-lite 8.13.45 php-composer
git 2.47.3-r0 apk
git-init-template 2.47.3-r0 apk
glib 2.82.5-r0 apk
glslang-libs 1.3.296.0-r0 apk
gmp 6.3.0-r2 apk
gnu-libiconv 1.17-r2 apk
gnu-libiconv-libs 1.17-r2 apk
gnutls 3.8.8-r0 apk
graphite2 1.3.14-r6 apk
guzzlehttp/guzzle 7.8.2 php-composer
guzzlehttp/promises 2.0.4 php-composer
guzzlehttp/psr7 2.7.0 php-composer
guzzlehttp/uri-template v1.0.3 php-composer
harfbuzz 9.0.0-r1 apk
hexdump 2.40.4-r1 apk
hexogen/kdtree v0.2.6 php-composer
hwdata-pci 0.393-r0 apk
icewind/searchdav v3.1.0 php-composer
icewind/smb v3.7.0 php-composer
icewind/streams v0.7.7 php-composer
icewind/streams v0.7.8 php-composer
icu-data-en 74.2-r1 apk
icu-libs 74.2-r1 apk
imagemagick 7.1.1.41-r0 apk
imagemagick-heic 7.1.1.41-r0 apk
imagemagick-jpeg 7.1.1.41-r0 apk
imagemagick-jxl 7.1.1.41-r0 apk
imagemagick-libs 7.1.1.41-r0 apk
imagemagick-pango 7.1.1.41-r0 apk
imagemagick-pdf 7.1.1.41-r0 apk
imagemagick-svg 7.1.1.41-r0 apk
imagemagick-tiff 7.1.1.41-r0 apk
imagemagick-webp 7.1.1.41-r0 apk
imath 3.1.12-r0 apk
jansson 2.14-r4 apk
jbig2dec 0.20-r0 apk
jq 1.7.1-r0 apk
justinrainbow/json-schema v5.2.13 php-composer
kornrunner/blurhash v1.2.2 php-composer
lame-libs 3.100-r5 apk
laravel/serializable-closure v1.3.7 php-composer
lcms2 2.16-r0 apk
lcobucci/clock 3.0.0 php-composer
ldb 2.9.2-r0 apk
league/flysystem 2.5.0 php-composer
league/mime-type-detection 1.11.0 php-composer
libSvtAv1Enc 2.2.1-r0 apk
libarchive 3.8.1-r0 apk
libass 0.17.3-r0 apk
libasyncns 0.8-r4 apk
libattr 2.5.2-r2 apk
libauth-samba 4.20.6-r1 apk
libavif 1.0.4-r0 apk
libblkid 2.40.4-r1 apk
libbluray 1.3.4-r1 apk
libbsd 0.12.2-r0 apk
libbz2 1.0.8-r6 apk
libcap-ng 0.8.5-r0 apk
libcap2 2.71-r0 apk
libcrypto3 3.3.4-r0 apk
libcurl 8.12.1-r1 apk
libdav1d 1.5.0-r0 apk
libde265 1.0.15-r0 apk
libdeflate 1.22-r0 apk
libdovi 3.3.1-r0 apk
libdrm 2.4.123-r1 apk
libeconf 0.6.3-r0 apk
libedit 20240808.3.1-r0 apk
libevent 2.1.12-r7 apk
libexpat 2.7.0-r0 apk
libfdisk 2.40.4-r1 apk
libffi 3.4.7-r0 apk
libflac 1.4.3-r1 apk
libformw 6.5_p20241006-r3 apk
libgcc 14.2.0-r4 apk
libgomp 14.2.0-r4 apk
libheif 1.19.5-r0 apk
libhwy 1.0.7-r0 apk
libice 1.1.1-r6 apk
libidn2 2.3.7-r0 apk
libintl 0.22.5-r0 apk
libjpeg-turbo 3.0.4-r0 apk
libjxl 0.10.4-r0 apk
liblastlog2 2.40.4-r1 apk
libldap 2.6.8-r0 apk
libltdl 2.4.7-r3 apk
libmcrypt 2.5.8-r10 apk
libmd 1.1.0-r0 apk
libmemcached-libs 1.1.4-r1 apk
libmount 2.40.4-r1 apk
libncursesw 6.5_p20241006-r3 apk
libogg 1.3.5-r5 apk
libopenmpt 0.7.12-r0 apk
libpanelw 6.5_p20241006-r3 apk
libpciaccess 0.18.1-r0 apk
libplacebo 6.338.2-r3 apk
libpng 1.6.47-r0 apk
libpq 17.6-r0 apk
libproc2 4.0.4-r2 apk
libpsl 0.21.5-r3 apk
libpulse 17.0-r4 apk
librist 0.2.10-r1 apk
librsvg 2.59.2-r0 apk
libsasl 2.1.28-r8 apk
libsharpyuv 1.4.0-r0 apk
libsm 1.2.4-r4 apk
libsmartcols 2.40.4-r1 apk
libsmbclient 4.20.6-r1 apk
libsndfile 1.2.2-r2 apk
libsodium 1.0.20-r0 apk
libsrt 1.5.3-r0 apk
libssh 0.11.1-r0 apk
libssl3 3.3.4-r0 apk
libstdc++ 14.2.0-r4 apk
libtasn1 4.20.0-r0 apk
libtheora 1.1.1-r18 apk
libunibreak 6.1-r0 apk
libunistring 1.2-r0 apk
libuuid 2.40.4-r1 apk
libva 2.22.0-r1 apk
libvdpau 1.5-r4 apk
libvorbis 1.3.7-r2 apk
libvpx 1.15.0-r0 apk
libwbclient 4.20.6-r1 apk
libwebp 1.4.0-r0 apk
libwebpdemux 1.4.0-r0 apk
libwebpmux 1.4.0-r0 apk
libx11 1.8.10-r0 apk
libxau 1.0.11-r4 apk
libxcb 1.16.1-r0 apk
libxdmcp 1.1.5-r1 apk
libxext 1.3.6-r2 apk
libxfixes 6.0.1-r4 apk
libxft 2.3.8-r3 apk
libxml2 2.13.4-r6 apk
libxpm 3.5.17-r0 apk
libxrender 0.9.11-r5 apk
libxt 1.3.1-r0 apk
libxxhash 0.8.2-r2 apk
libzip 1.11.2-r0 apk
libzmq 4.3.5-r2 apk
lilv-libs 0.24.24-r1 apk
linux-pam 1.6.1-r1 apk
lmdb 0.9.33-r0 apk
logger 2.40.4-r1 apk
logreader 3.0.0 npm
logrotate 3.21.0-r1 apk
losetup 2.40.4-r1 apk
lsblk 2.40.4-r1 apk
lscpu 2.40.4-r1 apk
lz4-libs 1.10.0-r0 apk
masterminds/html5 2.9.0 php-composer
mbedtls 3.6.4-r0 apk
mcookie 2.40.4-r1 apk
mexitek/phpcolors v1.0.4 php-composer
microsoft/azure-storage-blob 1.5.4 php-composer
microsoft/azure-storage-common 1.5.2 php-composer
mlocati/ip-lib 1.18.1 php-composer
mount 2.40.4-r1 apk
mpg123-libs 1.32.9-r0 apk
mtdowling/jmespath.php 2.7.0 php-composer
musl 1.2.5-r9 apk
musl-utils 1.2.5-r9 apk
nano 8.2-r0 apk
ncurses-terminfo-base 6.5_p20241006-r3 apk
netcat-openbsd 1.226.1.1-r0 apk
nettle 3.10-r1 apk
nextcloud 1.0.0 npm
nextcloud/coding-standard v1.2.1 php-composer
nextcloud/lognormalizer v1.0.0 php-composer
nghttp2-libs 1.64.0-r0 apk
nginx 1.26.3-r0 apk
notifications 3.0.0 npm
numactl 2.0.18-r0 apk
onevpl-libs 2023.3.1-r2 apk
oniguruma 6.9.9-r0 apk
openexr-libiex 3.3.2-r0 apk
openexr-libilmthread 3.3.2-r0 apk
openexr-libopenexr 3.3.2-r0 apk
openexr-libopenexrcore 3.3.2-r0 apk
openjpeg 2.5.2-r0 apk
openssl 3.3.4-r0 apk
opus 1.5.2-r1 apk
orc 0.4.40-r1 apk
p11-kit 0.25.5-r2 apk
pango 1.54.0-r1 apk
paragonie/constant_time_encoding v2.7.0 php-composer
partx 2.40.4-r1 apk
password_policy 2.0.0 npm
pcre 8.45-r3 apk
pcre2 10.43-r0 apk
pear/archive_tar 1.5.0 php-composer
pear/console_getopt v1.4.3 php-composer
pear/pear-core-minimal v1.10.16 php-composer
pear/pear_exception v1.0.2 php-composer
photos 3.0.0 npm
php-cs-fixer/shim v3.61.1 php-composer
php-http/guzzle7-adapter 1.0.0 php-composer
php-http/httplug 2.2.0 php-composer
php-http/promise 1.1.0 php-composer
php-opencloud/openstack v3.10.0 php-composer
php83 8.3.19-r0 apk
php83-bcmath 8.3.19-r0 apk
php83-bz2 8.3.19-r0 apk
php83-common 8.3.19-r0 apk
php83-ctype 8.3.19-r0 apk
php83-curl 8.3.19-r0 apk
php83-dom 8.3.19-r0 apk
php83-exif 8.3.19-r0 apk
php83-fileinfo 8.3.19-r0 apk
php83-fpm 8.3.19-r0 apk
php83-ftp 8.3.19-r0 apk
php83-gd 8.3.19-r0 apk
php83-gmp 8.3.19-r0 apk
php83-iconv 8.3.19-r0 apk
php83-imap 8.3.19-r0 apk
php83-intl 8.3.19-r0 apk
php83-ldap 8.3.19-r0 apk
php83-mbstring 8.3.19-r0 apk
php83-mysqlnd 8.3.19-r0 apk
php83-opcache 8.3.19-r0 apk
php83-openssl 8.3.19-r0 apk
php83-pcntl 8.3.19-r0 apk
php83-pdo 8.3.19-r0 apk
php83-pdo_mysql 8.3.19-r0 apk
php83-pdo_pgsql 8.3.19-r0 apk
php83-pdo_sqlite 8.3.19-r0 apk
php83-pecl-apcu 5.1.24-r0 apk
php83-pecl-igbinary 3.2.16-r0 apk
php83-pecl-imagick 3.8.0_rc2-r0 apk
php83-pecl-mcrypt 1.0.7-r0 apk
php83-pecl-memcached 3.3.0-r0 apk
php83-pecl-msgpack 3.0.0-r0 apk
php83-pecl-redis 6.2.0-r0 apk
php83-pecl-smbclient 1.1.2-r0 apk
php83-pgsql 8.3.19-r0 apk
php83-phar 8.3.19-r0 apk
php83-posix 8.3.19-r0 apk
php83-session 8.3.19-r0 apk
php83-simplexml 8.3.19-r0 apk
php83-sockets 8.3.19-r0 apk
php83-sodium 8.3.19-r0 apk
php83-sqlite3 8.3.19-r0 apk
php83-sysvsem 8.3.19-r0 apk
php83-xml 8.3.19-r0 apk
php83-xmlreader 8.3.19-r0 apk
php83-xmlwriter 8.3.19-r0 apk
php83-zip 8.3.19-r0 apk
phpseclib/phpseclib 2.0.48 php-composer
pimple/pimple v3.5.0 php-composer
pixman 0.43.4-r1 apk
pkgconf 2.3.0-r0 apk
popt 1.19-r4 apk
privacy 2.0.0 npm
procps-ng 4.0.4-r2 apk
psr/cache 3.0.0 php-composer
psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.3 php-composer
psr/http-factory 1.1.0 php-composer
psr/http-message 1.1 php-composer
psr/log 1.1.4 php-composer
psr/log 2.0.0 php-composer
punic/punic 3.8.1 php-composer
ralouphie/getallheaders 3.0.3 php-composer
rav1e-libs 0.7.1-r0 apk
readline 8.2.13-r0 apk
recommendations 3.0.0 npm
related_resources 1.5.0 npm
rsync 3.4.0-r0 apk
rubix/ml dev-chore/bump-flysystem-v2.1.1 php-composer
rubix/tensor 2.2.3 php-composer
rullzer/easytotp v0.1.4 php-composer
runuser 2.40.4-r1 apk
sabre/dav 4.6.0 php-composer
sabre/event 5.1.4 php-composer
sabre/http 5.1.10 php-composer
sabre/uri 2.3.3 php-composer
sabre/vobject 4.5.4 php-composer
sabre/xml 2.2.7 php-composer
samba-client 4.20.6-r1 apk
samba-client-libs 4.20.6-r1 apk
samba-common 4.20.6-r1 apk
samba-libs 4.20.6-r1 apk
samba-util-libs 4.20.6-r1 apk
scanelf 1.3.8-r1 apk
scssphp/scssphp v1.12.1 php-composer
sdl2 2.30.9-r0 apk
serd-libs 0.32.2-r0 apk
setarch 2.40.4-r1 apk
setpriv 2.40.4-r1 apk
sfdisk 2.40.4-r1 apk
shaderc 2024.0-r2 apk
shadow 4.16.0-r1 apk
shared-mime-info 2.4-r2 apk
skalibs-libs 2.14.3.0-r0 apk
sord-libs 0.16.16-r0 apk
soxr 0.1.3-r7 apk
speexdsp 1.2.1-r2 apk
spirv-tools 1.3.296.0-r0 apk
spomky-labs/cbor-php 3.1.0 php-composer
spomky-labs/pki-framework 1.2.1 php-composer
sqlite-libs 3.48.0-r4 apk
sratom 0.6.16-r0 apk
ssl_client 1.37.0-r13 apk
stecman/symfony-console-completion v0.13.0 php-composer
sudo 1.9.17_p1-r0 apk
support 2.0.0 npm
suspicious_login 8.0.0 npm
symfony/console v6.4.17 php-composer
symfony/css-selector v6.4.3 php-composer
symfony/deprecation-contracts v3.5.1 php-composer
symfony/dom-crawler v6.4.4 php-composer
symfony/event-dispatcher v6.4.13 php-composer
symfony/event-dispatcher-contracts v3.5.1 php-composer
symfony/http-foundation v6.4.18 php-composer
symfony/mailer v6.4.18 php-composer
symfony/mime v6.4.18 php-composer
symfony/polyfill-ctype v1.31.0 php-composer
symfony/polyfill-intl-grapheme v1.31.0 php-composer
symfony/polyfill-intl-idn v1.31.0 php-composer
symfony/polyfill-intl-normalizer v1.31.0 php-composer
symfony/polyfill-mbstring v1.27.0 php-composer
symfony/polyfill-mbstring v1.31.0 php-composer
symfony/polyfill-php73 v1.26.0 php-composer
symfony/polyfill-php80 v1.27.0 php-composer
symfony/polyfill-php80 v1.31.0 php-composer
symfony/polyfill-php83 v1.31.0 php-composer
symfony/polyfill-uuid v1.31.0 php-composer
symfony/process v6.4.15 php-composer
symfony/routing v6.4.18 php-composer
symfony/service-contracts v3.5.1 php-composer
symfony/string v6.4.15 php-composer
symfony/translation v6.4.13 php-composer
symfony/translation-contracts v3.5.1 php-composer
symfony/uid v6.4.12 php-composer
talloc 2.4.2-r1 apk
tdb-libs 1.4.12-r0 apk
tevent 0.16.1-r0 apk
text 4.0.0 npm
tiff 4.7.0-r0 apk
twofactor_nextcloud_notification 4.0.0 npm
twofactor_totp 12.0.0-dev npm
tzdata 2025b-r0 apk
umount 2.40.4-r1 apk
util-linux 2.40.4-r1 apk
util-linux-misc 2.40.4-r1 apk
utmps-libs 0.1.2.3-r2 apk
uuidgen 2.40.4-r1 apk
v4l-utils-libs 1.28.1-r1 apk
vidstab 1.1.1-r0 apk
viewer 3.0.0 npm
vulkan-loader 1.3.296.0-r0 apk
wapmorgan/mp3info 0.1.0 php-composer
wayland-libs-client 1.23.1-r0 apk
web-auth/cose-lib 4.4.0 php-composer
web-auth/webauthn-lib 4.9.1 php-composer
wipefs 2.40.4-r1 apk
x264-libs 0.164.3108-r0 apk
x265-libs 3.6-r0 apk
xvidcore 1.3.7-r2 apk
xz-libs 5.6.3-r1 apk
zimg 3.0.5-r2 apk
zix-libs 0.4.2-r0 apk
zlib 1.3.1-r2 apk
zstd-libs 1.5.6-r2 apk
+3 -5
View File
@@ -9,7 +9,6 @@ project_blurb: |
Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Cloud,Documents"
# supported architectures
available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
@@ -93,7 +92,7 @@ app_setup_block: |
Afterwards, you can set `"path" => OC::$SERVERROOT . "/your_custom_apps_folder",` in your `config.php` file, per the [official documentation](https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html#using-custom-app-directories).
# init diagram
init_diagram: |
"nextcloud:latest": {
"nextcloud:previous": {
docker-mods
base {
fix-attr +\nlegacy cont-init
@@ -140,12 +139,11 @@ init_diagram: |
svc-php-fpm -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.22" <- "baseimage-alpine:3.22"
"baseimage-alpine-nginx:3.21" <- "baseimage-alpine:3.21"
}
"nextcloud:latest" <- Base Images
"nextcloud:previous" <- Base Images
# changelog
changelogs:
- {date: "10.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "12.02.25:", desc: "Rebase to Alpine 3.21."}
- {date: "09.01.25:", desc: "Fix uploading large files. Existing users should update their nginx confs."}
- {date: "09.07.24:", desc: "Add `previous` tag for n-1 releases."}
@@ -1,4 +1,4 @@
## Version 2025/07/10 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample
## Version 2024/07/16 - Changelog: https://github.com/linuxserver/docker-nextcloud/commits/master/root/defaults/nginx/site-confs/default.conf.sample
# Set the `immutable` cache control options only for assets with a cache busting `v` argument
map $arg_v $asset_immutable {
@@ -11,8 +11,6 @@ server {
listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
listen 443 quic reuseport default_server;
listen [::]:443 quic reuseport default_server;
server_name _;