mirror of
https://github.com/linuxserver/docker-sonarr.git
synced 2025-04-23 21:57:27 -04:00
Compare commits
40 commits
4.0.9.2244
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
e30db93714 | ||
|
4159257291 | ||
|
df12a32b65 | ||
|
48998cdd8c | ||
|
68b3586774 | ||
|
36cb88f8c0 | ||
|
49ac7ced52 | ||
|
5b47125951 | ||
|
644007fc26 | ||
|
c054b83d33 | ||
|
9447093418 | ||
|
9545741dca | ||
|
99017fd256 | ||
|
941c4a9597 | ||
|
f19f25d8ad | ||
|
5b5d722b3f | ||
|
d8ea320f78 | ||
|
52ed4dfc42 | ||
|
3917620d9b | ||
|
b0ad5dc62f | ||
|
418c317be1 | ||
|
af7da33642 | ||
|
67b0b9647c | ||
|
e772abf9d2 | ||
|
95d17bcf63 | ||
|
df0fa0d56f | ||
|
edbd175790 | ||
|
578781252d | ||
|
be4dd4bc91 | ||
|
e8c62f5014 | ||
|
b43e90d13e | ||
|
c8d7639144 | ||
|
a5dda9b7f2 | ||
|
a0b1e8a3ec | ||
|
5f634a338c | ||
|
58753f5895 | ||
|
368f3b7c59 | ||
|
865b798f87 | ||
|
57ba4473eb | ||
|
07b1804804 |
13 changed files with 582 additions and 606 deletions
6
.github/CONTRIBUTING.md
vendored
6
.github/CONTRIBUTING.md
vendored
|
@ -6,7 +6,7 @@
|
|||
* Read, and fill the Pull Request template
|
||||
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
||||
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
|
||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
|
||||
|
||||
## Common files
|
||||
|
||||
|
@ -105,10 +105,10 @@ docker build \
|
|||
-t linuxserver/sonarr:latest .
|
||||
```
|
||||
|
||||
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
|
||||
|
||||
```bash
|
||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
|
||||
```
|
||||
|
||||
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
|
||||
|
|
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
|
@ -1,7 +1,7 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discord chat support
|
||||
url: https://discord.gg/YWrKVTn
|
||||
url: https://linuxserver.io/discord
|
||||
about: Realtime support / chat with the community and the team.
|
||||
|
||||
- name: Discourse discussion forum
|
||||
|
|
47
.github/workflows/external_trigger.yml
vendored
47
.github/workflows/external_trigger.yml
vendored
|
@ -15,7 +15,10 @@ jobs:
|
|||
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
|
||||
run: |
|
||||
printf "# External trigger for docker-sonarr\n\n" >> $GITHUB_STEP_SUMMARY
|
||||
if grep -wq "^sonarr_master$" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
if grep -q "^sonarr_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`sonarr_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
|
||||
elif grep -q "^sonarr_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`sonarr_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
exit 0
|
||||
|
@ -25,6 +28,11 @@ jobs:
|
|||
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
|
||||
EXT_RELEASE=$(curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel=="v4-stable") | .version')
|
||||
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
|
||||
if grep -q "^sonarr_master_${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
|
||||
fi
|
||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
|
||||
|
@ -43,16 +51,35 @@ jobs:
|
|||
token=$(curl -sX GET \
|
||||
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fsonarr%3Apull" \
|
||||
| jq -r '.token')
|
||||
multidigest=$(curl -s \
|
||||
multidigest=$(curl -s \
|
||||
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
||||
--header "Accept: application/vnd.oci.image.index.v1+json" \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/manifests/${tag}")
|
||||
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
|
||||
# If there's a layer element it's a single-arch manifest so just get that digest
|
||||
digest=$(jq -r '.config.digest' <<< "${multidigest}")
|
||||
else
|
||||
# Otherwise it's multi-arch or has manifest annotations
|
||||
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
|
||||
# Check for manifest annotations and delete if found
|
||||
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
|
||||
fi
|
||||
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
|
||||
# If there's still more than one digest, it's multi-arch
|
||||
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
|
||||
else
|
||||
# Otherwise it's single arch
|
||||
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
|
||||
fi
|
||||
if digest=$(curl -s \
|
||||
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
||||
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/manifests/${tag}" \
|
||||
| jq -r 'first(.manifests[].digest)')
|
||||
digest=$(curl -s \
|
||||
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
|
||||
| jq -r '.config.digest')
|
||||
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
|
||||
digest=$(jq -r '.config.digest' <<< "${digest}");
|
||||
fi
|
||||
fi
|
||||
image_info=$(curl -sL \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/${image}/blobs/${digest}")
|
||||
|
@ -90,7 +117,7 @@ jobs:
|
|||
else
|
||||
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
|
||||
echo "New version \`${EXT_RELEASE}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
|
||||
if "${artifacts_found}" == "true" ]]; then
|
||||
if [[ "${artifacts_found}" == "true" ]]; then
|
||||
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
response=$(curl -iX POST \
|
||||
|
|
34
.github/workflows/package_trigger_scheduler.yml
vendored
34
.github/workflows/package_trigger_scheduler.yml
vendored
|
@ -27,17 +27,26 @@ jobs:
|
|||
fi
|
||||
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
|
||||
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/jenkins-vars.yml)
|
||||
if [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/Jenkinsfile >/dev/null 2>&1; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
|
||||
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
|
||||
if [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
|
||||
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/readme-vars.yml)
|
||||
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif grep -wq "^sonarr_${br}$" <<< "${SKIP_PACKAGE_TRIGGER}"; then
|
||||
elif grep -q "^sonarr_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`sonarr_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/${br}/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
|
||||
skipped_branches="${skipped_branches}${br} "
|
||||
|
@ -49,6 +58,11 @@ jobs:
|
|||
response=$(curl -iX POST \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||
if [[ -z "${response}" ]]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Jenkins build could not be triggered. Skipping branch."
|
||||
continue
|
||||
fi
|
||||
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
|
||||
sleep 10
|
||||
|
@ -56,11 +70,14 @@ jobs:
|
|||
buildurl="${buildurl%$'\r'}"
|
||||
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
|
||||
curl -iX POST \
|
||||
if ! curl -ifX POST \
|
||||
"${buildurl}submitDescription" \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
||||
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||
--data-urlencode "Submit=Submit"
|
||||
--data-urlencode "Submit=Submit"; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Unable to change the Jenkins job description."
|
||||
fi
|
||||
sleep 20
|
||||
fi
|
||||
else
|
||||
|
@ -70,13 +87,14 @@ jobs:
|
|||
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
|
||||
if [[ -n "${triggered_branches}" ]]; then
|
||||
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
|
||||
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-sonarr/activity/ \n"
|
||||
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||
fi
|
||||
if [[ -n "${skipped_branches}" ]]; then
|
||||
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
|
||||
fi
|
||||
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||
echo "**** Notifying Discord ****"
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||
"description": "**Package Check Build(s) Triggered for sonarr** \n'"${NOTIFY_BRANCHES}"'**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-sonarr/activity/"' \n"}],
|
||||
"description": "**Package Check Build(s) for sonarr** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
fi
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.20
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:3.21
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.20
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.21
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
|
315
Jenkinsfile
vendored
315
Jenkinsfile
vendored
|
@ -8,7 +8,7 @@ pipeline {
|
|||
}
|
||||
// Input to determine if this is a package check
|
||||
parameters {
|
||||
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
|
||||
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
|
||||
}
|
||||
// Configuration for the variables used for this specific repo
|
||||
environment {
|
||||
|
@ -32,7 +32,7 @@ pipeline {
|
|||
CI_WEB='true'
|
||||
CI_PORT='8989'
|
||||
CI_SSL='false'
|
||||
CI_DELAY='120'
|
||||
CI_DELAY='240'
|
||||
CI_DOCKERENV=''
|
||||
CI_AUTH=''
|
||||
CI_WEBPATH='/system/status'
|
||||
|
@ -56,11 +56,23 @@ pipeline {
|
|||
steps{
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
sh '''#! /bin/bash
|
||||
containers=$(docker ps -aq)
|
||||
echo "Pruning builder"
|
||||
docker builder prune -f --builder container || :
|
||||
containers=$(docker ps -q)
|
||||
if [[ -n "${containers}" ]]; then
|
||||
docker stop ${containers}
|
||||
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
|
||||
for container in ${containers}; do
|
||||
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
|
||||
echo "skipping buildx container in docker stop"
|
||||
else
|
||||
echo "Stopping container ${container}"
|
||||
docker stop ${container}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
docker system prune -af --volumes || : '''
|
||||
docker system prune -f --volumes || :
|
||||
docker image prune -af || :
|
||||
'''
|
||||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
env.LS_RELEASE = sh(
|
||||
|
@ -191,6 +203,7 @@ pipeline {
|
|||
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.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'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -215,6 +228,7 @@ pipeline {
|
|||
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.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'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -239,6 +253,7 @@ pipeline {
|
|||
env.EXT_RELEASE_TAG = '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'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -335,6 +350,35 @@ pipeline {
|
|||
else
|
||||
echo "No templates to delete"
|
||||
fi
|
||||
echo "Starting Stage 2.5 - Update init diagram"
|
||||
if ! grep -q 'init_diagram:' readme-vars.yml; then
|
||||
echo "Adding the key 'init_diagram' to readme-vars.yml"
|
||||
sed -i '\\|^#.*changelog.*$|d' readme-vars.yml
|
||||
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
|
||||
ls -al ${TEMPDIR}/d2
|
||||
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.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
|
||||
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
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Updating templates and exiting build, new one will trigger based on commit"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Init diagram is unchanged"
|
||||
fi
|
||||
echo "Starting Stage 3 - Update templates"
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
|
@ -543,8 +587,42 @@ pipeline {
|
|||
--label \"org.opencontainers.image.title=Sonarr\" \
|
||||
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
|
||||
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Build MultiArch Docker containers for push to LS Repo
|
||||
|
@ -575,8 +653,42 @@ pipeline {
|
|||
--label \"org.opencontainers.image.title=Sonarr\" \
|
||||
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
|
||||
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build ARM64') {
|
||||
|
@ -585,10 +697,6 @@ pipeline {
|
|||
}
|
||||
steps {
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
echo 'Logging into Github'
|
||||
sh '''#! /bin/bash
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
'''
|
||||
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
|
@ -604,18 +712,50 @@ pipeline {
|
|||
--label \"org.opencontainers.image.title=Sonarr\" \
|
||||
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
|
||||
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
||||
--provenance=false --sbom=false \
|
||||
--provenance=true --sbom=true --builder=container --load \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
retry_backoff(5,5) {
|
||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
done
|
||||
'''
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
containers=$(docker ps -aq)
|
||||
if [[ -n "${containers}" ]]; then
|
||||
docker stop ${containers}
|
||||
fi
|
||||
docker system prune -af --volumes || : '''
|
||||
docker system prune -f --volumes || :
|
||||
docker image prune -af || :
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -765,37 +905,23 @@ pipeline {
|
|||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
docker push ${PUSHIMAGE}:latest
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}"
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
|
||||
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 [ -n "${SEMVER}" ]; then
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -806,57 +932,34 @@ pipeline {
|
|||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: 'Quay.io-Robot',
|
||||
usernameVariable: 'QUAYUSER',
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [ "${CI}" == "false" ]; 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}
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
[[ ${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}
|
||||
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 [ -n "${SEMVER}" ]; then
|
||||
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
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-latest
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
done
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
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}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
done
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
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}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -884,7 +987,7 @@ pipeline {
|
|||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "master",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
|
||||
"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": false}' >> 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'''
|
||||
|
@ -1062,12 +1165,22 @@ EOF
|
|||
}
|
||||
cleanup {
|
||||
sh '''#! /bin/bash
|
||||
echo "Performing docker system prune!!"
|
||||
containers=$(docker ps -aq)
|
||||
echo "Pruning builder!!"
|
||||
docker builder prune -f --builder container || :
|
||||
containers=$(docker ps -q)
|
||||
if [[ -n "${containers}" ]]; then
|
||||
docker stop ${containers}
|
||||
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit')
|
||||
for container in ${containers}; do
|
||||
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
|
||||
echo "skipping buildx container in docker stop"
|
||||
else
|
||||
echo "Stopping container ${container}"
|
||||
docker stop ${container}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
docker system prune -af --volumes || :
|
||||
docker system prune -f --volumes || :
|
||||
docker image prune -af || :
|
||||
'''
|
||||
cleanWs()
|
||||
}
|
||||
|
|
20
README.md
20
README.md
|
@ -3,7 +3,7 @@
|
|||
[](https://linuxserver.io)
|
||||
|
||||
[](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
|
||||
[](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
|
||||
[](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
|
||||
[](https://discourse.linuxserver.io "post on our community forum.")
|
||||
[](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
|
||||
[](https://github.com/linuxserver "view the source for all of our repositories.")
|
||||
|
@ -20,7 +20,7 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
|
|||
Find us at:
|
||||
|
||||
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
|
||||
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
|
||||
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
|
||||
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
|
||||
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
|
||||
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
|
||||
|
@ -82,10 +82,17 @@ The folks over at servarr.com wrote a good [write-up](https://wiki.servarr.com/D
|
|||
|
||||
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
|
||||
|
||||
## Non-Root Operation
|
||||
|
||||
This image can be run with a non-root user. For details please [read the docs](https://docs.linuxserver.io/misc/non-root/).
|
||||
|
||||
## Usage
|
||||
|
||||
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 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))
|
||||
|
||||
```yaml
|
||||
|
@ -129,7 +136,7 @@ Containers are configured using parameters passed at runtime (such as those abov
|
|||
|
||||
| Parameter | Function |
|
||||
| :----: | --- |
|
||||
| `-p 8989` | The port for the Sonarr web interface |
|
||||
| `-p 8989:8989` | The port for the Sonarr web interface |
|
||||
| `-e PUID=1000` | for UserID - see below for explanation |
|
||||
| `-e PGID=1000` | for GroupID - see below for explanation |
|
||||
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
|
||||
|
@ -137,6 +144,7 @@ Containers are configured using parameters passed at runtime (such as those abov
|
|||
| `-v /tv` | Location of TV library on disk (See note in Application setup) |
|
||||
| `-v /downloads` | Location of download managers output directory (See note in Application setup) |
|
||||
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
|
||||
| `--user=1000:1000` | Run container with a non-root user. Please [read the docs](https://docs.linuxserver.io/misc/non-root/). |
|
||||
|
||||
## Environment variables from files (Docker secrets)
|
||||
|
||||
|
@ -290,16 +298,18 @@ docker build \
|
|||
-t lscr.io/linuxserver/sonarr:latest .
|
||||
```
|
||||
|
||||
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
|
||||
|
||||
```bash
|
||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
|
||||
```
|
||||
|
||||
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
|
||||
|
||||
## Versions
|
||||
|
||||
* **09.01.25:** - Fix rootless entrypoint.
|
||||
* **23.12.24:** - Rebase Alpine 3.21.
|
||||
* **31.05.24:** - Rebase Alpine 3.20.
|
||||
* **12.01.24:** - Update download url.
|
||||
* **30.12.23:** - Rebase master branch to Alpine 3.19.
|
||||
|
|
|
@ -21,7 +21,7 @@ repo_vars:
|
|||
- CI_WEB='true'
|
||||
- CI_PORT='8989'
|
||||
- CI_SSL='false'
|
||||
- CI_DELAY='120'
|
||||
- CI_DELAY='240'
|
||||
- CI_DOCKERENV=''
|
||||
- CI_AUTH=''
|
||||
- CI_WEBPATH='/system/status'
|
||||
|
|
|
@ -1,418 +1,184 @@
|
|||
NAME VERSION TYPE
|
||||
Bouncy Castle for .NET (netstandard2.0) 1.9.0.1 dotnet
|
||||
Dapper 2.0.123.33578 dotnet
|
||||
Diacritical 1.0.4.0 dotnet
|
||||
DryIoc 5.4.3.0 dotnet
|
||||
DryIoc.Microsoft.DependencyInjection net6.0 6.2.0.0 dotnet
|
||||
Dynamitey 2.0.9.136 dotnet
|
||||
Equ 2.3.0 dotnet
|
||||
FFMpegCore 4.0.0.0 dotnet
|
||||
FluentMigrator 3.3.2.9 dotnet (+19 duplicates)
|
||||
FluentValidation 9.5.4.0 dotnet
|
||||
Harmony 2.0.1.0 dotnet
|
||||
ICSharpCode.SharpZipLib 1.4.2.13 dotnet
|
||||
Ical.Net 1.0.0.0 dotnet
|
||||
ImpromptuInterface 7.0.1.0 dotnet
|
||||
Instances 1.0.0.0 dotnet
|
||||
Json.NET 13.0.3.27908 dotnet
|
||||
MailKit 3.6.0.0 dotnet
|
||||
Microsoft.AspNetCore 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Antiforgery 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authentication 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authentication.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authentication.Cookies 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authentication.Core 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authentication.OAuth 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authorization 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Authorization.Policy 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Components 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Components.Authorization 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Components.Forms 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Components.Server 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Components.Web 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Connections.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.CookiePolicy 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Cors 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Cryptography.Internal 6.0.2123.36438 dotnet
|
||||
Microsoft.AspNetCore.Cryptography.KeyDerivation 6.0.2123.36438 dotnet
|
||||
Microsoft.AspNetCore.DataProtection 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.DataProtection.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.DataProtection.Extensions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Diagnostics 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Diagnostics.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Diagnostics.HealthChecks 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.HostFiltering 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Hosting 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Hosting.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Hosting.Server.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Html.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Connections 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Connections.Common 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Extensions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Features 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Http.Results 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.HttpLogging 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.HttpOverrides 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.HttpsPolicy 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Identity 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Localization 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Localization.Routing 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Metadata 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.ApiExplorer 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Core 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Cors 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.DataAnnotations 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Formatters.Json 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Formatters.Xml 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Localization 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.Razor 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.RazorPages 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Mvc.ViewFeatures 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Owin 6.0.2123.36438 dotnet
|
||||
Microsoft.AspNetCore.Razor 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Razor.Runtime 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.ResponseCaching 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.ResponseCaching.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.ResponseCompression 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Rewrite 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Routing 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Routing.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.HttpSys 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.IIS 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.IISIntegration 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.Kestrel 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.Kestrel.Core 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.Kestrel.Transport.Quic 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.Session 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.SignalR 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.SignalR.Common 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.SignalR.Core 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.SignalR.Protocols.Json 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.StaticFiles 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.WebSockets 6.0.1322.58013 dotnet
|
||||
Microsoft.AspNetCore.WebUtilities 6.0.1322.58013 dotnet
|
||||
Microsoft.Bcl.AsyncInterfaces 6.0.21.52210 dotnet
|
||||
Microsoft.Bcl.TimeProvider 8.0.23.53103 dotnet
|
||||
Microsoft.CSharp 6.0.1322.58009 dotnet
|
||||
Microsoft.Data.SqlClient 2.1.2+2a61e8301e9d21ada2338a9279cf27653e781757 dotnet
|
||||
Microsoft.Extensions.Caching.Abstractions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Caching.Memory 6.0.222.6406 dotnet
|
||||
Microsoft.Extensions.Configuration 6.0.322.12309 dotnet
|
||||
Microsoft.Extensions.Configuration.Abstractions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.Binder 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.CommandLine 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.EnvironmentVariables 6.0.222.6406 dotnet
|
||||
Microsoft.Extensions.Configuration.FileExtensions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.Ini 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.Json 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Configuration.KeyPerFile 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Configuration.UserSecrets 6.0.222.6406 dotnet
|
||||
Microsoft.Extensions.Configuration.Xml 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.DependencyInjection 6.0.1022.47605 dotnet
|
||||
Microsoft.Extensions.DependencyInjection.Abstractions 7.0.22.51805 dotnet
|
||||
Microsoft.Extensions.Diagnostics.HealthChecks 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Features 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.FileProviders.Abstractions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.FileProviders.Composite 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.FileProviders.Embedded 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.FileProviders.Physical 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.FileSystemGlobbing 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Hosting 6.0.222.6406 dotnet
|
||||
Microsoft.Extensions.Hosting.Abstractions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Hosting.WindowsServices 6.0.1823.26907 dotnet
|
||||
Microsoft.Extensions.Http 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Identity.Core 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Identity.Stores 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Localization 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Localization.Abstractions 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Logging 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.Abstractions 6.0.1122.52304 dotnet
|
||||
Microsoft.Extensions.Logging.Configuration 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.Console 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.Debug 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.EventLog 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.EventSource 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Logging.TraceSource 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.ObjectPool 6.0.1322.58013 dotnet
|
||||
Microsoft.Extensions.Options 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Options.ConfigurationExtensions 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Options.DataAnnotations 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.Primitives 6.0.21.52210 dotnet
|
||||
Microsoft.Extensions.WebEncoders 6.0.1322.58013 dotnet
|
||||
Microsoft.Identity.Client 4.21.1.0 dotnet
|
||||
Microsoft.IdentityModel.JsonWebTokens 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
Microsoft.IdentityModel.Logging 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
Microsoft.IdentityModel.Protocols 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
Microsoft.IdentityModel.Protocols.OpenIdConnect 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
Microsoft.IdentityModel.Tokens 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
Microsoft.JSInterop 6.0.1322.58013 dotnet
|
||||
Microsoft.Net.Http.Headers 6.0.1322.58013 dotnet
|
||||
Microsoft.OpenApi 1.6.14.0 dotnet
|
||||
Microsoft.VisualBasic 6.0.1322.58009 dotnet
|
||||
Microsoft.VisualBasic.Core 11.100.1322.58009 dotnet
|
||||
Microsoft.Win32.Primitives 6.0.1322.58009 dotnet
|
||||
Microsoft.Win32.Registry 6.0.1322.58009 dotnet
|
||||
Microsoft.Win32.SystemEvents 6.0.21.52210 dotnet
|
||||
MimeKit 3.6.0.0 dotnet
|
||||
Mono.Cecil 0.11.2.0 dotnet (+3 duplicates)
|
||||
Mono.Nat 3.0.1 dotnet
|
||||
Mono.Posix.NETStandard 1.0.0.0 dotnet
|
||||
MonoMod.Common 20.05.07.01+b18b2bddebe81992d218ea7e1f41aa1923459652 dotnet
|
||||
MonoTorrent 2.0.7 dotnet
|
||||
NLog v5.3.2 5.3.2.2526 dotnet
|
||||
NLog.Extensions.Logging v5.3.11 5.3.11.526 dotnet
|
||||
NLog.Layouts.ClefJsonLayout 1.0.0.0 dotnet
|
||||
NLog.Targets.Syslog 7.0.0.0 dotnet
|
||||
NodaTime 3.0.0.0 dotnet
|
||||
Npgsql 7.0.7.0 dotnet
|
||||
Polly 8.3.1.3207 dotnet
|
||||
Polly.Contrib.WaitAndRetry 1.1.1.0+7596d2dacf22d88bbd814bc49c28424fb6e921e9 dotnet
|
||||
Polly.Core 8.3.1.3207 dotnet
|
||||
ReusableTasks 2.0.0 dotnet
|
||||
Sentry 4.0.2.0 dotnet
|
||||
SixLabors.ImageSharp 3.1.5.0 dotnet
|
||||
Sonarr 4.0.9.2244 dotnet (+8 duplicates)
|
||||
Swashbuckle.AspNetCore.Annotations 6.6.2.401 dotnet
|
||||
Swashbuckle.AspNetCore.Swagger 6.6.2.401 dotnet
|
||||
Swashbuckle.AspNetCore.SwaggerGen 6.6.2.401 dotnet
|
||||
System 6.0.1322.58009 dotnet
|
||||
System.AppContext 6.0.1322.58009 dotnet
|
||||
System.Buffers 6.0.1322.58009 dotnet
|
||||
System.Collections 6.0.1322.58009 dotnet
|
||||
System.Collections.Concurrent 6.0.1322.58009 dotnet
|
||||
System.Collections.Immutable 6.0.1322.58009 dotnet
|
||||
System.Collections.NonGeneric 6.0.1322.58009 dotnet
|
||||
System.Collections.Specialized 6.0.1322.58009 dotnet
|
||||
System.ComponentModel 6.0.1322.58009 dotnet
|
||||
System.ComponentModel.Annotations 6.0.1322.58009 dotnet
|
||||
System.ComponentModel.DataAnnotations 6.0.1322.58009 dotnet
|
||||
System.ComponentModel.EventBasedAsync 6.0.1322.58009 dotnet
|
||||
System.ComponentModel.Primitives 6.0.1322.58009 dotnet
|
||||
System.ComponentModel.TypeConverter 6.0.1322.58009 dotnet
|
||||
System.Configuration 6.0.1322.58009 dotnet
|
||||
System.Configuration.ConfigurationManager 6.0.922.41905 dotnet
|
||||
System.Console 6.0.1322.58009 dotnet
|
||||
System.Core 6.0.1322.58009 dotnet
|
||||
System.Data 6.0.1322.58009 dotnet
|
||||
System.Data.Common 6.0.1322.58009 dotnet
|
||||
System.Data.DataSetExtensions 6.0.1322.58009 dotnet
|
||||
System.Data.SQLite 1.0.115.5 dotnet
|
||||
System.Data.SqlServerCe 4.0.8876.1 dotnet
|
||||
System.Diagnostics.Contracts 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.Debug 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.DiagnosticSource 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.EventLog 6.0.21.52210 dotnet
|
||||
System.Diagnostics.FileVersionInfo 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.Process 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.StackTrace 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.TextWriterTraceListener 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.Tools 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.TraceSource 6.0.1322.58009 dotnet
|
||||
System.Diagnostics.Tracing 6.0.1322.58009 dotnet
|
||||
System.Drawing 6.0.1322.58009 dotnet
|
||||
System.Drawing.Common 6.0.21.52210 dotnet
|
||||
System.Drawing.Primitives 6.0.1322.58009 dotnet
|
||||
System.Dynamic.Runtime 6.0.1322.58009 dotnet
|
||||
System.Formats.Asn1 6.0.1322.58009 dotnet
|
||||
System.Globalization 6.0.1322.58009 dotnet
|
||||
System.Globalization.Calendars 6.0.1322.58009 dotnet
|
||||
System.Globalization.Extensions 6.0.1322.58009 dotnet
|
||||
System.IO 6.0.1322.58009 dotnet
|
||||
System.IO.Compression 6.0.1322.58009 dotnet
|
||||
System.IO.Compression.Brotli 6.0.1322.58009 dotnet
|
||||
System.IO.Compression.FileSystem 6.0.1322.58009 dotnet
|
||||
System.IO.Compression.ZipFile 6.0.1322.58009 dotnet
|
||||
System.IO.FileSystem 6.0.1322.58009 dotnet
|
||||
System.IO.FileSystem.AccessControl 6.0.1322.58009 dotnet
|
||||
System.IO.FileSystem.DriveInfo 6.0.1322.58009 dotnet
|
||||
System.IO.FileSystem.Primitives 6.0.1322.58009 dotnet
|
||||
System.IO.FileSystem.Watcher 6.0.1322.58009 dotnet
|
||||
System.IO.IsolatedStorage 6.0.1322.58009 dotnet
|
||||
System.IO.MemoryMappedFiles 6.0.1322.58009 dotnet
|
||||
System.IO.Pipelines 6.0.522.21309 dotnet
|
||||
System.IO.Pipes 6.0.1322.58009 dotnet
|
||||
System.IO.Pipes.AccessControl 6.0.1322.58009 dotnet
|
||||
System.IO.UnmanagedMemoryStream 6.0.1322.58009 dotnet
|
||||
System.IdentityModel.Tokens.Jwt 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
|
||||
System.Linq 6.0.1322.58009 dotnet
|
||||
System.Linq.Expressions 6.0.1322.58009 dotnet
|
||||
System.Linq.Parallel 6.0.1322.58009 dotnet
|
||||
System.Linq.Queryable 6.0.1322.58009 dotnet
|
||||
System.Memory 6.0.1322.58009 dotnet
|
||||
System.Net 6.0.1322.58009 dotnet
|
||||
System.Net.Http 6.0.1322.58009 dotnet
|
||||
System.Net.Http.Json 6.0.1322.58009 dotnet
|
||||
System.Net.HttpListener 6.0.1322.58009 dotnet
|
||||
System.Net.Mail 6.0.1322.58009 dotnet
|
||||
System.Net.NameResolution 6.0.1322.58009 dotnet
|
||||
System.Net.NetworkInformation 6.0.1322.58009 dotnet
|
||||
System.Net.Ping 6.0.1322.58009 dotnet
|
||||
System.Net.Primitives 6.0.1322.58009 dotnet
|
||||
System.Net.Quic 6.0.1322.58009 dotnet
|
||||
System.Net.Requests 6.0.1322.58009 dotnet
|
||||
System.Net.Security 6.0.1322.58009 dotnet
|
||||
System.Net.ServicePoint 6.0.1322.58009 dotnet
|
||||
System.Net.Sockets 6.0.1322.58009 dotnet
|
||||
System.Net.WebClient 6.0.1322.58009 dotnet
|
||||
System.Net.WebHeaderCollection 6.0.1322.58009 dotnet
|
||||
System.Net.WebProxy 6.0.1322.58009 dotnet
|
||||
System.Net.WebSockets 6.0.1322.58009 dotnet
|
||||
System.Net.WebSockets.Client 6.0.1322.58009 dotnet
|
||||
System.Numerics 6.0.1322.58009 dotnet
|
||||
System.Numerics.Vectors 6.0.1322.58009 dotnet
|
||||
System.ObjectModel 6.0.1322.58009 dotnet
|
||||
System.Private.CoreLib 6.0.1322.58009 dotnet
|
||||
System.Private.DataContractSerialization 6.0.1322.58009 dotnet
|
||||
System.Private.Uri 6.0.1322.58009 dotnet
|
||||
System.Private.Xml 6.0.1322.58009 dotnet
|
||||
System.Private.Xml.Linq 6.0.1322.58009 dotnet
|
||||
System.Reflection 6.0.1322.58009 dotnet
|
||||
System.Reflection.DispatchProxy 6.0.1322.58009 dotnet
|
||||
System.Reflection.Emit 6.0.1322.58009 dotnet
|
||||
System.Reflection.Emit.ILGeneration 6.0.1322.58009 dotnet
|
||||
System.Reflection.Emit.Lightweight 6.0.1322.58009 dotnet
|
||||
System.Reflection.Extensions 6.0.1322.58009 dotnet
|
||||
System.Reflection.Metadata 6.0.1322.58009 dotnet
|
||||
System.Reflection.Primitives 6.0.1322.58009 dotnet
|
||||
System.Reflection.TypeExtensions 6.0.1322.58009 dotnet
|
||||
System.Resources.Reader 6.0.1322.58009 dotnet
|
||||
System.Resources.ResourceManager 6.0.1322.58009 dotnet
|
||||
System.Resources.Writer 6.0.1322.58009 dotnet
|
||||
System.Runtime 6.0.1322.58009 dotnet
|
||||
System.Runtime.Caching 4.700.19.56404 dotnet
|
||||
System.Runtime.CompilerServices.VisualC 6.0.1322.58009 dotnet
|
||||
System.Runtime.Extensions 6.0.1322.58009 dotnet
|
||||
System.Runtime.Handles 6.0.1322.58009 dotnet
|
||||
System.Runtime.InteropServices 6.0.1322.58009 dotnet
|
||||
System.Runtime.InteropServices.RuntimeInformation 6.0.1322.58009 dotnet
|
||||
System.Runtime.Intrinsics 6.0.1322.58009 dotnet
|
||||
System.Runtime.Loader 6.0.1322.58009 dotnet
|
||||
System.Runtime.Numerics 6.0.1322.58009 dotnet
|
||||
System.Runtime.Serialization 6.0.1322.58009 dotnet
|
||||
System.Runtime.Serialization.Formatters 6.0.1322.58009 dotnet
|
||||
System.Runtime.Serialization.Json 6.0.1322.58009 dotnet
|
||||
System.Runtime.Serialization.Primitives 6.0.1322.58009 dotnet
|
||||
System.Runtime.Serialization.Xml 6.0.1322.58009 dotnet
|
||||
System.Security 6.0.1322.58009 dotnet
|
||||
System.Security.AccessControl 6.0.1322.58009 dotnet
|
||||
System.Security.Claims 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Algorithms 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Cng 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Csp 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Encoding 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.OpenSsl 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Pkcs 6.0.522.21309 dotnet
|
||||
System.Security.Cryptography.Primitives 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.ProtectedData 6.0.21.52210 dotnet
|
||||
System.Security.Cryptography.X509Certificates 6.0.1322.58009 dotnet
|
||||
System.Security.Cryptography.Xml 6.0.822.36306 dotnet
|
||||
System.Security.Permissions 6.0.21.52210 dotnet
|
||||
System.Security.Principal 6.0.1322.58009 dotnet
|
||||
System.Security.Principal.Windows 6.0.1322.58009 dotnet
|
||||
System.Security.SecureString 6.0.1322.58009 dotnet
|
||||
System.ServiceModel.Web 6.0.1322.58009 dotnet
|
||||
System.ServiceProcess 6.0.1322.58009 dotnet
|
||||
System.ServiceProcess.ServiceController 6.0.1823.26907 dotnet
|
||||
System.Text.Encoding 6.0.1322.58009 dotnet
|
||||
System.Text.Encoding.CodePages 6.0.1322.58009 dotnet
|
||||
System.Text.Encoding.Extensions 6.0.1322.58009 dotnet
|
||||
System.Text.Encodings.Web 6.0.1322.58009 dotnet
|
||||
System.Text.Json 6.0.2523.51912 dotnet
|
||||
System.Text.RegularExpressions 6.0.1322.58009 dotnet
|
||||
System.Threading 6.0.1322.58009 dotnet
|
||||
System.Threading.Channels 6.0.1322.58009 dotnet
|
||||
System.Threading.Overlapped 6.0.1322.58009 dotnet
|
||||
System.Threading.Tasks 6.0.1322.58009 dotnet
|
||||
System.Threading.Tasks.Dataflow 6.0.1322.58009 dotnet
|
||||
System.Threading.Tasks.Extensions 6.0.1322.58009 dotnet
|
||||
System.Threading.Tasks.Parallel 6.0.1322.58009 dotnet
|
||||
System.Threading.Thread 6.0.1322.58009 dotnet
|
||||
System.Threading.ThreadPool 6.0.1322.58009 dotnet
|
||||
System.Threading.Timer 6.0.1322.58009 dotnet
|
||||
System.Transactions 6.0.1322.58009 dotnet
|
||||
System.Transactions.Local 6.0.1322.58009 dotnet
|
||||
System.ValueTuple 6.0.1322.58009 dotnet
|
||||
System.Web 6.0.1322.58009 dotnet
|
||||
System.Web.HttpUtility 6.0.1322.58009 dotnet
|
||||
System.Windows 6.0.1322.58009 dotnet
|
||||
System.Windows.Extensions 6.0.21.52210 dotnet
|
||||
System.Xml 6.0.1322.58009 dotnet
|
||||
System.Xml.Linq 6.0.1322.58009 dotnet
|
||||
System.Xml.ReaderWriter 6.0.1322.58009 dotnet
|
||||
System.Xml.Serialization 6.0.1322.58009 dotnet
|
||||
System.Xml.XDocument 6.0.1322.58009 dotnet
|
||||
System.Xml.XPath 6.0.1322.58009 dotnet
|
||||
System.Xml.XPath.XDocument 6.0.1322.58009 dotnet
|
||||
System.Xml.XmlDocument 6.0.1322.58009 dotnet
|
||||
System.Xml.XmlSerializer 6.0.1322.58009 dotnet
|
||||
WindowsBase 6.0.1322.58009 dotnet
|
||||
alpine-baselayout 3.6.5-r0 apk
|
||||
alpine-baselayout-data 3.6.5-r0 apk
|
||||
alpine-keys 2.4-r1 apk
|
||||
alpine-release 3.20.3-r0 apk
|
||||
apk-tools 2.14.4-r0 apk
|
||||
bash 5.2.26-r0 apk
|
||||
brotli-libs 1.1.0-r2 apk
|
||||
busybox 1.36.1-r29 apk
|
||||
busybox-binsh 1.36.1-r29 apk
|
||||
c-ares 1.28.1-r0 apk
|
||||
ca-certificates 20240705-r0 apk
|
||||
ca-certificates-bundle 20240705-r0 apk
|
||||
catatonit 0.2.0-r0 apk
|
||||
coreutils 9.5-r1 apk
|
||||
coreutils-env 9.5-r1 apk
|
||||
coreutils-fmt 9.5-r1 apk
|
||||
coreutils-sha512sum 9.5-r1 apk
|
||||
curl 8.9.1-r2 apk
|
||||
findutils 4.9.0-r5 apk
|
||||
icu-data-en 74.2-r0 apk
|
||||
icu-libs 74.2-r0 apk
|
||||
jq 1.7.1-r0 apk
|
||||
libacl 2.3.2-r0 apk
|
||||
libattr 2.5.2-r0 apk
|
||||
libbsd 0.12.2-r0 apk
|
||||
libcrypto3 3.3.2-r0 apk
|
||||
libcurl 8.9.1-r2 apk
|
||||
libgcc 13.2.1_git20240309-r0 apk
|
||||
libgcrypt 1.10.3-r0 apk
|
||||
libgpg-error 1.49-r0 apk
|
||||
libidn2 2.3.7-r0 apk
|
||||
libintl 0.22.5-r0 apk
|
||||
libmd 1.1.0-r0 apk
|
||||
libncursesw 6.4_p20240420-r1 apk
|
||||
libproc2 4.0.4-r0 apk
|
||||
libpsl 0.21.5-r1 apk
|
||||
libssl3 3.3.2-r0 apk
|
||||
libstdc++ 13.2.1_git20240309-r0 apk
|
||||
libunistring 1.2-r0 apk
|
||||
libxml2 2.12.7-r0 apk
|
||||
libxslt 1.1.39-r1 apk
|
||||
linux-pam 1.6.0-r0 apk
|
||||
mscorlib 6.0.1322.58009 dotnet
|
||||
musl 1.2.5-r0 apk
|
||||
musl-utils 1.2.5-r0 apk
|
||||
ncurses-terminfo-base 6.4_p20240420-r1 apk
|
||||
netcat-openbsd 1.226-r0 apk
|
||||
netstandard 6.0.1322.58009 dotnet
|
||||
nghttp2-libs 1.62.1-r0 apk
|
||||
oniguruma 6.9.9-r0 apk
|
||||
procps-ng 4.0.4-r0 apk
|
||||
readline 8.2.10-r0 apk
|
||||
scanelf 1.3.7-r2 apk
|
||||
shadow 4.15.1-r0 apk
|
||||
skalibs 2.14.1.1-r0 apk
|
||||
sqlite-libs 3.45.3-r1 apk
|
||||
ssl_client 1.36.1-r29 apk
|
||||
tzdata 2024b-r0 apk
|
||||
utmps-libs 0.1.2.2-r1 apk
|
||||
xmlstarlet 1.6.1-r2 apk
|
||||
xz-libs 5.6.2-r0 apk
|
||||
zlib 1.3.1-r1 apk
|
||||
zstd-libs 1.5.6-r0 apk
|
||||
NAME VERSION TYPE
|
||||
BouncyCastle.Cryptography 2.4.0 dotnet (+5 duplicates)
|
||||
Dapper 2.0.123 dotnet (+5 duplicates)
|
||||
Diacritical.Net 1.0.4 dotnet (+5 duplicates)
|
||||
DryIoc.Microsoft.DependencyInjection 6.2.0 dotnet (+1 duplicate)
|
||||
DryIoc.dll 5.4.3 dotnet (+7 duplicates)
|
||||
Dynamitey 2.0.9.136 dotnet (+3 duplicates)
|
||||
Equ 2.3.0 dotnet (+5 duplicates)
|
||||
FluentValidation 9.5.4 dotnet (+5 duplicates)
|
||||
IPAddressRange 6.1.0 dotnet (+7 duplicates)
|
||||
Ical.Net 4.3.1 dotnet (+2 duplicates)
|
||||
ImpromptuInterface 7.0.1 dotnet (+3 duplicates)
|
||||
Instances 1.6.1 dotnet (+5 duplicates)
|
||||
Lib.Harmony 2.3.3 dotnet (+1 duplicate)
|
||||
MailKit 4.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.AspNetCore.Cryptography.Internal 6.0.21 dotnet (+5 duplicates)
|
||||
Microsoft.AspNetCore.Cryptography.KeyDerivation 6.0.21 dotnet (+5 duplicates)
|
||||
Microsoft.AspNetCore.Owin 6.0.21 dotnet (+1 duplicate)
|
||||
Microsoft.Bcl.AsyncInterfaces 6.0.0 dotnet (+5 duplicates)
|
||||
Microsoft.Bcl.TimeProvider 8.0.0 dotnet (+5 duplicates)
|
||||
Microsoft.Data.SqlClient 2.1.7 dotnet (+5 duplicates)
|
||||
Microsoft.Extensions.Configuration 6.0.0 dotnet (+1 duplicate)
|
||||
Microsoft.Extensions.Configuration 6.0.1 dotnet (+4 duplicates)
|
||||
Microsoft.Extensions.Configuration.Abstractions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Configuration.Binder 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Configuration.CommandLine 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Configuration.EnvironmentVariables 6.0.1 dotnet (+6 duplicates)
|
||||
Microsoft.Extensions.Configuration.FileExtensions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Configuration.Json 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Configuration.UserSecrets 6.0.1 dotnet (+6 duplicates)
|
||||
Microsoft.Extensions.DependencyInjection 6.0.1 dotnet (+6 duplicates)
|
||||
Microsoft.Extensions.DependencyInjection.Abstractions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.DependencyInjection.Abstractions 7.0.0 dotnet (+1 duplicate)
|
||||
Microsoft.Extensions.FileProviders.Abstractions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.FileProviders.Physical 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.FileSystemGlobbing 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Hosting 6.0.1 dotnet (+6 duplicates)
|
||||
Microsoft.Extensions.Hosting.Abstractions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Hosting.WindowsServices 6.0.2 dotnet (+7 duplicates)
|
||||
Microsoft.Extensions.Logging 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.Abstractions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.Configuration 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.Console 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.Debug 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.EventLog 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Logging.EventSource 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Options 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Options.ConfigurationExtensions 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Extensions.Primitives 6.0.0 dotnet (+2 duplicates)
|
||||
Microsoft.Identity.Client 4.21.1 dotnet (+5 duplicates)
|
||||
Microsoft.IdentityModel.JsonWebTokens 6.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.IdentityModel.Logging 6.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.IdentityModel.Protocols 6.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.IdentityModel.Protocols.OpenIdConnect 6.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.IdentityModel.Tokens 6.8.0 dotnet (+5 duplicates)
|
||||
Microsoft.OpenApi 1.6.14 dotnet (+2 duplicates)
|
||||
Microsoft.Win32.SystemEvents 6.0.0 dotnet (+7 duplicates)
|
||||
MimeKit 4.8.0 dotnet (+5 duplicates)
|
||||
Mono.Nat 3.0.1 dotnet (+5 duplicates)
|
||||
Mono.Posix.NETStandard 5.20.1.34-servarr24 dotnet
|
||||
MonoTorrent 2.0.7 dotnet (+5 duplicates)
|
||||
NLog 5.3.4 dotnet (+7 duplicates)
|
||||
NLog.Extensions.Logging 5.3.15 dotnet (+7 duplicates)
|
||||
NLog.Layouts.ClefJsonLayout 1.0.2 dotnet (+7 duplicates)
|
||||
NLog.Targets.Syslog 7.0.0 dotnet (+7 duplicates)
|
||||
Newtonsoft.Json 13.0.3 dotnet (+7 duplicates)
|
||||
NodaTime 3.2.0 dotnet (+2 duplicates)
|
||||
Npgsql 7.0.9 dotnet (+5 duplicates)
|
||||
Polly 8.5.0 dotnet (+5 duplicates)
|
||||
Polly.Contrib.WaitAndRetry 1.1.1 dotnet (+7 duplicates)
|
||||
Polly.Core 8.5.0 dotnet (+5 duplicates)
|
||||
ReusableTasks 2.0.0 dotnet (+5 duplicates)
|
||||
Sentry 4.0.2 dotnet (+7 duplicates)
|
||||
Servarr.FFMpegCore 4.7.0-26 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Abstractions 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Extensions.Oracle 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Extensions.Postgres 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Extensions.SqlAnywhere 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Extensions.SqlServer 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Core 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Db2 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Firebird 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Hana 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.MySql 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Oracle 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Postgres 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.Redshift 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.SQLite 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.SqlAnywhere 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.SqlServer 3.3.2.9 dotnet (+5 duplicates)
|
||||
Servarr.FluentMigrator.Runner.SqlServerCe 3.3.2.9 dotnet (+5 duplicates)
|
||||
SharpZipLib 1.4.2 dotnet (+7 duplicates)
|
||||
SixLabors.ImageSharp 3.1.7 dotnet (+5 duplicates)
|
||||
Sonarr 4.0.14 dotnet
|
||||
Sonarr.Api.V3 4.0.14 dotnet (+2 duplicates)
|
||||
Sonarr.Common 4.0.14 dotnet (+7 duplicates)
|
||||
Sonarr.Core 4.0.14 dotnet (+5 duplicates)
|
||||
Sonarr.Host 4.0.14 dotnet (+1 duplicate)
|
||||
Sonarr.Http 4.0.14 dotnet (+3 duplicates)
|
||||
Sonarr.Mono 4.0.14 dotnet
|
||||
Sonarr.RuntimePatches 4.0.14 dotnet (+1 duplicate)
|
||||
Sonarr.SignalR 4.0.14 dotnet (+4 duplicates)
|
||||
Swashbuckle.AspNetCore.Annotations 6.6.2 dotnet (+2 duplicates)
|
||||
Swashbuckle.AspNetCore.Swagger 6.6.2 dotnet (+2 duplicates)
|
||||
Swashbuckle.AspNetCore.SwaggerGen 6.6.2 dotnet (+2 duplicates)
|
||||
System.Configuration.ConfigurationManager 6.0.1 dotnet (+7 duplicates)
|
||||
System.Data.SQLite.Core.Servarr 1.0.115.5-18 dotnet (+7 duplicates)
|
||||
System.Diagnostics.EventLog 6.0.0 dotnet (+2 duplicates)
|
||||
System.Drawing.Common 6.0.0 dotnet (+7 duplicates)
|
||||
System.Formats.Asn1 8.0.1 dotnet (+5 duplicates)
|
||||
System.IdentityModel.Tokens.Jwt 6.8.0 dotnet (+5 duplicates)
|
||||
System.Runtime.Caching 4.7.0 dotnet (+5 duplicates)
|
||||
System.Security.Cryptography.Pkcs 8.0.0 dotnet (+5 duplicates)
|
||||
System.Security.Cryptography.ProtectedData 6.0.0 dotnet (+7 duplicates)
|
||||
System.Security.Permissions 6.0.0 dotnet (+7 duplicates)
|
||||
System.ServiceProcess.ServiceController 6.0.1 dotnet (+7 duplicates)
|
||||
System.Text.Json 6.0.10 dotnet (+7 duplicates)
|
||||
System.Text.Json 6.0.9 dotnet
|
||||
System.Windows.Extensions 6.0.0 dotnet (+7 duplicates)
|
||||
acl-libs 2.3.2-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.3-r0 apk
|
||||
apk-tools 2.14.6-r3 apk
|
||||
bash 5.2.37-r0 apk
|
||||
brotli-libs 1.1.0-r2 apk
|
||||
busybox 1.37.0-r12 apk
|
||||
busybox-binsh 1.37.0-r12 apk
|
||||
c-ares 1.34.5-r0 apk
|
||||
ca-certificates 20241121-r1 apk
|
||||
ca-certificates-bundle 20241121-r1 apk
|
||||
catatonit 0.2.0-r0 apk
|
||||
coreutils 9.5-r2 apk
|
||||
coreutils-env 9.5-r2 apk
|
||||
coreutils-fmt 9.5-r2 apk
|
||||
coreutils-sha512sum 9.5-r2 apk
|
||||
curl 8.12.1-r1 apk
|
||||
findutils 4.10.0-r0 apk
|
||||
icu-data-en 74.2-r0 apk
|
||||
icu-libs 74.2-r0 apk
|
||||
jq 1.7.1-r0 apk
|
||||
libattr 2.5.2-r2 apk
|
||||
libbsd 0.12.2-r0 apk
|
||||
libcrypto3 3.3.3-r0 apk
|
||||
libcurl 8.12.1-r1 apk
|
||||
libgcc 14.2.0-r4 apk
|
||||
libgcrypt 1.10.3-r1 apk
|
||||
libgpg-error 1.51-r0 apk
|
||||
libidn2 2.3.7-r0 apk
|
||||
libintl 0.22.5-r0 apk
|
||||
libmd 1.1.0-r0 apk
|
||||
libncursesw 6.5_p20241006-r3 apk
|
||||
libproc2 4.0.4-r2 apk
|
||||
libpsl 0.21.5-r3 apk
|
||||
libssl3 3.3.3-r0 apk
|
||||
libstdc++ 14.2.0-r4 apk
|
||||
libunistring 1.2-r0 apk
|
||||
libxml2 2.13.4-r5 apk
|
||||
libxslt 1.1.42-r2 apk
|
||||
linux-pam 1.6.1-r1 apk
|
||||
musl 1.2.5-r9 apk
|
||||
musl-utils 1.2.5-r9 apk
|
||||
ncurses-terminfo-base 6.5_p20241006-r3 apk
|
||||
netcat-openbsd 1.226.1.1-r0 apk
|
||||
nghttp2-libs 1.64.0-r0 apk
|
||||
oniguruma 6.9.9-r0 apk
|
||||
procps-ng 4.0.4-r2 apk
|
||||
readline 8.2.13-r0 apk
|
||||
runtimepack.Microsoft.AspNetCore.App.Runtime.linux-musl-x64 6.0.13 dotnet
|
||||
runtimepack.Microsoft.NETCore.App.Runtime.linux-musl-x64 6.0.13 dotnet
|
||||
scanelf 1.3.8-r1 apk
|
||||
shadow 4.16.0-r1 apk
|
||||
skalibs-libs 2.14.3.0-r0 apk
|
||||
sqlite-libs 3.48.0-r1 apk
|
||||
ssl_client 1.37.0-r12 apk
|
||||
tzdata 2025b-r0 apk
|
||||
utmps-libs 0.1.2.3-r2 apk
|
||||
xmlstarlet 1.6.1-r2 apk
|
||||
xz-libs 5.6.3-r1 apk
|
||||
zlib 1.3.1-r2 apk
|
||||
zstd-libs 1.5.6-r2 apk
|
||||
|
|
132
readme-vars.yml
132
readme-vars.yml
|
@ -7,35 +7,30 @@ project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/ma
|
|||
project_blurb: |
|
||||
[{{ project_name|capitalize }}]({{ project_url }}) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
|
||||
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
||||
|
||||
project_categories: "Media Management"
|
||||
# supported architectures
|
||||
available_architectures:
|
||||
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||
|
||||
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||
# development version
|
||||
development_versions: true
|
||||
development_versions_items:
|
||||
- { tag: "latest", desc: "Stable releases from Sonarr" }
|
||||
- { tag: "develop", desc: "Development releases from Sonarr" }
|
||||
|
||||
- {tag: "latest", desc: "Stable releases from Sonarr"}
|
||||
- {tag: "develop", desc: "Development releases from Sonarr"}
|
||||
# container parameters
|
||||
param_container_name: "{{ project_name }}"
|
||||
param_usage_include_vols: true
|
||||
param_volumes:
|
||||
- { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/data", desc: "Database and sonarr configs" }
|
||||
|
||||
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/data", desc: "Database and sonarr configs"}
|
||||
opt_param_usage_include_vols: true
|
||||
opt_param_volumes:
|
||||
- { vol_path: "/tv", vol_host_path: "/path/to/tvseries", desc: "Location of TV library on disk (See note in Application setup)" }
|
||||
- { vol_path: "/downloads", vol_host_path: "/path/to/downloadclient-downloads", desc: "Location of download managers output directory (See note in Application setup)" }
|
||||
|
||||
- {vol_path: "/tv", vol_host_path: "/path/to/tvseries", desc: "Location of TV library on disk (See note in Application setup)"}
|
||||
- {vol_path: "/downloads", vol_host_path: "/path/to/downloadclient-downloads", desc: "Location of download managers output directory (See note in Application setup)"}
|
||||
param_usage_include_ports: true
|
||||
param_ports:
|
||||
- { external_port: "8989", internal_port: "8989", port_desc: "The port for the Sonarr web interface" }
|
||||
|
||||
- {external_port: "8989", internal_port: "8989", port_desc: "The port for the Sonarr web interface"}
|
||||
readonly_supported: true
|
||||
|
||||
nonroot_supported: true
|
||||
# application setup block
|
||||
app_setup_block_enabled: true
|
||||
app_setup_block: |
|
||||
|
@ -48,39 +43,78 @@ app_setup_block: |
|
|||
Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.
|
||||
|
||||
The folks over at servarr.com wrote a good [write-up](https://wiki.servarr.com/Docker_Guide#Consistent_and_well_planned_paths) on how to get started with this.
|
||||
|
||||
|
||||
# init diagram
|
||||
init_diagram: |
|
||||
"sonarr:latest": {
|
||||
docker-mods
|
||||
base {
|
||||
fix-attr +\nlegacy cont-init
|
||||
}
|
||||
docker-mods -> base
|
||||
legacy-services
|
||||
custom services
|
||||
init-services -> legacy-services
|
||||
init-services -> custom services
|
||||
custom services -> legacy-services
|
||||
legacy-services -> ci-service-check
|
||||
init-migrations -> init-adduser
|
||||
init-os-end -> init-config
|
||||
init-config -> init-config-end
|
||||
init-crontab-config -> init-config-end
|
||||
init-sonarr-config -> init-config-end
|
||||
init-config -> init-crontab-config
|
||||
init-mods-end -> init-custom-files
|
||||
base -> init-envfile
|
||||
base -> init-migrations
|
||||
init-config-end -> init-mods
|
||||
init-mods-package-install -> init-mods-end
|
||||
init-mods -> init-mods-package-install
|
||||
init-adduser -> init-os-end
|
||||
init-envfile -> init-os-end
|
||||
init-custom-files -> init-services
|
||||
init-config -> init-sonarr-config
|
||||
init-services -> svc-cron
|
||||
svc-cron -> legacy-services
|
||||
init-services -> svc-sonarr
|
||||
svc-sonarr -> legacy-services
|
||||
}
|
||||
Base Images: {
|
||||
"baseimage-alpine:3.21"
|
||||
}
|
||||
"sonarr:latest" <- Base Images
|
||||
# changelog
|
||||
changelogs:
|
||||
- { date: "31.05.24:", desc: "Rebase Alpine 3.20." }
|
||||
- { date: "12.01.24:", desc: "Update download url." }
|
||||
- { date: "30.12.23:", desc: "Rebase master branch to Alpine 3.19." }
|
||||
- { date: "15.02.23:", desc: "Rebase master branch to Jammy." }
|
||||
- { date: "19.12.22:", desc: "Rebase develop branch Alpine 3.17." }
|
||||
- { date: "24.11.22:", desc: "Bump develop branch to v4, rebase to Alpine 3.16." }
|
||||
- { date: "03.08.22:", desc: "Deprecate armhf." }
|
||||
- { date: "02.08.22:", desc: "Add armhf deprecation warning." }
|
||||
- { date: "28.04.22:", desc: "Rebase master branch to mono 6.12 base (focal)." }
|
||||
- { date: "20.02.22:", desc: "Rebase develop branch to Alpine, deprecate develop-alpine branch." }
|
||||
- { date: "28.12.21:", desc: "Add develop-alpine branch." }
|
||||
- { date: "11.05.21:", desc: "Make the paths clearer to the user." }
|
||||
- { date: "10.03.21:", desc: "Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update." }
|
||||
- { date: "18.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information." }
|
||||
- { date: "05.04.20:", desc: "Move app to /app." }
|
||||
- { date: "01.08.19:", desc: "Rebase to Linuxserver LTS mono version." }
|
||||
- { date: "13.06.19:", desc: "Add env variable for setting umask." }
|
||||
- { date: "10.05.19:", desc: "Rebase to Bionic." }
|
||||
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
|
||||
- { date: "01.02.19:", desc: "Multi arch images and pipeline build logic" }
|
||||
- { date: "15.12.17:", desc: "Fix continuation lines." }
|
||||
- { date: "12.07.17:", desc: "Add inspect commands to README, move to jenkins build and push." }
|
||||
- { date: "17.04.17:", desc: "Switch to using inhouse mono baseimage, adds python also." }
|
||||
- { date: "14.04.17:", desc: "Change to mount /etc/localtime in README, thanks cbgj." }
|
||||
- { date: "13.04.17:", desc: "Switch to official mono repository." }
|
||||
- { date: "30.09.16:", desc: "Fix umask" }
|
||||
- { date: "23.09.16:", desc: "Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable" }
|
||||
- { date: "15.09.16:", desc: "Add libcurl3 package." }
|
||||
- { date: "09.09.16:", desc: "Add layer badges to README." }
|
||||
- { date: "27.08.16:", desc: "Add badges to README." }
|
||||
- { date: "20.07.16:", desc: "Rebase to xenial." }
|
||||
- { date: "31.08.15:", desc: "Cleanup, changed sources to fetch binarys from. also a new baseimage." }
|
||||
- {date: "09.01.25:", desc: "Fix rootless entrypoint."}
|
||||
- {date: "23.12.24:", desc: "Rebase Alpine 3.21."}
|
||||
- {date: "31.05.24:", desc: "Rebase Alpine 3.20."}
|
||||
- {date: "12.01.24:", desc: "Update download url."}
|
||||
- {date: "30.12.23:", desc: "Rebase master branch to Alpine 3.19."}
|
||||
- {date: "15.02.23:", desc: "Rebase master branch to Jammy."}
|
||||
- {date: "19.12.22:", desc: "Rebase develop branch Alpine 3.17."}
|
||||
- {date: "24.11.22:", desc: "Bump develop branch to v4, rebase to Alpine 3.16."}
|
||||
- {date: "03.08.22:", desc: "Deprecate armhf."}
|
||||
- {date: "02.08.22:", desc: "Add armhf deprecation warning."}
|
||||
- {date: "28.04.22:", desc: "Rebase master branch to mono 6.12 base (focal)."}
|
||||
- {date: "20.02.22:", desc: "Rebase develop branch to Alpine, deprecate develop-alpine branch."}
|
||||
- {date: "28.12.21:", desc: "Add develop-alpine branch."}
|
||||
- {date: "11.05.21:", desc: "Make the paths clearer to the user."}
|
||||
- {date: "10.03.21:", desc: "Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update."}
|
||||
- {date: "18.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information."}
|
||||
- {date: "05.04.20:", desc: "Move app to /app."}
|
||||
- {date: "01.08.19:", desc: "Rebase to Linuxserver LTS mono version."}
|
||||
- {date: "13.06.19:", desc: "Add env variable for setting umask."}
|
||||
- {date: "10.05.19:", desc: "Rebase to Bionic."}
|
||||
- {date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."}
|
||||
- {date: "01.02.19:", desc: "Multi arch images and pipeline build logic"}
|
||||
- {date: "15.12.17:", desc: "Fix continuation lines."}
|
||||
- {date: "12.07.17:", desc: "Add inspect commands to README, move to jenkins build and push."}
|
||||
- {date: "17.04.17:", desc: "Switch to using inhouse mono baseimage, adds python also."}
|
||||
- {date: "14.04.17:", desc: "Change to mount /etc/localtime in README, thanks cbgj."}
|
||||
- {date: "13.04.17:", desc: "Switch to official mono repository."}
|
||||
- {date: "30.09.16:", desc: "Fix umask"}
|
||||
- {date: "23.09.16:", desc: "Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable"}
|
||||
- {date: "15.09.16:", desc: "Add libcurl3 package."}
|
||||
- {date: "09.09.16:", desc: "Add layer badges to README."}
|
||||
- {date: "27.08.16:", desc: "Add badges to README."}
|
||||
- {date: "20.07.16:", desc: "Rebase to xenial."}
|
||||
- {date: "31.08.15:", desc: "Cleanup, changed sources to fetch binarys from. also a new baseimage."}
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
|
||||
mkdir -p /run/sonarr-temp
|
||||
|
||||
# permissions
|
||||
lsiown -R abc:abc \
|
||||
/config \
|
||||
/run/sonarr-temp
|
||||
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
|
||||
lsiown -R abc:abc \
|
||||
/config \
|
||||
/run/sonarr-temp
|
||||
fi
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
exec \
|
||||
s6-notifyoncheck -d -n 300 -w 1000 \
|
||||
cd /app/sonarr/bin s6-setuidgid abc /app/sonarr/bin/Sonarr \
|
||||
-nobrowser -data=/config
|
||||
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
|
||||
exec \
|
||||
s6-notifyoncheck -d -n 300 -w 1000 \
|
||||
cd /app/sonarr/bin s6-setuidgid abc /app/sonarr/bin/Sonarr \
|
||||
-nobrowser -data=/config
|
||||
else
|
||||
exec \
|
||||
s6-notifyoncheck -d -n 300 -w 1000 \
|
||||
cd /app/sonarr/bin /app/sonarr/bin/Sonarr \
|
||||
-nobrowser -data=/config
|
||||
fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue