Compare commits

..

463 Commits

Author SHA1 Message Date
LinuxServer-CI
ad1fc66f24 Bot Updating Package Versions 2024-05-09 02:42:37 +00:00
LinuxServer-CI
2756b83f1a Bot Updating Templated Files 2024-05-09 02:38:01 +00:00
LinuxServer-CI
0f0ffdb963 Bot Updating Package Versions 2024-05-05 03:29:19 +00:00
LinuxServer-CI
24521ed806 Bot Updating Templated Files 2024-05-03 23:29:41 +00:00
LinuxServer-CI
6a77e089ac Bot Updating Package Versions 2024-04-28 01:38:11 +00:00
LinuxServer-CI
2c97cb0e1b Bot Updating Package Versions 2024-04-19 23:30:40 +00:00
LinuxServer-CI
933fb03260 Bot Updating Package Versions 2024-04-16 04:30:09 +00:00
LinuxServer-CI
a51d3e3b20 Bot Updating Package Versions 2024-04-12 23:25:01 +00:00
LinuxServer-CI
1bec010935 Bot Updating Package Versions 2024-04-10 01:34:21 +00:00
LinuxServer-CI
50d88211e5 Bot Updating Package Versions 2024-04-08 19:25:47 +00:00
LinuxServer-CI
1791bb5b3e Bot Updating Package Versions 2024-04-05 23:30:18 +00:00
LinuxServer-CI
d9ada0ceb8 Bot Updating Package Versions 2024-03-28 06:30:50 +00:00
LinuxServer-CI
0ca57bb85c Bot Updating Package Versions 2024-03-22 05:33:55 +00:00
LinuxServer-CI
891d413e35 Bot Updating Package Versions 2024-03-14 05:33:22 +00:00
LinuxServer-CI
687e54a3fe Bot Updating Templated Files 2024-03-14 05:27:47 +00:00
LinuxServer-CI
27e75b9f0d Bot Updating Package Versions 2024-03-10 05:29:25 +00:00
LinuxServer-CI
327faa331f Bot Updating Package Versions 2024-03-03 06:30:02 +00:00
LinuxServer-CI
606c044953 Bot Updating Package Versions 2024-03-03 01:32:32 +00:00
LinuxServer-CI
c43cabc3b9 Bot Updating Package Versions 2024-03-01 23:32:36 +00:00
LinuxServer-CI
bcf07fa873 Bot Updating Package Versions 2024-02-27 06:32:22 +00:00
aptalca
d4325ae151
Merge pull request #287 from linuxserver/develop-test
develop: fix ci screenshot
2024-02-23 19:15:35 -05:00
aptalca
e9cad6858e
fix ci screenshot 2024-02-23 18:55:06 -05:00
LinuxServer-CI
09540b5491 Bot Updating Templated Files 2024-02-23 23:32:54 +00:00
LinuxServer-CI
7581649155 Bot Updating Templated Files 2024-02-23 23:30:08 +00:00
LinuxServer-CI
854ed4e134 Bot Updating Package Versions 2024-02-21 05:30:02 +00:00
LinuxServer-CI
0e6421b020 Bot Updating Package Versions 2024-02-14 01:30:22 +00:00
LinuxServer-CI
4dd21e0b69 Bot Updating Package Versions 2024-02-10 03:27:35 +00:00
LinuxServer-CI
7d3ccd6b47 Bot Updating Package Versions 2024-02-09 23:31:42 +00:00
LinuxServer-CI
4d93f8f5d5 Bot Updating Package Versions 2024-02-07 04:30:02 +00:00
LinuxServer-CI
5425968407 Bot Updating Package Versions 2024-02-01 04:31:53 +00:00
LinuxServer-CI
1a0ced7647 Bot Updating Package Versions 2024-01-27 07:26:38 +00:00
LinuxServer-CI
dce6d63dcb Bot Updating Package Versions 2024-01-23 05:32:10 +00:00
LinuxServer-CI
6ccfcc9a5a Bot Updating Package Versions 2024-01-21 01:43:06 +00:00
LinuxServer-CI
3fd2c85097 Bot Updating Package Versions 2024-01-20 06:32:27 +00:00
LinuxServer-CI
8e39e32bd2 Bot Updating Package Versions 2024-01-19 06:33:05 +00:00
LinuxServer-CI
24b033f9ab Bot Updating Package Versions 2024-01-12 17:31:19 +00:00
LinuxServer-CI
8697997b91 Bot Updating Package Versions 2024-01-12 10:46:28 +00:00
Roxedus
024ca3e1b0
Merge pull request #282 from linuxserver/url/develop 2024-01-12 11:43:34 +01:00
Roxedus
e1c62724f9
Use new urls after upstream build changes 2024-01-12 10:51:23 +01:00
LinuxServer-CI
6283bbd4a8 Bot Updating Templated Files 2024-01-11 02:40:59 +00:00
LinuxServer-CI
bd62785efc Bot Updating Templated Files 2024-01-11 02:39:10 +00:00
LinuxServer-CI
408e3510ac Bot Updating Package Versions 2024-01-06 01:35:31 +00:00
LinuxServer-CI
29b2345423 Bot Updating Package Versions 2024-01-03 22:30:35 +00:00
LinuxServer-CI
574bb7c0bf Bot Updating Package Versions 2024-01-02 10:32:33 +00:00
LinuxServer-CI
6577e4a7ea Bot Updating Package Versions 2024-01-01 01:44:29 +00:00
LinuxServer-CI
d73f1d63b2 Bot Updating Package Versions 2023-12-31 02:36:57 +00:00
LinuxServer-CI
28c337edeb Bot Updating Package Versions 2023-12-30 18:31:57 +00:00
LinuxServer-CI
acea487800 Bot Updating Package Versions 2023-12-30 17:06:30 +00:00
LinuxServer-CI
6771a23815 Bot Updating Templated Files 2023-12-30 17:03:43 +00:00
Adam
5e1e909fce
Merge pull request #273 from linuxserver/develop-3.19
Rebase to 3.19
2023-12-30 17:01:53 +00:00
TheSpad
197fbe6c71
Don't extract port from non-existent file 2023-12-30 15:36:38 +00:00
TheSpad
590e1f9b92
Rebase to 3.19 2023-12-30 15:15:31 +00:00
LinuxServer-CI
0cc4050a12 Bot Updating Package Versions 2023-12-28 21:26:03 +00:00
LinuxServer-CI
8a56735341 Bot Updating Package Versions 2023-12-22 23:30:05 +00:00
LinuxServer-CI
e216beb03a Bot Updating Package Versions 2023-12-19 08:31:56 +00:00
LinuxServer-CI
1bbce6ab69 Bot Updating Package Versions 2023-12-15 02:38:21 +00:00
LinuxServer-CI
2ba0a7a921 Bot Updating Package Versions 2023-12-12 01:37:05 +00:00
LinuxServer-CI
4d0111ea16 Bot Updating Package Versions 2023-12-08 23:30:07 +00:00
LinuxServer-CI
00b0ce45bf Bot Updating Package Versions 2023-11-25 21:25:39 +00:00
LinuxServer-CI
5542773c53 Bot Updating Package Versions 2023-11-20 06:34:36 +00:00
LinuxServer-CI
736a5a609a Bot Updating Package Versions 2023-11-20 01:36:46 +00:00
LinuxServer-CI
0b15e1247c Bot Updating Package Versions 2023-11-19 21:24:32 +00:00
LinuxServer-CI
79e956ac49 Bot Updating Package Versions 2023-11-17 16:39:25 +00:00
LinuxServer-CI
bb3be0170d Bot Updating Templated Files 2023-11-17 16:37:02 +00:00
LinuxServer-CI
cd148194e2 Bot Updating Package Versions 2023-11-11 18:29:20 +00:00
LinuxServer-CI
bfd4ab47c9 Bot Updating Package Versions 2023-11-10 18:30:48 +00:00
LinuxServer-CI
a1606b46e9 Bot Updating Package Versions 2023-11-10 02:33:34 +00:00
LinuxServer-CI
62b23c32c6 Bot Updating Package Versions 2023-10-30 01:31:41 +00:00
LinuxServer-CI
e7018a9ecb Bot Updating Package Versions 2023-10-29 19:24:41 +00:00
LinuxServer-CI
7b7f385f7d Bot Updating Package Versions 2023-10-29 17:27:41 +00:00
LinuxServer-CI
0ab77c7364 Bot Updating Package Versions 2023-10-27 15:26:35 +00:00
LinuxServer-CI
5ec3546ba1 Bot Updating Package Versions 2023-10-17 08:34:04 +00:00
LinuxServer-CI
68477b8994 Bot Updating Package Versions 2023-10-10 15:29:12 +00:00
LinuxServer-CI
52e01f8973 Bot Updating Package Versions 2023-10-10 08:32:53 +00:00
LinuxServer-CI
c0fbeac198 Bot Updating Package Versions 2023-10-10 06:34:48 +00:00
LinuxServer-CI
cf74db5795 Bot Updating Templated Files 2023-10-10 06:32:31 +00:00
LinuxServer-CI
d2455ca5b8 Bot Updating Templated Files 2023-10-06 23:32:49 +00:00
LinuxServer-CI
a7a34f2404 Bot Updating Templated Files 2023-10-06 23:30:27 +00:00
LinuxServer-CI
2dccaa3c6a Bot Updating Package Versions 2023-09-30 20:26:52 +00:00
LinuxServer-CI
78c9bb6200 Bot Updating Package Versions 2023-09-27 20:26:56 +00:00
LinuxServer-CI
47fbbb6090 Bot Updating Package Versions 2023-09-27 16:34:04 +00:00
LinuxServer-CI
0cf588bcaf Bot Updating Package Versions 2023-09-19 05:29:07 +00:00
LinuxServer-CI
46ed56a755 Bot Updating Package Versions 2023-09-18 02:31:48 +00:00
LinuxServer-CI
3bb4992807 Bot Updating Package Versions 2023-09-18 01:30:00 +00:00
LinuxServer-CI
640856f28c Bot Updating Package Versions 2023-09-14 02:32:04 +00:00
LinuxServer-CI
37863d787d Bot Updating Package Versions 2023-09-11 21:26:05 +00:00
LinuxServer-CI
69a6585c84 Bot Updating Package Versions 2023-09-08 16:34:12 +00:00
LinuxServer-CI
b05bc18e9c Bot Updating Package Versions 2023-09-08 06:31:55 +00:00
LinuxServer-CI
5b8034ec2c Bot Updating Package Versions 2023-09-08 01:31:20 +00:00
LinuxServer-CI
833ec7e5db Bot Updating Package Versions 2023-09-02 01:57:00 +00:00
LinuxServer-CI
abd4e87db1 Bot Updating Package Versions 2023-09-01 23:25:40 +00:00
LinuxServer-CI
1e67cdf702 Bot Updating Package Versions 2023-09-01 02:35:03 +00:00
LinuxServer-CI
5995f61845 Bot Updating Package Versions 2023-08-29 21:26:09 +00:00
LinuxServer-CI
c319ffbdb6 Bot Updating Package Versions 2023-08-29 06:31:11 +00:00
LinuxServer-CI
c7551810d6 Bot Updating Package Versions 2023-08-29 04:30:38 +00:00
LinuxServer-CI
0d74ea6baa Bot Updating Package Versions 2023-08-23 03:26:13 +00:00
LinuxServer-CI
746262a3cd Bot Updating Package Versions 2023-08-21 18:30:50 +00:00
LinuxServer-CI
aa400088a0 Bot Updating Package Versions 2023-08-20 20:24:51 +00:00
LinuxServer-CI
fae3f52176 Bot Updating Package Versions 2023-08-20 19:24:37 +00:00
LinuxServer-CI
f4fb53a3eb Bot Updating Package Versions 2023-08-20 08:28:22 +00:00
LinuxServer-CI
3209a7ef21 Bot Updating Package Versions 2023-08-20 01:29:39 +00:00
LinuxServer-CI
85621fd27c Bot Updating Package Versions 2023-08-19 22:28:01 +00:00
LinuxServer-CI
3db4a9ec10 Bot Updating Package Versions 2023-08-19 19:24:22 +00:00
LinuxServer-CI
a6f6c96d9a Bot Updating Package Versions 2023-08-19 07:25:27 +00:00
LinuxServer-CI
054ca05d52 Bot Updating Package Versions 2023-08-19 01:21:27 +00:00
LinuxServer-CI
f02258ced5 Bot Updating Package Versions 2023-08-18 06:31:19 +00:00
LinuxServer-CI
60a3279fb2 Bot Updating Package Versions 2023-08-15 23:26:08 +00:00
LinuxServer-CI
b9f83171d8 Bot Updating Package Versions 2023-08-13 22:28:16 +00:00
LinuxServer-CI
be4a082035 Bot Updating Package Versions 2023-08-13 19:24:57 +00:00
LinuxServer-CI
2d0053cde2 Bot Updating Package Versions 2023-08-13 08:27:17 +00:00
LinuxServer-CI
a5edd9901e Bot Updating Package Versions 2023-08-13 04:29:59 +00:00
LinuxServer-CI
d84725cb9f Bot Updating Package Versions 2023-08-13 03:26:16 +00:00
LinuxServer-CI
081fb3ecb5 Bot Updating Package Versions 2023-08-12 20:24:51 +00:00
LinuxServer-CI
30ca8d1ae9 Bot Updating Package Versions 2023-08-12 09:24:49 +00:00
LinuxServer-CI
fb469943b1 Bot Updating Package Versions 2023-08-12 07:24:53 +00:00
LinuxServer-CI
dd99f66c21 Bot Updating Package Versions 2023-08-12 06:29:44 +00:00
LinuxServer-CI
ab7df7564d Bot Updating Package Versions 2023-08-10 01:46:56 +00:00
LinuxServer-CI
b57680a71b Bot Updating Package Versions 2023-08-09 16:37:33 +00:00
LinuxServer-CI
ae22027bda Bot Updating Package Versions 2023-08-09 02:38:04 +00:00
LinuxServer-CI
4867b6d806 Bot Updating Package Versions 2023-08-08 02:38:02 +00:00
LinuxServer-CI
2779f3e5e7 Bot Updating Package Versions 2023-08-06 16:31:53 +00:00
LinuxServer-CI
7bbdda5b07 Bot Updating Package Versions 2023-08-05 19:25:25 +00:00
LinuxServer-CI
2a87437e29 Bot Updating Package Versions 2023-08-04 18:30:07 +00:00
LinuxServer-CI
f8fa4de3d2 Bot Updating Package Versions 2023-08-04 07:25:07 +00:00
LinuxServer-CI
3773a063df Bot Updating Package Versions 2023-08-04 02:37:49 +00:00
LinuxServer-CI
d2770ff9a2 Bot Updating Package Versions 2023-08-04 01:43:09 +00:00
LinuxServer-CI
b52474f9a9 Bot Updating Package Versions 2023-08-02 01:41:57 +00:00
LinuxServer-CI
662e5494c0 Bot Updating Package Versions 2023-08-02 01:39:33 +00:00
LinuxServer-CI
4cc96442ca Bot Updating Package Versions 2023-07-30 18:28:08 +00:00
LinuxServer-CI
c5f31afa11 Bot Updating Package Versions 2023-07-23 01:54:19 +00:00
LinuxServer-CI
b5a412ef5a Bot Updating Package Versions 2023-07-15 17:30:18 +00:00
LinuxServer-CI
2ebbcb257e Bot Updating Package Versions 2023-07-14 23:31:10 +00:00
LinuxServer-CI
41b381707b Bot Updating Package Versions 2023-07-11 06:36:14 +00:00
LinuxServer-CI
3cc46b0f55 Bot Updating Package Versions 2023-06-30 23:32:51 +00:00
LinuxServer-CI
1837ae6a00 Bot Updating Templated Files 2023-06-30 23:30:36 +00:00
Roxedus
ee60fdc187
Merge pull request #266 from mynameisbogdan/develop-branch 2023-06-27 09:43:36 +02:00
Bogdan
0f940587b3 Use the correct branch variable in package info 2023-06-27 08:50:00 +03:00
LinuxServer-CI
be1d0074e7 Bot Updating Package Versions 2023-06-20 21:25:41 +00:00
LinuxServer-CI
d999c53ff4 Bot Updating Package Versions 2023-06-16 23:30:18 +00:00
LinuxServer-CI
68765a94a8 Bot Updating Package Versions 2023-06-14 08:06:31 +00:00
Adam
b9ea3701ce
Merge pull request #264 from linuxserver/develop-ports 2023-06-14 09:02:13 +01:00
LinuxServer-CI
2d3cedd3d3 Bot Updating Package Versions 2023-06-09 23:27:45 +00:00
TheSpad
ef362c4618
Allow readiness check to use custom ports 2023-06-06 14:41:25 +01:00
LinuxServer-CI
8b4bdaaa43 Bot Updating Package Versions 2023-05-30 15:52:16 +00:00
Adam
6ada0b9f6f
Merge pull request #263 from linuxserver/develop-3.18 2023-05-30 16:48:55 +01:00
TheSpad
20997930aa
Rebase to 3.18 2023-05-30 16:11:48 +01:00
LinuxServer-CI
3311e63ee1 Bot Updating Package Versions 2023-05-27 23:24:51 +00:00
LinuxServer-CI
7b6111095c Bot Updating Templated Files 2023-05-23 05:27:47 +00:00
LinuxServer-CI
15c20fe239 Bot Updating Package Versions 2023-05-21 01:52:28 +00:00
LinuxServer-CI
b9d5f93066 Bot Updating Package Versions 2023-05-19 23:32:35 +00:00
LinuxServer-CI
952d1c1f77 Bot Updating Package Versions 2023-05-06 19:25:45 +00:00
LinuxServer-CI
fa385bba6e Bot Updating Templated Files 2023-04-27 04:32:55 +00:00
LinuxServer-CI
150c08a90a Bot Updating Templated Files 2023-04-27 04:31:43 +00:00
LinuxServer-CI
69f25db094 Bot Updating Package Versions 2023-04-22 21:49:49 -05:00
LinuxServer-CI
7af06ccdae Bot Updating Package Versions 2023-04-17 03:46:20 +02:00
LinuxServer-CI
0643570c4b Bot Updating Package Versions 2023-04-14 20:47:06 -05:00
LinuxServer-CI
548af42f62 Bot Updating Package Versions 2023-04-04 14:49:08 +02:00
LinuxServer-CI
11498584d9 Bot Updating Templated Files 2023-04-01 20:50:39 -05:00
LinuxServer-CI
b1e7168f09 Bot Updating Templated Files 2023-04-01 20:49:04 -05:00
LinuxServer-CI
d4f9f546c0 Bot Updating Templated Files 2023-04-01 20:47:29 -05:00
LinuxServer-CI
8e56a2f528 Bot Updating Package Versions 2023-03-31 01:35:23 -05:00
LinuxServer-CI
4237da3440 Bot Updating Package Versions 2023-03-28 08:41:19 -05:00
LinuxServer-CI
121426d2e5 Bot Updating Package Versions 2023-03-27 18:39:32 +02:00
LinuxServer-CI
727d0f918b Bot Updating Package Versions 2023-03-27 02:29:07 -05:00
LinuxServer-CI
31d4ee35e7 Bot Updating Package Versions 2023-03-21 08:40:17 -05:00
LinuxServer-CI
c69e09af00 Bot Updating Package Versions 2023-03-01 20:12:22 -06:00
LinuxServer-CI
6882f46a2c Bot Updating Templated Files 2023-03-02 03:09:50 +01:00
Adam
3f1ca1d92f
Merge pull request #255 from linuxserver/ping-develop 2023-02-24 12:07:53 +00:00
TheSpad
ec057dda95
Use /ping endpoint for readiness check 2023-02-24 11:19:47 +00:00
LinuxServer-CI
9d16e158ae Bot Updating Package Versions 2023-02-21 14:41:56 +01:00
LinuxServer-CI
9d2984e655 Bot Updating Package Versions 2023-02-14 14:43:28 +01:00
Adam
d8b754ccd9
Merge pull request #248 from linuxserver/develop-remove-armhf 2023-02-11 10:08:32 +00:00
TheSpad
623373c876
Remove dummy amrhf build 2023-02-10 21:19:25 +00:00
LinuxServer-CI
5d20bec082 Bot Updating Package Versions 2023-01-17 07:40:49 -06:00
LinuxServer-CI
9630e6b6c9 Bot Updating Package Versions 2023-01-10 14:42:03 +01:00
LinuxServer-CI
056862eb20 Bot Updating Package Versions 2022-12-29 10:29:08 +01:00
LinuxServer-CI
b740d43f66 Bot Updating Package Versions 2022-12-27 04:33:07 -06:00
LinuxServer-CI
d76450b1af Bot Updating Package Versions 2022-12-21 12:09:44 -06:00
Roxedus
081fbdc193
Merge pull request #243 from linuxserver/develop-3.17 2022-12-21 19:07:27 +01:00
TheSpad
fe1fd67593
Rebase develop to 3.17 2022-12-19 17:38:17 +00:00
Adam
474169d9e9
Merge pull request #242 from linuxserver/develop-remove-warning 2022-12-09 12:45:55 +00:00
TheSpad
dafc38abe2
Remove Alpine migration warning 2022-12-07 10:58:05 +00:00
LinuxServer-CI
6fd75b069d Bot Updating Templated Files 2022-11-29 03:07:39 +01:00
LinuxServer-CI
ceaba66624 Bot Updating Templated Files 2022-11-29 03:06:16 +01:00
LinuxServer-CI
3c3ef71757 Bot Updating Templated Files 2022-11-29 03:04:49 +01:00
LinuxServer-CI
32b4be470b Bot Updating Package Versions 2022-11-28 10:17:27 +01:00
Adam
80a6eb3123
Merge pull request #239 from linuxserver/develop-v4 2022-11-28 09:15:08 +00:00
TheSpad
0e7a02d9d1
Fix release version check 2022-11-24 17:26:04 +00:00
TheSpad
0d1221ca56
Use lsiown 2022-11-24 17:24:05 +00:00
TheSpad
aea21d7459
Switch to v4, rebase to Alpine 3.16, migrate to s6v3 2022-11-24 17:17:56 +00:00
LinuxServer-CI
a5715acc71 Bot Updating Package Versions 2022-11-22 14:49:40 +01:00
LinuxServer-CI
462c594408 Bot Updating Package Versions 2022-11-15 07:55:41 -06:00
LinuxServer-CI
9b551c1907 Bot Updating Templated Files 2022-11-15 07:51:43 -06:00
LinuxServer-CI
1cf0d1f9ef Bot Updating Package Versions 2022-11-08 15:02:57 +01:00
LinuxServer-CI
05fc4c80d9 Bot Updating Package Versions 2022-11-01 09:05:38 -05:00
LinuxServer-CI
8f49ab3cf3 Bot Updating Package Versions 2022-10-25 16:24:53 +02:00
LinuxServer-CI
b9e5c75b55 Bot Updating Package Versions 2022-10-11 09:16:04 -05:00
LinuxServer-CI
ac73c43990 Bot Updating Package Versions 2022-10-04 09:23:14 -05:00
LinuxServer-CI
298fd69552 Bot Updating Package Versions 2022-09-27 09:14:43 -05:00
LinuxServer-CI
1a76cd35d0 Bot Updating Package Versions 2022-09-20 16:13:06 +02:00
LinuxServer-CI
d11363ef3b Bot Updating Templated Files 2022-09-20 16:10:25 +02:00
LinuxServer-CI
f716ca0c03 Bot Updating Package Versions 2022-09-13 16:08:46 +02:00
LinuxServer-CI
7baa4da436 Bot Updating Package Versions 2022-09-06 09:03:35 -05:00
LinuxServer-CI
77f910d2db Bot Updating Package Versions 2022-08-16 08:47:41 -05:00
LinuxServer-CI
925ba0608b Bot Updating Package Versions 2022-08-09 09:05:42 -05:00
LinuxServer-CI
b0956933c2 Bot Updating Package Versions 2022-08-07 15:17:39 +02:00
Adam
f677d45b5c
Merge pull request #229 from linuxserver/amend-deprecate-develop 2022-08-07 14:15:24 +01:00
TheSpad
79961fb76f
Fix missing mono libs 2022-08-07 14:00:11 +01:00
TheSpad
faf131391d
Remove errant "t" 2022-08-07 12:20:56 +01:00
TheSpad
aa62b379f7
Tweak warning working 2022-08-07 12:18:58 +01:00
TheSpad
97908a8970
Pin base & app versions and add deprecation notice 2022-08-07 12:08:57 +01:00
Adam
279aa4a7d3
Merge pull request #226 from linuxserver/deprecate-armhf-develop 2022-08-04 18:54:24 +01:00
LinuxServer-CI
5b9f5e1d6e Bot Updating Package Versions 2022-08-02 21:24:43 +02:00
TheSpad
fe1505163f
Make servicefile executable 2022-08-02 20:22:35 +01:00
Adam
e82dda1e1c
Merge pull request #223 from linuxserver/develop-focal 2022-08-02 20:21:57 +01:00
TheSpad
7907c81237
Add startup delay for CI 2022-08-02 19:30:47 +01:00
TheSpad
de4070e122
Deprecate armhf 2022-08-02 17:36:18 +01:00
TheSpad
b5177b6640
Remove unsupported hyperlink 2022-08-02 17:07:36 +01:00
TheSpad
972ac45750
Actually definitely use the right bases for arm 2022-08-02 16:52:20 +01:00
TheSpad
948a43cc5c
Add armhf deprecation warning. 2022-08-02 16:42:48 +01:00
TheSpad
8443ad8f47
Change bases for arm too 2022-08-02 16:22:27 +01:00
TheSpad
66de2a887b
Rebase develop back to ubuntu due to Alpine dropping mono 2022-08-02 16:01:32 +01:00
LinuxServer-CI
8e17d177f9 Bot Updating Package Versions 2022-07-26 08:58:30 -05:00
LinuxServer-CI
3cf7242303 Bot Updating Package Versions 2022-07-19 08:59:53 -05:00
LinuxServer-CI
34cc71a50e Bot Updating Package Versions 2022-07-06 11:56:52 -05:00
LinuxServer-CI
58b3383649 Bot Updating Package Versions 2022-07-05 16:11:02 +02:00
LinuxServer-CI
cc0c5eb897 Bot Updating Package Versions 2022-05-16 01:38:39 +02:00
LinuxServer-CI
f98bb07ddc Bot Updating Templated Files 2022-05-03 08:57:30 -05:00
LinuxServer-CI
9f2853d068 Bot Updating Templated Files 2022-04-30 17:37:27 -05:00
LinuxServer-CI
31a4eaafc0 Bot Updating Templated Files 2022-05-01 00:35:49 +02:00
LinuxServer-CI
9ab2c14da4 Bot Updating Package Versions 2022-04-28 21:36:05 -05:00
LinuxServer-CI
747e96fb8e Bot Updating Package Versions 2022-04-12 15:48:26 +02:00
LinuxServer-CI
1483f93074 Bot Updating Package Versions 2022-04-09 23:45:12 -05:00
LinuxServer-CI
76d6b2c02b Bot Updating Package Versions 2022-04-05 15:45:58 +02:00
LinuxServer-CI
20e243fa5e Bot Updating Package Versions 2022-03-29 08:46:11 -05:00
LinuxServer-CI
6a8fefcca8 Bot Updating Package Versions 2022-03-22 08:43:36 -05:00
aptalca
a0eb3fe561
Merge pull request #212 from linuxserver/remove-develop-warning
Remove alpine rebase warning
2022-03-21 08:59:24 -04:00
TheSpad
fc02d37955 Remove alpine warning 2022-03-20 17:50:15 +00:00
LinuxServer-CI
375e3cf25a Bot Updating Package Versions 2022-03-20 09:39:00 +01:00
LinuxServer-CI
4c3e33e4bf Bot Updating Package Versions 2022-03-07 07:43:14 +01:00
LinuxServer-CI
594c064181 Bot Updating Package Versions 2022-02-27 22:34:26 +01:00
LinuxServer-CI
a969f4ecd9 Bot Updating Package Versions 2022-02-22 08:34:32 +01:00
Adam
4792840582
Merge pull request #209 from linuxserver/mono-cert-fix 2022-02-21 22:12:45 +00:00
TheSpad
35f0ce3c7f Run mono cert sync on init 2022-02-21 22:11:12 +00:00
LinuxServer-CI
cf015ba97d Bot Updating Package Versions 2022-02-21 17:50:52 +01:00
LinuxServer-CI
d9fc58fdb7 Bot Updating Templated Files 2022-02-21 17:48:04 +01:00
Adam
73c03a133b
Merge pull request #206 from linuxserver/make-develop-alpine 2022-02-21 16:46:51 +00:00
TheSpad
18c7299298 Update readme tags 2022-02-20 12:32:50 +00:00
TheSpad
7c0d7c366d Rebase develop branch to Alpine 2022-02-20 12:29:59 +00:00
LinuxServer-CI
c4b1d6bcf7 Bot Updating Package Versions 2022-02-17 03:44:55 +01:00
LinuxServer-CI
29854e9566 Bot Updating Package Versions 2022-01-23 22:32:05 +01:00
LinuxServer-CI
dd6c9edb54 Bot Updating Package Versions 2022-01-18 14:46:54 +01:00
LinuxServer-CI
8410b4f66a Bot Updating Package Versions 2021-12-24 02:37:41 +01:00
LinuxServer-CI
7f7cb0bf6e Bot Updating Templated Files 2021-12-16 20:29:15 +01:00
LinuxServer-CI
3d30b9a000 Bot Updating Templated Files 2021-12-16 20:27:59 +01:00
LinuxServer-CI
44b3faad8c Bot Updating Package Versions 2021-12-16 02:35:54 +01:00
LinuxServer-CI
f1ef1706b4 Bot Updating Package Versions 2021-12-13 13:54:23 +01:00
LinuxServer-CI
8ba4207f4e Bot Updating Templated Files 2021-12-13 13:51:36 +01:00
aptalca
dd48f1e94e
Merge pull request #201 from linuxserver/develop-mediainfo
Pull mediainfo from mediarenas repo, as per sonarr docs
2021-12-13 07:50:16 -05:00
Roxedus
0a2071754f
Pull mediainfo from mediarenas repo, as per sonarr docs 2021-12-13 10:19:18 +01:00
LinuxServer-CI
7eb1a5a523 Bot Updating Package Versions 2021-11-21 18:39:39 +01:00
LinuxServer-CI
b5a0a5efc0 Bot Updating Package Versions 2021-11-16 00:35:53 +01:00
LinuxServer-CI
b7b358d8f1 Bot Updating Package Versions 2021-11-04 00:32:41 +01:00
LinuxServer-CI
1aa8cdc3af Bot Updating Package Versions 2021-11-02 14:42:59 +01:00
LinuxServer-CI
94fe2c5f8e Bot Updating Package Versions 2021-10-19 15:42:44 +02:00
Eric Nemchik
290f5f8463
Merge pull request #197 from linuxserver/develop-umask
Remove old umask functionality
2021-10-10 14:11:16 -05:00
Roxedus
faad03c35f
Remove old umask functionality 2021-10-10 20:37:33 +02:00
LinuxServer-CI
839e554f4e Bot Updating Templated Files 2021-10-01 20:38:09 +02:00
LinuxServer-CI
5582df6e30 Bot Updating Templated Files 2021-10-01 20:37:03 +02:00
LinuxServer-CI
4a9d0b911e Bot Updating Package Versions 2021-09-28 23:29:48 +02:00
LinuxServer-CI
9bd8bf2bd0 Bot Updating Package Versions 2021-09-28 15:42:31 +02:00
LinuxServer-CI
1d6da0bd8a Bot Updating Package Versions 2021-09-21 15:42:48 +02:00
LinuxServer-CI
2687616acd Bot Updating Package Versions 2021-09-04 07:31:06 +02:00
LinuxServer-CI
719b595759 Bot Updating Package Versions 2021-08-30 04:43:50 +02:00
LinuxServer-CI
d04da3e1a5 Bot Updating Templated Files 2021-08-30 04:41:30 +02:00
LinuxServer-CI
42248b541e Bot Updating Package Versions 2021-08-24 15:43:51 +02:00
LinuxServer-CI
9fbbd0bdf1 Bot Updating Package Versions 2021-08-04 04:44:37 +02:00
LinuxServer-CI
05f4582380 Bot Updating Package Versions 2021-07-27 17:43:40 +02:00
LinuxServer-CI
ec4f4bd47b Bot Updating Package Versions 2021-07-27 15:43:24 +02:00
LinuxServer-CI
b246280a03 Bot Updating Package Versions 2021-07-13 13:46:16 +00:00
LinuxServer-CI
51b75a296e Bot Updating Package Versions 2021-07-04 13:41:29 -04:00
LinuxServer-CI
fb29348a00 Bot Updating Templated Files 2021-07-04 17:39:03 +00:00
LinuxServer-CI
048f556211 Bot Updating Templated Files 2021-07-04 13:37:24 -04:00
LinuxServer-CI
fcd32d3326 Bot Updating Package Versions 2021-06-08 15:50:32 +00:00
LinuxServer-CI
1deae96a2b Bot Updating Package Versions 2021-06-08 14:08:20 +00:00
LinuxServer-CI
a1e01de3f2 Bot Updating Package Versions 2021-05-27 10:08:50 +00:00
LinuxServer-CI
6d1485efb5 Bot Updating Package Versions 2021-05-07 16:42:06 -04:00
LinuxServer-CI
9915eb900d Bot Updating Package Versions 2021-05-04 13:53:43 +00:00
LinuxServer-CI
496a954501 Bot Updating Package Versions 2021-04-21 23:47:55 +00:00
LinuxServer-CI
7770bef7f8 Bot Updating Package Versions 2021-04-20 09:59:33 -04:00
LinuxServer-CI
e0178e07d9 Bot Updating Templated Files 2021-04-20 13:51:32 +00:00
LinuxServer-CI
521a04d219 Bot Updating Templated Files 2021-04-20 13:49:56 +00:00
LinuxServer-CI
983736defe Bot Updating Package Versions 2021-04-10 09:48:08 +00:00
LinuxServer-CI
d7c7df669a Bot Updating Package Versions 2021-04-06 09:57:07 -04:00
LinuxServer-CI
57a8d05ca3 Bot Updating Package Versions 2021-03-17 21:25:35 -04:00
LinuxServer-CI
2a8e6c7fce Bot Updating Package Versions 2021-03-10 16:50:06 +00:00
Roxedus
324e005f69
Merge pull request #181 from linuxserver/develop-v3 2021-03-10 17:44:52 +01:00
aptalca
d52f66fe22 add package_info 2021-03-10 10:48:32 -05:00
aptalca
9ca99c33e9 update pid name 2021-03-10 10:35:55 -05:00
aptalca
a575f9bd4e update to v3, rebase to mono 6 on focal 2021-03-10 10:11:16 -05:00
LinuxServer-CI
671965dd96 Bot Updating Package Versions 2021-03-09 13:56:24 +00:00
LinuxServer-CI
acb07fd3f6 Bot Updating Package Versions 2021-03-02 13:44:12 +00:00
LinuxServer-CI
4bc0de9dad Bot Updating Package Versions 2021-02-16 13:48:15 +00:00
LinuxServer-CI
202f46af12 Bot Updating Templated Files 2021-02-16 13:43:09 +00:00
LinuxServer-CI
17ae96fef3 Bot Updating Templated Files 2021-02-16 08:41:38 -05:00
LinuxServer-CI
b07980a0bd Bot Updating Package Versions 2021-02-09 13:49:07 +00:00
LinuxServer-CI
b54b2043ce Bot Updating Package Versions 2021-02-02 13:57:29 +00:00
LinuxServer-CI
ff5caf2f29 Bot Updating Package Versions 2021-01-26 13:54:29 +00:00
LinuxServer-CI
a8010b9787 Bot Updating Package Versions 2021-01-18 13:42:51 +00:00
aptalca
4c8c5e17d0
Merge pull request #175 from linuxserver/develop-deprecate-umask_set
Deprecate UMASK_SET in favor of UMASK in baseimage
2021-01-18 08:37:19 -05:00
Roxedus
914058792b
Deprecate UMASK_SET in favor of UMASK in baseimage 2021-01-18 10:59:42 +01:00
LinuxServer-CI
4f4831f3a2 Bot Updating Package Versions 2021-01-14 13:45:27 +00:00
LinuxServer-CI
f237cb2adb Bot Updating Templated Files 2021-01-14 08:38:18 -05:00
LinuxServer-CI
fca2a8eec2 Bot Updating Package Versions 2020-12-24 13:25:09 +00:00
LinuxServer-CI
53fbf94894 Bot Updating Package Versions 2020-12-16 17:10:58 -05:00
LinuxServer-CI
1e22253d25 Bot Updating Templated Files 2020-12-16 22:02:48 +00:00
LinuxServer-CI
3405c9a15f Bot Updating Templated Files 2020-12-16 21:59:22 +00:00
LinuxServer-CI
1d0778a623 Bot Updating Package Versions 2020-11-21 03:37:30 -05:00
LinuxServer-CI
35f59aca3a Bot Updating Package Versions 2020-11-14 08:38:11 +00:00
LinuxServer-CI
49be838aa4 Bot Updating Package Versions 2020-11-07 03:37:37 -05:00
LinuxServer-CI
202428a6eb Bot Updating Package Versions 2020-11-02 14:56:19 +00:00
LinuxServer-CI
8756d1cb8c Bot Updating Templated Files 2020-11-02 14:53:15 +00:00
thelamer
cd18a00a17 update baseimages 2020-11-02 06:49:38 -08:00
LinuxServer-CI
4f68cef48c Bot Updating Package Versions 2020-10-31 08:38:36 +00:00
LinuxServer-CI
4dd3897f9b Bot Updating Package Versions 2020-10-24 07:37:21 +00:00
LinuxServer-CI
7e254511f6 Bot Updating Package Versions 2020-10-17 07:40:17 +00:00
LinuxServer-CI
1d80099f10 Bot Updating Templated Files 2020-10-03 03:35:01 -04:00
LinuxServer-CI
2750108104 Bot Updating Templated Files 2020-10-03 03:33:59 -04:00
LinuxServer-CI
570303fe6e Bot Updating Package Versions 2020-09-26 07:35:26 +00:00
LinuxServer-CI
39e018091f Bot Updating Package Versions 2020-09-12 03:35:29 -04:00
LinuxServer-CI
08ce1a9c5f Bot Updating Package Versions 2020-09-05 03:35:23 -04:00
LinuxServer-CI
611ba0368a Bot Updating Package Versions 2020-08-22 07:36:47 +00:00
LinuxServer-CI
9d1ca7f6bc Bot Updating Templated Files 2020-08-22 03:33:59 -04:00
LinuxServer-CI
0e7afb98c8 Bot Updating Package Versions 2020-08-15 07:35:42 +00:00
LinuxServer-CI
de36a96da6 Bot Updating Package Versions 2020-08-08 03:37:22 -04:00
LinuxServer-CI
f743f5bd9f Bot Updating Templated Files 2020-08-08 03:34:49 -04:00
LinuxServer-CI
6688e82f22 Bot Updating Templated Files 2020-08-08 07:33:51 +00:00
LinuxServer-CI
e83ba44912 Bot Updating Package Versions 2020-08-01 07:37:40 +00:00
LinuxServer-CI
ddf95279f2 Bot Updating Package Versions 2020-07-25 03:35:33 -04:00
LinuxServer-CI
e7611f06bc Bot Updating Package Versions 2020-07-18 07:35:46 +00:00
LinuxServer-CI
563e9e3378 Bot Updating Package Versions 2020-07-11 07:35:49 +00:00
LinuxServer-CI
dcf9712670 Bot Updating Package Versions 2020-07-04 07:35:48 +00:00
LinuxServer-CI
e8098d2c59 Bot Updating Package Versions 2020-06-27 07:35:22 +00:00
LinuxServer-CI
6a61095c6a Bot Updating Package Versions 2020-06-20 09:35:21 +02:00
LinuxServer-CI
5dfc68f2cb Bot Updating Package Versions 2020-06-13 03:35:40 -04:00
LinuxServer-CI
0403f5ab40 Bot Updating Package Versions 2020-06-06 07:40:26 +00:00
LinuxServer-CI
89faaa3bd5 Bot Updating Templated Files 2020-06-06 07:33:43 +00:00
LinuxServer-CI
dc5532de4f Bot Updating Package Versions 2020-05-30 07:40:55 +00:00
LinuxServer-CI
a56c9b0bab Bot Updating Templated Files 2020-05-30 09:33:43 +02:00
LinuxServer-CI
ad9fdc73ef Bot Updating Package Versions 2020-05-23 09:36:15 +02:00
LinuxServer-CI
a7840a4ee2 Bot Updating Package Versions 2020-05-16 03:35:56 -04:00
LinuxServer-CI
14f80f31d8 Bot Updating Package Versions 2020-05-02 03:37:52 -04:00
LinuxServer-CI
d1ee4e0daf Bot Updating Templated Files 2020-05-02 07:34:10 +00:00
LinuxServer-CI
3fca99e5f0 Bot Updating Package Versions 2020-04-25 15:05:25 +00:00
LinuxServer-CI
7ffcc5bfb9 Bot Updating Templated Files 2020-04-09 17:44:40 -04:00
aptalca
9db6331d6e
Merge pull request #151 from linuxserver/develop-app
Move app to /app
2020-04-09 17:43:35 -04:00
LinuxServer-CI
b43eb605a4 Bot Updating Package Versions 2020-04-08 21:51:53 +01:00
LinuxServer-CI
20b014b112 Bot Updating Templated Files 2020-04-08 21:49:20 +01:00
LinuxServer-CI
3be63c2708 Bot Updating Templated Files 2020-04-08 21:48:15 +01:00
aptalca
f4bd3f5cca
Merge pull request #155 from linuxserver/nemchik-patch-2
Add donate link
2020-04-08 16:47:06 -04:00
Eric Nemchik
5b54f4b31d
Add donate link 2020-04-07 17:48:15 -05:00
Eric Nemchik
82b3b8ff88 Move app to /app 2020-04-05 02:24:08 -05:00
LinuxServer-CI
53df8d6e90 Bot Updating Package Versions 2020-03-28 08:38:34 +00:00
LinuxServer-CI
bbeae3871d Bot Updating Package Versions 2020-03-21 08:37:03 +00:00
LinuxServer-CI
c6d331d475 Bot Updating Package Versions 2020-03-13 17:25:13 +00:00
LinuxServer-CI
321adaf854 Bot Updating Package Versions 2020-02-22 08:36:07 +00:00
LinuxServer-CI
3dd7381f96 Bot Updating Package Versions 2020-02-15 08:42:26 +00:00
LinuxServer-CI
f579ca209e Bot Updating Package Versions 2020-02-08 08:36:42 +00:00
LinuxServer-CI
d90a4304fc Bot Updating Package Versions 2020-02-01 03:39:00 -05:00
LinuxServer-CI
bd3a317f7f Bot Updating Package Versions 2020-01-25 03:39:43 -05:00
LinuxServer-CI
366a32308b Bot Updating Package Versions 2020-01-18 08:36:31 +00:00
LinuxServer-CI
883099826f Bot Updating Package Versions 2019-12-21 08:39:47 +00:00
LinuxServer-CI
631dc158f7 Bot Updating Package Versions 2019-12-07 03:36:42 -05:00
LinuxServer-CI
dd4c83cf8f Bot Updating Templated Files 2019-11-30 08:33:57 +00:00
LinuxServer-CI
cf6fff85f5 Bot Updating Package Versions 2019-11-23 08:40:25 +00:00
LinuxServer-CI
6288d31f9a Bot Updating Package Versions 2019-11-16 03:38:31 -05:00
Jameel Al-Aziz
5a25387b77 Remove downloads and tv volumes from Dockerfile
Specifying the volumes in the Dockerfile is unnecessary and can lead to
excessive orphaned volume if the user chooses to use different paths at
runtime.
2019-11-02 21:59:15 -07:00
LinuxServer-CI
e936e5cd12 Bot Updating Package Versions 2019-11-02 04:42:16 -04:00
LinuxServer-CI
56c2a6fe66 Bot Updating Templated Files 2019-11-02 04:34:55 -04:00
LinuxServer-CI
b42ee1bddb Bot Updating Package Versions 2019-10-26 07:41:02 +00:00
LinuxServer-CI
11621314cc Bot Updating Package Versions 2019-10-19 03:35:52 -04:00
LinuxServer-CI
cf1770e5b5 Bot Updating Package Versions 2019-10-12 03:42:47 -04:00
LinuxServer-CI
206a6e034e Bot Updating Templated Files 2019-10-12 03:36:05 -04:00
LinuxServer-CI
a16f501725 Bot Updating Templated Files 2019-10-12 03:35:12 -04:00
LinuxServer-CI
a4800b9bca Bot Updating Package Versions 2019-10-05 03:40:45 -04:00
LinuxServer-CI
83613f83ea Bot Updating Package Versions 2019-09-28 03:37:31 -04:00
LinuxServer-CI
61c95f7af9 Bot Updating Package Versions 2019-09-21 10:04:47 -04:00
LinuxServer-CI
49151a70ad Bot Updating Package Versions 2019-09-14 03:38:07 -04:00
LinuxServer-CI
a30f3b7d7c Bot Updating Package Versions 2019-09-07 03:42:28 -04:00
LinuxServer-CI
2a3278d8a5 Bot Updating Templated Files 2019-09-07 03:34:58 -04:00
LinuxServer-CI
2e65d41fbf Bot Updating Templated Files 2019-09-07 08:33:53 +01:00
LinuxServer-CI
669e84e876 Bot Updating Package Versions 2019-08-24 08:39:02 +01:00
LinuxServer-CI
c7eda95dff Bot Updating Package Versions 2019-08-14 20:40:16 -04:00
LinuxServer-CI
bf3fcf4a9d Bot Updating Package Versions 2019-08-10 03:39:35 -04:00
LinuxServer-CI
b96a654c6d Bot Updating Package Versions 2019-08-03 15:56:15 -04:00
aptalca
69b8dd29ab
Merge pull request #124 from thelamer/develop
develop - adding LTS branch for us to freeze a stable mono for downstream
2019-08-03 15:46:36 -04:00
LinuxServer-CI
d951befb2f Bot Updating Package Versions 2019-08-03 03:37:16 -04:00
thelamer
1751a36820 adding LTS branch for us to freeze a stable mono for downstream 2019-08-01 17:51:06 -07:00
LinuxServer-CI
0485a3a4c2 Bot Updating Package Versions 2019-07-27 07:38:37 +00:00
LinuxServer-CI
51cec3bc06 Bot Updating Package Versions 2019-07-20 03:36:35 -04:00
LinuxServer-CI
fb8ee7e381 Bot Updating Package Versions 2019-07-13 03:56:21 -04:00
LinuxServer-CI
190fddd99c Bot Updating Templated Files 2019-07-06 07:33:49 +00:00
LinuxServer-CI
441816f894 Bot Updating Package Versions 2019-07-02 20:25:56 +00:00
LinuxServer-CI
854a4835b3 Bot Updating Package Versions 2019-06-29 08:39:12 +01:00
LinuxServer-CI
11379f4e3f Bot Updating Package Versions 2019-06-22 07:35:15 +00:00
SirFerdek
4bc6d1a29d Fix umask - get umask from environment
Makes it consistent with other linuxserver.io images.
2019-06-16 15:30:57 -07:00
LinuxServer-CI
8e35ce2350 Bot Updating Package Versions 2019-06-15 03:35:17 -04:00
LinuxServer-CI
f80dc0b241 Bot Updating Templated Files 2019-06-08 03:35:05 -04:00
LinuxServer-CI
188f98c605 Bot Updating Package Versions 2019-05-25 03:39:34 -04:00
LinuxServer-CI
7ea0fbb46c Bot Updating Templated Files 2019-05-25 03:34:52 -04:00
LinuxServer-CI
3cc1ae393b Bot Updating Templated Files 2019-05-25 03:33:54 -04:00
LinuxServer-CI
bba5416fd2 Bot Updating Package Versions 2019-05-19 15:50:05 +00:00
saarg
f39c833a9b
Merge pull request #108 from thelamer/develop
rebase to bionic develop
2019-05-19 17:40:17 +02:00
thelamer
8e6342b8d7 adding new branch to readme 2019-05-17 16:34:11 -07:00
thelamer
4550322a73 rebase to bionic 2019-05-10 12:51:53 -07:00
LinuxServer-CI
204bffa46a Bot Updating Package Versions 2019-05-04 03:36:59 -04:00
LinuxServer-CI
2f113215d7 Bot Updating Templated Files 2019-05-04 03:33:57 -04:00
LinuxServer-CI
91a20ba848 Bot Updating Package Versions 2019-04-27 08:35:52 +01:00
LinuxServer-CI
ca2fcadf5a Bot Updating Package Versions 2019-04-20 08:37:26 +01:00
LinuxServer-CI
bce9ba8c47 Bot Updating Package Versions 2019-04-13 03:35:58 -04:00
LinuxServer-CI
da15845bad Bot Updating Package Versions 2019-04-06 08:35:58 +01:00
LinuxServer-CI
0189186f12 Bot Updating Package Versions 2019-03-24 16:53:04 -04:00
aptalca
db94a7c929
Merge pull request #105 from thelamer/develop
Switching to new Base images, shift to arm32v7 tag.
2019-03-24 16:43:19 -04:00
thelamer
b719c72871 Switching to new Base images, shift to arm32v7 tag. 2019-03-23 18:46:01 -07:00
LinuxServer-CI
656d0e80c3 Bot Updating Package Versions 2019-03-23 08:43:20 +00:00
LinuxServer-CI
a7c176abea Bot Updating Package Versions 2019-03-16 08:36:15 +00:00
LinuxServer-CI
8a77db53f7 Bot Updating Package Versions 2019-03-09 03:39:18 -05:00
LinuxServer-CI
557e418163 Bot Updating Templated Files 2019-03-09 03:33:43 -05:00
LinuxServer-CI
a3779d2284 Bot Updating Package Versions 2019-03-02 03:37:38 -05:00
LinuxServer-CI
d848513678 Bot Updating Templated Files 2019-03-02 03:33:42 -05:00
LinuxServer-CI
688b0b0455 Bot Updating Package Versions 2019-02-23 03:36:35 -05:00
LinuxServer-CI
848c64dc7e Bot Updating Package Versions 2019-02-09 03:36:58 -05:00
LinuxServer-CI
f587043b1c Bot Updating Templated Files 2019-02-09 08:33:38 +00:00
LinuxServer-CI
8c368ce62b Bot Updating Package Versions 2019-02-07 12:09:59 -05:00
LinuxServer-CI
f1b7856dbf Bot Updating Templated Files 2019-02-07 17:06:39 +00:00
LinuxServer-CI
83c9fe088f Bot Updating Package Versions 2019-02-01 21:09:47 +00:00
aptalca
bb25d2f468
Merge pull request #92 from linuxserver/pipeline-develop
Pipeline develop
2019-02-01 16:05:49 -05:00
aptalca
5d2f12f3d6 update readme, add tag info 2019-02-01 19:41:40 +00:00
aptalca
64878b3f7b use https for api endpoints 2019-01-28 20:10:40 -08:00
aptalca
208e435171 standardize Dockerfiles 2019-01-28 20:10:40 -08:00
aptalca
081f0704b5 update Jenkinsfile 2019-01-28 20:10:40 -08:00
aptalca
f540632b28 standardize the package download urls and simplify version retrieval 2019-01-28 20:10:40 -08:00
Ryan Kuba
e18289b0f2
Merge branch 'develop' into pipeline-develop 2019-01-21 01:01:11 -08:00
thelamer
18aeb041ea updating branch with current pipeline build logic in prep for PR 2019-01-20 20:56:13 -08:00
thelamer
4962cf1985 adding pre-release tagging logic to develop branch for github version control 2018-09-27 23:19:17 -07:00
thelamer
a96fbd8dfd wrong endpoint to determine package version for develop build 2018-09-08 22:06:16 -07:00
thelamer
249f35a4a8 adding develop build logic and multi arching 2018-09-08 21:57:41 -07:00
sparklyballs
2d8b18aa51 change baseimages to new ubuntu style 2018-03-14 18:37:20 +00:00
sparklyballs
68270b7856
Merge pull request #64 from linuxserver/develop_continuation_lines
fix continuation lines xenial
2017-12-16 17:25:24 +00:00
sparklyballs
663d478113 fix continuation lines xenial 2017-12-15 11:26:50 +00:00
sparklyballs
c0e94b3c59 Update Dockerfile 2017-07-12 15:46:06 +01:00
sparklyballs
497e3a7f31 update of README with badges for new ci 2017-07-12 15:21:39 +01:00
Neil
c9b0406e8b Merge pull request #54 from linuxserver/repo_fix
fix repo for sonarr develop branch
2017-06-19 10:46:46 +01:00
sparklyballs
3f090cccf9 fix repo for sonarr develop branch 2017-06-19 10:29:22 +01:00
j0nnymoe
d6f019d53f Merge pull request #49 from linuxserver/mono_rebase_develop
Mono rebase develop
2017-04-17 17:21:39 +01:00
sparklyballs
99f98d8b9f removed wrong repository 2017-04-17 11:39:10 +01:00
sparklyballs
001dff6d7b add python note to changelog 2017-04-17 11:08:49 +01:00
sparklyballs
87144862a7 rebase to inhouse mono image 2017-04-17 10:51:22 +01:00
sparklyballs
f8199a871c update README to latest master spec 2017-04-15 02:30:57 +01:00
aptalca
93a8bb7d9c Merge pull request #46 from linuxserver/mono_repo_develop
switch to official mono repository
2017-04-13 18:22:10 -04:00
sparklyballs
ca5b9d14b8 switch to official mono repository 2017-04-13 23:08:21 +01:00
sparklyballs
3b9e4ba956 fix formatting markdown README 2017-03-15 17:31:37 +00:00
sparklyballs
d90e60b91c make develop branch as per sonarr dev request 2017-01-14 00:41:49 +00:00
26 changed files with 887 additions and 1022 deletions

0
.editorconfig Normal file → Executable file
View File

10
.github/CONTRIBUTING.md vendored Normal file → Executable file
View File

@ -6,7 +6,7 @@
* Read, and fill the Pull Request template * Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR * If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message * If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord) * If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
## Common files ## Common files
@ -24,7 +24,7 @@
## Readme ## Readme
If you would like to change our readme, please __**do not**__ directly edit the readme, as it is auto-generated on each commit. 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-sonarr/edit/master/readme-vars.yml). Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-sonarr/edit/develop/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. 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-sonarr) Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-sonarr)
@ -105,17 +105,17 @@ docker build \
-t linuxserver/sonarr:latest . -t linuxserver/sonarr:latest .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Update the changelog ## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-sonarr/tree/master/root), add an entry to the changelog If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-sonarr/tree/develop/root), add an entry to the changelog
```yml ```yml
changelogs: changelogs:

0
.github/FUNDING.yml vendored Normal file → Executable file
View File

2
.github/ISSUE_TEMPLATE/config.yml vendored Normal file → Executable file
View File

@ -1,7 +1,7 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Discord chat support - name: Discord chat support
url: https://linuxserver.io/discord url: https://discord.gg/YWrKVTn
about: Realtime support / chat with the community and the team. about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum - name: Discourse discussion forum

0
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file → Executable file
View File

0
.github/ISSUE_TEMPLATE/issue.feature.yml vendored Normal file → Executable file
View File

View File

@ -21,7 +21,7 @@
------------------------------ ------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-sonarr/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications - [ ] I have read the [contributing](https://github.com/linuxserver/docker-sonarr/blob/develop/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------ ------------------------------

3
.github/workflows/call_issue_pr_tracker.yml vendored Normal file → Executable file
View File

@ -8,9 +8,6 @@ on:
pull_request_review: pull_request_review:
types: [submitted,edited,dismissed] types: [submitted,edited,dismissed]
permissions:
contents: read
jobs: jobs:
manage-project: manage-project:
permissions: permissions:

3
.github/workflows/call_issues_cron.yml vendored Normal file → Executable file
View File

@ -4,9 +4,6 @@ on:
- cron: '53 15 * * *' - cron: '53 15 * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
stale: stale:
permissions: permissions:

157
.github/workflows/external_trigger.yml vendored Normal file → Executable file
View File

@ -3,86 +3,52 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-develop:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4.1.1 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/develop'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
printf "# External trigger for docker-sonarr\n\n" >> $GITHUB_STEP_SUMMARY if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP }}" ]; then
if grep -q "^sonarr_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP is set; skipping trigger. ****"
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "Github secret \`PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`sonarr_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^sonarr_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`sonarr_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> External trigger running off of master branch. To disable this trigger, add \`sonarr_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 -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel=="v4-stable") | .version')
echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^sonarr_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of develop branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP\". ****"
echo "External trigger running off of develop branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel=="v4-nightly") | .version')
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve external version, exiting ****"
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY FAILURE_REASON="Can't retrieve external version for sonarr branch develop"
FAILURE_REASON="Can't retrieve external version for sonarr branch master"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-sonarr/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-sonarr/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, 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"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY echo "**** External version: ${EXT_RELEASE} ****"
echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY echo "External version: ${EXT_RELEASE}" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****"
image="linuxserver/sonarr" image="linuxserver/sonarr"
tag="latest" tag="develop"
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fsonarr%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fsonarr%3Apull" \
| jq -r '.token') | jq -r '.token')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}"); then "https://ghcr.io/v2/${image}/manifests/${tag}" \
digest=$(jq -r '.config.digest' <<< "${digest}"); | jq -r 'first(.manifests[].digest)')
fi digest=$(curl -s \
fi --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}") "https://ghcr.io/v2/${image}/blobs/${digest}")
@ -94,54 +60,45 @@ jobs:
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "**** Can't retrieve last pushed version, exiting ****"
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY FAILURE_REASON="Can't retrieve last pushed version for sonarr tag develop"
FAILURE_REASON="Can't retrieve last pushed version for sonarr tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, 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"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY echo "**** Last pushed version: ${IMAGE_VERSION} ****"
if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then echo "Last pushed version: ${IMAGE_VERSION}" >> $GITHUB_STEP_SUMMARY
echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
echo "Version ${EXT_RELEASE} already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/develop/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 echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****"
echo "New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
if [[ "${artifacts_found}" == "false" ]]; then echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY response=$(curl -iX POST \
FAILURE_REASON="New version ${EXT_RELEASE} for sonarr tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later." https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/develop/buildWithParameters?PACKAGE_CHECK=false \
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], echo "**** Jenkins job queue url: ${response%$'\r'} ****"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} echo "**** Sleeping 10 seconds until job starts ****"
else sleep 10
printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY buildurl="${buildurl%$'\r'}"
if [[ "${artifacts_found}" == "true" ]]; then echo "**** Jenkins job build url: ${buildurl} ****"
echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
fi echo "**** Attempting to change the Jenkins job description ****"
response=$(curl -iX POST \ curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/master/buildWithParameters?PACKAGE_CHECK=false \ "${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY --data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY --data-urlencode "Submit=Submit"
sleep 10 echo "**** Notifying Discord ****"
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') TRIGGER_REASON="A version change was detected for sonarr tag develop. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
buildurl="${buildurl%$'\r'}" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY "description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--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 sonarr 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 }}
fi
fi fi

27
.github/workflows/external_trigger_scheduler.yml vendored Normal file → Executable file
View File

@ -5,9 +5,6 @@ on:
- cron: '19 * * * *' - cron: '19 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -18,31 +15,31 @@ jobs:
- name: External Trigger Scheduler - name: External Trigger Scheduler
run: | run: |
printf "# External trigger scheduler for docker-sonarr\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/jenkins-vars.yml) ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch') ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type') ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live and trigger is not os; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
echo "Triggering external trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \ -d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-sonarr/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-sonarr/actions/workflows/external_trigger.yml/dispatches
else else
echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Skipping branch ${br} due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY echo "**** ${br} is either a dev branch, or has no external version; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

8
.github/workflows/greetings.yml vendored Normal file → Executable file
View File

@ -2,18 +2,12 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1
with: 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.' 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-sonarr/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!' pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-sonarr/blob/develop/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

42
.github/workflows/package_trigger.yml vendored Executable file
View File

@ -0,0 +1,42 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-develop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- name: Package Trigger
if: github.ref == 'refs/heads/develop'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_SONARR_DEVELOP }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_SONARR_DEVELOP is set; skipping trigger. ****"
echo "Github secret \`PAUSE_PACKAGE_TRIGGER_SONARR_DEVELOP\` is set; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/develop/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
echo "There already seems to be an active build on Jenkins; skipping package trigger" >> $GITHUB_STEP_SUMMARY
exit 0
fi
echo "**** Package trigger running off of develop branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_SONARR_DEVELOP\". ****"
echo "Package trigger running off of develop branch. To disable, set a Github secret named \`PAUSE_PACKAGE_TRIGGER_SONARR_DEVELOP\`" >> $GITHUB_STEP_SUMMARY
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/develop/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "Jenkins job build url: ${buildurl}" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

105
.github/workflows/package_trigger_scheduler.yml vendored Normal file → Executable file
View File

@ -5,9 +5,6 @@ on:
- cron: '26 23 * * 5' - cron: '26 23 * * 5'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -17,87 +14,37 @@ jobs:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
printf "# Package trigger scheduler for docker-sonarr\n\n" >> $GITHUB_STEP_SUMMARY echo "**** Branches found: ****"
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY git for-each-ref --format='%(refname:short)' refs/remotes
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes) for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
if [[ "${br}" == "HEAD" ]]; then br=$(echo "$br" | sed 's|origin/||g')
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Evaluating branch ${br} ****"
continue ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/jenkins-vars.yml | yq -r '.ls_branch')
fi if [ "${br}" == "${ls_branch}" ]; then
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY echo "**** Branch ${br} appears to be live; checking workflow. ****"
JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/jenkins-vars.yml) if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/Jenkinsfile >/dev/null 2>&1; then echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "Triggering package trigger workflow for branch ${br}" >> $GITHUB_STEP_SUMMARY
echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-sonarr/${br}/readme-vars.yml)
if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^sonarr_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`sonarr_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`sonarr_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \ curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/${br}/buildWithParameters?PACKAGE_CHECK=true \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") -H "Accept: application/vnd.github.v3+json" \
if [[ -z "${response}" ]]; then -d "{\"ref\":\"refs/heads/${br}\"}" \
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY https://api.github.com/repos/linuxserver/docker-sonarr/actions/workflows/package_trigger.yml/dispatches
echo "> Jenkins build could not be triggered. Skipping branch." sleep 30
continue else
fi echo "**** Workflow doesn't exist; skipping trigger. ****"
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to no package trigger workflow present." >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
if [[ -n "${triggered_branches}" ]]; then echo "**** Notifying Discord ****"
NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-sonarr/activity/ \n" "description": "**Package Check Build(s) Triggered for sonarr** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-sonarr/activity/"' \n"}],
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for sonarr** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

View File

@ -5,8 +5,6 @@ on:
- '**/run' - '**/run'
- '**/finish' - '**/finish'
- '**/check' - '**/check'
- 'root/migrations/*'
jobs: jobs:
permission_check: permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1 uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:3.23 FROM ghcr.io/linuxserver/baseimage-alpine:3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -10,11 +10,9 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="thespad" LABEL maintainer="thespad"
# set environment variables # set environment variables
ENV XDG_CONFIG_HOME="/config/xdg" \ ENV XDG_CONFIG_HOME="/config/xdg"
SONARR_CHANNEL="v4-stable" \ ENV SONARR_BRANCH="develop"
SONARR_BRANCH="main" \ ENV SONARR_CHANNEL="v4-nightly"
COMPlus_EnableDiagnostics=0 \
TMPDIR=/run/sonarr-temp
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
@ -35,7 +33,6 @@ RUN \
/tmp/sonarr.tar.gz -C \ /tmp/sonarr.tar.gz -C \
/app/sonarr/bin --strip-components=1 && \ /app/sonarr/bin --strip-components=1 && \
echo -e "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION:-LocalBuild}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)" > /app/sonarr/package_info && \ echo -e "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION:-LocalBuild}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)" > /app/sonarr/package_info && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/app/sonarr/bin/Sonarr.Update \ /app/sonarr/bin/Sonarr.Update \

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.23 FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.19
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@ -10,11 +10,9 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="thespad" LABEL maintainer="thespad"
# set environment variables # set environment variables
ENV XDG_CONFIG_HOME="/config/xdg" \ ENV XDG_CONFIG_HOME="/config/xdg"
SONARR_CHANNEL="v4-stable" \ ENV SONARR_BRANCH="develop"
SONARR_BRANCH="main" \ ENV SONARR_CHANNEL="v4-nightly"
COMPlus_EnableDiagnostics=0 \
TMPDIR=/run/sonarr-temp
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install packages ****" && \
@ -35,7 +33,6 @@ RUN \
/tmp/sonarr.tar.gz -C \ /tmp/sonarr.tar.gz -C \
/app/sonarr/bin --strip-components=1 && \ /app/sonarr/bin --strip-components=1 && \
echo -e "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION:-LocalBuild}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)" > /app/sonarr/package_info && \ echo -e "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION:-LocalBuild}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)" > /app/sonarr/package_info && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/app/sonarr/bin/Sonarr.Update \ /app/sonarr/bin/Sonarr.Update \

643
Jenkinsfile vendored
View File

@ -8,7 +8,7 @@ pipeline {
} }
// Input to determine if this is a package check // Input to determine if this is a package check
parameters { parameters {
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
} }
// Configuration for the variables used for this specific repo // Configuration for the variables used for this specific repo
environment { environment {
@ -17,8 +17,6 @@ pipeline {
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')
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat') DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
QUAYIO_API_TOKEN=credentials('quayio-repo-api-token')
GIT_SIGNING_KEY=credentials('484fbca6-9a4f-455e-b9e3-97ac98785f5f')
BUILD_VERSION_ARG = 'SONARR_VERSION' BUILD_VERSION_ARG = 'SONARR_VERSION'
LS_USER = 'linuxserver' LS_USER = 'linuxserver'
LS_REPO = 'docker-sonarr' LS_REPO = 'docker-sonarr'
@ -26,57 +24,31 @@ pipeline {
DOCKERHUB_IMAGE = 'linuxserver/sonarr' DOCKERHUB_IMAGE = 'linuxserver/sonarr'
DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr' DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr'
PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr' PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr'
DIST_IMAGE = 'ubuntu' DIST_IMAGE = 'alpine'
MULTIARCH='true' MULTIARCH='true'
CI='true' CI='true'
CI_WEB='true' CI_WEB='true'
CI_PORT='8989' CI_PORT='8989'
CI_SSL='false' CI_SSL='false'
CI_DELAY='240' CI_DELAY='120'
CI_DOCKERENV='' CI_DOCKERENV='TZ=US/Pacific'
CI_AUTH='' CI_AUTH=''
CI_WEBPATH='/system/status' CI_WEBPATH='/system/status'
} }
stages { stages {
stage("Set git config"){
steps{
sh '''#!/bin/bash
cat ${GIT_SIGNING_KEY} > /config/.ssh/id_sign
chmod 600 /config/.ssh/id_sign
ssh-keygen -y -f /config/.ssh/id_sign > /config/.ssh/id_sign.pub
echo "Using $(ssh-keygen -lf /config/.ssh/id_sign) to sign commits"
git config --global gpg.format ssh
git config --global user.signingkey /config/.ssh/id_sign
git config --global commit.gpgsign true
'''
}
}
// Setup all the basic environment variables needed for the build // Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){ stage("Set ENV Variables base"){
steps{ steps{
echo "Running on node: ${NODE_NAME}"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Pruning builder" containers=$(docker ps -aq)
docker builder prune -f --builder container || :
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') docker stop ${containers}
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || : '''
docker image prune -af || :
'''
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:develop 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@ -93,12 +65,8 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./root/donate.txt' env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml ./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 sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" ''' echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{ script{
@ -109,7 +77,7 @@ pipeline {
script{ script{
env.LS_TAG_NUMBER = sh( env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null) tagsha=$(git rev-list -n 1 develop-${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER} echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then elif [ -z "${GIT_COMMIT}" ]; then
@ -147,7 +115,7 @@ pipeline {
steps{ steps{
script{ script{
env.EXT_RELEASE = sh( env.EXT_RELEASE = sh(
script: ''' curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel=="v4-stable") | .version' ''', script: ''' curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel=="v4-nightly") | .version' ''',
returnStdout: true).trim() returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command' env.RELEASE_LINK = 'custom_command'
} }
@ -187,10 +155,10 @@ pipeline {
} }
} }
} }
// If this is a master build use live docker endpoints // If this is a develop build use live docker endpoints
stage("Set ENV live build"){ stage("Set ENV live build"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -200,22 +168,20 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-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 // If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){ stage("Set ENV dev build"){
when { when {
not {branch "master"} not {branch "develop"}
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
@ -225,16 +191,14 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + 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-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'develop-' + 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.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/' 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'
} }
} }
} }
@ -250,17 +214,15 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'develop-' + 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.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST env.META_TAG = 'develop-' + 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.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
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'
} }
} }
} }
@ -283,7 +245,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.23 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.19 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \ apk add --no-cache python3 && \
python3 -m venv /lsiopy && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \ pip install --no-cache-dir -U pip && \
@ -295,7 +257,7 @@ pipeline {
// Use helper containers to render templated files // Use helper containers to render templated files
stage('Update-Templates') { stage('Update-Templates') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
expression { expression {
env.CONTAINER_NAME != null env.CONTAINER_NAME != null
@ -307,24 +269,24 @@ pipeline {
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker pull ghcr.io/linuxserver/jenkins-builder:latest
# Cloned repo paths for templating: # Cloned repo paths for templating:
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch master of ${LS_USER}/${LS_REPO} for running the jenkins builder on # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch develop 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}/repo/${LS_REPO}: Cloned branch develop 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}/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/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 # ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME} git clone --branch develop --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 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" echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile git add Jenkinsfile
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push 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 develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit" echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -333,7 +295,7 @@ pipeline {
echo "Jenkinsfile is up to date." echo "Jenkinsfile is up to date."
fi fi
echo "Starting Stage 2 - Delete old templates" echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml .github/workflows/package_trigger.yml" OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
for i in ${OLD_TEMPLATES}; do for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@ -343,13 +305,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
for i in ${TEMPLATES_TO_DELETE}; do for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}" git rm "${i}"
done done
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push 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 develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit" echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -357,35 +319,6 @@ pipeline {
else else
echo "No templates to delete" echo "No templates to delete"
fi fi
echo "Starting Stage 2.5 - Update init diagram"
if ! grep -q 'init_diagram:' readme-vars.yml; then
echo "Adding the key 'init_diagram' to readme-vars.yml"
sed -i '\\|^#.*changelog.*$|d' readme-vars.yml
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
fi
mkdir -p ${TEMPDIR}/d2
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest
ls -al ${TEMPDIR}/d2
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml
if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then
echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit."
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml
git add readme-vars.yml
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
exit 0
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Init diagram is unchanged"
fi
echo "Starting Stage 3 - Update templates" echo "Starting Stage 3 - Update templates"
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
@ -394,7 +327,7 @@ pipeline {
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master git checkout -f develop
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
@ -407,8 +340,8 @@ pipeline {
fi fi
git add readme-vars.yml ${TEMPLATED_FILES} git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push 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 develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit" echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR} rm -Rf ${TEMPDIR}
@ -419,7 +352,7 @@ pipeline {
fi fi
echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub" echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
mkdir -p ${TEMPDIR}/docs mkdir -p ${TEMPDIR}/docs
git clone --depth=1 https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation cd ${TEMPDIR}/docs/docker-documentation
@ -437,8 +370,8 @@ pipeline {
echo "Docs update not needed, skipping" echo "Docs update not needed, skipping"
fi fi
mkdir -p ${TEMPDIR}/unraid mkdir -p ${TEMPDIR}/unraid
git clone --depth=1 https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone --depth=1 https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
@ -448,14 +381,16 @@ pipeline {
echo "Updating Unraid template" echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/ cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||') GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list && [[ -f ${TEMPDIR}/unraid/templates/unraid/deprecated/${CONTAINER_NAME}.xml ]]; then if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, and already in the deprecation folder." if [[ -f ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ]]; then
elif grep -wq "^${CONTAINER_NAME}$" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then echo "Image is on the ignore list, marking Unraid template as deprecated"
echo "Image is on the ignore list, marking Unraid template as deprecated" cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ git add -u unraid/${CONTAINER_NAME}.xml
git add -u unraid/${CONTAINER_NAME}.xml git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || : git commit -m 'Bot Moving Deprecated Unraid Template' || :
git commit -m 'Bot Moving Deprecated Unraid Template' || : else
echo "Image is on the ignore list, but no template exist, skipping deprecation"
fi
else else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml git add unraid/${CONTAINER_NAME}.xml
@ -509,7 +444,7 @@ pipeline {
// Exit the build if the Templated files were just updated // Exit the build if the Templated files were just updated
stage('Template-exit') { stage('Template-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true' environment name: 'FILES_UPDATED', value: 'true'
expression { expression {
@ -522,10 +457,10 @@ pipeline {
} }
} }
} }
// If this is a master build check the S6 service file perms // If this is a develop build check the S6 service file perms
stage("Check S6 Service file Permissions"){ stage("Check S6 Service file Permissions"){
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -543,10 +478,10 @@ pipeline {
} }
} }
/* ####################### /* #######################
GitLab Mirroring and Quay.io Repo Visibility GitLab Mirroring
####################### */ ####################### */
// Ping into Gitlab to mirror this repo and have a registry endpoint & mark this repo on Quay.io as public // Ping into Gitlab to mirror this repo and have a registry endpoint
stage("GitLab Mirror and Quay.io Visibility"){ stage("GitLab Mirror"){
when { when {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -562,8 +497,6 @@ pipeline {
"visibility":"public"}' ''' "visibility":"public"}' '''
sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \ sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
-d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" ''' -d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
sh '''curl -H "Content-Type: application/json" -H "Authorization: Bearer ${QUAYIO_API_TOKEN}" -X POST "https://quay.io/api/v1/repository${QUAYIMAGE/quay.io/}/changevisibility" \
-d '{"visibility":"public"}' ||: '''
} }
} }
/* ############### /* ###############
@ -594,45 +527,7 @@ pipeline {
--label \"org.opencontainers.image.title=Sonarr\" \ --label \"org.opencontainers.image.title=Sonarr\" \
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \ --label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash
set -e
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker tag ${IMAGE}:${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
done
'''
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot',
usernameVariable: 'QUAYUSER',
passwordVariable: 'QUAYPASS'
]
]) {
retry_backoff(5,5) {
sh '''#! /bin/bash
set -e
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
}
}
} }
} }
// Build MultiArch Docker containers for push to LS Repo // Build MultiArch Docker containers for push to LS Repo
@ -663,45 +558,7 @@ pipeline {
--label \"org.opencontainers.image.title=Sonarr\" \ --label \"org.opencontainers.image.title=Sonarr\" \
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \ --label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \ --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash
set -e
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
done
'''
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot',
usernameVariable: 'QUAYUSER',
passwordVariable: 'QUAYPASS'
]
]) {
retry_backoff(5,5) {
sh '''#! /bin/bash
set -e
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
}
}
} }
} }
stage('Build ARM64') { stage('Build ARM64') {
@ -710,6 +567,10 @@ pipeline {
} }
steps { steps {
echo "Running on node: ${NODE_NAME}" echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64" sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.aarch64"
sh "docker buildx build \ sh "docker buildx build \
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
@ -725,52 +586,17 @@ pipeline {
--label \"org.opencontainers.image.title=Sonarr\" \ --label \"org.opencontainers.image.title=Sonarr\" \
--label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \ --label \"org.opencontainers.image.description=[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. \" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \ --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh '''#! /bin/bash sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
set -e retry(5) {
IFS=',' read -ra CACHE <<< "$BUILDCACHE" sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
for i in "${CACHE[@]}"; do
docker tag ${IMAGE}:arm64v8-${META_TAG} ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
done
'''
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot',
usernameVariable: 'QUAYUSER',
passwordVariable: 'QUAYPASS'
]
]) {
retry_backoff(5,5) {
sh '''#! /bin/bash
set -e
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
done
fi
'''
}
} }
sh '''#! /bin/bash sh '''#! /bin/bash
containers=$(docker ps -aq) containers=$(docker ps -aq)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
docker stop ${containers} docker stop ${containers}
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || : '''
docker image prune -af || :
'''
} }
} }
} }
@ -778,7 +604,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison // Take the image we just built and dump package versions for comparison
stage('Update-packages') { stage('Update-packages') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@ -795,20 +621,20 @@ pipeline {
docker run --rm \ docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \ -v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \ ghcr.io/anchore/syft:latest \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt ${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) 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" 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 if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f develop
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/ cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/ cd ${TEMPDIR}/${LS_REPO}/
wait wait
git add package_versions.txt git add package_versions.txt
git commit -m 'Bot Updating Package Versions' git commit -m 'Bot Updating Package Versions'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push 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 develop
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process" echo "Package tag updated, stopping build process"
else else
@ -826,7 +652,7 @@ pipeline {
// Exit the build if the package file was just updated // Exit the build if the package file was just updated
stage('PACKAGE-exit') { stage('PACKAGE-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true' environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -840,7 +666,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push // Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') { stage('PACKAGECHECK-exit') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false' environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@ -874,27 +700,18 @@ pipeline {
} }
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
if grep -q 'docker-baseimage' <<< "${LS_REPO}"; then docker pull ghcr.io/linuxserver/ci:latest
echo "Detected baseimage, setting LSIO_FIRST_PARTY=true"
if [ -n "${CI_DOCKERENV}" ]; then
CI_DOCKERENV="LSIO_FIRST_PARTY=true|${CI_DOCKERENV}"
else
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
if [ "${MULTIARCH}" == "true" ]; then if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64 docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
docker run --rm \ docker run --rm \
--shm-size=1gb \ --shm-size=1gb \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-e IMAGE=\"${IMAGE}\" \ -e IMAGE=\"${IMAGE}\" \
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \ -e DELAY_START=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \ -e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \ -e META_TAG=\"${META_TAG}\" \
-e RELEASE_TAG=\"latest\" \
-e PORT=\"${CI_PORT}\" \ -e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \ -e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \ -e BASE=\"${DIST_IMAGE}\" \
@ -904,11 +721,7 @@ pipeline {
-e WEB_SCREENSHOT=\"${CI_WEB}\" \ -e WEB_SCREENSHOT=\"${CI_WEB}\" \
-e WEB_AUTH=\"${CI_AUTH}\" \ -e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \ -e WEB_PATH=\"${CI_WEBPATH}\" \
-e 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''' python3 test_build.py'''
} }
} }
@ -923,25 +736,37 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
retry_backoff(5,5) { withCredentials([
sh '''#! /bin/bash [
set -e $class: 'UsernamePasswordMultiBinding',
for PUSHIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do credentialsId: 'Quay.io-Robot',
[[ ${PUSHIMAGE%%/*} =~ \\. ]] && PUSHIMAGEPLUS="${PUSHIMAGE}" || PUSHIMAGEPLUS="docker.io/${PUSHIMAGE}" usernameVariable: 'QUAYUSER',
IFS=',' read -ra CACHE <<< "$BUILDCACHE" passwordVariable: 'QUAYPASS'
for i in "${CACHE[@]}"; do ]
if [[ "${PUSHIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then ]) {
CACHEIMAGE=${i} retry(5) {
fi sh '''#! /bin/bash
set -e
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:develop
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
fi
docker push ${PUSHIMAGE}:develop
docker push ${PUSHIMAGE}:${META_TAG}
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker push ${PUSHIMAGE}:${SEMVER}
fi
done done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ '''
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
} }
} }
} }
@ -952,48 +777,86 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
retry_backoff(5,5) { withCredentials([
sh '''#! /bin/bash [
set -e $class: 'UsernamePasswordMultiBinding',
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do credentialsId: 'Quay.io-Robot',
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}" usernameVariable: 'QUAYUSER',
IFS=',' read -ra CACHE <<< "$BUILDCACHE" passwordVariable: 'QUAYPASS'
for i in "${CACHE[@]}"; do ]
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then ]) {
CACHEIMAGE=${i} retry(5) {
fi sh '''#! /bin/bash
set -e
echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-develop
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-develop
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-develop
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-develop
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
docker manifest push --purge ${MANIFESTIMAGE}:develop || :
docker manifest create ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:amd64-develop ${MANIFESTIMAGE}:arm64v8-develop
docker manifest annotate ${MANIFESTIMAGE}:develop ${MANIFESTIMAGE}:arm64v8-develop --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
fi
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-develop")
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop || :
docker manifest create ${MANIFESTIMAGE}:arm32v7-develop ${MANIFESTIMAGE}:amd64-develop
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-develop
fi
docker manifest push --purge ${MANIFESTIMAGE}:develop
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
fi
done done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \ '''
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; } }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
fi
done
'''
} }
} }
} }
// If this is a public release tag it in the LS Github // If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') { stage('Github-Tag-Push-Release') {
when { when {
branch "master" branch "develop"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@ -1001,54 +864,36 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { 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 develop",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
jq -n \ echo '{"tag_name":"'${META_TAG}'",\
--arg tag_name "$META_TAG" \ "target_commitish": "develop",\
--arg target_commitish "master" \ "name": "'${META_TAG}'",\
--arg ci_url "${CI_URL:-N/A}" \ "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
--arg ls_notes "$AUTO_RELEASE_NOTES" \ printf '","draft": false,"prerelease": true}' >> releasebody.json
--arg remote_notes "$(cat 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'''
"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 // Add protection to the release branch
stage('Github-Release-Branch-Protection') { stage('Github-Release-Branch-Protection') {
when { when {
branch "master" branch "develop"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Setting up protection for release branch master" echo "Setting up protection for release branch develop"
sh '''#! /bin/bash sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \ curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/develop/protection \
-d $(jq -c . << EOF -d $(jq -c . << EOF
{ {
"required_status_checks": null, "required_status_checks": null,
@ -1157,94 +1002,32 @@ EOF
###################### */ ###################### */
post { post {
always { 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()
if (env.EXIT_STATUS == "ABORTED"){ if (env.EXIT_STATUS == "ABORTED"){
sh 'echo "build aborted"' sh 'echo "build aborted"'
}else{ }
if (currentBuild.currentResult == "SUCCESS"){ else if (currentBuild.currentResult == "SUCCESS"){
if (env.GITHUBIMAGE =~ /lspipepr/){ sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\
env.JOB_WEBHOOK_STATUS='Success' "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
env.JOB_WEBHOOK_COLOUR=3957028 "username": "Jenkins"}' ${BUILDS_DISCORD} '''
env.JOB_WEBHOOK_FOOTER='PR Build' }
}else if (env.GITHUBIMAGE =~ /lsiodev/){ else {
env.JOB_WEBHOOK_STATUS='Success' sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\
env.JOB_WEBHOOK_COLOUR=3957028 "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
env.JOB_WEBHOOK_FOOTER='Dev Build'
}else{
env.JOB_WEBHOOK_STATUS='Success'
env.JOB_WEBHOOK_COLOUR=1681177
env.JOB_WEBHOOK_FOOTER='Live Build'
}
}else{
if (env.GITHUBIMAGE =~ /lspipepr/){
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=12669523
env.JOB_WEBHOOK_FOOTER='PR Build'
}else if (env.GITHUBIMAGE =~ /lsiodev/){
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=12669523
env.JOB_WEBHOOK_FOOTER='Dev Build'
}else{
env.JOB_WEBHOOK_STATUS='Failure'
env.JOB_WEBHOOK_COLOUR=16711680
env.JOB_WEBHOOK_FOOTER='Live Build'
}
}
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"'color'": '${JOB_WEBHOOK_COLOUR}',\
"footer": {"text" : "'"${JOB_WEBHOOK_FOOTER}"'"},\
"timestamp": "'${JOB_DATE}'",\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** '${JOB_WEBHOOK_STATUS}'\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
} }
} }
cleanup { cleanup {
sh '''#! /bin/bash sh '''#! /bin/bash
echo "Pruning builder!!" echo "Performing docker system prune!!"
docker builder prune -f --builder container || : containers=$(docker ps -aq)
containers=$(docker ps -q)
if [[ -n "${containers}" ]]; then if [[ -n "${containers}" ]]; then
BUILDX_CONTAINER_ID=$(docker ps -qf 'name=buildx_buildkit') docker stop ${containers}
for container in ${containers}; do
if [[ "${container}" == "${BUILDX_CONTAINER_ID}" ]]; then
echo "skipping buildx container in docker stop"
else
echo "Stopping container ${container}"
docker stop ${container}
fi
done
fi fi
docker system prune -f --volumes || : docker system prune -af --volumes || :
docker image prune -af || :
''' '''
cleanWs() cleanWs()
} }
} }
} }
def retry_backoff(int max_attempts, int power_base, Closure c) {
int n = 0
while (n < max_attempts) {
try {
c()
return
} catch (err) {
if ((n + 1) >= max_attempts) {
throw err
}
sleep(power_base ** n)
n++
}
}
return
}

0
LICENSE Normal file → Executable file
View File

100
README.md
View File

@ -1,10 +1,11 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-sonarr/blob/master/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-sonarr/blob/develop/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@ -19,14 +20,15 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at: 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! * [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. * [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [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. * [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 * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/sonarr](https://github.com/linuxserver/docker-sonarr) # [linuxserver/sonarr](https://github.com/linuxserver/docker-sonarr)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fsonarr?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh) [![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fsonarr?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fsonarr)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-sonarr) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-sonarr)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-sonarr/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-sonarr/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-sonarr/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-sonarr/packages)
@ -34,7 +36,7 @@ Find us at:
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/sonarr) [![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/sonarr)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/sonarr) [![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/sonarr)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/sonarr) [![Docker Stars](https://img.shields.io/docker/stars/linuxserver/sonarr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/sonarr)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-sonarr%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/master/) [![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-sonarr%2Fjob%2Fdevelop%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-sonarr/job/develop/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fsonarr%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/sonarr/latest/index.html) [![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fsonarr%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/sonarr/latest/index.html)
[Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. [Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
@ -45,7 +47,7 @@ Find us at:
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/). 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/sonarr:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/sonarr:develop` 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:
@ -53,6 +55,7 @@ The architectures supported by this image are:
| :----: | :----: | ---- | | :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | ❌ | |
## Version Tags ## Version Tags
@ -60,8 +63,8 @@ This image provides various versions that are available via tags. Please read th
| Tag | Available | Description | | Tag | Available | Description |
| :----: | :----: |--- | | :----: | :----: |--- |
| latest | ✅ | Stable releases from Sonarr | | latest | ✅ | Stable releases from Sonarr (currently v4) |
| develop | ✅ | Development releases from Sonarr | | develop | ✅ | Development releases from Sonarr (currently v4) |
## Application Setup ## Application Setup
@ -69,47 +72,32 @@ Access the webui at `<your-ip>:8989`, for more information check out [Sonarr](ht
### Media folders ### Media folders
We have set `/tv` and `/downloads` as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. We have set `/tv` and `/downloads` as ***optional paths***, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.
Use the optional paths if you don't understand, or don't want hardlinks/atomic moves. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.
<details> The folks over at servarr.com wrote a good [write-up](https://wiki.servarr.com/Docker_Guide#Consistent_and_well_planned_paths) on how to get started with this.
<summary>Well planned paths</summary>
The folks over at servarr.com wrote a good [write-up](https://wiki.servarr.com/docker-guide#consistent-and-well-planned-paths) on how to get started with this.
</details>
## Read-Only Operation
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
## Non-Root Operation
This image can be run with a non-root user. For details please [read the docs](https://docs.linuxserver.io/misc/non-root/).
## Usage ## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
services: services:
sonarr: sonarr:
image: lscr.io/linuxserver/sonarr:latest image: lscr.io/linuxserver/sonarr:develop
container_name: sonarr container_name: sonarr
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=Etc/UTC - TZ=Etc/UTC
volumes: volumes:
- /path/to/sonarr/data:/config - <path to data>:/config
- /path/to/tvseries:/tv #optional - <path/to/tvseries>:/tv
- /path/to/downloadclient-downloads:/downloads #optional - <path/to/downloadclient-downloads>:/downloads
ports: ports:
- 8989:8989 - 8989:8989
restart: unless-stopped restart: unless-stopped
@ -124,11 +112,11 @@ docker run -d \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Etc/UTC \ -e TZ=Etc/UTC \
-p 8989:8989 \ -p 8989:8989 \
-v /path/to/sonarr/data:/config \ -v <path to data>:/config \
-v /path/to/tvseries:/tv `#optional` \ -v <path/to/tvseries>:/tv \
-v /path/to/downloadclient-downloads:/downloads `#optional` \ -v <path/to/downloadclient-downloads>:/downloads \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/sonarr:latest lscr.io/linuxserver/sonarr:develop
``` ```
## Parameters ## Parameters
@ -137,15 +125,13 @@ Containers are configured using parameters passed at runtime (such as those abov
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 8989:8989` | The port for the Sonarr web interface | | `-p 8989` | The port for the Sonarr webinterface |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-v /config` | Database and sonarr configs | | `-v /config` | Database and sonarr configs |
| `-v /tv` | Location of TV library on disk (See note in Application setup) | | `-v /tv` | Location of TV library on disk |
| `-v /downloads` | Location of download managers output directory (See note in Application setup) | | `-v /downloads` | Location of download managers output directory |
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
| `--user=1000:1000` | Run container with a non-root user. Please [read the docs](https://docs.linuxserver.io/misc/non-root/). |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -211,7 +197,7 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
* Image version number: * Image version number:
```bash ```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sonarr:latest docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sonarr:develop
``` ```
## Updating Info ## Updating Info
@ -259,7 +245,7 @@ Below are the instructions for updating containers:
* Update the image: * Update the image:
```bash ```bash
docker pull lscr.io/linuxserver/sonarr:latest docker pull lscr.io/linuxserver/sonarr:develop
``` ```
* Stop the running container: * Stop the running container:
@ -283,8 +269,7 @@ Below are the instructions for updating containers:
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
>[!TIP] **tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@ -296,36 +281,29 @@ cd docker-sonarr
docker build \ docker build \
--no-cache \ --no-cache \
--pull \ --pull \
-t lscr.io/linuxserver/sonarr:latest . -t lscr.io/linuxserver/sonarr:develop .
``` ```
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static` The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```bash ```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset docker run --rm --privileged multiarch/qemu-user-static:register --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions ## Versions
* **15.01.26:** - Rebase to Alpine 3.23.
* **05.07.25:** - Rebase to Alpine 3.22.
* **09.01.25:** - Fix rootless entrypoint.
* **23.12.24:** - Rebase Alpine 3.21.
* **31.05.24:** - Rebase Alpine 3.20.
* **12.01.24:** - Update download url. * **12.01.24:** - Update download url.
* **30.12.23:** - Rebase master branch to Alpine 3.19. * **30.12.23:** - Rebase to Alpine 3.19.
* **15.02.23:** - Rebase master branch to Jammy. * **30.05.23:** - Rebase to Alpine 3.18.
* **19.12.22:** - Rebase develop branch Alpine 3.17. * **19.12.22:** - Rebase develop branch to Alpine 3.17.
* **24.11.22:** - Bump develop branch to v4, rebase to Alpine 3.16. * **24.11.22:** - Bump develop branch to v4, rebase to Alpine.
* **03.08.22:** - Deprecate armhf. * **03.08.22:** - Deprecate armhf.
* **02.08.22:** - Add armhf deprecation warning. * **02.08.22:** - Rebase develop branch to Ubuntu Focal due to dropping of mono support on Alpine.
* **28.04.22:** - Rebase master branch to mono 6.12 base (focal). * **20.02.22:** - Rebase develop branch to Alpine.
* **20.02.22:** - Rebase develop branch to Alpine, deprecate develop-alpine branch. * **13.12.21:** - Switch strategy for mediainfo
* **28.12.21:** - Add develop-alpine branch. * **10.02.21:** - Rebase to mono focal baseimage. Switch to v3 nightlies.
* **11.05.21:** - Make the paths clearer to the user.
* **10.03.21:** - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update.
* **18.01.21:** - Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information. * **18.01.21:** - Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information.
* **05.04.20:** - Move app to /app. * **05.04.20:** - Move app to /app.
* **01.08.19:** - Rebase to Linuxserver LTS mono version. * **01.08.19:** - Rebase to Linuxserver LTS mono version.

View File

@ -3,10 +3,11 @@
# jenkins variables # jenkins variables
project_name: docker-sonarr project_name: docker-sonarr
external_type: na external_type: na
custom_version_command: "curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel==\"v4-stable\") | .version'" custom_version_command: "curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.releaseChannel==\"v4-nightly\") | .version'"
release_type: stable release_type: prerelease
release_tag: latest release_tag: develop
ls_branch: master ls_branch: develop
build_armhf: false
repo_vars: repo_vars:
- BUILD_VERSION_ARG = 'SONARR_VERSION' - BUILD_VERSION_ARG = 'SONARR_VERSION'
- LS_USER = 'linuxserver' - LS_USER = 'linuxserver'
@ -15,14 +16,14 @@ repo_vars:
- DOCKERHUB_IMAGE = 'linuxserver/sonarr' - DOCKERHUB_IMAGE = 'linuxserver/sonarr'
- DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr' - DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr'
- PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr' - PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr'
- DIST_IMAGE = 'ubuntu' - DIST_IMAGE = 'alpine'
- MULTIARCH='true' - MULTIARCH='true'
- CI='true' - CI='true'
- CI_WEB='true' - CI_WEB='true'
- CI_PORT='8989' - CI_PORT='8989'
- CI_SSL='false' - CI_SSL='false'
- CI_DELAY='240' - CI_DELAY='120'
- CI_DOCKERENV='' - CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='' - CI_AUTH=''
- CI_WEBPATH='/system/status' - CI_WEBPATH='/system/status'
sponsor_links: sponsor_links:

View File

@ -1,185 +1,413 @@
NAME VERSION TYPE NAME VERSION TYPE
BouncyCastle.Cryptography 2.4.0 dotnet (+5 duplicates) Bouncy Castle for .NET (netstandard2.0) 1.9.0.1 dotnet
Dapper 2.0.123 dotnet (+5 duplicates) Dapper 2.0.123.33578 dotnet
Diacritical.Net 1.0.4 dotnet (+5 duplicates) Diacritical 1.0.4.0 dotnet
DryIoc.Microsoft.DependencyInjection 6.2.0 dotnet (+1 duplicate) DryIoc 5.4.3.0 dotnet
DryIoc.dll 5.4.3 dotnet (+7 duplicates) DryIoc.Microsoft.DependencyInjection net6.0 6.2.0.0 dotnet
Dynamitey 2.0.9.136 dotnet (+3 duplicates) Dynamitey 2.0.9.136 dotnet
Equ 2.3.0 dotnet (+5 duplicates) FFMpegCore 4.0.0.0 dotnet
FluentValidation 9.5.4 dotnet (+5 duplicates) FluentMigrator 3.3.2.9 dotnet (+19 duplicates)
IPAddressRange 6.1.0 dotnet (+7 duplicates) FluentValidation 9.5.4.0 dotnet
Ical.Net 4.3.1 dotnet (+2 duplicates) Harmony 2.0.1.0 dotnet
ImpromptuInterface 7.0.1 dotnet (+3 duplicates) ICSharpCode.SharpZipLib 1.4.2.13 dotnet
Instances 1.6.1 dotnet (+5 duplicates) Ical.Net 1.0.0.0 dotnet
Lib.Harmony 2.3.3 dotnet (+1 duplicate) ImpromptuInterface 7.0.1.0 dotnet
MailKit 4.8.0 dotnet (+5 duplicates) Instances 1.0.0.0 dotnet
Microsoft.AspNetCore.Cryptography.Internal 6.0.21 dotnet (+5 duplicates) Json.NET 13.0.3.27908 dotnet
Microsoft.AspNetCore.Cryptography.KeyDerivation 6.0.21 dotnet (+5 duplicates) MailKit 3.6.0.0 dotnet
Microsoft.AspNetCore.Owin 6.0.21 dotnet (+1 duplicate) Microsoft.AspNetCore 6.0.1322.58013 dotnet
Microsoft.Bcl.AsyncInterfaces 6.0.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Antiforgery 6.0.1322.58013 dotnet
Microsoft.Bcl.TimeProvider 8.0.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Authentication 6.0.1322.58013 dotnet
Microsoft.Data.SqlClient 2.1.7 dotnet (+5 duplicates) Microsoft.AspNetCore.Authentication.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration 6.0.0 dotnet (+1 duplicate) Microsoft.AspNetCore.Authentication.Cookies 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration 6.0.1 dotnet (+4 duplicates) Microsoft.AspNetCore.Authentication.Core 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.Abstractions 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Authentication.OAuth 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.Binder 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Authorization 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.CommandLine 6.0.0 dotnet (+6 duplicates) Microsoft.AspNetCore.Authorization.Policy 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.EnvironmentVariables 6.0.1 dotnet (+6 duplicates) Microsoft.AspNetCore.Components 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.FileExtensions 6.0.0 dotnet (+6 duplicates) Microsoft.AspNetCore.Components.Authorization 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.Json 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Components.Forms 6.0.1322.58013 dotnet
Microsoft.Extensions.Configuration.UserSecrets 6.0.1 dotnet (+7 duplicates) Microsoft.AspNetCore.Components.Server 6.0.1322.58013 dotnet
Microsoft.Extensions.DependencyInjection 6.0.1 dotnet (+7 duplicates) Microsoft.AspNetCore.Components.Web 6.0.1322.58013 dotnet
Microsoft.Extensions.DependencyInjection.Abstractions 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Connections.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.DependencyInjection.Abstractions 7.0.0 dotnet (+1 duplicate) Microsoft.AspNetCore.CookiePolicy 6.0.1322.58013 dotnet
Microsoft.Extensions.FileProviders.Abstractions 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Cors 6.0.1322.58013 dotnet
Microsoft.Extensions.FileProviders.Physical 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Cryptography.Internal 6.0.2123.36438 dotnet
Microsoft.Extensions.FileSystemGlobbing 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Cryptography.KeyDerivation 6.0.2123.36438 dotnet
Microsoft.Extensions.Hosting 6.0.1 dotnet (+7 duplicates) Microsoft.AspNetCore.DataProtection 6.0.1322.58013 dotnet
Microsoft.Extensions.Hosting.Abstractions 6.0.0 dotnet (+4 duplicates) Microsoft.AspNetCore.DataProtection.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Hosting.WindowsServices 6.0.2 dotnet (+7 duplicates) Microsoft.AspNetCore.DataProtection.Extensions 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Diagnostics 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.Abstractions 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Diagnostics.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.Configuration 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Diagnostics.HealthChecks 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.Console 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.HostFiltering 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.Debug 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Hosting 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.EventLog 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Hosting.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Logging.EventSource 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Hosting.Server.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Options 6.0.0 dotnet (+4 duplicates) Microsoft.AspNetCore.Html.Abstractions 6.0.1322.58013 dotnet
Microsoft.Extensions.Options.ConfigurationExtensions 6.0.0 dotnet (+4 duplicates) Microsoft.AspNetCore.Http 6.0.1322.58013 dotnet
Microsoft.Extensions.Primitives 6.0.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Http.Abstractions 6.0.1322.58013 dotnet
Microsoft.Identity.Client 4.21.1 dotnet (+5 duplicates) Microsoft.AspNetCore.Http.Connections 6.0.1322.58013 dotnet
Microsoft.IdentityModel.JsonWebTokens 6.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Http.Connections.Common 6.0.1322.58013 dotnet
Microsoft.IdentityModel.Logging 6.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Http.Extensions 6.0.1322.58013 dotnet
Microsoft.IdentityModel.Protocols 6.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Http.Features 6.0.1322.58013 dotnet
Microsoft.IdentityModel.Protocols.OpenIdConnect 6.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Http.Results 6.0.1322.58013 dotnet
Microsoft.IdentityModel.Tokens 6.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.HttpLogging 6.0.1322.58013 dotnet
Microsoft.OpenApi 1.6.14 dotnet (+2 duplicates) Microsoft.AspNetCore.HttpOverrides 6.0.1322.58013 dotnet
Microsoft.Win32.SystemEvents 6.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.HttpsPolicy 6.0.1322.58013 dotnet
MimeKit 4.8.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Identity 6.0.1322.58013 dotnet
Mono.Nat 3.0.1 dotnet (+5 duplicates) Microsoft.AspNetCore.Localization 6.0.1322.58013 dotnet
Mono.Posix.NETStandard 5.20.1.34-servarr24 dotnet Microsoft.AspNetCore.Localization.Routing 6.0.1322.58013 dotnet
MonoTorrent 2.0.7 dotnet (+5 duplicates) Microsoft.AspNetCore.Metadata 6.0.1322.58013 dotnet
NLog 5.3.4 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc 6.0.1322.58013 dotnet
NLog.Extensions.Logging 5.3.15 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.Abstractions 6.0.1322.58013 dotnet
NLog.Layouts.ClefJsonLayout 1.0.2 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.ApiExplorer 6.0.1322.58013 dotnet
NLog.Targets.Syslog 7.0.0 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.Core 6.0.1322.58013 dotnet
Newtonsoft.Json 13.0.3 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.Cors 6.0.1322.58013 dotnet
NodaTime 3.2.0 dotnet (+2 duplicates) Microsoft.AspNetCore.Mvc.DataAnnotations 6.0.1322.58013 dotnet
Npgsql 7.0.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Mvc.Formatters.Json 6.0.1322.58013 dotnet
Polly 8.5.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Mvc.Formatters.Xml 6.0.1322.58013 dotnet
Polly.Contrib.WaitAndRetry 1.1.1 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.Localization 6.0.1322.58013 dotnet
Polly.Core 8.5.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Mvc.Razor 6.0.1322.58013 dotnet
ReusableTasks 2.0.0 dotnet (+5 duplicates) Microsoft.AspNetCore.Mvc.RazorPages 6.0.1322.58013 dotnet
Sentry 4.0.2 dotnet (+7 duplicates) Microsoft.AspNetCore.Mvc.TagHelpers 6.0.1322.58013 dotnet
Servarr.FFMpegCore 4.7.0-26 dotnet (+5 duplicates) Microsoft.AspNetCore.Mvc.ViewFeatures 6.0.1322.58013 dotnet
Servarr.FFprobe 5.1.4.112 dotnet (+5 duplicates) Microsoft.AspNetCore.Owin 6.0.2123.36438 dotnet
Servarr.FluentMigrator 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Razor 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Abstractions 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Razor.Runtime 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Extensions.Oracle 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.ResponseCaching 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Extensions.Postgres 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.ResponseCaching.Abstractions 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Extensions.SqlAnywhere 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.ResponseCompression 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Extensions.SqlServer 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Rewrite 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Routing 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Core 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Routing.Abstractions 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Db2 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.HttpSys 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Firebird 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.IIS 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Hana 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.IISIntegration 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.MySql 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.Kestrel 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Oracle 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.Kestrel.Core 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Postgres 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.Kestrel.Transport.Quic 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.Redshift 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.SQLite 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.Session 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.SqlAnywhere 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.SignalR 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.SqlServer 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.SignalR.Common 6.0.1322.58013 dotnet
Servarr.FluentMigrator.Runner.SqlServerCe 3.3.2.9 dotnet (+5 duplicates) Microsoft.AspNetCore.SignalR.Core 6.0.1322.58013 dotnet
SharpZipLib 1.4.2 dotnet (+7 duplicates) Microsoft.AspNetCore.SignalR.Protocols.Json 6.0.1322.58013 dotnet
SixLabors.ImageSharp 3.1.7 dotnet (+5 duplicates) Microsoft.AspNetCore.StaticFiles 6.0.1322.58013 dotnet
Sonarr 4.0.16 dotnet Microsoft.AspNetCore.WebSockets 6.0.1322.58013 dotnet
Sonarr.Api.V3 4.0.16 dotnet (+2 duplicates) Microsoft.AspNetCore.WebUtilities 6.0.1322.58013 dotnet
Sonarr.Common 4.0.16 dotnet (+7 duplicates) Microsoft.Bcl.AsyncInterfaces 6.0.21.52210 dotnet
Sonarr.Core 4.0.16 dotnet (+5 duplicates) Microsoft.Bcl.TimeProvider 8.0.23.53103 dotnet
Sonarr.Host 4.0.16 dotnet (+1 duplicate) Microsoft.CSharp 6.0.1322.58009 dotnet
Sonarr.Http 4.0.16 dotnet (+3 duplicates) Microsoft.Data.SqlClient 2.1.2+2a61e8301e9d21ada2338a9279cf27653e781757 dotnet
Sonarr.Mono 4.0.16 dotnet Microsoft.Extensions.Caching.Abstractions 6.0.21.52210 dotnet
Sonarr.RuntimePatches 4.0.16 dotnet (+1 duplicate) Microsoft.Extensions.Caching.Memory 6.0.222.6406 dotnet
Sonarr.SignalR 4.0.16 dotnet (+4 duplicates) Microsoft.Extensions.Configuration 6.0.322.12309 dotnet
Swashbuckle.AspNetCore.Annotations 6.6.2 dotnet (+2 duplicates) Microsoft.Extensions.Configuration.Abstractions 6.0.21.52210 dotnet
Swashbuckle.AspNetCore.Swagger 6.6.2 dotnet (+2 duplicates) Microsoft.Extensions.Configuration.Binder 6.0.21.52210 dotnet
Swashbuckle.AspNetCore.SwaggerGen 6.6.2 dotnet (+2 duplicates) Microsoft.Extensions.Configuration.CommandLine 6.0.21.52210 dotnet
System.Configuration.ConfigurationManager 6.0.1 dotnet (+7 duplicates) Microsoft.Extensions.Configuration.EnvironmentVariables 6.0.222.6406 dotnet
System.Data.SQLite.Core.Servarr 1.0.115.5-18 dotnet (+7 duplicates) Microsoft.Extensions.Configuration.FileExtensions 6.0.21.52210 dotnet
System.Diagnostics.EventLog 6.0.0 dotnet (+2 duplicates) Microsoft.Extensions.Configuration.Ini 6.0.21.52210 dotnet
System.Drawing.Common 6.0.0 dotnet (+7 duplicates) Microsoft.Extensions.Configuration.Json 6.0.21.52210 dotnet
System.Formats.Asn1 8.0.1 dotnet (+5 duplicates) Microsoft.Extensions.Configuration.KeyPerFile 6.0.1322.58013 dotnet
System.IdentityModel.Tokens.Jwt 6.8.0 dotnet (+5 duplicates) Microsoft.Extensions.Configuration.UserSecrets 6.0.222.6406 dotnet
System.Runtime.Caching 4.7.0 dotnet (+5 duplicates) Microsoft.Extensions.Configuration.Xml 6.0.21.52210 dotnet
System.Security.Cryptography.Pkcs 8.0.0 dotnet (+5 duplicates) Microsoft.Extensions.DependencyInjection 6.0.1022.47605 dotnet
System.Security.Cryptography.ProtectedData 6.0.0 dotnet (+7 duplicates) Microsoft.Extensions.DependencyInjection.Abstractions 7.0.22.51805 dotnet
System.Security.Permissions 6.0.0 dotnet (+7 duplicates) Microsoft.Extensions.Diagnostics.HealthChecks 6.0.1322.58013 dotnet
System.ServiceProcess.ServiceController 6.0.1 dotnet (+7 duplicates) Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions 6.0.1322.58013 dotnet
System.Text.Json 6.0.10 dotnet (+7 duplicates) Microsoft.Extensions.Features 6.0.1322.58013 dotnet
System.Text.Json 6.0.9 dotnet Microsoft.Extensions.FileProviders.Abstractions 6.0.21.52210 dotnet
System.Windows.Extensions 6.0.0 dotnet (+7 duplicates) Microsoft.Extensions.FileProviders.Composite 6.0.21.52210 dotnet
acl-libs 2.3.2-r1 apk Microsoft.Extensions.FileProviders.Embedded 6.0.1322.58013 dotnet
alpine-baselayout 3.7.1-r8 apk Microsoft.Extensions.FileProviders.Physical 6.0.21.52210 dotnet
alpine-baselayout-data 3.7.1-r8 apk Microsoft.Extensions.FileSystemGlobbing 6.0.21.52210 dotnet
alpine-keys 2.6-r0 apk Microsoft.Extensions.Hosting 6.0.222.6406 dotnet
alpine-release 3.23.3-r0 apk Microsoft.Extensions.Hosting.Abstractions 6.0.21.52210 dotnet
apk-tools 3.0.4-r0 apk Microsoft.Extensions.Hosting.WindowsServices 6.0.1823.26907 dotnet
bash 5.3.3-r1 apk Microsoft.Extensions.Http 6.0.21.52210 dotnet
brotli-libs 1.2.0-r0 apk Microsoft.Extensions.Identity.Core 6.0.1322.58013 dotnet
busybox 1.37.0-r30 apk Microsoft.Extensions.Identity.Stores 6.0.1322.58013 dotnet
busybox-binsh 1.37.0-r30 apk Microsoft.Extensions.Localization 6.0.1322.58013 dotnet
c-ares 1.34.6-r0 apk Microsoft.Extensions.Localization.Abstractions 6.0.1322.58013 dotnet
ca-certificates 20251003-r0 apk Microsoft.Extensions.Logging 6.0.21.52210 dotnet
ca-certificates-bundle 20251003-r0 apk Microsoft.Extensions.Logging.Abstractions 6.0.1122.52304 dotnet
catatonit 0.2.1-r0 apk Microsoft.Extensions.Logging.Configuration 6.0.21.52210 dotnet
coreutils 9.8-r1 apk Microsoft.Extensions.Logging.Console 6.0.21.52210 dotnet
coreutils-env 9.8-r1 apk Microsoft.Extensions.Logging.Debug 6.0.21.52210 dotnet
coreutils-fmt 9.8-r1 apk Microsoft.Extensions.Logging.EventLog 6.0.21.52210 dotnet
coreutils-sha512sum 9.8-r1 apk Microsoft.Extensions.Logging.EventSource 6.0.21.52210 dotnet
curl 8.17.0-r1 apk Microsoft.Extensions.Logging.TraceSource 6.0.21.52210 dotnet
findutils 4.10.0-r0 apk Microsoft.Extensions.ObjectPool 6.0.1322.58013 dotnet
icu-data-en 76.1-r1 apk Microsoft.Extensions.Options 6.0.21.52210 dotnet
icu-libs 76.1-r1 apk Microsoft.Extensions.Options.ConfigurationExtensions 6.0.21.52210 dotnet
jq 1.8.1-r0 apk Microsoft.Extensions.Options.DataAnnotations 6.0.21.52210 dotnet
libapk 3.0.4-r0 apk Microsoft.Extensions.Primitives 6.0.21.52210 dotnet
libattr 2.5.2-r2 apk Microsoft.Extensions.WebEncoders 6.0.1322.58013 dotnet
libbsd 0.12.2-r0 apk Microsoft.Identity.Client 4.21.1.0 dotnet
libcrypto3 3.5.5-r0 apk Microsoft.IdentityModel.JsonWebTokens 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
libcurl 8.17.0-r1 apk Microsoft.IdentityModel.Logging 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
libgcc 15.2.0-r2 apk Microsoft.IdentityModel.Protocols 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
libidn2 2.3.8-r0 apk Microsoft.IdentityModel.Protocols.OpenIdConnect 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
libintl 0.24.1-r1 apk Microsoft.IdentityModel.Tokens 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
libmd 1.1.0-r0 apk Microsoft.JSInterop 6.0.1322.58013 dotnet
libncursesw 6.5_p20251123-r0 apk Microsoft.Net.Http.Headers 6.0.1322.58013 dotnet
libproc2 4.0.5-r0 apk Microsoft.OpenApi 1.2.3.0 dotnet
libpsl 0.21.5-r3 apk Microsoft.VisualBasic 6.0.1322.58009 dotnet
libssl3 3.5.5-r0 apk Microsoft.VisualBasic.Core 11.100.1322.58009 dotnet
libstdc++ 15.2.0-r2 apk Microsoft.Win32.Primitives 6.0.1322.58009 dotnet
libunistring 1.4.1-r0 apk Microsoft.Win32.Registry 6.0.1322.58009 dotnet
libxml2 2.13.9-r0 apk Microsoft.Win32.SystemEvents 6.0.21.52210 dotnet
libxslt 1.1.43-r3 apk MimeKit 3.6.0.0 dotnet
linux-pam 1.7.1-r2 apk Mono.Cecil 0.11.2.0 dotnet (+3 duplicates)
musl 1.2.5-r21 apk Mono.Nat 3.0.1 dotnet
musl-utils 1.2.5-r21 apk Mono.Posix.NETStandard 1.0.0.0 dotnet
ncurses-terminfo-base 6.5_p20251123-r0 apk MonoMod.Common 20.05.07.01+b18b2bddebe81992d218ea7e1f41aa1923459652 dotnet
netcat-openbsd 1.234.1-r0 apk MonoTorrent 2.0.7 dotnet
nghttp2-libs 1.68.0-r0 apk NLog v4.7.14 4.7.14.740 dotnet
nghttp3 1.13.1-r0 apk NLog.Extensions.Logging v1.7.4 1.7.4.1610 dotnet
oniguruma 6.9.10-r0 apk NLog.Targets.Syslog 6.0.3.0 dotnet
procps-ng 4.0.5-r0 apk NodaTime 3.0.0.0 dotnet
readline 8.3.1-r0 apk Npgsql 7.0.4.0 dotnet
runtimepack.Microsoft.AspNetCore.App.Runtime.linux-musl-x64 6.0.13 dotnet Polly 8.3.1.3207 dotnet
runtimepack.Microsoft.NETCore.App.Runtime.linux-musl-x64 6.0.13 dotnet Polly.Core 8.3.1.3207 dotnet
scanelf 1.3.8-r2 apk ReusableTasks 2.0.0 dotnet
shadow 4.18.0-r0 apk Sentry 4.0.2.0 dotnet
skalibs-libs 2.14.4.0-r0 apk SixLabors.ImageSharp 3.1.4.0 dotnet
sqlite-libs 3.51.2-r0 apk Sonarr 4.0.4.1650 dotnet (+8 duplicates)
ssl_client 1.37.0-r30 apk Swashbuckle.AspNetCore.Swagger 6.5.0.0 dotnet
tzdata 2025c-r0 apk Swashbuckle.AspNetCore.SwaggerGen 6.5.0.0 dotnet
utmps-libs 0.1.3.1-r0 apk System 6.0.1322.58009 dotnet
xmlstarlet 1.6.1-r2 apk System.AppContext 6.0.1322.58009 dotnet
xz-libs 5.8.2-r0 apk System.Buffers 6.0.1322.58009 dotnet
zlib 1.3.1-r2 apk System.Collections 6.0.1322.58009 dotnet
zstd-libs 1.5.7-r2 apk System.Collections.Concurrent 6.0.1322.58009 dotnet
System.Collections.Immutable 6.0.1322.58009 dotnet
System.Collections.NonGeneric 6.0.1322.58009 dotnet
System.Collections.Specialized 6.0.1322.58009 dotnet
System.ComponentModel 6.0.1322.58009 dotnet
System.ComponentModel.Annotations 6.0.1322.58009 dotnet
System.ComponentModel.DataAnnotations 6.0.1322.58009 dotnet
System.ComponentModel.EventBasedAsync 6.0.1322.58009 dotnet
System.ComponentModel.Primitives 6.0.1322.58009 dotnet
System.ComponentModel.TypeConverter 6.0.1322.58009 dotnet
System.Configuration 6.0.1322.58009 dotnet
System.Configuration.ConfigurationManager 6.0.922.41905 dotnet
System.Console 6.0.1322.58009 dotnet
System.Core 6.0.1322.58009 dotnet
System.Data 6.0.1322.58009 dotnet
System.Data.Common 6.0.1322.58009 dotnet
System.Data.DataSetExtensions 6.0.1322.58009 dotnet
System.Data.SQLite 1.0.115.5 dotnet
System.Data.SqlServerCe 4.0.8876.1 dotnet
System.Diagnostics.Contracts 6.0.1322.58009 dotnet
System.Diagnostics.Debug 6.0.1322.58009 dotnet
System.Diagnostics.DiagnosticSource 6.0.1322.58009 dotnet
System.Diagnostics.EventLog 6.0.21.52210 dotnet
System.Diagnostics.FileVersionInfo 6.0.1322.58009 dotnet
System.Diagnostics.Process 6.0.1322.58009 dotnet
System.Diagnostics.StackTrace 6.0.1322.58009 dotnet
System.Diagnostics.TextWriterTraceListener 6.0.1322.58009 dotnet
System.Diagnostics.Tools 6.0.1322.58009 dotnet
System.Diagnostics.TraceSource 6.0.1322.58009 dotnet
System.Diagnostics.Tracing 6.0.1322.58009 dotnet
System.Drawing 6.0.1322.58009 dotnet
System.Drawing.Common 6.0.21.52210 dotnet
System.Drawing.Primitives 6.0.1322.58009 dotnet
System.Dynamic.Runtime 6.0.1322.58009 dotnet
System.Formats.Asn1 6.0.1322.58009 dotnet
System.Globalization 6.0.1322.58009 dotnet
System.Globalization.Calendars 6.0.1322.58009 dotnet
System.Globalization.Extensions 6.0.1322.58009 dotnet
System.IO 6.0.1322.58009 dotnet
System.IO.Compression 6.0.1322.58009 dotnet
System.IO.Compression.Brotli 6.0.1322.58009 dotnet
System.IO.Compression.FileSystem 6.0.1322.58009 dotnet
System.IO.Compression.ZipFile 6.0.1322.58009 dotnet
System.IO.FileSystem 6.0.1322.58009 dotnet
System.IO.FileSystem.AccessControl 6.0.1322.58009 dotnet
System.IO.FileSystem.DriveInfo 6.0.1322.58009 dotnet
System.IO.FileSystem.Primitives 6.0.1322.58009 dotnet
System.IO.FileSystem.Watcher 6.0.1322.58009 dotnet
System.IO.IsolatedStorage 6.0.1322.58009 dotnet
System.IO.MemoryMappedFiles 6.0.1322.58009 dotnet
System.IO.Pipelines 6.0.522.21309 dotnet
System.IO.Pipes 6.0.1322.58009 dotnet
System.IO.Pipes.AccessControl 6.0.1322.58009 dotnet
System.IO.UnmanagedMemoryStream 6.0.1322.58009 dotnet
System.IdentityModel.Tokens.Jwt 6.8.0.11012235604.824068adaeb7b158df2b36d8787f689646e715e0 dotnet
System.Linq 6.0.1322.58009 dotnet
System.Linq.Expressions 6.0.1322.58009 dotnet
System.Linq.Parallel 6.0.1322.58009 dotnet
System.Linq.Queryable 6.0.1322.58009 dotnet
System.Memory 6.0.1322.58009 dotnet
System.Net 6.0.1322.58009 dotnet
System.Net.Http 6.0.1322.58009 dotnet
System.Net.Http.Json 6.0.1322.58009 dotnet
System.Net.HttpListener 6.0.1322.58009 dotnet
System.Net.Mail 6.0.1322.58009 dotnet
System.Net.NameResolution 6.0.1322.58009 dotnet
System.Net.NetworkInformation 6.0.1322.58009 dotnet
System.Net.Ping 6.0.1322.58009 dotnet
System.Net.Primitives 6.0.1322.58009 dotnet
System.Net.Quic 6.0.1322.58009 dotnet
System.Net.Requests 6.0.1322.58009 dotnet
System.Net.Security 6.0.1322.58009 dotnet
System.Net.ServicePoint 6.0.1322.58009 dotnet
System.Net.Sockets 6.0.1322.58009 dotnet
System.Net.WebClient 6.0.1322.58009 dotnet
System.Net.WebHeaderCollection 6.0.1322.58009 dotnet
System.Net.WebProxy 6.0.1322.58009 dotnet
System.Net.WebSockets 6.0.1322.58009 dotnet
System.Net.WebSockets.Client 6.0.1322.58009 dotnet
System.Numerics 6.0.1322.58009 dotnet
System.Numerics.Vectors 6.0.1322.58009 dotnet
System.ObjectModel 6.0.1322.58009 dotnet
System.Private.CoreLib 6.0.1322.58009 dotnet
System.Private.DataContractSerialization 6.0.1322.58009 dotnet
System.Private.Uri 6.0.1322.58009 dotnet
System.Private.Xml 6.0.1322.58009 dotnet
System.Private.Xml.Linq 6.0.1322.58009 dotnet
System.Reflection 6.0.1322.58009 dotnet
System.Reflection.DispatchProxy 6.0.1322.58009 dotnet
System.Reflection.Emit 6.0.1322.58009 dotnet
System.Reflection.Emit.ILGeneration 6.0.1322.58009 dotnet
System.Reflection.Emit.Lightweight 6.0.1322.58009 dotnet
System.Reflection.Extensions 6.0.1322.58009 dotnet
System.Reflection.Metadata 6.0.1322.58009 dotnet
System.Reflection.Primitives 6.0.1322.58009 dotnet
System.Reflection.TypeExtensions 6.0.1322.58009 dotnet
System.Resources.Reader 6.0.1322.58009 dotnet
System.Resources.ResourceManager 6.0.1322.58009 dotnet
System.Resources.Writer 6.0.1322.58009 dotnet
System.Runtime 6.0.1322.58009 dotnet
System.Runtime.Caching 4.700.19.56404 dotnet
System.Runtime.CompilerServices.VisualC 6.0.1322.58009 dotnet
System.Runtime.Extensions 6.0.1322.58009 dotnet
System.Runtime.Handles 6.0.1322.58009 dotnet
System.Runtime.InteropServices 6.0.1322.58009 dotnet
System.Runtime.InteropServices.RuntimeInformation 6.0.1322.58009 dotnet
System.Runtime.Intrinsics 6.0.1322.58009 dotnet
System.Runtime.Loader 6.0.1322.58009 dotnet
System.Runtime.Numerics 6.0.1322.58009 dotnet
System.Runtime.Serialization 6.0.1322.58009 dotnet
System.Runtime.Serialization.Formatters 6.0.1322.58009 dotnet
System.Runtime.Serialization.Json 6.0.1322.58009 dotnet
System.Runtime.Serialization.Primitives 6.0.1322.58009 dotnet
System.Runtime.Serialization.Xml 6.0.1322.58009 dotnet
System.Security 6.0.1322.58009 dotnet
System.Security.AccessControl 6.0.1322.58009 dotnet
System.Security.Claims 6.0.1322.58009 dotnet
System.Security.Cryptography.Algorithms 6.0.1322.58009 dotnet
System.Security.Cryptography.Cng 6.0.1322.58009 dotnet
System.Security.Cryptography.Csp 6.0.1322.58009 dotnet
System.Security.Cryptography.Encoding 6.0.1322.58009 dotnet
System.Security.Cryptography.OpenSsl 6.0.1322.58009 dotnet
System.Security.Cryptography.Pkcs 6.0.522.21309 dotnet
System.Security.Cryptography.Primitives 6.0.1322.58009 dotnet
System.Security.Cryptography.ProtectedData 6.0.21.52210 dotnet
System.Security.Cryptography.X509Certificates 6.0.1322.58009 dotnet
System.Security.Cryptography.Xml 6.0.822.36306 dotnet
System.Security.Permissions 6.0.21.52210 dotnet
System.Security.Principal 6.0.1322.58009 dotnet
System.Security.Principal.Windows 6.0.1322.58009 dotnet
System.Security.SecureString 6.0.1322.58009 dotnet
System.ServiceModel.Web 6.0.1322.58009 dotnet
System.ServiceProcess 6.0.1322.58009 dotnet
System.ServiceProcess.ServiceController 6.0.1823.26907 dotnet
System.Text.Encoding 6.0.1322.58009 dotnet
System.Text.Encoding.CodePages 6.0.1322.58009 dotnet
System.Text.Encoding.Extensions 6.0.1322.58009 dotnet
System.Text.Encodings.Web 6.0.1322.58009 dotnet
System.Text.Json 6.0.2523.51912 dotnet
System.Text.RegularExpressions 6.0.1322.58009 dotnet
System.Threading 6.0.1322.58009 dotnet
System.Threading.Channels 6.0.1322.58009 dotnet
System.Threading.Overlapped 6.0.1322.58009 dotnet
System.Threading.Tasks 6.0.1322.58009 dotnet
System.Threading.Tasks.Dataflow 6.0.1322.58009 dotnet
System.Threading.Tasks.Extensions 6.0.1322.58009 dotnet
System.Threading.Tasks.Parallel 6.0.1322.58009 dotnet
System.Threading.Thread 6.0.1322.58009 dotnet
System.Threading.ThreadPool 6.0.1322.58009 dotnet
System.Threading.Timer 6.0.1322.58009 dotnet
System.Transactions 6.0.1322.58009 dotnet
System.Transactions.Local 6.0.1322.58009 dotnet
System.ValueTuple 6.0.1322.58009 dotnet
System.Web 6.0.1322.58009 dotnet
System.Web.HttpUtility 6.0.1322.58009 dotnet
System.Windows 6.0.1322.58009 dotnet
System.Windows.Extensions 6.0.21.52210 dotnet
System.Xml 6.0.1322.58009 dotnet
System.Xml.Linq 6.0.1322.58009 dotnet
System.Xml.ReaderWriter 6.0.1322.58009 dotnet
System.Xml.Serialization 6.0.1322.58009 dotnet
System.Xml.XDocument 6.0.1322.58009 dotnet
System.Xml.XPath 6.0.1322.58009 dotnet
System.Xml.XPath.XDocument 6.0.1322.58009 dotnet
System.Xml.XmlDocument 6.0.1322.58009 dotnet
System.Xml.XmlSerializer 6.0.1322.58009 dotnet
WindowsBase 6.0.1322.58009 dotnet
alpine-baselayout 3.4.3-r2 apk
alpine-baselayout-data 3.4.3-r2 apk
alpine-keys 2.4-r1 apk
alpine-release 3.19.1-r0 apk
apk-tools 2.14.4-r0 apk
bash 5.2.21-r0 apk
brotli-libs 1.1.0-r1 apk
busybox 1.36.1-r15 apk
busybox-binsh 1.36.1-r15 apk
c-ares 1.27.0-r0 apk
ca-certificates 20240226-r0 apk
ca-certificates-bundle 20240226-r0 apk
catatonit 0.2.0-r0 apk
coreutils 9.4-r2 apk
coreutils-env 9.4-r2 apk
coreutils-fmt 9.4-r2 apk
coreutils-sha512sum 9.4-r2 apk
curl 8.5.0-r0 apk
findutils 4.9.0-r5 apk
icu-data-en 74.1-r0 apk
icu-libs 74.1-r0 apk
jq 1.7.1-r0 apk
libacl 2.3.1-r4 apk
libattr 2.5.1-r5 apk
libbsd 0.11.7-r3 apk
libc-utils 0.7.2-r5 apk
libcrypto3 3.1.4-r6 apk
libcurl 8.5.0-r0 apk
libgcc 13.2.1_git20231014-r0 apk
libgcrypt 1.10.3-r0 apk
libgpg-error 1.47-r2 apk
libidn2 2.3.4-r4 apk
libintl 0.22.3-r0 apk
libmd 1.1.0-r0 apk
libncursesw 6.4_p20231125-r0 apk
libproc2 4.0.4-r0 apk
libssl3 3.1.4-r6 apk
libstdc++ 13.2.1_git20231014-r0 apk
libunistring 1.1-r2 apk
libxml2 2.11.7-r0 apk
libxslt 1.1.39-r0 apk
linux-pam 1.5.3-r7 apk
mscorlib 6.0.1322.58009 dotnet
musl 1.2.4_git20230717-r4 apk
musl-utils 1.2.4_git20230717-r4 apk
ncurses-terminfo-base 6.4_p20231125-r0 apk
netcat-openbsd 1.226-r0 apk
netstandard 6.0.1322.58009 dotnet
nghttp2-libs 1.58.0-r0 apk
oniguruma 6.9.9-r0 apk
procps-ng 4.0.4-r0 apk
readline 8.2.1-r2 apk
scanelf 1.3.7-r2 apk
shadow 4.14.2-r0 apk
skalibs 2.14.0.1-r0 apk
sqlite-libs 3.44.2-r0 apk
ssl_client 1.36.1-r15 apk
tzdata 2024a-r0 apk
utmps-libs 0.1.2.2-r0 apk
xmlstarlet 1.6.1-r2 apk
xz-libs 5.4.5-r0 apk
zlib 1.3.1-r0 apk

View File

@ -7,111 +7,74 @@ project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/ma
project_blurb: | project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. [{{ project_name|capitalize }}]({{ project_url }}) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Media Management"
# supported architectures # supported architectures
available_architectures: available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version # development version
development_versions: true development_versions: true
development_versions_items: development_versions_items:
- {tag: "latest", desc: "Stable releases from Sonarr"} - { tag: "latest", desc: "Stable releases from Sonarr (currently v4)" }
- {tag: "develop", desc: "Development releases from Sonarr"} - { tag: "develop", desc: "Development releases from Sonarr (currently v4)" }
# container parameters # container parameters
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/data", desc: "Database and sonarr configs"} - { vol_path: "/config", vol_host_path: "<path to data>", desc: "Database and sonarr configs" }
opt_param_usage_include_vols: true - { vol_path: "/tv", vol_host_path: "<path/to/tvseries>", desc: "Location of TV library on disk" }
opt_param_volumes: - { vol_path: "/downloads", vol_host_path: "<path/to/downloadclient-downloads>", desc: "Location of download managers output directory" }
- {vol_path: "/tv", vol_host_path: "/path/to/tvseries", desc: "Location of TV library on disk (See note in Application setup)"}
- {vol_path: "/downloads", vol_host_path: "/path/to/downloadclient-downloads", desc: "Location of download managers output directory (See note in Application setup)"}
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- {external_port: "8989", internal_port: "8989", port_desc: "The port for the Sonarr web interface"} - { external_port: "8989", internal_port: "8989", port_desc: "The port for the Sonarr webinterface" }
readonly_supported: true
nonroot_supported: true param_usage_include_env: false
opt_param_usage_include_env: false
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
Access the webui at `<your-ip>:8989`, for more information check out [Sonarr](https://sonarr.tv/). Access the webui at `<your-ip>:8989`, for more information check out [Sonarr](https://sonarr.tv/).
readme_media: true
# init diagram ### Media folders
init_diagram: |
"sonarr:latest": { We have set `/tv` and `/downloads` as ***optional paths***, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.
docker-mods
base { Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.
fix-attr +\nlegacy cont-init
} The folks over at servarr.com wrote a good [write-up](https://wiki.servarr.com/Docker_Guide#Consistent_and_well_planned_paths) on how to get started with this.
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-os-end -> init-config
init-config -> init-config-end
init-crontab-config -> init-config-end
init-sonarr-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-custom-files -> init-services
init-config -> init-sonarr-config
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-sonarr
svc-sonarr -> legacy-services
}
Base Images: {
"baseimage-alpine:3.23"
}
"sonarr:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- {date: "15.01.26:", desc: "Rebase to Alpine 3.23."} - { date: "12.01.24:", desc: "Update download url." }
- {date: "05.07.25:", desc: "Rebase to Alpine 3.22."} - { date: "30.12.23:", desc: "Rebase to Alpine 3.19." }
- {date: "09.01.25:", desc: "Fix rootless entrypoint."} - { date: "30.05.23:", desc: "Rebase to Alpine 3.18." }
- {date: "23.12.24:", desc: "Rebase Alpine 3.21."} - { date: "19.12.22:", desc: "Rebase develop branch to Alpine 3.17." }
- {date: "31.05.24:", desc: "Rebase Alpine 3.20."} - { date: "24.11.22:", desc: "Bump develop branch to v4, rebase to Alpine." }
- {date: "12.01.24:", desc: "Update download url."} - { date: "03.08.22:", desc: "Deprecate armhf." }
- {date: "30.12.23:", desc: "Rebase master branch to Alpine 3.19."} - { date: "02.08.22:", desc: "Rebase develop branch to Ubuntu Focal due to dropping of mono support on Alpine." }
- {date: "15.02.23:", desc: "Rebase master branch to Jammy."} - { date: "20.02.22:", desc: "Rebase develop branch to Alpine." }
- {date: "19.12.22:", desc: "Rebase develop branch Alpine 3.17."} - { date: "13.12.21:", desc: "Switch strategy for mediainfo" }
- {date: "24.11.22:", desc: "Bump develop branch to v4, rebase to Alpine 3.16."} - { date: "10.02.21:", desc: "Rebase to mono focal baseimage. Switch to v3 nightlies." }
- {date: "03.08.22:", desc: "Deprecate armhf."} - { date: "18.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information." }
- {date: "02.08.22:", desc: "Add armhf deprecation warning."} - { date: "05.04.20:", desc: "Move app to /app." }
- {date: "28.04.22:", desc: "Rebase master branch to mono 6.12 base (focal)."} - { date: "01.08.19:", desc: "Rebase to Linuxserver LTS mono version." }
- {date: "20.02.22:", desc: "Rebase develop branch to Alpine, deprecate develop-alpine branch."} - { date: "13.06.19:", desc: "Add env variable for setting umask." }
- {date: "28.12.21:", desc: "Add develop-alpine branch."} - { date: "10.05.19:", desc: "Rebase to Bionic." }
- {date: "11.05.21:", desc: "Make the paths clearer to the user."} - { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- {date: "10.03.21:", desc: "Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update."} - { date: "01.02.19:", desc: "Multi arch images and pipeline build logic" }
- {date: "18.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information."} - { date: "15.12.17:", desc: "Fix continuation lines." }
- {date: "05.04.20:", desc: "Move app to /app."} - { date: "12.07.17:", desc: "Add inspect commands to README, move to jenkins build and push." }
- {date: "01.08.19:", desc: "Rebase to Linuxserver LTS mono version."} - { date: "17.04.17:", desc: "Switch to using inhouse mono baseimage, adds python also." }
- {date: "13.06.19:", desc: "Add env variable for setting umask."} - { date: "14.04.17:", desc: "Change to mount /etc/localtime in README, thanks cbgj." }
- {date: "10.05.19:", desc: "Rebase to Bionic."} - { date: "13.04.17:", desc: "Switch to official mono repository." }
- {date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."} - { date: "30.09.16:", desc: "Fix umask" }
- {date: "01.02.19:", desc: "Multi arch images and pipeline build logic"} - { date: "23.09.16:", desc: "Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable" }
- {date: "15.12.17:", desc: "Fix continuation lines."} - { date: "15.09.16:", desc: "Add libcurl3 package." }
- {date: "12.07.17:", desc: "Add inspect commands to README, move to jenkins build and push."} - { date: "09.09.16:", desc: "Add layer badges to README." }
- {date: "17.04.17:", desc: "Switch to using inhouse mono baseimage, adds python also."} - { date: "27.08.16:", desc: "Add badges to README." }
- {date: "14.04.17:", desc: "Change to mount /etc/localtime in README, thanks cbgj."} - { date: "20.07.16:", desc: "Rebase to xenial." }
- {date: "13.04.17:", desc: "Switch to official mono repository."} - { date: "31.08.15:", desc: "Cleanup, changed sources to fetch binarys from. also a new baseimage." }
- {date: "30.09.16:", desc: "Fix umask"}
- {date: "23.09.16:", desc: "Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable"}
- {date: "15.09.16:", desc: "Add libcurl3 package."}
- {date: "09.09.16:", desc: "Add layer badges to README."}
- {date: "27.08.16:", desc: "Add badges to README."}
- {date: "20.07.16:", desc: "Rebase to xenial."}
- {date: "31.08.15:", desc: "Cleanup, changed sources to fetch binarys from. also a new baseimage."}

0
root/donate.txt Normal file → Executable file
View File

View File

@ -1,10 +1,6 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash # shellcheck shell=bash
mkdir -p /run/sonarr-temp # permissions
lsiown -R abc:abc \
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then /config
lsiown -R abc:abc \
/config \
/run/sonarr-temp
fi

View File

@ -1,14 +1,7 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash # shellcheck shell=bash
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then exec \
exec \ s6-notifyoncheck -d -n 300 -w 1000 \
s6-notifyoncheck -d -n 300 -w 1000 \ cd /app/sonarr/bin s6-setuidgid abc /app/sonarr/bin/Sonarr \
cd /app/sonarr/bin s6-setuidgid abc /app/sonarr/bin/Sonarr \ -nobrowser -data=/config
-nobrowser -data=/config
else
exec \
s6-notifyoncheck -d -n 300 -w 1000 \
cd /app/sonarr/bin /app/sonarr/bin/Sonarr \
-nobrowser -data=/config
fi