Compare commits
381
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b43ab9afd | ||
|
|
611e5191be | ||
|
|
20e378d285 | ||
|
|
7c773543e9 | ||
|
|
60d8d32076 | ||
|
|
c93ef87f01 | ||
|
|
47c517ed97 | ||
|
|
16d5e8ab0d | ||
|
|
4f82d6e2bb | ||
|
|
1844cc4f01 | ||
|
|
fb8424716f | ||
|
|
85b90c2c87 | ||
|
|
009e3a4a90 | ||
|
|
ea7d4c5095 | ||
|
|
d7194c1d09 | ||
|
|
84a271f15e | ||
|
|
20da931c0d | ||
|
|
c3779bae05 | ||
|
|
e4882a3737 | ||
|
|
5ead2aa46a | ||
|
|
5d2c312cd3 | ||
|
|
9a08c80218 | ||
|
|
a5a7aad639 | ||
|
|
707cc1fbe3 | ||
|
|
b2fea289e6 | ||
|
|
8c7f8a423b | ||
|
|
a2d0d992b2 | ||
|
|
cdd1def2ac | ||
|
|
dfe827849b | ||
|
|
69ae4d988a | ||
|
|
960f983545 | ||
|
|
ffd910194a | ||
|
|
47aecbd5be | ||
|
|
1d303dd5a5 | ||
|
|
9922d0b682 | ||
|
|
1670822473 | ||
|
|
267d264a73 | ||
|
|
2a5fd14b79 | ||
|
|
75bd7fd0b4 | ||
|
|
3185e26dd4 | ||
|
|
36c63bb2ef | ||
|
|
0e1b8cd911 | ||
|
|
e032f632ea | ||
|
|
b65f647b8a | ||
|
|
5b3d40740d | ||
|
|
e9c3fc9142 | ||
|
|
00a2f9eb08 | ||
|
|
9810b0ef51 | ||
|
|
518f8e04b6 | ||
|
|
5d7c546f6d | ||
|
|
8b51453f19 | ||
|
|
490f4b0847 | ||
|
|
1078f00603 | ||
|
|
0e76787b2e | ||
|
|
71b263e472 | ||
|
|
3b32812490 | ||
|
|
1800e64e7b | ||
|
|
7b2ad14011 | ||
|
|
959f1bd21b | ||
|
|
8f82e9a0a5 | ||
|
|
5607f9a3cf | ||
|
|
6a0c3fca6a | ||
|
|
08d4e7d0ce | ||
|
|
fa6237ba27 | ||
|
|
83a4d2a306 | ||
|
|
e85dbffc8d | ||
|
|
459fce9a1b | ||
|
|
ed8b1f1e9d | ||
|
|
de0b0d748b | ||
|
|
e4adba4c40 | ||
|
|
868467192c | ||
|
|
03a1a9fe4c | ||
|
|
b1c9c47604 | ||
|
|
17ce366f94 | ||
|
|
33b5dc61a8 | ||
|
|
aa677c9a38 | ||
|
|
d979365af2 | ||
|
|
fadc90c6cf | ||
|
|
48cbf9c222 | ||
|
|
e242fb3b85 | ||
|
|
c0f7518a13 | ||
|
|
186ec85dd9 | ||
|
|
0a1d9c4ddd | ||
|
|
d415f41f3a | ||
|
|
0f016e6f5d | ||
|
|
e6764f4ac6 | ||
|
|
8da23c6ebf | ||
|
|
ef3e61b490 | ||
|
|
15dfbb69c7 | ||
|
|
16f27695e5 | ||
|
|
3b1a512a58 | ||
|
|
b7ae87cad2 | ||
|
|
920bbda123 | ||
|
|
4d8cb2c620 | ||
|
|
cb95d59cfc | ||
|
|
9a45fa1e47 | ||
|
|
2a2646ea2b | ||
|
|
4d2b9ed2af | ||
|
|
0654a32401 | ||
|
|
a4106036e3 | ||
|
|
94cc347b91 | ||
|
|
8fc3d9ee46 | ||
|
|
cc9dc2862d | ||
|
|
21a79e98e5 | ||
|
|
07d0df15e6 | ||
|
|
34c1d1d67f | ||
|
|
b4aec9dda4 | ||
|
|
c2ea0fe475 | ||
|
|
271976aed3 | ||
|
|
f7545c3ea7 | ||
|
|
3d78c04b2a | ||
|
|
3d09c0ff0e | ||
|
|
175b1c835b | ||
|
|
91e8043659 | ||
|
|
6521e5711d | ||
|
|
a5ab71af4c | ||
|
|
06b45fbbae | ||
|
|
8b08af4b3a | ||
|
|
a5a43cb556 | ||
|
|
c42810ad56 | ||
|
|
649151c09b | ||
|
|
363ad5566e | ||
|
|
3134f90263 | ||
|
|
b084003137 | ||
|
|
9356ee60a3 | ||
|
|
b18166cbd4 | ||
|
|
a9dff2a2cf | ||
|
|
ee3c3adf32 | ||
|
|
1e56f48d72 | ||
|
|
69d301d8d8 | ||
|
|
e8d5a6ab3b | ||
|
|
2cc5f73441 | ||
|
|
a71291ae6c | ||
|
|
a19d00493a | ||
|
|
09a0d624bc | ||
|
|
f3b721cb05 | ||
|
|
28dd138289 | ||
|
|
013a5beaf6 | ||
|
|
5017d3936f | ||
|
|
b49f12e7ee | ||
|
|
e1688e6733 | ||
|
|
8fad5b7460 | ||
|
|
94659f5de2 | ||
|
|
2195863fb2 | ||
|
|
1116f24c35 | ||
|
|
b4fbabe3bd | ||
|
|
07622b2a5d | ||
|
|
ff9c6d2e92 | ||
|
|
33ccfecbf9 | ||
|
|
004b78b8d8 | ||
|
|
66c8787d79 | ||
|
|
154e7cda78 | ||
|
|
4d1eba0723 | ||
|
|
a48b43b578 | ||
|
|
85b1dc3d3d | ||
|
|
0f78708a6f | ||
|
|
d400424df0 | ||
|
|
274701c310 | ||
|
|
61966916ea | ||
|
|
63edd84f6f | ||
|
|
6ddc719a33 | ||
|
|
7f5088f51e | ||
|
|
8ce4106591 | ||
|
|
d74fc48766 | ||
|
|
959c03a858 | ||
|
|
453c7f902a | ||
|
|
3267bf4f8b | ||
|
|
a6a6dfb97f | ||
|
|
7a66ad85ec | ||
|
|
9f4cfbff85 | ||
|
|
9706cc4d03 | ||
|
|
e9a7a35c9e | ||
|
|
0149614350 | ||
|
|
e0f84cdd07 | ||
|
|
c5abfc077b | ||
|
|
8e7f021a47 | ||
|
|
000e029b03 | ||
|
|
883c3f81ae | ||
|
|
792efab81a | ||
|
|
fa9d1c8ea2 | ||
|
|
bdebe8d7a4 | ||
|
|
a7bcc9a335 | ||
|
|
fdc2b45e8a | ||
|
|
f25fb3b87a | ||
|
|
bd8ea85c91 | ||
|
|
1a93c96a2c | ||
|
|
20cccd1fd9 | ||
|
|
b64d9d5fd0 | ||
|
|
9f4b739207 | ||
|
|
bfd574eaaa | ||
|
|
62996786b7 | ||
|
|
801b26b6be | ||
|
|
66dbf2e291 | ||
|
|
859a961aef | ||
|
|
feae8c9c2c | ||
|
|
eaffe4b67e | ||
|
|
c679e937a4 | ||
|
|
2b824353ab | ||
|
|
bf95f6fad1 | ||
|
|
2928a9bc45 | ||
|
|
cb64ea1ecb | ||
|
|
b6a173206b | ||
|
|
d18b68f2cd | ||
|
|
85291464da | ||
|
|
8b22913b36 | ||
|
|
30157c96e4 | ||
|
|
dbd196dc18 | ||
|
|
f9a45f37bd | ||
|
|
752d12f885 | ||
|
|
9d89905c76 | ||
|
|
afa6db5a34 | ||
|
|
78234f8be4 | ||
|
|
ae8ba32b25 | ||
|
|
cb6a14fb85 | ||
|
|
4a8302c476 | ||
|
|
59fbbfb00f | ||
|
|
ae45e51456 | ||
|
|
488c3d753b | ||
|
|
15d605e28e | ||
|
|
aa03f548a5 | ||
|
|
db1470ece5 | ||
|
|
a9e1eb7d11 | ||
|
|
960567783d | ||
|
|
912f641450 | ||
|
|
d303b1317d | ||
|
|
ae293c8880 | ||
|
|
9cb3faadc0 | ||
|
|
2cfd46dce1 | ||
|
|
8a8449cda9 | ||
|
|
e0bef831ec | ||
|
|
3cbf033cf1 | ||
|
|
3bf2b651d6 | ||
|
|
5a98a3bcbd | ||
|
|
c9e8989885 | ||
|
|
66f045a0c5 | ||
|
|
a90bd77819 | ||
|
|
cb00838aea | ||
|
|
f586c1dee2 | ||
|
|
b1c06b0294 | ||
|
|
ce10c95f67 | ||
|
|
f835e0b7f8 | ||
|
|
478ee950c0 | ||
|
|
237b285c89 | ||
|
|
5d59540d6c | ||
|
|
85cf6f780f | ||
|
|
ddc0e9ce0e | ||
|
|
92365cf2de | ||
|
|
aece1a8937 | ||
|
|
88bb318d56 | ||
|
|
f320f05cd6 | ||
|
|
a24bb0d8b9 | ||
|
|
400f4c26f1 | ||
|
|
cd2552ce2a | ||
|
|
da5b2c50fd | ||
|
|
103ffb7d12 | ||
|
|
aa15c8682b | ||
|
|
f2f8e6f9b1 | ||
|
|
cd08ffb2b5 | ||
|
|
e96ef6d848 | ||
|
|
72ba61fc54 | ||
|
|
9910f5f282 | ||
|
|
a530f53059 | ||
|
|
7e9080c059 | ||
|
|
4d2142ccdc | ||
|
|
d98cc96b44 | ||
|
|
520d0fce6a | ||
|
|
c7ca960685 | ||
|
|
678022a72e | ||
|
|
3f6d309d80 | ||
|
|
43c1c77dfd | ||
|
|
534b9a7a88 | ||
|
|
17aec3dbf1 | ||
|
|
a71046d34c | ||
|
|
3b09082ce2 | ||
|
|
aefefc88aa | ||
|
|
8bc3c18128 | ||
|
|
718fdfd0ec | ||
|
|
d792d2d323 | ||
|
|
368b3df136 | ||
|
|
bc9b601144 | ||
|
|
d680a9d0e2 | ||
|
|
25b0fd8606 | ||
|
|
4b87c04fac | ||
|
|
6eafd96f2f | ||
|
|
b21bdec711 | ||
|
|
b5736bb12a | ||
|
|
b3601ffc01 | ||
|
|
02dc6a16fa | ||
|
|
f4dbddeb4b | ||
|
|
e47e79801b | ||
|
|
46d7e3a221 | ||
|
|
34fb5897af | ||
|
|
1cd8c66131 | ||
|
|
262fad1c50 | ||
|
|
e9bbad1193 | ||
|
|
404ab4b551 | ||
|
|
99f2f154d5 | ||
|
|
92546ff830 | ||
|
|
e50d6cae43 | ||
|
|
ceb192e9e4 | ||
|
|
6bc404ce26 | ||
|
|
e512705769 | ||
|
|
719c7f7363 | ||
|
|
3fd2c6f545 | ||
|
|
68a50f9a6b | ||
|
|
ebea843010 | ||
|
|
87ca0c66d5 | ||
|
|
1d53de44f0 | ||
|
|
b803ecca4d | ||
|
|
763a1bbebf | ||
|
|
9b1fef364b | ||
|
|
dcedab9ee6 | ||
|
|
5fa2e3c7c2 | ||
|
|
7b9330fa99 | ||
|
|
973ce9335e | ||
|
|
b4f7614677 | ||
|
|
5eaa88e5d6 | ||
|
|
bd6136e12f | ||
|
|
32953e5ed2 | ||
|
|
273077ddd7 | ||
|
|
63f815bf25 | ||
|
|
8333572eae | ||
|
|
66baf5fd4e | ||
|
|
faf6fcd9b3 | ||
|
|
ccdbc0d1fc | ||
|
|
8b4c553f3d | ||
|
|
be04065f0e | ||
|
|
fdb433e87f | ||
|
|
215efd2683 | ||
|
|
fe43937cdf | ||
|
|
a50098880d | ||
|
|
58ff104718 | ||
|
|
21a878c5bd | ||
|
|
85bf67cb5f | ||
|
|
c7fae073c6 | ||
|
|
758ccc1e9a | ||
|
|
6c170cc8bf | ||
|
|
c344c0e7bb | ||
|
|
03bb57a915 | ||
|
|
368e3c2828 | ||
|
|
4ce6db323d | ||
|
|
72aee7d2df | ||
|
|
2a8b9fb145 | ||
|
|
4ed02aba6d | ||
|
|
1d213f19e8 | ||
|
|
f12a86f620 | ||
|
|
56f374f59a | ||
|
|
bd63218ebe | ||
|
|
6265517e19 | ||
|
|
7f13e9c443 | ||
|
|
d926aee5e3 | ||
|
|
5ac25f7d08 | ||
|
|
3286b4d1fc | ||
|
|
f92bbc6011 | ||
|
|
7aeb6a3e34 | ||
|
|
421e722315 | ||
|
|
3c1cdfbb66 | ||
|
|
98893cebc9 | ||
|
|
f4b889dc7c | ||
|
|
b612cd22f0 | ||
|
|
053b1ba5a8 | ||
|
|
ef3efdc5bc | ||
|
|
55a4c014f3 | ||
|
|
6add88a07a | ||
|
|
d79b2c963a | ||
|
|
6de658a24b | ||
|
|
c514b9c7ff | ||
|
|
6e73b38915 | ||
|
|
8fb719df38 | ||
|
|
f7951c52ef | ||
|
|
27f878f932 | ||
|
|
87041b87f8 | ||
|
|
1281cb7048 | ||
|
|
d59e06317d | ||
|
|
5df31b5700 | ||
|
|
fcb52a9093 | ||
|
|
501d213242 | ||
|
|
d659263231 | ||
|
|
b34e11688a | ||
|
|
dbf0b36f49 | ||
|
|
476d98f2e3 |
@@ -24,7 +24,7 @@
|
||||
## Readme
|
||||
|
||||
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit.
|
||||
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nzbhydra2/edit/dev/readme-vars.yml).
|
||||
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-nzbhydra2/edit/master/readme-vars.yml).
|
||||
|
||||
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
|
||||
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-nzbhydra2)
|
||||
@@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
||||
|
||||
## Update the changelog
|
||||
|
||||
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nzbhydra2/tree/dev/root), add an entry to the changelog
|
||||
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-nzbhydra2/tree/master/root), add an entry to the changelog
|
||||
|
||||
```yml
|
||||
changelogs:
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
------------------------------
|
||||
|
||||
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-nzbhydra2/blob/dev/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
|
||||
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-nzbhydra2/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
|
||||
|
||||
------------------------------
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
pull_request_review:
|
||||
types: [submitted,edited,dismissed]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
manage-project:
|
||||
permissions:
|
||||
|
||||
@@ -4,6 +4,9 @@ on:
|
||||
- cron: '15 8 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
permissions:
|
||||
|
||||
@@ -3,32 +3,35 @@ name: External Trigger Main
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
external-trigger-dev:
|
||||
external-trigger-master:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: External Trigger
|
||||
if: github.ref == 'refs/heads/dev'
|
||||
if: github.ref == 'refs/heads/master'
|
||||
env:
|
||||
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
|
||||
run: |
|
||||
printf "# External trigger for docker-nzbhydra2\n\n" >> $GITHUB_STEP_SUMMARY
|
||||
if grep -q "^nzbhydra2_dev_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
if grep -q "^nzbhydra2_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nzbhydra2_dev_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
|
||||
elif grep -q "^nzbhydra2_dev" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nzbhydra2_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
|
||||
elif grep -q "^nzbhydra2_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nzbhydra2_dev\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`nzbhydra2_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
|
||||
exit 0
|
||||
fi
|
||||
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> External trigger running off of dev branch. To disable this trigger, add \`nzbhydra2_dev\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
|
||||
echo "> External trigger running off of master branch. To disable this trigger, add \`nzbhydra2_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
|
||||
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
|
||||
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases" | jq -r '.[0] | .tag_name')
|
||||
echo "Type is \`github_devel\`" >> $GITHUB_STEP_SUMMARY
|
||||
if grep -q "^nzbhydra2_dev_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
|
||||
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases/latest" | jq -r '. | .tag_name')
|
||||
echo "Type is \`github_stable\`" >> $GITHUB_STEP_SUMMARY
|
||||
if grep -q "^nzbhydra2_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
|
||||
@@ -36,18 +39,18 @@ jobs:
|
||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
|
||||
FAILURE_REASON="Can't retrieve external version for nzbhydra2 branch dev"
|
||||
FAILURE_REASON="Can't retrieve external version for nzbhydra2 branch master"
|
||||
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-nzbhydra2/actions/runs/${{ github.run_id }}"
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
exit 1
|
||||
fi
|
||||
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
||||
echo "External version: \`${EXT_RELEASE}\`" >> $GITHUB_STEP_SUMMARY
|
||||
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
|
||||
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
|
||||
image="linuxserver/nzbhydra2"
|
||||
tag="dev"
|
||||
tag="latest"
|
||||
token=$(curl -sX GET \
|
||||
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fnzbhydra2%3Apull" \
|
||||
| jq -r '.token')
|
||||
@@ -93,35 +96,35 @@ jobs:
|
||||
if [ -z "${IMAGE_VERSION}" ]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
|
||||
FAILURE_REASON="Can't retrieve last pushed version for nzbhydra2 tag dev"
|
||||
FAILURE_REASON="Can't retrieve last pushed version for nzbhydra2 tag latest"
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
|
||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
exit 1
|
||||
fi
|
||||
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
|
||||
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
|
||||
echo "Version \`${EXT_RELEASE}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
|
||||
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
|
||||
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
|
||||
exit 0
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/dev/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
|
||||
exit 0
|
||||
else
|
||||
if [[ "${artifacts_found}" == "false" ]]; then
|
||||
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
|
||||
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
|
||||
FAILURE_REASON="New version ${EXT_RELEASE} for nzbhydra2 tag dev is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
|
||||
FAILURE_REASON="New version ${EXT_RELEASE} for nzbhydra2 tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
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
|
||||
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
|
||||
if [[ "${artifacts_found}" == "true" ]]; then
|
||||
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
|
||||
fi
|
||||
response=$(curl -iX POST \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/dev/buildWithParameters?PACKAGE_CHECK=false \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/master/buildWithParameters?PACKAGE_CHECK=false \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
|
||||
@@ -136,7 +139,7 @@ jobs:
|
||||
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||
--data-urlencode "Submit=Submit"
|
||||
echo "**** Notifying Discord ****"
|
||||
TRIGGER_REASON="A version change was detected for nzbhydra2 tag dev. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
|
||||
TRIGGER_REASON="A version change was detected for nzbhydra2 tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
|
||||
@@ -5,6 +5,9 @@ on:
|
||||
- cron: '37 * * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
external-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -2,12 +2,18 @@ name: Greetings
|
||||
|
||||
on: [pull_request_target, issues]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/first-interaction@v1
|
||||
with:
|
||||
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
|
||||
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nzbhydra2/blob/dev/.github/PULL_REQUEST_TEMPLATE.md)!'
|
||||
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-nzbhydra2/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -5,6 +5,9 @@ on:
|
||||
- cron: '57 21 * * 3'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
package-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
+2
-2
@@ -22,8 +22,8 @@ RUN \
|
||||
unzip && \
|
||||
echo "**** install nzbhydra2 ****" && \
|
||||
if [ -z ${NZBHYDRA2_RELEASE+x} ]; then \
|
||||
NZBHYDRA2_RELEASE=$(curl -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases" \
|
||||
| jq -r '.[0] | .tag_name'); \
|
||||
NZBHYDRA2_RELEASE=$(curl -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases/latest" \
|
||||
| jq -r .tag_name); \
|
||||
fi && \
|
||||
NZBHYDRA2_VER=${NZBHYDRA2_RELEASE#v} && \
|
||||
curl -o \
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@@ -22,8 +22,8 @@ RUN \
|
||||
unzip && \
|
||||
echo "**** install nzbhydra2 ****" && \
|
||||
if [ -z ${NZBHYDRA2_RELEASE+x} ]; then \
|
||||
NZBHYDRA2_RELEASE=$(curl -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases" \
|
||||
| jq -r '.[0] | .tag_name'); \
|
||||
NZBHYDRA2_RELEASE=$(curl -sX GET "https://api.github.com/repos/theotherp/nzbhydra2/releases/latest" \
|
||||
| jq -r .tag_name); \
|
||||
fi && \
|
||||
NZBHYDRA2_VER=${NZBHYDRA2_RELEASE#v} && \
|
||||
curl -o \
|
||||
|
||||
Vendored
+250
-189
@@ -19,7 +19,7 @@ pipeline {
|
||||
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
|
||||
QUAYIO_API_TOKEN=credentials('quayio-repo-api-token')
|
||||
GIT_SIGNING_KEY=credentials('484fbca6-9a4f-455e-b9e3-97ac98785f5f')
|
||||
EXT_GIT_BRANCH = 'develop'
|
||||
EXT_GIT_BRANCH = 'master'
|
||||
EXT_USER = 'theotherp'
|
||||
EXT_REPO = 'nzbhydra2'
|
||||
BUILD_VERSION_ARG = 'NZBHYDRA2_RELEASE'
|
||||
@@ -78,8 +78,10 @@ pipeline {
|
||||
'''
|
||||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
env.CI_TEST_ATTEMPTED = ''
|
||||
env.PUSH_ATTEMPTED = ''
|
||||
env.LS_RELEASE = sh(
|
||||
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:dev 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
returnStdout: true).trim()
|
||||
env.LS_RELEASE_NOTES = sh(
|
||||
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
||||
@@ -97,7 +99,11 @@ pipeline {
|
||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
|
||||
env.PULL_REQUEST = env.CHANGE_ID
|
||||
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./root/donate.txt'
|
||||
if ( env.SYFT_IMAGE_TAG == null ) {
|
||||
env.SYFT_IMAGE_TAG = 'latest'
|
||||
}
|
||||
}
|
||||
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
|
||||
sh '''#! /bin/bash
|
||||
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
|
||||
script{
|
||||
@@ -108,7 +114,7 @@ pipeline {
|
||||
script{
|
||||
env.LS_TAG_NUMBER = sh(
|
||||
script: '''#! /bin/bash
|
||||
tagsha=$(git rev-list -n 1 dev-${LS_RELEASE} 2>/dev/null)
|
||||
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null)
|
||||
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
|
||||
echo ${LS_RELEASE_NUMBER}
|
||||
elif [ -z "${GIT_COMMIT}" ]; then
|
||||
@@ -141,23 +147,23 @@ pipeline {
|
||||
/* ########################
|
||||
External Release Tagging
|
||||
######################## */
|
||||
// If this is a devel github release use the first in an array from github to determine the ext tag
|
||||
stage("Set ENV github_devel"){
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: '''curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases | jq -r '.[0] | .tag_name' ''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
// If this is a stable github release use the latest endpoint from github to determine the ext tag
|
||||
stage("Set ENV github_stable"){
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: '''curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a stable or devel github release generate the link for the build message
|
||||
stage("Set ENV github_link"){
|
||||
steps{
|
||||
script{
|
||||
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
|
||||
}
|
||||
}
|
||||
steps{
|
||||
script{
|
||||
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sanitize the release tag and strip illegal docker or github characters
|
||||
stage("Sanitize tag"){
|
||||
@@ -193,10 +199,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a dev build use live docker endpoints
|
||||
// If this is a master build use live docker endpoints
|
||||
stage("Set ENV live build"){
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
@@ -206,21 +212,22 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-dev-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-dev-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
} else {
|
||||
env.CI_TAGS = 'dev-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.META_TAG = 'dev-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.EXT_RELEASE_TAG = 'dev-version-' + env.EXT_RELEASE_CLEAN
|
||||
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'
|
||||
env.CITEST_IMAGETAG = 'latest'
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a dev build use dev docker endpoints
|
||||
stage("Set ENV dev build"){
|
||||
when {
|
||||
not {branch "dev"}
|
||||
not {branch "master"}
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
@@ -230,15 +237,16 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-dev-' + 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 + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
} else {
|
||||
env.CI_TAGS = 'dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
}
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.META_TAG = 'dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.EXT_RELEASE_TAG = 'dev-version-' + env.EXT_RELEASE_CLEAN
|
||||
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'
|
||||
env.CITEST_IMAGETAG = 'develop'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -254,16 +262,17 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
} else {
|
||||
env.CI_TAGS = 'dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
}
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.META_TAG = 'dev-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.EXT_RELEASE_TAG = 'dev-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
|
||||
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
||||
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
|
||||
env.CITEST_IMAGETAG = 'develop'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -286,7 +295,7 @@ pipeline {
|
||||
-v ${WORKSPACE}:/mnt \
|
||||
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
|
||||
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
|
||||
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
||||
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
|
||||
apk add --no-cache python3 && \
|
||||
python3 -m venv /lsiopy && \
|
||||
pip install --no-cache-dir -U pip && \
|
||||
@@ -298,7 +307,7 @@ pipeline {
|
||||
// Use helper containers to render templated files
|
||||
stage('Update-Templates') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
expression {
|
||||
env.CONTAINER_NAME != null
|
||||
@@ -310,24 +319,24 @@ pipeline {
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||
# Cloned repo paths for templating:
|
||||
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch dev of ${LS_USER}/${LS_REPO} for running the jenkins builder on
|
||||
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch dev of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
|
||||
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch master of ${LS_USER}/${LS_REPO} for running the jenkins builder on
|
||||
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch master of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
|
||||
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
|
||||
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
|
||||
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
|
||||
git clone --branch dev --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
|
||||
echo "Starting Stage 1 - Jenkinsfile update"
|
||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||
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 dev
|
||||
git checkout -f master
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
git add Jenkinsfile
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
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 Jenkinsfile and exiting build, new one will trigger based on commit"
|
||||
rm -Rf ${TEMPDIR}
|
||||
@@ -346,13 +355,13 @@ pipeline {
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f dev
|
||||
git checkout -f master
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
done
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
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 "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
|
||||
rm -Rf ${TEMPDIR}
|
||||
@@ -367,20 +376,20 @@ pipeline {
|
||||
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/d2
|
||||
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:dev
|
||||
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}-dev.d2\\")" readme-vars.yml
|
||||
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 dev
|
||||
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 dev
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
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}
|
||||
@@ -397,7 +406,7 @@ pipeline {
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f dev
|
||||
git checkout -f master
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
|
||||
@@ -410,8 +419,8 @@ pipeline {
|
||||
fi
|
||||
git add readme-vars.yml ${TEMPLATED_FILES}
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
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}
|
||||
@@ -512,7 +521,7 @@ pipeline {
|
||||
// Exit the build if the Templated files were just updated
|
||||
stage('Template-exit') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'FILES_UPDATED', value: 'true'
|
||||
expression {
|
||||
@@ -525,10 +534,10 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a dev build check the S6 service file perms
|
||||
// If this is a master build check the S6 service file perms
|
||||
stage("Check S6 Service file Permissions"){
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
@@ -621,13 +630,16 @@ pipeline {
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
declare -A pids
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
pids[$!]="$i"
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
for p in "${!pids[@]}"; do
|
||||
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
@@ -687,13 +699,16 @@ pipeline {
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
declare -A pids
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
pids[$!]="$i"
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
for p in "${!pids[@]}"; do
|
||||
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
@@ -747,12 +762,14 @@ pipeline {
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
|
||||
declare -A pids
|
||||
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
|
||||
for i in "${CACHE[@]}"; do
|
||||
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
|
||||
pids[$!]="$i"
|
||||
done
|
||||
for p in $(jobs -p); do
|
||||
wait "$p" || { echo "job $p failed" >&2; exit 1; }
|
||||
for p in "${!pids[@]}"; do
|
||||
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
|
||||
done
|
||||
fi
|
||||
'''
|
||||
@@ -773,7 +790,7 @@ pipeline {
|
||||
// Take the image we just built and dump package versions for comparison
|
||||
stage('Update-packages') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
@@ -790,20 +807,20 @@ pipeline {
|
||||
docker run --rm \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
-v ${TEMPDIR}:/tmp \
|
||||
ghcr.io/anchore/syft:v1.26.1 \
|
||||
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
|
||||
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
|
||||
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
||||
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
|
||||
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f dev
|
||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
|
||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||
cd ${TEMPDIR}/${LS_REPO}/
|
||||
wait
|
||||
git add package_versions.txt
|
||||
git commit -m 'Bot Updating Package Versions'
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git dev
|
||||
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
|
||||
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Package tag updated, stopping build process"
|
||||
else
|
||||
@@ -821,7 +838,7 @@ pipeline {
|
||||
// Exit the build if the package file was just updated
|
||||
stage('PACKAGE-exit') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'true'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@@ -835,7 +852,7 @@ pipeline {
|
||||
// Exit the build if this is just a package check and there are no changes to push
|
||||
stage('PACKAGECHECK-exit') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'false'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@@ -866,6 +883,7 @@ pipeline {
|
||||
script{
|
||||
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
||||
env.CI_JSON_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/report.json'
|
||||
env.CI_TEST_ATTEMPTED = 'true'
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
@@ -877,7 +895,7 @@ pipeline {
|
||||
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
|
||||
fi
|
||||
fi
|
||||
docker pull ghcr.io/linuxserver/ci:latest
|
||||
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
@@ -889,7 +907,7 @@ pipeline {
|
||||
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
|
||||
-e TAGS=\"${CI_TAGS}\" \
|
||||
-e META_TAG=\"${META_TAG}\" \
|
||||
-e RELEASE_TAG=\"dev\" \
|
||||
-e RELEASE_TAG=\"latest\" \
|
||||
-e PORT=\"${CI_PORT}\" \
|
||||
-e SSL=\"${CI_SSL}\" \
|
||||
-e BASE=\"${DIST_IMAGE}\" \
|
||||
@@ -900,7 +918,10 @@ pipeline {
|
||||
-e WEB_AUTH=\"${CI_AUTH}\" \
|
||||
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
||||
-e NODE_NAME=\"${NODE_NAME}\" \
|
||||
-t ghcr.io/linuxserver/ci:latest \
|
||||
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
|
||||
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
|
||||
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
|
||||
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
|
||||
python3 test_build.py'''
|
||||
}
|
||||
}
|
||||
@@ -915,6 +936,9 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.PUSH_ATTEMPTED = 'true'
|
||||
}
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
@@ -926,9 +950,11 @@ pipeline {
|
||||
CACHEIMAGE=${i}
|
||||
fi
|
||||
done
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:dev -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
fi
|
||||
done
|
||||
'''
|
||||
@@ -942,31 +968,45 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.PUSH_ATTEMPTED = 'true'
|
||||
}
|
||||
retry_backoff(5,5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
|
||||
if [[ "${MANIFESTIMAGE%%/*}" =~ \\. ]]; then
|
||||
MANIFESTIMAGEPLUS="${MANIFESTIMAGE}"
|
||||
else
|
||||
MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
|
||||
fi
|
||||
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-dev -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-dev -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
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}
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
fi
|
||||
done
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:dev ${MANIFESTIMAGE}:amd64-dev ${MANIFESTIMAGE}:arm64v8-dev
|
||||
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}
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
|
||||
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
|
||||
fi
|
||||
done
|
||||
'''
|
||||
@@ -976,7 +1016,7 @@ pipeline {
|
||||
// If this is a public release tag it in the LS Github
|
||||
stage('Github-Tag-Push-Release') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
expression {
|
||||
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
@@ -984,36 +1024,54 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
echo "Pushing New tag for current commit ${META_TAG}"
|
||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||
-d '{"tag":"'${META_TAG}'",\
|
||||
"object": "'${COMMIT_SHA}'",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to dev",\
|
||||
"type": "commit",\
|
||||
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||
echo "Pushing New release for Tag"
|
||||
sh '''#! /bin/bash
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases | jq '.[0] |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
|
||||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "dev",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
|
||||
printf '","draft": false,"prerelease": true}' >> releasebody.json
|
||||
paste -d'\\0' start releasebody.json > releasebody.json.done
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
|
||||
echo "Auto-generating release notes"
|
||||
if [ "$(git tag --points-at HEAD)" != "" ]; then
|
||||
echo "Existing tag points to current commit, suggesting no new LS changes"
|
||||
AUTO_RELEASE_NOTES="No changes"
|
||||
else
|
||||
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
|
||||
-d '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "master"}' \
|
||||
| jq -r '.body' | sed 's|## What.s Changed||')
|
||||
fi
|
||||
echo "Pushing New tag for current commit ${META_TAG}"
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||
-d '{"tag":"'${META_TAG}'",\
|
||||
"object": "'${COMMIT_SHA}'",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
|
||||
"type": "commit",\
|
||||
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
|
||||
echo "Pushing New release for Tag"
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. |.body' > releasebody.json
|
||||
jq -n \
|
||||
--arg tag_name "$META_TAG" \
|
||||
--arg target_commitish "master" \
|
||||
--arg ci_url "${CI_URL:-N/A}" \
|
||||
--arg ls_notes "$AUTO_RELEASE_NOTES" \
|
||||
--arg remote_notes "$(cat releasebody.json)" \
|
||||
'{
|
||||
"tag_name": $tag_name,
|
||||
"target_commitish": $target_commitish,
|
||||
"name": $tag_name,
|
||||
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
|
||||
"draft": false,
|
||||
"prerelease": false }' > releasebody.json.done
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
|
||||
'''
|
||||
}
|
||||
}
|
||||
// Add protection to the release branch
|
||||
stage('Github-Release-Branch-Protection') {
|
||||
when {
|
||||
branch "dev"
|
||||
branch "master"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
echo "Setting up protection for release branch dev"
|
||||
echo "Setting up protection for release branch master"
|
||||
sh '''#! /bin/bash
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/dev/protection \
|
||||
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
|
||||
-d $(jq -c . << EOF
|
||||
{
|
||||
"required_status_checks": null,
|
||||
@@ -1038,98 +1096,13 @@ EOF
|
||||
) '''
|
||||
}
|
||||
}
|
||||
// If this is a Pull request send the CI link as a comment on it
|
||||
stage('Pull Request Comment') {
|
||||
when {
|
||||
not {environment name: 'CHANGE_ID', value: ''}
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
sh '''#! /bin/bash
|
||||
# Function to retrieve JSON data from URL
|
||||
get_json() {
|
||||
local url="$1"
|
||||
local response=$(curl -s "$url")
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to retrieve JSON data from $url"
|
||||
return 1
|
||||
fi
|
||||
local json=$(echo "$response" | jq .)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to parse JSON data from $url"
|
||||
return 1
|
||||
fi
|
||||
echo "$json"
|
||||
}
|
||||
|
||||
build_table() {
|
||||
local data="$1"
|
||||
|
||||
# Get the keys in the JSON data
|
||||
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
|
||||
|
||||
# Check if keys are empty
|
||||
if [ -z "$keys" ]; then
|
||||
echo "JSON report data does not contain any keys or the report does not exist."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Build table header
|
||||
local header="| Tag | Passed |\\n| --- | --- |\\n"
|
||||
|
||||
# Loop through the JSON data to build the table rows
|
||||
local rows=""
|
||||
for build in $keys; do
|
||||
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
|
||||
if [ "$status" = "true" ]; then
|
||||
status="✅"
|
||||
else
|
||||
status="❌"
|
||||
fi
|
||||
local row="| "$build" | "$status" |\\n"
|
||||
rows="${rows}${row}"
|
||||
done
|
||||
|
||||
local table="${header}${rows}"
|
||||
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
|
||||
echo "$escaped_table"
|
||||
}
|
||||
|
||||
if [[ "${CI}" = "true" ]]; then
|
||||
# Retrieve JSON data from URL
|
||||
data=$(get_json "$CI_JSON_URL")
|
||||
# Create table from JSON data
|
||||
table=$(build_table "$data")
|
||||
echo -e "$table"
|
||||
|
||||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
|
||||
else
|
||||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
|
||||
fi
|
||||
'''
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ######################
|
||||
Send status to Discord
|
||||
Comment on PR and Send status to Discord
|
||||
###################### */
|
||||
post {
|
||||
always {
|
||||
sh '''#!/bin/bash
|
||||
rm -rf /config/.ssh/id_sign
|
||||
rm -rf /config/.ssh/id_sign.pub
|
||||
git config --global --unset gpg.format
|
||||
git config --global --unset user.signingkey
|
||||
git config --global --unset commit.gpgsign
|
||||
'''
|
||||
script{
|
||||
script {
|
||||
env.JOB_DATE = sh(
|
||||
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
|
||||
returnStdout: true).trim()
|
||||
@@ -1172,6 +1145,94 @@ EOF
|
||||
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
|
||||
}
|
||||
}
|
||||
script {
|
||||
if (env.GITHUBIMAGE =~ /lspipepr/){
|
||||
if (env.CI_TEST_ATTEMPTED == "true" || env.PUSH_ATTEMPTED == "true"){
|
||||
sh '''#! /bin/bash
|
||||
# Function to retrieve JSON data from URL
|
||||
get_json() {
|
||||
local url="$1"
|
||||
local response=$(curl -s "$url")
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to retrieve JSON data from $url"
|
||||
return 1
|
||||
fi
|
||||
local json=$(echo "$response" | jq .)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to parse JSON data from $url"
|
||||
return 1
|
||||
fi
|
||||
echo "$json"
|
||||
}
|
||||
|
||||
build_table() {
|
||||
local data="$1"
|
||||
|
||||
# Get the keys in the JSON data
|
||||
local keys=$(echo "$data" | jq -r 'to_entries | map(.key) | .[]')
|
||||
|
||||
# Check if keys are empty
|
||||
if [ -z "$keys" ]; then
|
||||
echo "JSON report data does not contain any keys or the report does not exist."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Build table header
|
||||
local header="| Tag | Passed |\\n| --- | --- |\\n"
|
||||
|
||||
# Loop through the JSON data to build the table rows
|
||||
local rows=""
|
||||
for build in $keys; do
|
||||
local status=$(echo "$data" | jq -r ".[\\"$build\\"].test_success")
|
||||
if [ "$status" = "true" ]; then
|
||||
status="✅"
|
||||
else
|
||||
status="❌"
|
||||
fi
|
||||
local row="| "$build" | "$status" |\\n"
|
||||
rows="${rows}${row}"
|
||||
done
|
||||
|
||||
local table="${header}${rows}"
|
||||
local escaped_table=$(echo "$table" | sed 's/\"/\\\\"/g')
|
||||
echo "$escaped_table"
|
||||
}
|
||||
|
||||
if [[ "${CI}" = "true" ]]; then
|
||||
# Retrieve JSON data from URL
|
||||
data=$(get_json "$CI_JSON_URL")
|
||||
# Create table from JSON data
|
||||
table=$(build_table "$data")
|
||||
echo -e "$table"
|
||||
|
||||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR for commit ${COMMIT_SHA:0:7} : \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
|
||||
else
|
||||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR for commit ${COMMIT_SHA:0:7} : \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
|
||||
fi
|
||||
'''
|
||||
} else {
|
||||
sh '''#! /bin/bash
|
||||
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
|
||||
-d "{\\"body\\": \\"I am a bot, the build for PR commit ${COMMIT_SHA:0:7} failed and as a result no CI test was attempted and no images were pushed.\\"}"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
sh '''#!/bin/bash
|
||||
rm -rf /config/.ssh/id_sign
|
||||
rm -rf /config/.ssh/id_sign.pub
|
||||
git config --global --unset gpg.format
|
||||
git config --global --unset user.signingkey
|
||||
git config --global --unset commit.gpgsign
|
||||
'''
|
||||
}
|
||||
cleanup {
|
||||
sh '''#! /bin/bash
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
||||
<!-- Please read https://github.com/linuxserver/docker-nzbhydra2/blob/dev/.github/CONTRIBUTING.md -->
|
||||
<!-- Please read https://github.com/linuxserver/docker-nzbhydra2/blob/master/.github/CONTRIBUTING.md -->
|
||||
[](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://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.")
|
||||
[](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
|
||||
|
||||
@@ -22,7 +21,6 @@ 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://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.
|
||||
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
|
||||
|
||||
@@ -36,10 +34,10 @@ Find us at:
|
||||
[](https://quay.io/repository/linuxserver.io/nzbhydra2)
|
||||
[](https://hub.docker.com/r/linuxserver/nzbhydra2)
|
||||
[](https://hub.docker.com/r/linuxserver/nzbhydra2)
|
||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/dev/)
|
||||
[](https://ci-tests.linuxserver.io/linuxserver/nzbhydra2/dev/index.html)
|
||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-nzbhydra2/job/master/)
|
||||
[](https://ci-tests.linuxserver.io/linuxserver/nzbhydra2/latest/index.html)
|
||||
|
||||
[Nzbhydra2](https://github.com/theotherp/nzbhydra2) is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application [NZBHydra](https://github.com/theotherp/nzbhydra).
|
||||
[Nzbhydra2](https://github.com/theotherp/nzbhydra2) is a meta search application for NZB indexers, the spiritual successor to NZBmegasearcH, and an evolution of the original application [NZBHydra](https://github.com/theotherp/nzbhydra).
|
||||
|
||||
It provides easy access to a number of raw and newznab based indexers.
|
||||
|
||||
@@ -49,7 +47,7 @@ It provides easy access to a number of raw and newznab based indexers.
|
||||
|
||||
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||
|
||||
Simply pulling `lscr.io/linuxserver/nzbhydra2:dev` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
|
||||
Simply pulling `lscr.io/linuxserver/nzbhydra2:latest` 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:
|
||||
|
||||
@@ -57,7 +55,6 @@ The architectures supported by this image are:
|
||||
| :----: | :----: | ---- |
|
||||
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||
| armhf | ❌ | |
|
||||
|
||||
## Version Tags
|
||||
|
||||
@@ -70,14 +67,14 @@ This image provides various versions that are available via tags. Please read th
|
||||
|
||||
## Application Setup
|
||||
|
||||
The web interface is at `<your ip>:5076`, to set up indexers and connections to your nzb download applications.
|
||||
The web interface is at `<your ip>:5076` , to set up indexers and connections to your nzb download applications.
|
||||
|
||||
## 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.
|
||||
>Unless a parameter is flagged 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))
|
||||
|
||||
@@ -85,7 +82,7 @@ To help you get started creating a container from this image you can either use
|
||||
---
|
||||
services:
|
||||
nzbhydra2:
|
||||
image: lscr.io/linuxserver/nzbhydra2:dev
|
||||
image: lscr.io/linuxserver/nzbhydra2:latest
|
||||
container_name: nzbhydra2
|
||||
environment:
|
||||
- PUID=1000
|
||||
@@ -111,7 +108,7 @@ docker run -d \
|
||||
-v /path/to/nzbhydra2/data:/config \
|
||||
-v /path/to/downloads:/downloads `#optional` \
|
||||
--restart unless-stopped \
|
||||
lscr.io/linuxserver/nzbhydra2:dev
|
||||
lscr.io/linuxserver/nzbhydra2:latest
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@@ -191,7 +188,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
|
||||
* Image version number:
|
||||
|
||||
```bash
|
||||
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbhydra2:dev
|
||||
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbhydra2:latest
|
||||
```
|
||||
|
||||
## Updating Info
|
||||
@@ -239,7 +236,7 @@ Below are the instructions for updating containers:
|
||||
* Update the image:
|
||||
|
||||
```bash
|
||||
docker pull lscr.io/linuxserver/nzbhydra2:dev
|
||||
docker pull lscr.io/linuxserver/nzbhydra2:latest
|
||||
```
|
||||
|
||||
* Stop the running container:
|
||||
@@ -276,7 +273,7 @@ cd docker-nzbhydra2
|
||||
docker build \
|
||||
--no-cache \
|
||||
--pull \
|
||||
-t lscr.io/linuxserver/nzbhydra2:dev .
|
||||
-t lscr.io/linuxserver/nzbhydra2:latest .
|
||||
```
|
||||
|
||||
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
|
||||
@@ -289,15 +286,16 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
||||
|
||||
## Versions
|
||||
|
||||
* **18.07.24:** - Rebase to Ubuntu Noble. Remove standalone JRE ([#47](https://github.com/linuxserver/docker-nzbhydra2/pull/47)).
|
||||
* **18.07.24:** - Rebase to Ubuntu Noble. Remove standalone JRE ([#46](https://github.com/linuxserver/docker-nzbhydra2/pull/46)).
|
||||
* **04.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
|
||||
* **22.01.23:** - Update release URL for arch-specific packages.
|
||||
* **20.01.23:** - Update dependencies for v5.
|
||||
* **03.23.22:** - Upgrade JRE to 17, rebase to ubuntu.
|
||||
* **10.12.22:** - Bump master JRE to v17. Default mapIpToHost to false.
|
||||
* **11.09.22:** - Migrate to s6v3.
|
||||
* **03.05.22:** - Rebase to Jammy.
|
||||
* **18.04.22:** - Rebase to Alpine 3.15.
|
||||
* **01.05.20:** - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip.
|
||||
* **29.04.20:** - Include stable releases incrementally with dev releases.
|
||||
* **14.04.20:** - Correct Name, Hydra2 -> Nzbhydra2.
|
||||
* **14.04.20:** - Correct Name, Hydra2 -> NZBHydra2.
|
||||
* **08.01.20:** - Switch to python3.
|
||||
* **05.01.20:** - Add dev tag for prereleases.
|
||||
* **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
|
||||
|
||||
+7
-5
@@ -1,12 +1,13 @@
|
||||
---
|
||||
|
||||
# jenkins variables
|
||||
project_name: docker-nzbhydra2
|
||||
external_type: github_devel
|
||||
release_type: prerelease
|
||||
release_tag: dev
|
||||
ls_branch: dev
|
||||
external_type: github_stable
|
||||
release_type: stable
|
||||
release_tag: latest
|
||||
ls_branch: master
|
||||
repo_vars:
|
||||
- EXT_GIT_BRANCH = 'develop'
|
||||
- EXT_GIT_BRANCH = 'master'
|
||||
- EXT_USER = 'theotherp'
|
||||
- EXT_REPO = 'nzbhydra2'
|
||||
- BUILD_VERSION_ARG = 'NZBHYDRA2_RELEASE'
|
||||
@@ -28,3 +29,4 @@ repo_vars:
|
||||
- CI_WEBPATH='/system/about'
|
||||
sponsor_links:
|
||||
- { name: "NZBHydra 2", url: "https://github.com/theotherp/nzbhydra2#donate" }
|
||||
|
||||
|
||||
+70
-70
@@ -2,40 +2,40 @@ NAME VERSION TYPE
|
||||
adduser 3.137ubuntu1 deb
|
||||
apt 2.8.3 deb
|
||||
apt-utils 2.8.3 deb
|
||||
base-files 13ubuntu10.2 deb
|
||||
base-files 13ubuntu10.4 deb
|
||||
base-passwd 3.6.3build1 deb
|
||||
bash 5.2.21-2ubuntu4 deb
|
||||
bsdutils 1:2.39.3-9ubuntu6.2 deb
|
||||
ca-certificates 20240203 deb
|
||||
bsdutils 1:2.39.3-9ubuntu6.5 deb
|
||||
ca-certificates 20260601~24.04.1 deb
|
||||
catatonit 0.1.7-1 deb
|
||||
coreutils 9.4-3ubuntu6 deb
|
||||
coreutils 9.4-3ubuntu6.2 deb
|
||||
cron 3.0pl1-184ubuntu2 deb
|
||||
cron-daemon-common 3.0pl1-184ubuntu2 deb
|
||||
curl 8.5.0-2ubuntu10.6 deb
|
||||
curl 8.5.0-2ubuntu10.10 deb
|
||||
dash 0.5.12-6ubuntu5 deb
|
||||
debconf 1.5.86ubuntu1 deb
|
||||
debianutils 5.17build1 deb
|
||||
diffutils 1:3.10-1build1 deb
|
||||
dirmngr 2.4.4-2ubuntu17.2 deb
|
||||
dpkg 1.22.6ubuntu6.1 deb
|
||||
dirmngr 2.4.4-2ubuntu17.4 deb
|
||||
dpkg 1.22.6ubuntu6.6 deb
|
||||
e2fsprogs 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||
findutils 4.9.0-5build1 deb
|
||||
gcc-14-base 14.2.0-4ubuntu2~24.04 deb
|
||||
gnupg 2.4.4-2ubuntu17.2 deb
|
||||
gnupg-l10n 2.4.4-2ubuntu17.2 deb
|
||||
gnupg-utils 2.4.4-2ubuntu17.2 deb
|
||||
gpg 2.4.4-2ubuntu17.2 deb
|
||||
gpg-agent 2.4.4-2ubuntu17.2 deb
|
||||
gpg-wks-client 2.4.4-2ubuntu17.2 deb
|
||||
gpgconf 2.4.4-2ubuntu17.2 deb
|
||||
gpgsm 2.4.4-2ubuntu17.2 deb
|
||||
gpgv 2.4.4-2ubuntu17.2 deb
|
||||
gcc-14-base 14.2.0-4ubuntu2~24.04.1 deb
|
||||
gnupg 2.4.4-2ubuntu17.4 deb
|
||||
gnupg-l10n 2.4.4-2ubuntu17.4 deb
|
||||
gnupg-utils 2.4.4-2ubuntu17.4 deb
|
||||
gpg 2.4.4-2ubuntu17.4 deb
|
||||
gpg-agent 2.4.4-2ubuntu17.4 deb
|
||||
gpg-wks-client 2.4.4-2ubuntu17.4 deb
|
||||
gpgconf 2.4.4-2ubuntu17.4 deb
|
||||
gpgsm 2.4.4-2ubuntu17.4 deb
|
||||
gpgv 2.4.4-2ubuntu17.4 deb
|
||||
grep 3.11-4build1 deb
|
||||
gzip 1.12-1ubuntu3 deb
|
||||
gzip 1.12-1ubuntu3.2 deb
|
||||
hostname 3.23+nmu2ubuntu2 deb
|
||||
init-system-helpers 1.66ubuntu1 deb
|
||||
jq 1.7.1-3build1 deb
|
||||
keyboxd 2.4.4-2ubuntu17.2 deb
|
||||
jq 1.7.1-3ubuntu0.24.04.2 deb
|
||||
keyboxd 2.4.4-2ubuntu17.4 deb
|
||||
krb5-locales 1.20.1-6ubuntu2.6 deb
|
||||
libacl1 2.3.2-1build1.1 deb
|
||||
libapt-pkg6.0t64 2.8.3 deb
|
||||
@@ -43,60 +43,60 @@ libassuan0 2.5.6-1build1 deb
|
||||
libattr1 1:2.5.2-1build1.1 deb
|
||||
libaudit-common 1:3.1.2-2.1build1.1 deb
|
||||
libaudit1 1:3.1.2-2.1build1.1 deb
|
||||
libblkid1 2.39.3-9ubuntu6.2 deb
|
||||
libblkid1 2.39.3-9ubuntu6.5 deb
|
||||
libbrotli1 1.1.0-2build2 deb
|
||||
libbsd0 0.12.1-1build1.1 deb
|
||||
libbz2-1.0 1.0.8-5.1build0.1 deb
|
||||
libc-bin 2.39-0ubuntu8.4 deb
|
||||
libc6 2.39-0ubuntu8.4 deb
|
||||
libc-bin 2.39-0ubuntu8.7 deb
|
||||
libc6 2.39-0ubuntu8.7 deb
|
||||
libcap-ng0 0.8.4-2build2 deb
|
||||
libcap2 1:2.66-5ubuntu2.2 deb
|
||||
libcap2 1:2.66-5ubuntu2.4 deb
|
||||
libcom-err2 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||
libcrypt1 1:4.4.36-4build1 deb
|
||||
libcurl4t64 8.5.0-2ubuntu10.6 deb
|
||||
libcurl4t64 8.5.0-2ubuntu10.10 deb
|
||||
libdb5.3t64 5.3.28+dfsg2-7 deb
|
||||
libdebconfclient0 0.271ubuntu3 deb
|
||||
libexpat1 2.6.1-2ubuntu0.3 deb
|
||||
libexpat1 2.6.1-2ubuntu0.4 deb
|
||||
libext2fs2t64 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||
libffi8 3.4.6-1build1 deb
|
||||
libfreetype6 2.13.2+dfsg-1build3 deb
|
||||
libgcc-s1 14.2.0-4ubuntu2~24.04 deb
|
||||
libgcrypt20 1.10.3-2build1 deb
|
||||
libfreetype6 2.13.2+dfsg-1ubuntu0.1 deb
|
||||
libgcc-s1 14.2.0-4ubuntu2~24.04.1 deb
|
||||
libgcrypt20 1.10.3-2ubuntu0.1 deb
|
||||
libgmp10 2:6.3.0+dfsg-2ubuntu6.1 deb
|
||||
libgnutls30t64 3.8.3-1.1ubuntu3.3 deb
|
||||
libgnutls30t64 3.8.3-1.1ubuntu3.6 deb
|
||||
libgpg-error0 1.47-3build2.1 deb
|
||||
libgssapi-krb5-2 1.20.1-6ubuntu2.6 deb
|
||||
libhogweed6t64 3.9.1-2.2build1.1 deb
|
||||
libidn2-0 2.3.7-2build1.1 deb
|
||||
libjq1 1.7.1-3build1 deb
|
||||
libjq1 1.7.1-3ubuntu0.24.04.2 deb
|
||||
libk5crypto3 1.20.1-6ubuntu2.6 deb
|
||||
libkeyutils1 1.6.3-3build1 deb
|
||||
libkrb5-3 1.20.1-6ubuntu2.6 deb
|
||||
libkrb5support0 1.20.1-6ubuntu2.6 deb
|
||||
libksba8 1.6.6-1build1 deb
|
||||
libldap-common 2.6.7+dfsg-1~exp1ubuntu8.2 deb
|
||||
libldap2 2.6.7+dfsg-1~exp1ubuntu8.2 deb
|
||||
libldap-common 2.6.10+dfsg-0ubuntu0.24.04.1 deb
|
||||
libldap2 2.6.10+dfsg-0ubuntu0.24.04.1 deb
|
||||
liblz4-1 1.9.4-1build1.1 deb
|
||||
liblzma5 5.6.1+really5.4.5-1ubuntu0.2 deb
|
||||
liblzma5 5.6.1+really5.4.5-1ubuntu0.3 deb
|
||||
libmd0 1.1.0-2build1.1 deb
|
||||
libmount1 2.39.3-9ubuntu6.2 deb
|
||||
libncursesw6 6.4+20240113-1ubuntu2 deb
|
||||
libmount1 2.39.3-9ubuntu6.5 deb
|
||||
libncursesw6 6.4+20240113-1ubuntu2.1 deb
|
||||
libnettle8t64 3.9.1-2.2build1.1 deb
|
||||
libnghttp2-14 1.59.0-1ubuntu0.2 deb
|
||||
libnghttp2-14 1.59.0-1ubuntu0.4 deb
|
||||
libnpth0t64 1.6-3.1build1 deb
|
||||
libonig5 6.9.9-1build1 deb
|
||||
libp11-kit0 0.25.3-4ubuntu2.1 deb
|
||||
libpam-modules 1.5.3-5ubuntu5.4 deb
|
||||
libpam-modules-bin 1.5.3-5ubuntu5.4 deb
|
||||
libpam-runtime 1.5.3-5ubuntu5.4 deb
|
||||
libpam0g 1.5.3-5ubuntu5.4 deb
|
||||
libpam-modules 1.5.3-5ubuntu5.5 deb
|
||||
libpam-modules-bin 1.5.3-5ubuntu5.5 deb
|
||||
libpam-runtime 1.5.3-5ubuntu5.5 deb
|
||||
libpam0g 1.5.3-5ubuntu5.5 deb
|
||||
libpcre2-8-0 10.42-4ubuntu2.1 deb
|
||||
libpng16-16t64 1.6.43-5build1 deb
|
||||
libpng16-16t64 1.6.43-5ubuntu0.6 deb
|
||||
libproc2-0 2:4.0.4-4ubuntu3.2 deb
|
||||
libpsl5t64 0.21.2-1.1build1 deb
|
||||
libpython3-stdlib 3.12.3-0ubuntu2 deb
|
||||
libpython3.12-minimal 3.12.3-1ubuntu0.7 deb
|
||||
libpython3.12-stdlib 3.12.3-1ubuntu0.7 deb
|
||||
libpython3-stdlib 3.12.3-0ubuntu2.1 deb
|
||||
libpython3.12-minimal 3.12.3-1ubuntu0.15 deb
|
||||
libpython3.12-stdlib 3.12.3-1ubuntu0.15 deb
|
||||
libreadline8t64 8.2-4build1 deb
|
||||
librtmp1 2.4+20151223.gitfa8646d.1-2build7 deb
|
||||
libsasl2-2 2.1.28+dfsg1-5ubuntu3.1 deb
|
||||
@@ -107,49 +107,49 @@ libselinux1 3.5-2ubuntu2.1 deb
|
||||
libsemanage-common 3.5-1build5 deb
|
||||
libsemanage2 3.5-1build5 deb
|
||||
libsepol2 3.5-2build1 deb
|
||||
libsmartcols1 2.39.3-9ubuntu6.2 deb
|
||||
libsqlite3-0 3.45.1-1ubuntu2.3 deb
|
||||
libsmartcols1 2.39.3-9ubuntu6.5 deb
|
||||
libsqlite3-0 3.45.1-1ubuntu2.6 deb
|
||||
libss2 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||
libssh-4 0.10.6-2build2 deb
|
||||
libssl3t64 3.0.13-0ubuntu3.5 deb
|
||||
libstdc++6 14.2.0-4ubuntu2~24.04 deb
|
||||
libsystemd0 255.4-1ubuntu8.8 deb
|
||||
libtasn1-6 4.19.0-3ubuntu0.24.04.1 deb
|
||||
libtinfo6 6.4+20240113-1ubuntu2 deb
|
||||
libudev1 255.4-1ubuntu8.8 deb
|
||||
libssh-4 0.10.6-2ubuntu0.4 deb
|
||||
libssl3t64 3.0.13-0ubuntu3.11 deb
|
||||
libstdc++6 14.2.0-4ubuntu2~24.04.1 deb
|
||||
libsystemd0 255.4-1ubuntu8.16 deb
|
||||
libtasn1-6 4.19.0-3ubuntu0.24.04.2 deb
|
||||
libtinfo6 6.4+20240113-1ubuntu2.1 deb
|
||||
libudev1 255.4-1ubuntu8.16 deb
|
||||
libunistring5 1.1-2build1.1 deb
|
||||
libuuid1 2.39.3-9ubuntu6.2 deb
|
||||
libuuid1 2.39.3-9ubuntu6.5 deb
|
||||
libxxhash0 0.8.2-2build1 deb
|
||||
libzstd1 1.5.5+dfsg2-2build1.1 deb
|
||||
locales 2.39-0ubuntu8.4 deb
|
||||
locales 2.39-0ubuntu8.7 deb
|
||||
login 1:4.13+dfsg1-4ubuntu3.2 deb
|
||||
logsave 1.47.0-2.4~exp1ubuntu4.1 deb
|
||||
mawk 1.3.4.20240123-1build1 deb
|
||||
media-types 10.1.0 deb
|
||||
mount 2.39.3-9ubuntu6.2 deb
|
||||
ncurses-base 6.4+20240113-1ubuntu2 deb
|
||||
ncurses-bin 6.4+20240113-1ubuntu2 deb
|
||||
mount 2.39.3-9ubuntu6.5 deb
|
||||
ncurses-base 6.4+20240113-1ubuntu2.1 deb
|
||||
ncurses-bin 6.4+20240113-1ubuntu2.1 deb
|
||||
netbase 6.4 deb
|
||||
netcat-openbsd 1.226-1ubuntu2 deb
|
||||
openssl 3.0.13-0ubuntu3.5 deb
|
||||
openssl 3.0.13-0ubuntu3.11 deb
|
||||
passwd 1:4.13+dfsg1-4ubuntu3.2 deb
|
||||
perl-base 5.38.2-3.2ubuntu0.1 deb
|
||||
perl-base 5.38.2-3.2ubuntu0.3 deb
|
||||
pinentry-curses 1.2.1-3ubuntu5 deb
|
||||
procps 2:4.0.4-4ubuntu3.2 deb
|
||||
publicsuffix 20231001.0357-0.1 deb
|
||||
python3 3.12.3-0ubuntu2 deb
|
||||
python3-minimal 3.12.3-0ubuntu2 deb
|
||||
python3.12 3.12.3-1ubuntu0.7 deb
|
||||
python3.12-minimal 3.12.3-1ubuntu0.7 deb
|
||||
python3 3.12.3-0ubuntu2.1 deb
|
||||
python3-minimal 3.12.3-0ubuntu2.1 deb
|
||||
python3.12 3.12.3-1ubuntu0.15 deb
|
||||
python3.12-minimal 3.12.3-1ubuntu0.15 deb
|
||||
readline-common 8.2-4build1 deb
|
||||
sed 4.9-2build1 deb
|
||||
sed 4.9-2ubuntu0.24.04.1 deb
|
||||
sensible-utils 0.0.22 deb
|
||||
systemd-standalone-sysusers 255.4-1ubuntu8.8 deb
|
||||
systemd-standalone-sysusers 255.4-1ubuntu8.16 deb
|
||||
sysvinit-utils 3.08-6ubuntu3 deb
|
||||
tar 1.35+dfsg-3build1 deb
|
||||
tzdata 2025b-0ubuntu0.24.04.1 deb
|
||||
tar 1.35+dfsg-3ubuntu0.2 deb
|
||||
tzdata 2026a-0ubuntu0.24.04.1 deb
|
||||
ubuntu-keyring 2023.11.28.1 deb
|
||||
unminimize 0.2.1 deb
|
||||
unzip 6.0-28ubuntu4.1 deb
|
||||
util-linux 2.39.3-9ubuntu6.2 deb
|
||||
util-linux 2.39.3-9ubuntu6.5 deb
|
||||
zlib1g 1:1.3.dfsg-3.1ubuntu2.1 deb
|
||||
|
||||
+10
-8
@@ -5,10 +5,11 @@ project_name: nzbhydra2
|
||||
project_url: "https://github.com/theotherp/nzbhydra2"
|
||||
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png"
|
||||
project_blurb: |
|
||||
[{{ project_name|capitalize }}]({{ project_url }}) is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application [NZBHydra](https://github.com/theotherp/nzbhydra).
|
||||
[{{ project_name|capitalize }}]({{ project_url }}) is a meta search application for NZB indexers, the spiritual successor to NZBmegasearcH, and an evolution of the original application [NZBHydra](https://github.com/theotherp/nzbhydra).
|
||||
|
||||
It provides easy access to a number of raw and newznab based indexers.
|
||||
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
||||
project_categories: "Indexers"
|
||||
# supported architectures
|
||||
available_architectures:
|
||||
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||
@@ -33,10 +34,10 @@ opt_param_volumes:
|
||||
# application setup block
|
||||
app_setup_block_enabled: true
|
||||
app_setup_block: |
|
||||
The web interface is at `<your ip>:5076`, to set up indexers and connections to your nzb download applications.
|
||||
The web interface is at `<your ip>:5076` , to set up indexers and connections to your nzb download applications.
|
||||
# init diagram
|
||||
init_diagram: |
|
||||
"nzbhydra2:dev": {
|
||||
"nzbhydra2:latest": {
|
||||
docker-mods
|
||||
base {
|
||||
fix-attr +\nlegacy cont-init
|
||||
@@ -74,18 +75,19 @@ init_diagram: |
|
||||
Base Images: {
|
||||
"baseimage-ubuntu:noble"
|
||||
}
|
||||
"nzbhydra2:dev" <- Base Images
|
||||
"nzbhydra2:latest" <- Base Images
|
||||
# changelog
|
||||
changelogs:
|
||||
- {date: "18.07.24:", desc: "Rebase to Ubuntu Noble. Remove standalone JRE ([#47](https://github.com/linuxserver/docker-nzbhydra2/pull/47))."}
|
||||
- {date: "18.07.24:", desc: "Rebase to Ubuntu Noble. Remove standalone JRE ([#46](https://github.com/linuxserver/docker-nzbhydra2/pull/46))."}
|
||||
- {date: "04.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"}
|
||||
- {date: "22.01.23:", desc: "Update release URL for arch-specific packages."}
|
||||
- {date: "20.01.23:", desc: "Update dependencies for v5."}
|
||||
- {date: "03.23.22:", desc: "Upgrade JRE to 17, rebase to ubuntu."}
|
||||
- {date: "10.12.22:", desc: "Bump master JRE to v17. Default mapIpToHost to false."}
|
||||
- {date: "11.09.22:", desc: "Migrate to s6v3."}
|
||||
- {date: "03.05.22:", desc: "Rebase to Jammy."}
|
||||
- {date: "18.04.22:", desc: "Rebase to Alpine 3.15."}
|
||||
- {date: "01.05.20:", desc: "Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip."}
|
||||
- {date: "29.04.20:", desc: "Include stable releases incrementally with dev releases."}
|
||||
- {date: "14.04.20:", desc: "Correct Name, Hydra2 -> Nzbhydra2."}
|
||||
- {date: "14.04.20:", desc: "Correct Name, Hydra2 -> NZBHydra2."}
|
||||
- {date: "08.01.20:", desc: "Switch to python3."}
|
||||
- {date: "05.01.20:", desc: "Add dev tag for prereleases."}
|
||||
- {date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."}
|
||||
|
||||
Regular → Executable
Reference in New Issue
Block a user