Compare commits
18 Commits
14.3.6.992
...
14.3.9.992
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0bd08d681 | ||
|
|
31fd25b76e | ||
|
|
f602e3f3de | ||
|
|
404387d1bf | ||
|
|
b43a38d223 | ||
|
|
7a5e9ce7a8 | ||
|
|
9a9a5ace5f | ||
|
|
0e9d1cd2a7 | ||
|
|
388c14d39f | ||
|
|
05353a4ffa | ||
|
|
f403791b9b | ||
|
|
8957575e62 | ||
|
|
51cd1d2cb9 | ||
|
|
42c5efa42d | ||
|
|
88a3d3fffb | ||
|
|
04b7ad8614 | ||
|
|
fa2c992f99 | ||
|
|
7b96dd8081 |
121
Jenkinsfile
vendored
121
Jenkinsfile
vendored
@@ -16,6 +16,7 @@ pipeline {
|
|||||||
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||||
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
||||||
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
||||||
|
SCARF_TOKEN=credentials('scarf_api_key')
|
||||||
CONTAINER_NAME = 'qbittorrent'
|
CONTAINER_NAME = 'qbittorrent'
|
||||||
BUILD_VERSION_ARG = 'QBITTORRENT_VERSION'
|
BUILD_VERSION_ARG = 'QBITTORRENT_VERSION'
|
||||||
LS_USER = 'linuxserver'
|
LS_USER = 'linuxserver'
|
||||||
@@ -116,6 +117,23 @@ pipeline {
|
|||||||
env.EXT_RELEASE_CLEAN = sh(
|
env.EXT_RELEASE_CLEAN = sh(
|
||||||
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
|
|
||||||
|
env.SEMVER = (new Date()).format('YYYY.MM.dd')
|
||||||
|
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/
|
||||||
|
if (semver.find()) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||||
|
} else {
|
||||||
|
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/
|
||||||
|
if (semver.find()) {
|
||||||
|
if (semver[0][3]) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||||
|
} else if (!semver[0][3] && !semver[0][4]) {
|
||||||
|
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println("SEMVER: ${env.SEMVER}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,6 +148,7 @@ pipeline {
|
|||||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||||
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
} else {
|
} else {
|
||||||
@@ -152,6 +171,7 @@ pipeline {
|
|||||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||||
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + 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-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + 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
|
||||||
} else {
|
} else {
|
||||||
@@ -174,6 +194,7 @@ pipeline {
|
|||||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
||||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||||
|
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||||
} else {
|
} else {
|
||||||
@@ -369,13 +390,57 @@ pipeline {
|
|||||||
"visibility":"public"}' '''
|
"visibility":"public"}' '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* #######################
|
||||||
|
Scarf.sh package registry
|
||||||
|
####################### */
|
||||||
|
// Add package to Scarf.sh and set permissions
|
||||||
|
stage("Scarf.sh package registry"){
|
||||||
|
when {
|
||||||
|
branch "master"
|
||||||
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
|
}
|
||||||
|
steps{
|
||||||
|
sh '''#! /bin/bash
|
||||||
|
set -e
|
||||||
|
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/qbittorrent") | .uuid')
|
||||||
|
if [ -z "${PACKAGE_UUID}" ]; then
|
||||||
|
echo "Adding package to Scarf.sh"
|
||||||
|
PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \
|
||||||
|
-H "Authorization: Bearer ${SCARF_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"name":"linuxserver/qbittorrent",\
|
||||||
|
"shortDescription":"example description",\
|
||||||
|
"libraryType":"docker",\
|
||||||
|
"website":"https://github.com/linuxserver/docker-qbittorrent",\
|
||||||
|
"backendUrl":"https://ghcr.io/linuxserver/qbittorrent",\
|
||||||
|
"publicUrl":"https://lscr.io/linuxserver/qbittorrent"}' \
|
||||||
|
| jq -r .uuid)
|
||||||
|
else
|
||||||
|
echo "Package already exists on Scarf.sh"
|
||||||
|
fi
|
||||||
|
echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}"
|
||||||
|
curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \
|
||||||
|
-H "Authorization: Bearer ${SCARF_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '[{"userQuery":"Spad","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"roxedus","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"nemchik","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"driz","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"aptalca","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"saarg","permissionLevel":"admin"},\
|
||||||
|
{"userQuery":"Stark","permissionLevel":"admin"}]'
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
/* ###############
|
/* ###############
|
||||||
Build Container
|
Build Container
|
||||||
############### */
|
############### */
|
||||||
// Build Docker container for push to LS Repo
|
// Build Docker container for push to LS Repo
|
||||||
stage('Build-Single') {
|
stage('Build-Single') {
|
||||||
when {
|
when {
|
||||||
environment name: 'MULTIARCH', value: 'false'
|
expression {
|
||||||
|
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
||||||
|
}
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
@@ -400,7 +465,10 @@ pipeline {
|
|||||||
// Build MultiArch Docker containers for push to LS Repo
|
// Build MultiArch Docker containers for push to LS Repo
|
||||||
stage('Build-Multi') {
|
stage('Build-Multi') {
|
||||||
when {
|
when {
|
||||||
environment name: 'MULTIARCH', value: 'true'
|
allOf {
|
||||||
|
environment name: 'MULTIARCH', value: 'true'
|
||||||
|
expression { params.PACKAGE_CHECK == 'false' }
|
||||||
|
}
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
parallel {
|
parallel {
|
||||||
@@ -505,7 +573,7 @@ pipeline {
|
|||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
set -e
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
TEMPDIR=$(mktemp -d)
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||||
@@ -566,7 +634,7 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "Packages were updated. Cleaning up the image and exiting."
|
echo "Packages were updated. Cleaning up the image and exiting."
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
docker rmi ${IMAGE}:${META_TAG}
|
||||||
@@ -590,7 +658,7 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
echo "There are no package updates. Cleaning up the image and exiting."
|
echo "There are no package updates. Cleaning up the image and exiting."
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||||
docker rmi ${IMAGE}:amd64-${META_TAG}
|
docker rmi ${IMAGE}:amd64-${META_TAG}
|
||||||
else
|
else
|
||||||
docker rmi ${IMAGE}:${META_TAG}
|
docker rmi ${IMAGE}:${META_TAG}
|
||||||
@@ -665,6 +733,12 @@ pipeline {
|
|||||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||||
usernameVariable: 'DOCKERUSER',
|
usernameVariable: 'DOCKERUSER',
|
||||||
passwordVariable: 'DOCKERPASS'
|
passwordVariable: 'DOCKERPASS'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$class: 'UsernamePasswordMultiBinding',
|
||||||
|
credentialsId: 'Quay.io-Robot',
|
||||||
|
usernameVariable: 'QUAYUSER',
|
||||||
|
passwordVariable: 'QUAYPASS'
|
||||||
]
|
]
|
||||||
]) {
|
]) {
|
||||||
retry(5) {
|
retry(5) {
|
||||||
@@ -673,22 +747,26 @@ pipeline {
|
|||||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
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 ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
|
||||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||||
|
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||||
docker push ${PUSHIMAGE}:latest
|
docker push ${PUSHIMAGE}:latest
|
||||||
docker push ${PUSHIMAGE}:${META_TAG}
|
docker push ${PUSHIMAGE}:${META_TAG}
|
||||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||||
|
docker push ${PUSHIMAGE}:${SEMVER}
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||||
docker rmi \
|
docker rmi \
|
||||||
${DELETEIMAGE}:${META_TAG} \
|
${DELETEIMAGE}:${META_TAG} \
|
||||||
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
||||||
${DELETEIMAGE}:latest || :
|
${DELETEIMAGE}:latest \
|
||||||
|
${DELETEIMAGE}:${SEMVER} || :
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
@@ -707,6 +785,12 @@ pipeline {
|
|||||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||||
usernameVariable: 'DOCKERUSER',
|
usernameVariable: 'DOCKERUSER',
|
||||||
passwordVariable: 'DOCKERPASS'
|
passwordVariable: 'DOCKERPASS'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$class: 'UsernamePasswordMultiBinding',
|
||||||
|
credentialsId: 'Quay.io-Robot',
|
||||||
|
usernameVariable: 'QUAYUSER',
|
||||||
|
passwordVariable: 'QUAYPASS'
|
||||||
]
|
]
|
||||||
]) {
|
]) {
|
||||||
retry(5) {
|
retry(5) {
|
||||||
@@ -715,13 +799,14 @@ pipeline {
|
|||||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||||
|
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||||
if [ "${CI}" == "false" ]; then
|
if [ "${CI}" == "false" ]; then
|
||||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||||
fi
|
fi
|
||||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
|
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||||
@@ -731,6 +816,9 @@ pipeline {
|
|||||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||||
|
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||||
|
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||||
|
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||||
@@ -740,6 +828,9 @@ pipeline {
|
|||||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||||
|
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||||
|
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||||
|
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
||||||
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
||||||
@@ -752,24 +843,32 @@ pipeline {
|
|||||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
||||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
||||||
|
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
|
||||||
|
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
||||||
|
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
||||||
done
|
done
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||||
docker rmi \
|
docker rmi \
|
||||||
${DELETEIMAGE}:amd64-${META_TAG} \
|
${DELETEIMAGE}:amd64-${META_TAG} \
|
||||||
${DELETEIMAGE}:amd64-latest \
|
${DELETEIMAGE}:amd64-latest \
|
||||||
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
|
||||||
|
${DELETEIMAGE}:amd64-${SEMVER} \
|
||||||
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
||||||
${DELETEIMAGE}:arm32v7-latest \
|
${DELETEIMAGE}:arm32v7-latest \
|
||||||
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
||||||
|
${DELETEIMAGE}:arm32v7-${SEMVER} \
|
||||||
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
||||||
${DELETEIMAGE}:arm64v8-latest \
|
${DELETEIMAGE}:arm64v8-latest \
|
||||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \
|
||||||
|
${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
||||||
done
|
done
|
||||||
docker rmi \
|
docker rmi \
|
||||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
||||||
|
|||||||
13
README.md
13
README.md
@@ -33,6 +33,7 @@ Find us at:
|
|||||||
[](https://github.com/linuxserver/docker-qbittorrent/releases)
|
[](https://github.com/linuxserver/docker-qbittorrent/releases)
|
||||||
[](https://github.com/linuxserver/docker-qbittorrent/packages)
|
[](https://github.com/linuxserver/docker-qbittorrent/packages)
|
||||||
[](https://gitlab.com/linuxserver.io/docker-qbittorrent/container_registry)
|
[](https://gitlab.com/linuxserver.io/docker-qbittorrent/container_registry)
|
||||||
|
[](https://quay.io/repository/linuxserver.io/qbittorrent)
|
||||||
[](https://hub.docker.com/r/linuxserver/qbittorrent)
|
[](https://hub.docker.com/r/linuxserver/qbittorrent)
|
||||||
[](https://hub.docker.com/r/linuxserver/qbittorrent)
|
[](https://hub.docker.com/r/linuxserver/qbittorrent)
|
||||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/)
|
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-qbittorrent/job/master/)
|
||||||
@@ -46,7 +47,7 @@ The [Qbittorrent](https://www.qbittorrent.org/) project aims to provide an open-
|
|||||||
|
|
||||||
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||||
|
|
||||||
Simply pulling `ghcr.io/linuxserver/qbittorrent` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
Simply pulling `lscr.io/linuxserver/qbittorrent` 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:
|
The architectures supported by this image are:
|
||||||
|
|
||||||
@@ -103,7 +104,7 @@ Here are some example snippets to help you get started creating a container.
|
|||||||
version: "2.1"
|
version: "2.1"
|
||||||
services:
|
services:
|
||||||
qbittorrent:
|
qbittorrent:
|
||||||
image: ghcr.io/linuxserver/qbittorrent
|
image: lscr.io/linuxserver/qbittorrent
|
||||||
container_name: qbittorrent
|
container_name: qbittorrent
|
||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
@@ -135,7 +136,7 @@ docker run -d \
|
|||||||
-v /path/to/appdata/config:/config \
|
-v /path/to/appdata/config:/config \
|
||||||
-v /path/to/downloads:/downloads \
|
-v /path/to/downloads:/downloads \
|
||||||
--restart unless-stopped \
|
--restart unless-stopped \
|
||||||
ghcr.io/linuxserver/qbittorrent
|
lscr.io/linuxserver/qbittorrent
|
||||||
```
|
```
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
@@ -197,7 +198,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
|
|||||||
* container version number
|
* container version number
|
||||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent`
|
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent`
|
||||||
* image version number
|
* image version number
|
||||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/qbittorrent`
|
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qbittorrent`
|
||||||
|
|
||||||
## Updating Info
|
## Updating Info
|
||||||
|
|
||||||
@@ -215,7 +216,7 @@ Below are the instructions for updating containers:
|
|||||||
|
|
||||||
### Via Docker Run
|
### Via Docker Run
|
||||||
|
|
||||||
* Update the image: `docker pull ghcr.io/linuxserver/qbittorrent`
|
* Update the image: `docker pull lscr.io/linuxserver/qbittorrent`
|
||||||
* Stop the running container: `docker stop qbittorrent`
|
* Stop the running container: `docker stop qbittorrent`
|
||||||
* Delete the container: `docker rm qbittorrent`
|
* Delete the container: `docker rm qbittorrent`
|
||||||
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
|
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
|
||||||
@@ -250,7 +251,7 @@ cd docker-qbittorrent
|
|||||||
docker build \
|
docker build \
|
||||||
--no-cache \
|
--no-cache \
|
||||||
--pull \
|
--pull \
|
||||||
-t ghcr.io/linuxserver/qbittorrent:latest .
|
-t lscr.io/linuxserver/qbittorrent: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 using `multiarch/qemu-user-static`
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
adduser3.118ubuntu2
|
adduser3.118ubuntu2
|
||||||
apt2.0.6
|
apt2.0.6
|
||||||
apt-utils2.0.6
|
apt-utils2.0.6
|
||||||
base-files11ubuntu5.3
|
base-files11ubuntu5.4
|
||||||
base-passwd3.5.47
|
base-passwd3.5.47
|
||||||
bash5.0-6ubuntu1.1
|
bash5.0-6ubuntu1.1
|
||||||
bsdutils1:2.34-0.1ubuntu9.1
|
bsdutils1:2.34-0.1ubuntu9.1
|
||||||
bzip21.0.8-2
|
bzip21.0.8-2
|
||||||
ca-certificates20210119~20.04.1
|
ca-certificates20210119~20.04.2
|
||||||
coreutils8.30-3ubuntu2
|
coreutils8.30-3ubuntu2
|
||||||
curl7.68.0-1ubuntu2.6
|
curl7.68.0-1ubuntu2.7
|
||||||
dash0.5.10.2-6
|
dash0.5.10.2-6
|
||||||
dbus1.12.16-2ubuntu2.1
|
dbus1.12.16-2ubuntu2.1
|
||||||
debconf1.5.73
|
debconf1.5.73
|
||||||
@@ -54,7 +54,7 @@ libcap-ng00.7.9-2.1build1
|
|||||||
libc-bin2.31-0ubuntu9.2
|
libc-bin2.31-0ubuntu9.2
|
||||||
libcom-err21.45.5-2ubuntu1
|
libcom-err21.45.5-2ubuntu1
|
||||||
libcrypt11:4.4.10-10ubuntu4
|
libcrypt11:4.4.10-10ubuntu4
|
||||||
libcurl47.68.0-1ubuntu2.6
|
libcurl47.68.0-1ubuntu2.7
|
||||||
libdb5.35.3.28+dfsg1-0.6ubuntu2
|
libdb5.35.3.28+dfsg1-0.6ubuntu2
|
||||||
libdbus-1-31.12.16-2ubuntu2.1
|
libdbus-1-31.12.16-2ubuntu2.1
|
||||||
libdebconfclient00.251ubuntu1
|
libdebconfclient00.251ubuntu1
|
||||||
@@ -64,14 +64,14 @@ libext2fs21.45.5-2ubuntu1
|
|||||||
libfdisk12.34-0.1ubuntu9.1
|
libfdisk12.34-0.1ubuntu9.1
|
||||||
libffi73.3-4
|
libffi73.3-4
|
||||||
libgcc-s110.3.0-1ubuntu1~20.04
|
libgcc-s110.3.0-1ubuntu1~20.04
|
||||||
libgcrypt201.8.5-5ubuntu1
|
libgcrypt201.8.5-5ubuntu1.1
|
||||||
libgdbm61.18.1-5
|
libgdbm61.18.1-5
|
||||||
libgdbm-compat41.18.1-5
|
libgdbm-compat41.18.1-5
|
||||||
libgeoip11.6.12-6build1
|
libgeoip11.6.12-6build1
|
||||||
libglib2.0-02.64.6-1~ubuntu20.04.4
|
libglib2.0-02.64.6-1~ubuntu20.04.4
|
||||||
libglib2.0-data2.64.6-1~ubuntu20.04.4
|
libglib2.0-data2.64.6-1~ubuntu20.04.4
|
||||||
libgmp102:6.2.0+dfsg-4
|
libgmp102:6.2.0+dfsg-4
|
||||||
libgnutls303.6.13-2ubuntu1.3
|
libgnutls303.6.13-2ubuntu1.6
|
||||||
libgpg-error01.37-1
|
libgpg-error01.37-1
|
||||||
libgssapi3-heimdal7.7.0+dfsg-1ubuntu1
|
libgssapi3-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libgssapi-krb5-21.17-6ubuntu4.1
|
libgssapi-krb5-21.17-6ubuntu4.1
|
||||||
@@ -80,7 +80,7 @@ libheimbase1-heimdal7.7.0+dfsg-1ubuntu1
|
|||||||
libheimntlm0-heimdal7.7.0+dfsg-1ubuntu1
|
libheimntlm0-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libhogweed53.5.1+really3.5.1-2ubuntu0.2
|
libhogweed53.5.1+really3.5.1-2ubuntu0.2
|
||||||
libhx509-5-heimdal7.7.0+dfsg-1ubuntu1
|
libhx509-5-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libicu6666.1-2ubuntu2
|
libicu6666.1-2ubuntu2.1
|
||||||
libidn2-02.2.0-2
|
libidn2-02.2.0-2
|
||||||
libk5crypto31.17-6ubuntu4.1
|
libk5crypto31.17-6ubuntu4.1
|
||||||
libkeyutils11.6-6ubuntu1
|
libkeyutils11.6-6ubuntu1
|
||||||
@@ -103,18 +103,18 @@ libnettle73.5.1+really3.5.1-2ubuntu0.2
|
|||||||
libnghttp2-141.40.0-1build1
|
libnghttp2-141.40.0-1build1
|
||||||
libnpth01.6-1
|
libnpth01.6-1
|
||||||
libp11-kit00.23.20-1ubuntu0.1
|
libp11-kit00.23.20-1ubuntu0.1
|
||||||
libpam0g1.3.1-5ubuntu4.2
|
libpam0g1.3.1-5ubuntu4.3
|
||||||
libpam-modules1.3.1-5ubuntu4.2
|
libpam-modules1.3.1-5ubuntu4.3
|
||||||
libpam-modules-bin1.3.1-5ubuntu4.2
|
libpam-modules-bin1.3.1-5ubuntu4.3
|
||||||
libpam-runtime1.3.1-5ubuntu4.2
|
libpam-runtime1.3.1-5ubuntu4.3
|
||||||
libpcre2-16-010.34-7
|
libpcre2-16-010.34-7
|
||||||
libpcre2-8-010.34-7
|
libpcre2-8-010.34-7
|
||||||
libpcre32:8.39-12build1
|
libpcre32:8.39-12build1
|
||||||
libperl5.305.30.0-9ubuntu0.2
|
libperl5.305.30.0-9ubuntu0.2
|
||||||
libprocps82:3.3.16-1ubuntu2.2
|
libprocps82:3.3.16-1ubuntu2.3
|
||||||
libpsl50.21.0-1ubuntu1
|
libpsl50.21.0-1ubuntu1
|
||||||
libpython3.8-minimal3.8.10-0ubuntu1~20.04
|
libpython3.8-minimal3.8.10-0ubuntu1~20.04.1
|
||||||
libpython3.8-stdlib3.8.10-0ubuntu1~20.04
|
libpython3.8-stdlib3.8.10-0ubuntu1~20.04.1
|
||||||
libpython3-stdlib3.8.2-0ubuntu2
|
libpython3-stdlib3.8.2-0ubuntu2
|
||||||
libqt5core5a5.12.8+dfsg-0ubuntu1
|
libqt5core5a5.12.8+dfsg-0ubuntu1
|
||||||
libqt5dbus55.12.8+dfsg-0ubuntu1
|
libqt5dbus55.12.8+dfsg-0ubuntu1
|
||||||
@@ -135,21 +135,21 @@ libsmartcols12.34-0.1ubuntu9.1
|
|||||||
libsocket6-perl0.29-1build1
|
libsocket6-perl0.29-1build1
|
||||||
libsqlite3-03.31.1-4ubuntu0.2
|
libsqlite3-03.31.1-4ubuntu0.2
|
||||||
libss21.45.5-2ubuntu1
|
libss21.45.5-2ubuntu1
|
||||||
libssh-40.9.3-2ubuntu2.1
|
libssh-40.9.3-2ubuntu2.2
|
||||||
libssl1.11.1.1f-1ubuntu2.4
|
libssl1.11.1.1f-1ubuntu2.9
|
||||||
libstdc++610.3.0-1ubuntu1~20.04
|
libstdc++610.3.0-1ubuntu1~20.04
|
||||||
libsystemd0245.4-4ubuntu3.10
|
libsystemd0245.4-4ubuntu3.13
|
||||||
libtasn1-64.16.0-2
|
libtasn1-64.16.0-2
|
||||||
libtinfo66.2-0ubuntu2
|
libtinfo66.2-0ubuntu2
|
||||||
libtorrent-rasterbar101.2.14+git20210727.ba56dd1e23-1ppa1~20.04
|
libtorrent-rasterbar101.2.14+git20211025.eb4bbfd49c-1ppa1~20.04
|
||||||
libudev1245.4-4ubuntu3.10
|
libudev1245.4-4ubuntu3.13
|
||||||
libunistring20.9.10-2
|
libunistring20.9.10-2
|
||||||
libuuid12.34-0.1ubuntu9.1
|
libuuid12.34-0.1ubuntu9.1
|
||||||
libwind0-heimdal7.7.0+dfsg-1ubuntu1
|
libwind0-heimdal7.7.0+dfsg-1ubuntu1
|
||||||
libxml22.9.10+dfsg-5ubuntu0.20.04.1
|
libxml22.9.10+dfsg-5ubuntu0.20.04.1
|
||||||
libzstd11.4.4+dfsg-3ubuntu0.1
|
libzstd11.4.4+dfsg-3ubuntu0.1
|
||||||
locales2.31-0ubuntu9.2
|
locales2.31-0ubuntu9.2
|
||||||
login1:4.8.1-1ubuntu5.20.04
|
login1:4.8.1-1ubuntu5.20.04.1
|
||||||
logsave1.45.5-2ubuntu1
|
logsave1.45.5-2ubuntu1
|
||||||
lsb-base11.1.0ubuntu2
|
lsb-base11.1.0ubuntu2
|
||||||
mawk1.3.4.20200120-2
|
mawk1.3.4.20200120-2
|
||||||
@@ -158,22 +158,22 @@ mount2.34-0.1ubuntu9.1
|
|||||||
ncurses-base6.2-0ubuntu2
|
ncurses-base6.2-0ubuntu2
|
||||||
ncurses-bin6.2-0ubuntu2
|
ncurses-bin6.2-0ubuntu2
|
||||||
netbase6.1
|
netbase6.1
|
||||||
openssl1.1.1f-1ubuntu2.4
|
openssl1.1.1f-1ubuntu2.9
|
||||||
p7zip16.02+dfsg-7build1
|
p7zip16.02+dfsg-7build1
|
||||||
p7zip-full16.02+dfsg-7build1
|
p7zip-full16.02+dfsg-7build1
|
||||||
passwd1:4.8.1-1ubuntu5.20.04
|
passwd1:4.8.1-1ubuntu5.20.04.1
|
||||||
perl5.30.0-9ubuntu0.2
|
perl5.30.0-9ubuntu0.2
|
||||||
perl-base5.30.0-9ubuntu0.2
|
perl-base5.30.0-9ubuntu0.2
|
||||||
perl-modules-5.305.30.0-9ubuntu0.2
|
perl-modules-5.305.30.0-9ubuntu0.2
|
||||||
pinentry-curses1.1.0-3build1
|
pinentry-curses1.1.0-3build1
|
||||||
procps2:3.3.16-1ubuntu2.2
|
procps2:3.3.16-1ubuntu2.3
|
||||||
publicsuffix20200303.0012-1
|
publicsuffix20200303.0012-1
|
||||||
python33.8.2-0ubuntu2
|
python33.8.2-0ubuntu2
|
||||||
python3.83.8.10-0ubuntu1~20.04
|
python3.83.8.10-0ubuntu1~20.04.1
|
||||||
python3.8-minimal3.8.10-0ubuntu1~20.04
|
python3.8-minimal3.8.10-0ubuntu1~20.04.1
|
||||||
python3-minimal3.8.2-0ubuntu2
|
python3-minimal3.8.2-0ubuntu2
|
||||||
qbittorrent-cli1.7.21116-1
|
qbittorrent-cli1.7.21116-1
|
||||||
qbittorrent-nox1:4.3.6.99~202107121017-7389-3ac8c97e6~ubuntu20.04.1
|
qbittorrent-nox1:4.3.9.99~202110311443-7435-01519b5e7~ubuntu20.04.1
|
||||||
qttranslations5-l10n5.12.8-0ubuntu1
|
qttranslations5-l10n5.12.8-0ubuntu1
|
||||||
readline-common8.0-4
|
readline-common8.0-4
|
||||||
sed4.7-1
|
sed4.7-1
|
||||||
@@ -181,7 +181,7 @@ sensible-utils0.0.12+nmu1
|
|||||||
shared-mime-info1.15-1
|
shared-mime-info1.15-1
|
||||||
sysvinit-utils2.96-2.1ubuntu1
|
sysvinit-utils2.96-2.1ubuntu1
|
||||||
tar1.30+dfsg-7ubuntu0.20.04.1
|
tar1.30+dfsg-7ubuntu0.20.04.1
|
||||||
tzdata2021a-0ubuntu0.20.04
|
tzdata2021e-0ubuntu0.20.04
|
||||||
ubuntu-keyring2020.02.11.4
|
ubuntu-keyring2020.02.11.4
|
||||||
unrar1:5.6.6-2build1
|
unrar1:5.6.6-2build1
|
||||||
unzip6.0-25ubuntu1
|
unzip6.0-25ubuntu1
|
||||||
|
|||||||
Reference in New Issue
Block a user