Compare commits

...

255 Commits

Author SHA1 Message Date
LinuxServer-CI
68de619560
Disabling future builds 2026-02-16 16:27:42 +00:00
LinuxServer-CI
6a1ead70d3
Bot Updating Templated Files 2026-02-16 16:12:42 +00:00
LinuxServer-CI
e7c5554f80
Bot Updating Templated Files 2026-02-16 16:10:30 +00:00
LinuxServer-CI
7a484fe8ec
Bot Updating Templated Files 2026-02-16 16:08:17 +00:00
LinuxServer-CI
bb94371eb6
Bot Updating Templated Files 2026-02-16 16:06:03 +00:00
LinuxServer-CI
254179f690
Bot Updating Templated Files 2026-02-16 16:04:06 +00:00
Adam
5a75c15c14
Merge pull request #58 from linuxserver/main-deprecate
Deprecate (main)
2026-02-16 16:01:58 +00:00
thespad
22a323dd02
Wording 2026-02-16 11:52:49 +00:00
thespad
ca41273c66
Deprecate 2026-02-16 11:48:18 +00:00
LinuxServer-CI
6281112d1b
Bot Updating Package Versions 2026-02-15 19:02:42 +00:00
LinuxServer-CI
6ca1e80d7d
Bot Updating Templated Files 2026-02-11 19:22:02 +00:00
LinuxServer-CI
a4d0f3a4cb
Bot Updating Templated Files 2026-02-11 19:20:00 +00:00
LinuxServer-CI
4b582b77b1
Bot Updating Package Versions 2026-02-04 19:13:16 +00:00
LinuxServer-CI
e0f836233a
Bot Updating Package Versions 2026-01-28 18:59:58 +00:00
LinuxServer-CI
117d7e5b55
Bot Updating Package Versions 2025-12-17 18:55:28 +00:00
LinuxServer-CI
d003875f55
Bot Updating Package Versions 2025-11-26 18:45:58 +00:00
LinuxServer-CI
a863780cf2
Bot Updating Templated Files 2025-11-19 18:43:01 +00:00
LinuxServer-CI
c8e2dc366e
Bot Updating Templated Files 2025-10-22 18:44:02 +00:00
LinuxServer-CI
7b5f22657c
Bot Updating Package Versions 2025-10-15 18:48:03 +00:00
LinuxServer-CI
8eaab90184
Bot Updating Package Versions 2025-10-08 18:48:46 +00:00
LinuxServer-CI
c8f79bded5
Bot Updating Package Versions 2025-10-01 18:47:07 +00:00
LinuxServer-CI
651e4ec3ff
Bot Updating Package Versions 2025-09-17 18:47:23 +00:00
LinuxServer-CI
bafce8e982
Bot Updating Package Versions 2025-08-27 18:44:51 +00:00
LinuxServer-CI
70b0d77d90
Bot Updating Package Versions 2025-08-13 18:49:21 +00:00
LinuxServer-CI
c007bf64d4
Bot Updating Package Versions 2025-07-23 18:53:15 +00:00
LinuxServer-CI
180921e645
Bot Updating Package Versions 2025-07-16 18:53:03 +00:00
LinuxServer-CI
0ca7efd784
Bot Updating Package Versions 2025-07-05 19:48:45 +00:00
LinuxServer-CI
4c89d7049f
Bot Updating Templated Files 2025-07-05 19:34:05 +00:00
Adam
88f5186ced
Merge pull request #51 from linuxserver/master-3.22 2025-07-05 20:31:05 +01:00
thespad
ca82f583a3
Rebase to 3.22 2025-07-05 15:56:47 +01:00
LinuxServer-CI
8594a9686a
Bot Updating Templated Files 2025-06-11 18:42:17 +00:00
LinuxServer-CI
e06ef77c38
Bot Updating Package Versions 2025-06-04 18:44:37 +00:00
LinuxServer-CI
4eb99449aa
Bot Updating Templated Files 2025-05-21 18:40:23 +00:00
LinuxServer-CI
e49a58b772
Bot Updating Package Versions 2025-05-07 18:42:07 +00:00
LinuxServer-CI
61c168a3c2
Bot Updating Package Versions 2025-04-16 18:44:19 +00:00
LinuxServer-CI
540532e7a6
Bot Updating Package Versions 2025-04-02 18:41:59 +00:00
LinuxServer-CI
1302858156
Bot Updating Package Versions 2025-03-26 09:43:13 +00:00
LinuxServer-CI
96f19d6d8f
Bot Updating Package Versions 2025-02-19 18:37:54 +00:00
LinuxServer-CI
556a09a7cc
Bot Updating Package Versions 2025-02-12 18:47:32 +00:00
LinuxServer-CI
f4f409472e
Bot Updating Templated Files 2025-02-12 18:35:54 +00:00
LinuxServer-CI
78951ad5f1
Bot Updating Templated Files 2025-01-29 18:36:33 +00:00
LinuxServer-CI
f88ccaa79b
Bot Updating Templated Files 2025-01-29 18:34:21 +00:00
quietsy
f82abe02d5
Merge pull request #45 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-22 22:15:12 +02:00
LinuxServer-CI
28b6ff9bc1
Bot Updating Package Versions 2025-01-22 18:39:10 +00:00
quietsy
02c010cbed Add categories to readme-vars.yml 2025-01-22 17:12:22 +02:00
LinuxServer-CI
8113d4efe2
Bot Updating Package Versions 2025-01-15 18:57:46 +00:00
Adam
534a304a87
Merge pull request #42 from linuxserver/main-clean-tmp 2025-01-09 22:43:43 +00:00
thespad
9f6a53a1b4
Wipe temp dir at end of build so permissions are correct at runtime 2025-01-09 22:20:21 +00:00
LinuxServer-CI
3d296d01bf
Bot Updating Package Versions 2025-01-08 18:39:55 +00:00
LinuxServer-CI
264c6d6c82
Bot Updating Package Versions 2025-01-01 18:54:12 +00:00
LinuxServer-CI
6990950e39
Bot Updating Package Versions 2024-12-24 19:00:51 +00:00
LinuxServer-CI
4ccb2e6e74
Bot Updating Templated Files 2024-12-24 18:49:51 +00:00
Adam
711ecdcac9
Merge pull request #41 from linuxserver/main-3.21 2024-12-24 18:45:56 +00:00
thespad
5079aa6770
Rebase to 3.21 2024-12-24 17:22:22 +00:00
LinuxServer-CI
9008f17505
Bot Updating Package Versions 2024-12-18 18:50:15 +00:00
LinuxServer-CI
f65b577156
Bot Updating Templated Files 2024-12-18 18:40:01 +00:00
LinuxServer-CI
727b44c1d3
Bot Updating Templated Files 2024-12-18 18:38:16 +00:00
LinuxServer-CI
0d6f07ddf2
Bot Updating Package Versions 2024-12-11 18:50:28 +00:00
LinuxServer-CI
b81e056670
Bot Updating Templated Files 2024-12-11 18:38:45 +00:00
LinuxServer-CI
a284380db3
Bot Updating Templated Files 2024-12-04 18:44:48 +00:00
LinuxServer-CI
05e0ccef80
Bot Updating Templated Files 2024-12-04 18:40:51 +00:00
LinuxServer-CI
cea6ac0688
Bot Updating Templated Files 2024-12-04 18:39:04 +00:00
LinuxServer-CI
598de9465c
Bot Updating Package Versions 2024-11-13 18:47:32 +00:00
LinuxServer-CI
cb2a758651
Bot Updating Templated Files 2024-11-13 18:37:42 +00:00
LinuxServer-CI
517a0ec6c4
Bot Updating Templated Files 2024-11-13 18:35:40 +00:00
LinuxServer-CI
8ec95fe5ca
Bot Updating Package Versions 2024-10-09 18:39:56 +00:00
LinuxServer-CI
0bca8ea888
Bot Updating Package Versions 2024-10-02 18:49:32 +00:00
LinuxServer-CI
ad16fff1bf
Bot Updating Templated Files 2024-10-02 18:39:45 +00:00
LinuxServer-CI
101eb8d443
Bot Updating Templated Files 2024-10-02 18:38:12 +00:00
LinuxServer-CI
a219bfbde9
Bot Updating Templated Files 2024-10-02 18:36:27 +00:00
LinuxServer-CI
313f0a8f29
Bot Updating Package Versions 2024-09-25 18:39:54 +00:00
LinuxServer-CI
eab1500c45
Bot Updating Package Versions 2024-09-18 18:43:36 +00:00
LinuxServer-CI
5b00938e59
Bot Updating Package Versions 2024-09-11 18:38:34 +00:00
LinuxServer-CI
dc9aee94c9
Bot Updating Package Versions 2024-09-04 18:40:13 +00:00
LinuxServer-CI
cd719a9e97
Bot Updating Templated Files 2024-08-21 18:33:52 +00:00
LinuxServer-CI
2b25c67a03 Bot Updating Templated Files 2024-08-21 18:32:14 +00:00
LinuxServer-CI
915ca9156b Bot Updating Package Versions 2024-07-31 18:42:31 +00:00
LinuxServer-CI
ce20985e1d Bot Updating Package Versions 2024-07-17 18:42:50 +00:00
LinuxServer-CI
ada570b0f8 Bot Updating Templated Files 2024-07-17 18:33:15 +00:00
LinuxServer-CI
130ed7b891 Bot Updating Templated Files 2024-07-17 18:31:36 +00:00
Roxedus
8f80f72f80
Merge pull request #38 from linuxserver/main-ro-tweaks
Move tmpdir (main)
2024-07-08 16:58:36 +02:00
LinuxServer-CI
d96d868755 Bot Updating Package Versions 2024-07-03 18:32:56 +00:00
thespad
92925bc98f
Update readme 2024-07-03 18:02:46 +01:00
thespad
4c09cec22d
Remove tmpdir 2024-07-03 18:00:58 +01:00
LinuxServer-CI
68582f21fa Bot Updating Package Versions 2024-06-26 18:44:05 +00:00
LinuxServer-CI
a7ccefb11b Bot Updating Package Versions 2024-06-12 18:34:19 +00:00
LinuxServer-CI
2a4c13beb0 Bot Updating Package Versions 2024-05-31 19:26:07 +00:00
Adam
875086edcc
Merge pull request #36 from linuxserver/main-3.20
Rebase to 3.20 (main)
2024-05-31 20:06:31 +01:00
thespad
935f624d73
Rebase to 3.20 2024-05-31 17:34:17 +01:00
LinuxServer-CI
70dd6f0566 Bot Updating Package Versions 2024-05-29 18:43:56 +00:00
LinuxServer-CI
fbb60185da Bot Updating Templated Files 2024-05-22 18:32:05 +00:00
LinuxServer-CI
81ca3cd74a Bot Updating Templated Files 2024-05-22 18:29:41 +00:00
LinuxServer-CI
b62e27b78c Bot Updating Package Versions 2024-05-15 18:38:59 +00:00
LinuxServer-CI
f881b804b8 Bot Updating Templated Files 2024-05-15 18:28:57 +00:00
LinuxServer-CI
be92b38cb8 Bot Updating Templated Files 2024-05-08 18:28:54 +00:00
LinuxServer-CI
a0212dbfc7 Bot Updating Templated Files 2024-05-01 18:28:13 +00:00
LinuxServer-CI
234f4c9179 Bot Updating Package Versions 2024-04-17 18:32:24 +00:00
LinuxServer-CI
c0f6088305 Bot Updating Package Versions 2024-04-10 18:56:44 +00:00
LinuxServer-CI
b315aa4d1d Bot Updating Package Versions 2024-04-03 18:40:18 +00:00
LinuxServer-CI
745c783ef9 Bot Updating Package Versions 2024-03-27 18:30:09 +00:00
LinuxServer-CI
eb80ff064d Bot Updating Templated Files 2024-03-13 18:26:55 +00:00
LinuxServer-CI
53b74d659d Bot Updating Package Versions 2024-03-06 18:30:08 +00:00
LinuxServer-CI
f7196ea238 Bot Updating Package Versions 2024-02-21 18:44:18 +00:00
LinuxServer-CI
54b4f775d3 Bot Updating Templated Files 2024-02-21 18:29:20 +00:00
LinuxServer-CI
141d9cce20 Bot Updating Templated Files 2024-02-21 18:27:37 +00:00
LinuxServer-CI
daeb30825c Bot Updating Package Versions 2024-02-07 18:29:34 +00:00
LinuxServer-CI
247a65903b Bot Updating Package Versions 2024-01-31 18:24:46 +00:00
LinuxServer-CI
58d7fa56c6 Bot Updating Package Versions 2024-01-25 02:43:57 +00:00
LinuxServer-CI
4bd1887967 Bot Updating Templated Files 2024-01-25 02:32:27 +00:00
Eric Nemchik
fe87b54fc4
Merge pull request #32 from linuxserver/3.19
Rebase to Alpine 3.19
2024-01-24 20:29:52 -06:00
LinuxServer-CI
22f6eb60b0 Bot Updating Package Versions 2024-01-24 18:48:20 +00:00
LinuxServer-CI
9432bbcddf Bot Updating Package Versions 2024-01-17 18:42:02 +00:00
LinuxServer-CI
379018a0d6 Bot Updating Templated Files 2024-01-10 18:35:53 +00:00
LinuxServer-CI
96873b7d4d Bot Updating Templated Files 2024-01-10 18:29:34 +00:00
LinuxServer-CI
a2141d77ca Bot Updating Package Versions 2024-01-03 18:40:13 +00:00
Eric Nemchik
d987fbc716
Rebase to Alpine 3.19
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 18:11:15 -06:00
LinuxServer-CI
d6a2366673 Bot Updating Package Versions 2023-12-13 18:30:21 +00:00
LinuxServer-CI
ae648775b2 Bot Updating Package Versions 2023-12-06 18:41:57 +00:00
LinuxServer-CI
b308484b38 Bot Updating Templated Files 2023-11-22 18:28:16 +00:00
LinuxServer-CI
39b124322b Bot Updating Package Versions 2023-11-15 18:38:58 +00:00
LinuxServer-CI
74c8d6fa6c Bot Updating Package Versions 2023-11-01 18:31:21 +00:00
LinuxServer-CI
17175a06f7 Bot Updating Package Versions 2023-10-18 18:32:06 +00:00
LinuxServer-CI
8c1b700c19 Bot Updating Package Versions 2023-10-11 18:41:23 +00:00
LinuxServer-CI
4d081c2808 Bot Updating Templated Files 2023-10-11 18:31:18 +00:00
LinuxServer-CI
257d9a27f0 Bot Updating Templated Files 2023-10-11 18:28:28 +00:00
LinuxServer-CI
7af01a68a3 Bot Updating Package Versions 2023-10-04 18:31:52 +00:00
LinuxServer-CI
eb61a86b69 Bot Updating Package Versions 2023-09-27 18:46:06 +00:00
LinuxServer-CI
b80db8824a Bot Updating Package Versions 2023-09-06 18:30:03 +00:00
LinuxServer-CI
005169a2ae Bot Updating Package Versions 2023-08-23 18:41:20 +00:00
LinuxServer-CI
63d6ab6d52 Bot Updating Package Versions 2023-08-16 18:39:16 +00:00
LinuxServer-CI
bd84d0881b Bot Updating Package Versions 2023-08-09 18:31:15 +00:00
LinuxServer-CI
4873b6fef2 Bot Updating Package Versions 2023-08-02 18:39:03 +00:00
LinuxServer-CI
b4e00bae24 Bot Updating Package Versions 2023-07-28 11:31:53 +00:00
LinuxServer-CI
5dca4866e9 Bot Updating Package Versions 2023-07-24 07:34:41 +00:00
LinuxServer-CI
013375da94 Bot Updating Package Versions 2023-07-19 18:41:30 +00:00
LinuxServer-CI
9f42d49b8c Bot Updating Package Versions 2023-07-12 18:33:23 +00:00
LinuxServer-CI
da14e3dd24 Bot Updating Package Versions 2023-07-05 18:46:41 +00:00
LinuxServer-CI
aa58e48a50 Bot Updating Templated Files 2023-07-05 18:31:29 +00:00
LinuxServer-CI
83b7cd283e Bot Updating Package Versions 2023-06-21 18:42:59 +00:00
LinuxServer-CI
dffde4dfc2 Bot Updating Package Versions 2023-06-16 02:58:57 +00:00
LinuxServer-CI
9d97e72114 Bot Updating Package Versions 2023-06-07 18:30:19 +00:00
LinuxServer-CI
5175015c2a Bot Updating Package Versions 2023-05-28 00:21:17 +00:00
Eric Nemchik
bd0bf533d5
Merge pull request #29 from linuxserver/3.18
Rebase to Alpine 3.18, deprecate armhf
2023-05-27 19:11:04 -05:00
Eric Nemchik
9461c5f33e
Rebase to Alpine 3.18, deprecate armhf 2023-05-27 16:41:45 -05:00
LinuxServer-CI
6bbe46febc Bot Updating Package Versions 2023-05-24 18:43:15 +00:00
LinuxServer-CI
21432c5108 Bot Updating Templated Files 2023-05-24 18:26:29 +00:00
LinuxServer-CI
0294f7033c Bot Updating Package Versions 2023-05-17 18:28:41 +00:00
LinuxServer-CI
0bc69f1868 Bot Updating Package Versions 2023-05-10 18:35:17 +00:00
LinuxServer-CI
7119d95087 Bot Updating Package Versions 2023-04-26 13:46:11 -05:00
LinuxServer-CI
46f3281727 Bot Updating Templated Files 2023-04-26 20:29:11 +02:00
LinuxServer-CI
53bc58a8c8 Bot Updating Templated Files 2023-04-26 13:27:25 -05:00
LinuxServer-CI
232d52ca14 Bot Updating Package Versions 2023-04-19 20:41:34 +02:00
LinuxServer-CI
52c91c5b8c Bot Updating Package Versions 2023-04-05 20:44:30 +02:00
LinuxServer-CI
92a11c46d7 Bot Updating Package Versions 2023-04-03 22:37:47 -05:00
LinuxServer-CI
5143407611 Bot Updating Templated Files 2023-04-04 05:21:24 +02:00
LinuxServer-CI
3683ca750b Bot Updating Templated Files 2023-04-04 05:19:49 +02:00
LinuxServer-CI
41afdf880a Bot Updating Templated Files 2023-04-04 05:18:15 +02:00
LinuxServer-CI
d5f4faab61 Bot Updating Package Versions 2023-03-27 22:31:29 -05:00
LinuxServer-CI
68f4fd43f1 Bot Updating Package Versions 2023-03-07 04:48:18 +01:00
LinuxServer-CI
27525f2634 Bot Updating Templated Files 2023-03-07 04:31:46 +01:00
LinuxServer-CI
750844a576 Bot Updating Package Versions 2023-02-28 04:36:52 +01:00
LinuxServer-CI
d0e0668d7e Bot Updating Package Versions 2023-02-20 21:36:14 -06:00
LinuxServer-CI
1ab3b9344e Bot Updating Templated Files 2023-02-13 21:25:22 -06:00
LinuxServer-CI
89321affa9 Bot Updating Templated Files 2023-02-13 21:23:57 -06:00
LinuxServer-CI
092d8fbfe9 Bot Updating Package Versions 2023-01-24 04:31:37 +01:00
LinuxServer-CI
3e5c97d65a Bot Updating Package Versions 2023-01-17 04:33:07 +01:00
LinuxServer-CI
6fad30fecf Bot Updating Package Versions 2023-01-03 04:31:33 +01:00
LinuxServer-CI
b32c957732 Bot Updating Package Versions 2022-12-20 23:42:20 +01:00
Eric Nemchik
8e73854827
Merge pull request #25 from linuxserver/3.17-main
Rebase main to 3.17
2022-12-20 16:27:06 -06:00
Eric Nemchik
b877e1ccbc Fix base 2022-12-18 16:53:24 -06:00
Eric Nemchik
6db76001da Rebase main to 3.17 2022-12-18 11:07:43 -06:00
LinuxServer-CI
f2fb803357 Bot Updating Templated Files 2022-11-29 04:32:56 +01:00
LinuxServer-CI
866fbc6c89 Bot Updating Templated Files 2022-11-29 04:31:41 +01:00
LinuxServer-CI
d6bccb27ae Bot Updating Templated Files 2022-11-29 04:30:27 +01:00
LinuxServer-CI
a7db864116 Bot Updating Package Versions 2022-11-22 04:54:25 +01:00
LinuxServer-CI
756adf576d Bot Updating Package Versions 2022-11-14 22:23:15 -06:00
LinuxServer-CI
1dd5d0c4a4 Bot Updating Templated Files 2022-11-15 04:49:00 +01:00
LinuxServer-CI
e8371e669b Bot Updating Package Versions 2022-11-07 22:12:13 -06:00
LinuxServer-CI
56e47be951 Bot Updating Package Versions 2022-10-31 23:51:55 -05:00
LinuxServer-CI
3866070382 Bot Updating Package Versions 2022-10-29 14:43:29 -05:00
Adam
b195032e05
Merge pull request #22 from linuxserver/s6v3-main 2022-10-29 19:58:54 +01:00
TheSpad
470783f441
Fix init path 2022-10-27 17:59:25 +01:00
TheSpad
4f8a269d73
Rebase main to 3.16, migrate to s6v3 2022-10-27 17:58:33 +01:00
LinuxServer-CI
6279389d80 Bot Updating Package Versions 2022-10-10 23:57:16 -05:00
LinuxServer-CI
c9024cf5b4 Bot Updating Templated Files 2022-09-19 03:51:00 -05:00
LinuxServer-CI
d068aaad66 Bot Updating Package Versions 2022-09-06 07:04:40 +02:00
LinuxServer-CI
6fffd7957b Bot Updating Package Versions 2022-08-30 07:04:09 +02:00
LinuxServer-CI
8bbe97ca99 Bot Updating Package Versions 2022-08-20 15:30:52 -05:00
aptalca
c1d5cda88e
Merge pull request #19 from linuxserver/main-cypress
Don't install cypress
2022-08-20 16:16:45 -04:00
aptalca
2913dbf6f8 Don't install cypress 2022-08-20 15:00:14 -04:00
LinuxServer-CI
5222c98df8 Bot Updating Package Versions 2022-08-16 06:15:45 +02:00
LinuxServer-CI
a643019004 Bot Updating Package Versions 2022-08-01 23:40:00 -05:00
LinuxServer-CI
35a533bab3 Bot Updating Package Versions 2022-07-26 06:39:27 +02:00
LinuxServer-CI
7bb776d3ab Bot Updating Package Versions 2022-07-19 06:36:29 +02:00
LinuxServer-CI
7ffe72b3a5 Bot Updating Package Versions 2022-07-12 06:34:24 +02:00
LinuxServer-CI
b6b06a2575 Bot Updating Package Versions 2022-05-20 23:45:21 +02:00
LinuxServer-CI
f5dc33eab3 Bot Updating Package Versions 2022-05-09 22:39:37 -05:00
LinuxServer-CI
881be6d3ab Bot Updating Templated Files 2022-05-02 22:55:48 -05:00
LinuxServer-CI
1d31ebfb46 Bot Updating Templated Files 2022-05-02 22:54:25 -05:00
LinuxServer-CI
7223755ebc Bot Updating Package Versions 2022-04-18 23:09:58 -05:00
LinuxServer-CI
19937636d7 Bot Updating Package Versions 2022-04-06 21:12:57 -05:00
LinuxServer-CI
feb056fd23 Bot Updating Package Versions 2022-04-01 18:27:05 +02:00
Adam
8c12fdc5d0
Merge pull request #17 from linuxserver/3.15-main 2022-04-01 16:58:26 +01:00
TheSpad
2988034cfd Rebase to Alpine 3.15 2022-04-01 16:07:34 +01:00
LinuxServer-CI
16bb608c9c Bot Updating Package Versions 2022-04-01 05:48:55 -05:00
LinuxServer-CI
86426e0629 Bot Updating Package Versions 2022-03-28 22:43:36 -05:00
LinuxServer-CI
9419956867 Bot Updating Package Versions 2022-02-15 04:34:46 +01:00
LinuxServer-CI
1b431d1dee Bot Updating Templated Files 2022-01-27 16:50:58 +01:00
aptalca
818159d246
Merge pull request #16 from linuxserver/3.15-develop-readme
Add develop 3.15 rebase to changelog
2022-01-27 10:49:51 -05:00
TheSpad
d2652111e6 Add develop 3.15 rebase to changelog 2022-01-27 13:13:45 +00:00
LinuxServer-CI
ef1d1e0696 Bot Updating Package Versions 2022-01-25 04:30:44 +01:00
LinuxServer-CI
fe638cf552 Bot Updating Templated Files 2022-01-05 18:09:02 +01:00
Adam
527968dd98
Merge pull request #14 from linuxserver/3.15 2022-01-05 17:07:51 +00:00
TheSpad
3d219cb9fe Update changelog 2022-01-05 15:02:49 +00:00
TheSpad
4db8a63829 Revert to 3.14 due to lack of node 16 support 2022-01-05 15:00:55 +00:00
TheSpad
925e5e7160 Don't delete cache folder, only contents 2022-01-04 23:33:37 +00:00
TheSpad
f19e92aba0 Rebase to 3.15, remove cachedfiles 2022-01-04 23:12:09 +00:00
LinuxServer-CI
98fbdab81c Bot Updating Templated Files 2021-12-21 04:23:37 +01:00
LinuxServer-CI
e52d435f87 Bot Updating Templated Files 2021-12-21 04:22:29 +01:00
LinuxServer-CI
71925eb5e9 Bot Updating Package Versions 2021-11-23 04:32:13 +01:00
LinuxServer-CI
75c6915bcb Bot Updating Package Versions 2021-11-02 04:29:53 +01:00
LinuxServer-CI
e599b708f0 Bot Updating Package Versions 2021-10-19 18:01:19 +02:00
LinuxServer-CI
2d3bc2127e Bot Updating Package Versions 2021-10-19 05:31:53 +02:00
LinuxServer-CI
c6dc93406e Bot Updating Templated Files 2021-10-11 05:15:05 +02:00
aptalca
25f1aaf439
Merge pull request #11 from TheCatLady/main
post-build cleanup
2021-10-10 23:13:58 -04:00
TheCatLady
a5f52886e6 post-build cleanup 2021-10-10 22:20:44 -04:00
LinuxServer-CI
7ba361c7de Bot Updating Package Versions 2021-10-10 21:15:37 +02:00
LinuxServer-CI
93ab28eb17 Bot Updating Templated Files 2021-10-10 20:57:50 +02:00
LinuxServer-CI
fff728f7c8 Bot Updating Templated Files 2021-10-10 20:56:46 +02:00
Roxedus
04f54eea27
Merge pull request #9 from linuxserver/update-description 2021-10-10 20:55:39 +02:00
Eric Nemchik
1c067ffde8
Update project description
Closes https://github.com/linuxserver/docker-overseerr/issues/6
2021-10-09 19:21:54 -05:00
LinuxServer-CI
82f37fd226 Bot Updating Package Versions 2021-10-05 05:35:42 +02:00
LinuxServer-CI
d1c79bc8a4 Bot Updating Templated Files 2021-10-05 05:22:05 +02:00
LinuxServer-CI
cca6c53a67 Bot Updating Templated Files 2021-10-05 05:20:52 +02:00
LinuxServer-CI
900922dc67 Bot Updating Package Versions 2021-09-19 20:11:07 +02:00
aptalca
f47070cf50
Merge pull request #8 from linuxserver/main-3.14
rebase to 3.14, update formatting, increase js mem
2021-09-19 13:53:53 -04:00
aptalca
b8f0efd5cc rebase to 3.14, update formatting, increase js mem 2021-09-19 11:06:18 -04:00
LinuxServer-CI
053af7fa88 Bot Updating Package Versions 2021-09-14 05:28:59 +02:00
LinuxServer-CI
93c4c404eb Bot Updating Package Versions 2021-08-31 05:34:35 +02:00
LinuxServer-CI
19026d377c Bot Updating Templated Files 2021-08-31 05:20:48 +02:00
LinuxServer-CI
3ac957295f Bot Updating Package Versions 2021-08-17 05:34:09 +02:00
LinuxServer-CI
a6f179a245 Bot Updating Package Versions 2021-08-10 05:33:06 +02:00
LinuxServer-CI
bda970046c Bot Updating Package Versions 2021-08-03 05:47:19 +02:00
LinuxServer-CI
c19c6d5566 Bot Updating Templated Files 2021-07-06 03:24:23 +00:00
LinuxServer-CI
5e8e98819c Bot Updating Templated Files 2021-07-05 23:22:46 -04:00
LinuxServer-CI
b5e1b5ab3d Bot Updating Package Versions 2021-06-10 10:44:12 -04:00
LinuxServer-CI
9662a57867 Bot Updating Package Versions 2021-06-08 05:03:53 +00:00
LinuxServer-CI
b409fe414f Bot Updating Package Versions 2021-04-21 10:36:09 -04:00
LinuxServer-CI
eaaca91006 Bot Updating Package Versions 2021-04-16 14:45:49 +00:00
LinuxServer-CI
cb9789c58c Bot Updating Templated Files 2021-04-16 13:42:47 +00:00
LinuxServer-CI
940cb4a730 Bot Updating Templated Files 2021-04-16 13:41:12 +00:00
LinuxServer-CI
07620f83b2 Bot Updating Package Versions 2021-04-13 00:51:51 -04:00
LinuxServer-CI
330fbcbe31 Bot Updating Package Versions 2021-04-06 18:09:26 +01:00
aptalca
1a6d368fc7
Merge pull request #3 from linuxserver/release-info
Add info about develop tag
2021-04-06 11:53:02 -04:00
LinuxServer-CI
724490f9fe Bot Updating Package Versions 2021-04-05 17:15:09 +01:00
42 changed files with 2289 additions and 1426 deletions

20
.editorconfig Normal file
View File

@ -0,0 +1,20 @@
# This file is globally distributed to all container image projects from
# https://github.com/linuxserver/docker-jenkins-builder/blob/master/.editorconfig
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
# trim_trailing_whitespace may cause unintended issues and should not be globally set true
trim_trailing_whitespace = false
[{Dockerfile*,**.yml}]
indent_style = space
indent_size = 2
[{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}]
indent_style = space
indent_size = 4

View File

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

View File

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

View File

@ -1,40 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- Provide a general summary of the bug in the Title above -->
------------------------------
## Expected Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Environment
**OS:**
**CPU architecture:** x86_64/arm32/arm64
**How docker service was installed:**
<!--- ie. from the official docker repo, from the distro repo, nas OS provided, etc. -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Command used to create docker container (run/create/compose/screenshot)
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
## Docker logs
<!--- Provide a full docker log, output of "docker logs overseerr" -->

14
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file
View File

@ -0,0 +1,14 @@
# Based on the issue template
name: Bug report
description: Create a report to help us improve
title: "[BUG] <title>"
labels: [Bug]
body:
- type: markdown
attributes:
value: |
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr

View File

@ -1,25 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- If this acts as a feature request please ask yourself if this modification is something the whole userbase will benefit from --->
<!--- If this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- Provide a general summary of the request in the Title above -->
------------------------------
## Desired Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Alternatives Considered
<!--- Tell us what other options you have tried or considered -->

View File

@ -0,0 +1,14 @@
# Based on the issue template
name: Feature request
description: Suggest an idea for this project
title: "[FEAT] <title>"
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr

View File

@ -1,3 +1,8 @@
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr
<!--- Provide a general summary of your changes in the Title above -->
[linuxserverurl]: https://linuxserver.io
@ -6,7 +11,7 @@
<!--- Before submitting a pull request please check the following -->
<!--- If this is a fix for a typo in code or documentation in 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 -->
<!--- Ask yourself if this modification is something the whole userbase will benefit from, if this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- That if the PR is addressing an existing issue include, closes #<issue number> , in the body of the PR commit message -->
<!--- You have included links to any files / patches etc your PR may be using in the body of the PR commit message -->
@ -21,7 +26,7 @@
------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-overseerr/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-overseerr/blob/main/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------

View File

@ -1,92 +0,0 @@
name: External Trigger Main
on:
workflow_dispatch:
jobs:
external-trigger-main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: External Trigger
if: github.ref == 'refs/heads/main'
run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_OVERSEERR_MAIN }}" ]; then
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_OVERSEERR_MAIN is set; skipping trigger. ****"
exit 0
fi
echo "**** External trigger running off of main branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_OVERSEERR_MAIN\". ****"
echo "**** Retrieving external version ****"
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" | jq -r '. | .tag_name')
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****"
FAILURE_REASON="Can't retrieve external version for overseerr branch main"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-overseerr/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n**Trigger URL:** '"${GHA_TRIGGER_URL}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****"
echo "**** Retrieving last pushed version ****"
image="linuxserver/overseerr"
tag="latest"
token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Foverseerr%3Apull" \
| jq -r '.token')
multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \
| jq -r 'first(.manifests[].digest)')
digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}" \
| jq -r '.container_config')
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then
echo "**** Can't retrieve last pushed version, exiting ****"
FAILURE_REASON="Can't retrieve last pushed version for overseerr tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1
fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****"
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****"
exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-overseerr/job/main/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 ****"
exit 0
else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-overseerr/job/main/buildWithParameters?PACKAGE_CHECK=false \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
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 "**** Attempting to change the Jenkins job description ****"
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 overseerr tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}"
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

View File

@ -1,43 +0,0 @@
name: External Trigger Scheduler
on:
schedule:
- cron: '15 * * * *'
workflow_dispatch:
jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
with:
fetch-depth: '0'
- name: External Trigger Scheduler
run: |
echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do
br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-overseerr/${br}/jenkins-vars.yml \
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "$br" == "$ls_branch" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-overseerr/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-overseerr/actions/workflows/external_trigger.yml/dispatches
else
echo "**** Workflow doesn't exist; skipping trigger. ****"
fi
else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
fi
done

View File

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

View File

@ -1,38 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-main:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: Package Trigger
if: github.ref == 'refs/heads/main'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_OVERSEERR_MAIN }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_OVERSEERR_MAIN is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-overseerr/job/main/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
exit 0
fi
echo "**** Package trigger running off of main branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_OVERSEERR_MAIN\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-overseerr/job/main/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 "**** 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"

View File

@ -1,50 +0,0 @@
name: Package Trigger Scheduler
on:
schedule:
- cron: '02 3 * * 2'
workflow_dispatch:
jobs:
package-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
with:
fetch-depth: '0'
- name: Package Trigger Scheduler
run: |
echo "**** Branches found: ****"
git for-each-ref --format='%(refname:short)' refs/remotes
echo "**** Pulling the yq docker image ****"
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do
br=$(echo "$br" | sed 's|origin/||g')
echo "**** Evaluating branch ${br} ****"
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-overseerr/${br}/jenkins-vars.yml \
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
if [ "${br}" == "${ls_branch}" ]; then
echo "**** Branch ${br} appears to be live; checking workflow. ****"
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-overseerr/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
triggered_branches="${triggered_branches}${br} "
curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-overseerr/actions/workflows/package_trigger.yml/dispatches
sleep 30
else
echo "**** Workflow doesn't exist; skipping trigger. ****"
fi
else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
fi
done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) Triggered for overseerr** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-overseerr/activity/"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}

12
.github/workflows/permissions.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: Permission check
on:
pull_request_target:
paths:
- '**/run'
- '**/finish'
- '**/check'
- 'root/migrations/*'
jobs:
permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@ -1,23 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,4 +1,6 @@
FROM ghcr.io/linuxserver/baseimage-alpine:3.13
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:3.22
# set version label
ARG BUILD_DATE
@ -8,52 +10,56 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="nemchik"
# set environment variables
ENV HOME="/config"
ENV HOME="/config" \
TMPDIR=/run/overseerr-temp
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
g++ \
make \
python3 && \
echo "**** symlink python3 for compatibility ****" && \
ln -s /usr/bin/python3 /usr/bin/python && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
yarn && \
if [ -z ${OVERSEERR_VERSION+x} ]; then \
OVERSEERR_VERSION=$(curl -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
export COMMIT_TAG="${OVERSEERR_VERSION}" && \
curl -o \
/tmp/overseerr.tar.gz -L \
"https://github.com/sct/overseerr/archive/${OVERSEERR_VERSION}.tar.gz" && \
mkdir -p /app/overseerr && \
tar xzf \
/tmp/overseerr.tar.gz -C \
/app/overseerr/ --strip-components=1 && \
cd /app/overseerr && \
NODE_OPTIONS=--max_old_space_size=1024 && \
export NODE_OPTIONS && \
yarn --frozen-lockfile --network-timeout 1000000 && \
yarn build && \
yarn install --production --ignore-scripts --prefer-offline && \
yarn cache clean && \
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json && \
rm -rf /app/overseerr/config && \
ln -s /config /app/overseerr/config && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/root/.cache \
/tmp/*
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
build-base \
python3 && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
yarn && \
if [ -z ${OVERSEERR_VERSION+x} ]; then \
OVERSEERR_VERSION=$(curl -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
export COMMIT_TAG="${OVERSEERR_VERSION}" && \
curl -o \
/tmp/overseerr.tar.gz -L \
"https://github.com/sct/overseerr/archive/${OVERSEERR_VERSION}.tar.gz" && \
mkdir -p /app/overseerr && \
tar xzf \
/tmp/overseerr.tar.gz -C \
/app/overseerr/ --strip-components=1 && \
cd /app/overseerr && \
export NODE_OPTIONS=--max_old_space_size=2048 && \
CYPRESS_INSTALL_BINARY=0 yarn --frozen-lockfile --network-timeout 1000000 && \
yarn build && \
yarn install --production --ignore-scripts --prefer-offline && \
yarn cache clean && \
rm -rf \
/app/overseerr/src \
/app/overseerr/server && \
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json && \
rm -rf /app/overseerr/config && \
ln -s /config /app/overseerr/config && \
touch /config/DOCKER && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
/app/overseerr/.next/cache/* \
/run/overseerr-temp
# copy local files
COPY root/ /
# ports and volumes
EXPOSE 5055
VOLUME /config

View File

@ -1,4 +1,6 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.13
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22
# set version label
ARG BUILD_DATE
@ -8,52 +10,56 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA
LABEL maintainer="nemchik"
# set environment variables
ENV HOME="/config"
ENV HOME="/config" \
TMPDIR=/run/overseerr-temp
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
g++ \
make \
python3 && \
echo "**** symlink python3 for compatibility ****" && \
ln -s /usr/bin/python3 /usr/bin/python && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
yarn && \
if [ -z ${OVERSEERR_VERSION+x} ]; then \
OVERSEERR_VERSION=$(curl -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
export COMMIT_TAG="${OVERSEERR_VERSION}" && \
curl -o \
/tmp/overseerr.tar.gz -L \
"https://github.com/sct/overseerr/archive/${OVERSEERR_VERSION}.tar.gz" && \
mkdir -p /app/overseerr && \
tar xzf \
/tmp/overseerr.tar.gz -C \
/app/overseerr/ --strip-components=1 && \
cd /app/overseerr && \
NODE_OPTIONS=--max_old_space_size=1024 && \
export NODE_OPTIONS && \
yarn --frozen-lockfile --network-timeout 1000000 && \
yarn build && \
yarn install --production --ignore-scripts --prefer-offline && \
yarn cache clean && \
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json && \
rm -rf /app/overseerr/config && \
ln -s /config /app/overseerr/config && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/root/.cache \
/tmp/*
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
build-base \
python3 && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
yarn && \
if [ -z ${OVERSEERR_VERSION+x} ]; then \
OVERSEERR_VERSION=$(curl -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
export COMMIT_TAG="${OVERSEERR_VERSION}" && \
curl -o \
/tmp/overseerr.tar.gz -L \
"https://github.com/sct/overseerr/archive/${OVERSEERR_VERSION}.tar.gz" && \
mkdir -p /app/overseerr && \
tar xzf \
/tmp/overseerr.tar.gz -C \
/app/overseerr/ --strip-components=1 && \
cd /app/overseerr && \
export NODE_OPTIONS=--max_old_space_size=2048 && \
CYPRESS_INSTALL_BINARY=0 yarn --frozen-lockfile --network-timeout 1000000 && \
yarn build && \
yarn install --production --ignore-scripts --prefer-offline && \
yarn cache clean && \
rm -rf \
/app/overseerr/src \
/app/overseerr/server && \
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json && \
rm -rf /app/overseerr/config && \
ln -s /config /app/overseerr/config && \
touch /config/DOCKER && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/tmp/* \
$HOME/.cache \
/app/overseerr/.next/cache/* \
/run/overseerr-temp
# copy local files
COPY root/ /
# ports and volumes
EXPOSE 5055
VOLUME /config

View File

@ -1,59 +0,0 @@
FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.13
# set version label
ARG BUILD_DATE
ARG VERSION
ARG OVERSEERR_VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="nemchik"
# set environment variables
ENV HOME="/config"
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
curl \
g++ \
make \
python3 && \
echo "**** symlink python3 for compatibility ****" && \
ln -s /usr/bin/python3 /usr/bin/python && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
yarn && \
if [ -z ${OVERSEERR_VERSION+x} ]; then \
OVERSEERR_VERSION=$(curl -sX GET "https://api.github.com/repos/sct/overseerr/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
export COMMIT_TAG="${OVERSEERR_VERSION}" && \
curl -o \
/tmp/overseerr.tar.gz -L \
"https://github.com/sct/overseerr/archive/${OVERSEERR_VERSION}.tar.gz" && \
mkdir -p /app/overseerr && \
tar xzf \
/tmp/overseerr.tar.gz -C \
/app/overseerr/ --strip-components=1 && \
cd /app/overseerr && \
NODE_OPTIONS=--max_old_space_size=1024 && \
export NODE_OPTIONS && \
yarn --frozen-lockfile --network-timeout 1000000 && \
yarn build && \
yarn install --production --ignore-scripts --prefer-offline && \
yarn cache clean && \
echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json && \
rm -rf /app/overseerr/config && \
ln -s /config /app/overseerr/config && \
echo "**** cleanup ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/root/.cache \
/tmp/*
# copy local files
COPY root/ /
# ports and volumes
EXPOSE 5055
VOLUME /config

830
Jenkinsfile vendored
View File

@ -1,830 +0,0 @@
pipeline {
agent {
label 'X86-64-MULTI'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', daysToKeepStr: '60'))
parallelsAlwaysFailFast()
}
// Input to determine if this is a package check
parameters {
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
}
// Configuration for the variables used for this specific repo
environment {
BUILDS_DISCORD=credentials('build_webhook_url')
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
EXT_GIT_BRANCH = 'master'
EXT_USER = 'sct'
EXT_REPO = 'overseerr'
BUILD_VERSION_ARG = 'OVERSEERR_VERSION'
LS_USER = 'linuxserver'
LS_REPO = 'docker-overseerr'
CONTAINER_NAME = 'overseerr'
DOCKERHUB_IMAGE = 'linuxserver/overseerr'
DEV_DOCKERHUB_IMAGE = 'lsiodev/overseerr'
PR_DOCKERHUB_IMAGE = 'lspipepr/overseerr'
DIST_IMAGE = 'alpine'
MULTIARCH='true'
CI='true'
CI_WEB='true'
CI_PORT='5055'
CI_SSL='false'
CI_DELAY='300'
CI_DOCKERENV='TZ=US/Pacific'
CI_AUTH='user:password'
CI_WEBPATH=''
}
stages {
// Setup all the basic environment variables needed for the build
stage("Set ENV Variables base"){
steps{
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
returnStdout: true).trim()
env.GITHUB_DATE = sh(
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
returnStdout: true).trim()
env.COMMIT_SHA = sh(
script: '''git rev-parse HEAD''',
returnStdout: true).trim()
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.PULL_REQUEST = env.CHANGE_ID
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.md ./.github/ISSUE_TEMPLATE/issue.feature.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/greetings.yml ./.github/workflows/stale.yml ./root/donate.txt ./.github/workflows/package_trigger.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/external_trigger.yml ./.github/workflows/external_trigger_scheduler.yml'
}
script{
env.LS_RELEASE_NUMBER = sh(
script: '''echo ${LS_RELEASE} |sed 's/^.*-ls//g' ''',
returnStdout: true).trim()
}
script{
env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then
echo ${LS_RELEASE_NUMBER}
else
echo $((${LS_RELEASE_NUMBER} + 1))
fi''',
returnStdout: true).trim()
}
}
}
/* #######################
Package Version Tagging
####################### */
// Grab the current package versions in Git to determine package tag
stage("Set Package tag"){
steps{
script{
env.PACKAGE_TAG = sh(
script: '''#!/bin/bash
if [ -e package_versions.txt ] ; then
cat package_versions.txt | md5sum | cut -c1-8
else
echo none
fi''',
returnStdout: true).trim()
}
}
}
/* ########################
External Release Tagging
######################## */
// If this is a stable github release use the latest endpoint from github to determine the ext tag
stage("Set ENV github_stable"){
steps{
script{
env.EXT_RELEASE = sh(
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''',
returnStdout: true).trim()
}
}
}
// If this is a stable or devel github release generate the link for the build message
stage("Set ENV github_link"){
steps{
script{
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
}
}
}
// Sanitize the release tag and strip illegal docker or github characters
stage("Sanitize tag"){
steps{
script{
env.EXT_RELEASE_CLEAN = sh(
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
returnStdout: true).trim()
}
}
}
// If this is a main build use live docker endpoints
stage("Set ENV live build"){
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
}
steps {
script{
env.IMAGE = env.DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
}
}
}
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "main"}
environment name: 'CHANGE_ID', value: ''
}
steps {
script{
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
}
}
}
// If this is a pull request build use dev docker endpoints
stage("Set ENV PR build"){
when {
not {environment name: 'CHANGE_ID', value: ''}
}
steps {
script{
env.IMAGE = env.PR_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
}
}
}
// Run ShellCheck
stage('ShellCheck') {
when {
environment name: 'CI', value: 'true'
}
steps {
withCredentials([
string(credentialsId: 'ci-tests-s3-key-id', variable: 'S3_KEY'),
string(credentialsId: 'ci-tests-s3-secret-access-key', variable: 'S3_SECRET')
]) {
script{
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
}
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash'''
sh '''#! /bin/bash
set -e
docker pull ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest
docker run --rm \
-e DESTINATION=\"${IMAGE}/${META_TAG}/shellcheck-result.xml\" \
-e FILE_NAME="shellcheck-result.xml" \
-e MIMETYPE="text/xml" \
-v ${WORKSPACE}:/mnt \
-e SECRET_KEY=\"${S3_SECRET}\" \
-e ACCESS_KEY=\"${S3_KEY}\" \
-t ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest \
python /upload.py'''
}
}
}
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
}
}
steps {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=main -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
# Stage 1 - Jenkinsfile update
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f main
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile"
rm -Rf ${TEMPDIR}
exit 0
else
echo "Jenkinsfile is up to date."
fi
# Stage 2 - Delete old templates
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md"
for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
fi
done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f main
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old templates"
rm -Rf ${TEMPDIR}
exit 0
else
echo "No templates to delete"
fi
# Stage 3 - Update templates
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f main
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
echo ".jenkins-external" >> .gitignore
git add .gitignore
fi
git add ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/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}/gitbook/docker-documentation/images/
cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, skipping Unraid template upload"
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
cd ${TEMPDIR}/unraid/templates/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git --all
fi
fi
rm -Rf ${TEMPDIR}'''
script{
env.FILES_UPDATED = sh(
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
}
}
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
env.CONTAINER_NAME != null
}
}
steps {
script{
env.EXIT_STATUS = 'ABORTED'
}
}
}
/* #######################
GitLab Mirroring
####################### */
// Ping into Gitlab to mirror this repo and have a registry endpoint
stage("GitLab Mirror"){
when {
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'",
"mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\
"visibility":"public"}' '''
}
}
/* ###############
Build Container
############### */
// Build Docker container for push to LS Repo
stage('Build-Single') {
when {
environment name: 'MULTIARCH', value: 'false'
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Running on node: ${NODE_NAME}"
sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
}
}
// Build MultiArch Docker containers for push to LS Repo
stage('Build-Multi') {
when {
environment name: 'MULTIARCH', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
parallel {
stage('Build X86') {
steps {
echo "Running on node: ${NODE_NAME}"
sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
}
}
stage('Build ARMHF') {
agent {
label 'ARMHF'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
stage('Build ARM64') {
agent {
label 'ARM64'
}
steps {
echo "Running on node: ${NODE_NAME}"
echo 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
retry(5) {
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \
${IMAGE}:arm64v8-${META_TAG} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
}
}
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
if [ "${MULTIARCH}" == "true" ]; then
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
else
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
fi
if [ "${DIST_IMAGE}" == "alpine" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apk info -v > /tmp/package_versions.txt && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt'
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt'
fi
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f main
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
git add package_versions.txt
git commit -m 'Bot Updating Package Versions'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process"
else
echo "false" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag is same as previous continue with build process"
fi
rm -Rf ${TEMPDIR}'''
script{
env.PACKAGE_UPDATED = sh(
script: '''cat /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
}
}
}
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
echo "Packages were updated. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{
env.EXIT_STATUS = 'ABORTED'
}
}
}
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "main"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
expression {
params.PACKAGE_CHECK == 'true'
}
}
steps {
sh '''#! /bin/bash
echo "There are no package updates. Cleaning up the image and exiting."
if [ "${MULTIARCH}" == "true" ]; then
docker rmi ${IMAGE}:amd64-${META_TAG}
else
docker rmi ${IMAGE}:${META_TAG}
fi'''
script{
env.EXIT_STATUS = 'ABORTED'
}
}
}
/* #######
Testing
####### */
// Run Container tests
stage('Test') {
when {
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
string(credentialsId: 'ci-tests-s3-key-id', variable: 'S3_KEY'),
string(credentialsId: 'ci-tests-s3-secret-access-key ', variable: 'S3_SECRET')
]) {
script{
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
}
sh '''#! /bin/bash
set -e
docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
docker run --rm \
--shm-size=1gb \
-v /var/run/docker.sock:/var/run/docker.sock \
-e IMAGE=\"${IMAGE}\" \
-e DELAY_START=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \
-e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \
-e SECRET_KEY=\"${S3_SECRET}\" \
-e ACCESS_KEY=\"${S3_KEY}\" \
-e DOCKER_ENV=\"${CI_DOCKERENV}\" \
-e WEB_SCREENSHOT=\"${CI_WEB}\" \
-e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e DO_REGION="ams3" \
-e DO_BUCKET="lsio-ci" \
-t ghcr.io/linuxserver/ci:latest \
python /ci/ci.py'''
}
}
}
/* ##################
Release Logic
################## */
// If this is an amd64 only image only push a single image
stage('Docker-Push-Single') {
when {
environment name: 'MULTIARCH', value: 'false'
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --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
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
docker push ${PUSHIMAGE}:latest
docker push ${PUSHIMAGE}:${META_TAG}
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
done
'''
}
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
done
'''
}
}
}
// If this is a multi arch release push all images and define the manifest
stage('Docker-Push-Multi') {
when {
environment name: 'MULTIARCH', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --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
if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-latest
docker push ${MANIFESTIMAGE}:arm32v7-latest
docker push ${MANIFESTIMAGE}:arm64v8-latest
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
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}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
done
'''
}
sh '''#! /bin/bash
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest \
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
}
}
}
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "main"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to main",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "main",\
"name": "'${META_TAG}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}
}
// Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') {
when {
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
]
]) {
sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
docker pull ghcr.io/linuxserver/readme-sync
docker run --rm=true \
-e DOCKERHUB_USERNAME=$DOCKERUSER \
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
-e DOCKER_REPOSITORY=${IMAGE} \
-e GIT_BRANCH=master \
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
ghcr.io/linuxserver/readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
}
}
}
// If this is a Pull request send the CI link as a comment on it
stage('Pull Request Comment') {
when {
not {environment name: 'CHANGE_ID', value: ''}
environment name: 'CI', value: 'true'
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \
-d '{"body": "I am a bot, here are the test results for this PR: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' '''
}
}
}
/* ######################
Send status to Discord
###################### */
post {
always {
script{
if (env.EXIT_STATUS == "ABORTED"){
sh 'echo "build aborted"'
}
else if (currentBuild.currentResult == "SUCCESS"){
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
"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"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
else {
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
"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"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
}
}
cleanup {
cleanWs()
}
}
}

265
README.md
View File

@ -1,123 +1,138 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the CONTRIBUTING.md -->
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-overseerr/blob/main/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![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.")
[![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.")
[![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.")
[![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")
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring:
* regular and timely application updates
* easy user mappings (PGID, PUID)
* custom base image with s6 overlay
* weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
* regular security updates
* regular and timely application updates
* easy user mappings (PGID, PUID)
* custom base image with s6 overlay
* weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
* regular security updates
Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr
# [linuxserver/overseerr](https://github.com/linuxserver/docker-overseerr)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Foverseerr?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-overseerr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-overseerr)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-overseerr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-overseerr/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-overseerr/packages)
[![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/linuxserver.io/docker-overseerr/container_registry)
[![MicroBadger Layers](https://img.shields.io/microbadger/layers/linuxserver/overseerr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge)](https://microbadger.com/images/linuxserver/overseerr "Get your own version badge on microbadger.com")
[![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/overseerr)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/overseerr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/overseerr)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/overseerr.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/overseerr)
[![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-overseerr%2Fjob%2Fmain%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-overseerr/job/main/)
[![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%2Foverseerr%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/overseerr/latest/index.html)
[Overseerr](https://overseerr.dev/) is a free and open source software application for managing requests for your media library.
[Overseerr](https://overseerr.dev/) is a request management and media discovery tool built to work with your existing Plex ecosystem.
[![overseerr](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/overseerr.png)](https://overseerr.dev/)
## Supported Architectures
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
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 `ghcr.io/linuxserver/overseerr` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
Simply pulling `lscr.io/linuxserver/overseerr:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
| Architecture | Tag |
| :----: | --- |
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
| Architecture | Available | Tag |
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
## Version Tags
This image provides various versions that are available via tags. `latest` tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.
This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.
| Tag | Description |
| :----: | --- |
| latest | Stable releases from GitHub |
| develop | Development releases from commits in upstream develop branch |
| Tag | Available | Description |
| :----: | :----: |--- |
| latest | ✅ | Stable releases from GitHub |
| develop | ✅ | Development releases from commits in upstream develop branch |
## Application Setup
Access the webui at `<your-ip>:5055`, for more information check out [Overseerr](https://overseerr.dev/).
## 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
Here are some example snippets to help you get started creating a container.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
### docker-compose ([recommended](https://docs.linuxserver.io/general/docker-compose))
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
Compatible with docker-compose v2 schemas.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml
---
version: "2.1"
services:
overseerr:
image: ghcr.io/linuxserver/overseerr
image: lscr.io/linuxserver/overseerr:latest
container_name: overseerr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
- TZ=Etc/UTC
volumes:
- /path/to/appdata/config:/config
- /path/to/overseerr/config:/config
ports:
- 5055:5055
restart: unless-stopped
```
### docker cli
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
```
```bash
docker run -d \
--name=overseerr \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=America/New_York \
-e TZ=Etc/UTC \
-p 5055:5055 \
-v /path/to/appdata/config:/config \
-v /path/to/overseerr/config:/config \
--restart unless-stopped \
ghcr.io/linuxserver/overseerr
lscr.io/linuxserver/overseerr:latest
```
## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function |
| :----: | --- |
| `-p 5055` | Port for Overseerr's web interface. |
| `-p 5055:5055` | Port for Overseerr's web interface. |
| `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation |
| `-e TZ=America/New_York` | Specify a timezone to use EG America/New_York |
| `-v /config` | Contains all relevant configuration files. |
| `-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` | Persistent config files |
| `--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)
@ -125,11 +140,11 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example:
```
-e FILE__PASSWORD=/run/secrets/mysecretpassword
```bash
-e FILE__MYVAR=/run/secrets/mysecretvariable
```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications
@ -138,93 +153,161 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
```bash
id your_user
```
Example output:
&nbsp;
## Application Setup
Access the webui at `<your-ip>:5055`, for more information check out [Overseerr](https://overseerr.dev/).
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
```
## Docker Mods
[![Docker Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=overseerr&query=%24.mods%5B%27overseerr%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=overseerr "view available mods for this container.") [![Docker Universal Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=universal&query=%24.mods%5B%27universal%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=universal "view available universal mods.")
We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.
## Support Info
* Shell access whilst the container is running: `docker exec -it overseerr /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f overseerr`
* container version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' overseerr`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/overseerr`
* Shell access whilst the container is running:
```bash
docker exec -it overseerr /bin/bash
```
* To monitor the logs of the container in realtime:
```bash
docker logs -f overseerr
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' overseerr
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/overseerr:latest
```
## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Compose
* Update all images: `docker-compose pull`
* or update a single image: `docker-compose pull overseerr`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d overseerr`
* You can also remove the old dangling images: `docker image prune`
* Update images:
* All images:
```bash
docker-compose pull
```
* Single image:
```bash
docker-compose pull overseerr
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d overseerr
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run
* Update the image: `docker pull ghcr.io/linuxserver/overseerr`
* Stop the running container: `docker stop overseerr`
* Delete the container: `docker rm overseerr`
* Update the image:
```bash
docker pull lscr.io/linuxserver/overseerr:latest
```
* Stop the running container:
```bash
docker stop overseerr
```
* Delete the container:
```bash
docker rm overseerr
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune`
* You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once overseerr
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
```bash
docker image prune
```
### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
>[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally
If you want to make local modifications to these images for development purposes or just to customize the logic:
```
```bash
git clone https://github.com/linuxserver/docker-overseerr.git
cd docker-overseerr
docker build \
--no-cache \
--pull \
-t ghcr.io/linuxserver/overseerr:latest .
-t lscr.io/linuxserver/overseerr:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```
docker run --rm --privileged multiarch/qemu-user-static:register --reset
The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions
* **05.07.25:** - Rebase to Alpine 3.22.
* **05.07.25:** - Rebase to Alpine 3.22.
* **24.12.24:** - Rebase to Alpine 3.21.
* **31.05.24:** - Rebase to Alpine 3.20.
* **23.12.23:** - Rebase to Alpine 3.19.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **18.12.22:** - Rebase main to 3.17.
* **27.10.22:** - Rebase main to 3.16, migrate to s6v3.
* **20.08.22:** - Don't install cypress.
* **01.04.22:** - Rebase main branch to Alpine 3.15.
* **27.01.22:** - Rebase develop branch to Alpine 3.15.
* **04.01.22:** - Remove cached files.
* **10.10.21:** - Add additional post-build cleanup.
* **19.09.21:** - Rebase to alpine 3.14. Update code formatting. Increase js mem limit.
* **05.04.21:** - Initial Release.

View File

@ -24,8 +24,8 @@ repo_vars:
- CI_PORT='5055'
- CI_SSL='false'
- CI_DELAY='300'
- CI_DOCKERENV='TZ=US/Pacific'
- CI_AUTH='user:password'
- CI_DOCKERENV=''
- CI_AUTH=''
- CI_WEBPATH=''
sponsor_links:
- { name: "Overseerr Github Sponsors", url: "https://github.com/sponsors/sct" }

1816
package_versions.txt Executable file

File diff suppressed because it is too large Load Diff

View File

@ -5,46 +5,93 @@ project_name: overseerr
project_url: "https://overseerr.dev/"
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/overseerr.png"
project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) is a free and open source software application for managing requests for your media library.
[{{ project_name|capitalize }}]({{ project_url }}) is a request management and media discovery tool built to work with your existing Plex ecosystem.
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Media Requesters"
# deprecation information
project_deprecation_status: true
project_deprecation_message: "Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr"
# supported architectures
available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version
development_versions: true
development_versions_items:
- { tag: "latest", desc: "Stable releases from GitHub" }
- { tag: "develop", desc: "Development releases from commits in upstream develop branch" }
- {tag: "latest", desc: "Stable releases from GitHub"}
- {tag: "develop", desc: "Development releases from commits in upstream develop branch"}
# container parameters
common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}"
param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "America/New_York", desc: "Specify a timezone to use EG America/New_York"}
param_usage_include_ports: true
param_ports:
- { external_port: "5055", internal_port: "5055", port_desc: "Port for Overseerr's web interface." }
- {external_port: "5055", internal_port: "5055", port_desc: "Port for Overseerr's web interface."}
param_usage_include_vols: true
param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/appdata/config", desc: "Contains all relevant configuration files." }
# optional parameters
opt_param_usage_include_vols: false
- {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"}
readonly_supported: true
nonroot_supported: true
# application setup block
app_setup_block_enabled: true
app_setup_block: |
Access the webui at `<your-ip>:5055`, for more information check out [Overseerr](https://overseerr.dev/).
# init diagram
init_diagram: |
"overseerr:latest": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-os-end -> init-config
init-config -> init-config-end
init-crontab-config -> init-config-end
init-overseerr-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-config-end -> init-deprecate
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-config -> init-overseerr-config
init-custom-files -> init-services
init-deprecate -> init-services
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-overseerr
svc-overseerr -> legacy-services
}
Base Images: {
"baseimage-alpine:3.22"
}
"overseerr:latest" <- Base Images
# changelog
changelogs:
- { date: "05.04.21:", desc: "Initial Release." }
- {date: "05.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "05.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "24.12.24:", desc: "Rebase to Alpine 3.21."}
- {date: "31.05.24:", desc: "Rebase to Alpine 3.20."}
- {date: "23.12.23:", desc: "Rebase to Alpine 3.19."}
- {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."}
- {date: "18.12.22:", desc: "Rebase main to 3.17."}
- {date: "27.10.22:", desc: "Rebase main to 3.16, migrate to s6v3."}
- {date: "20.08.22:", desc: "Don't install cypress."}
- {date: "01.04.22:", desc: "Rebase main branch to Alpine 3.15."}
- {date: "27.01.22:", desc: "Rebase develop branch to Alpine 3.15."}
- {date: "04.01.22:", desc: "Remove cached files."}
- {date: "10.10.21:", desc: "Add additional post-build cleanup."}
- {date: "19.09.21:", desc: "Rebase to alpine 3.14. Update code formatting. Increase js mem limit."}
- {date: "05.04.21:", desc: "Initial Release."}

View File

@ -1,5 +0,0 @@
#!/usr/bin/with-contenv bash
# permissions
chown -R abc:abc \
/config

View File

@ -0,0 +1,17 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
echo '
╔════════════════════════════════════════════════════╗
╠════════════════════════════════════════════════════╣
║ ║
║ This image is deprecated. ║
║ We will not offer support for this image ║
║ and it will not be updated. ║
║ ║
╠════════════════════════════════════════════════════╣
╚════════════════════════════════════════════════════╝
Overseerr has now merged with Jellyseerr, we recommend migrating to the official Seerr image: https://github.com/seerr-team/seerr
══════════════════════════════════════════════════════'

View File

@ -0,0 +1 @@
oneshot

View File

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

View File

@ -0,0 +1 @@
oneshot

View File

@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-overseerr-config/run

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1,14 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
export CONFIG_DIRECTORY="/config"
if [[ -z ${LSIO_NON_ROOT_USER} ]]; then
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 5055" \
cd /app/overseerr s6-setuidgid abc /usr/bin/yarn start
else
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 5055" \
cd /app/overseerr /usr/bin/yarn start
fi

View File

@ -0,0 +1 @@
longrun

View File

@ -1,8 +0,0 @@
#!/usr/bin/with-contenv bash
cd /app/overseerr || exit
export CONFIG_DIRECTORY="/config"
exec \
s6-setuidgid abc /usr/bin/yarn start