Compare commits

..

350 commits

Author SHA1 Message Date
LinuxServer-CI
fd7e492c2d
Bot Updating Package Versions 2025-06-09 09:04:14 +00:00
LinuxServer-CI
830028bc70
Bot Updating Templated Files 2025-06-09 08:58:38 +00:00
LinuxServer-CI
b56f64352a
Bot Updating Templated Files 2025-06-09 08:57:09 +00:00
LinuxServer-CI
5975d49d64
Bot Updating Templated Files 2025-06-09 08:55:35 +00:00
Adam
5ee360753c
Merge pull request #90 from linuxserver/deprecate-develop 2025-06-09 09:54:08 +01:00
thespad
3423d99e5e
Deprecate develop branch 2025-06-08 16:35:20 +01:00
LinuxServer-CI
d7a1a7f8c7
Bot Updating Package Versions 2025-06-03 21:46:09 +00:00
LinuxServer-CI
9df13a83ef
Bot Updating Package Versions 2025-05-29 05:52:42 +00:00
LinuxServer-CI
5f26b2ec0d
Bot Updating Package Versions 2025-05-20 21:45:51 +00:00
LinuxServer-CI
afa4a7caeb
Bot Updating Package Versions 2025-05-18 04:07:22 +00:00
LinuxServer-CI
ab8968f2bb
Bot Updating Package Versions 2025-05-13 21:45:09 +00:00
LinuxServer-CI
693b8bd137
Bot Updating Package Versions 2025-05-06 21:45:24 +00:00
LinuxServer-CI
bb36e87fef
Bot Updating Package Versions 2025-04-29 21:47:07 +00:00
LinuxServer-CI
913f8d590e
Bot Updating Package Versions 2025-04-24 22:45:42 +00:00
LinuxServer-CI
d7bd84aacb
Bot Updating Package Versions 2025-04-22 21:45:03 +00:00
LinuxServer-CI
84147b0435
Bot Updating Package Versions 2025-04-16 06:51:55 +00:00
LinuxServer-CI
c3f1b91129
Bot Updating Package Versions 2025-04-15 17:44:24 +00:00
LinuxServer-CI
101b6b05e0
Bot Updating Package Versions 2025-04-10 22:45:17 +00:00
LinuxServer-CI
e5bd06eb7e
Bot Updating Package Versions 2025-04-08 21:45:19 +00:00
LinuxServer-CI
b738ad8a7e
Bot Updating Package Versions 2025-04-04 04:48:05 +00:00
LinuxServer-CI
beb8fd8d2b
Bot Updating Package Versions 2025-04-01 16:50:30 +00:00
LinuxServer-CI
fdeac817fa
Bot Updating Package Versions 2025-03-31 23:40:57 +00:00
LinuxServer-CI
a47073e177
Bot Updating Package Versions 2025-03-28 20:42:59 +00:00
LinuxServer-CI
9f1bef97c5
Bot Updating Package Versions 2025-03-27 07:41:10 +00:00
LinuxServer-CI
7e916802ed
Bot Updating Package Versions 2025-03-25 21:43:39 +00:00
LinuxServer-CI
08fc0482da
Bot Updating Package Versions 2025-03-24 22:44:22 +00:00
LinuxServer-CI
c234523fad
Bot Updating Package Versions 2025-03-24 06:51:11 +00:00
LinuxServer-CI
ce80d3f9e0
Bot Updating Package Versions 2025-03-23 03:18:06 +00:00
LinuxServer-CI
e519696652
Bot Updating Package Versions 2025-03-11 21:42:28 +00:00
LinuxServer-CI
941bbcf8ce
Bot Updating Package Versions 2025-03-10 16:48:29 +00:00
LinuxServer-CI
7f950342be
Bot Updating Package Versions 2025-03-05 15:43:46 +00:00
LinuxServer-CI
3d6b511ee2
Bot Updating Package Versions 2025-03-04 03:11:55 +00:00
LinuxServer-CI
7c8a85c477
Bot Updating Package Versions 2025-03-02 08:46:21 +00:00
LinuxServer-CI
63d3b0b511
Bot Updating Package Versions 2025-02-26 15:48:05 +00:00
LinuxServer-CI
ac72d8af15
Bot Updating Package Versions 2025-02-25 21:48:40 +00:00
LinuxServer-CI
e8f2218980
Bot Updating Package Versions 2025-02-19 17:42:19 +00:00
LinuxServer-CI
9be78f7b53
Bot Updating Package Versions 2025-02-18 21:43:22 +00:00
LinuxServer-CI
15ecd82889
Bot Updating Package Versions 2025-02-13 15:40:48 +00:00
LinuxServer-CI
ecd6573218
Bot Updating Package Versions 2025-02-11 18:48:57 +00:00
LinuxServer-CI
c8b1d5a3dc
Bot Updating Templated Files 2025-02-11 18:43:15 +00:00
LinuxServer-CI
2fff0e2b9f
Bot Updating Package Versions 2025-02-04 21:42:02 +00:00
LinuxServer-CI
b56570541a
Bot Updating Package Versions 2025-01-28 21:46:29 +00:00
LinuxServer-CI
83ff321e0d
Bot Updating Templated Files 2025-01-28 21:41:53 +00:00
LinuxServer-CI
3bd19a972f
Bot Updating Templated Files 2025-01-28 21:40:41 +00:00
LinuxServer-CI
7b4a6a676e
Bot Updating Package Versions 2025-01-21 21:45:46 +00:00
LinuxServer-CI
71a977c90d
Bot Updating Package Versions 2025-01-14 21:43:25 +00:00
LinuxServer-CI
bc5e088aa3
Bot Updating Package Versions 2025-01-07 21:42:48 +00:00
LinuxServer-CI
ffe75963ed
Bot Updating Package Versions 2025-01-02 21:39:54 +00:00
LinuxServer-CI
2a3a86dcae
Bot Updating Package Versions 2024-12-31 21:42:43 +00:00
LinuxServer-CI
af451efbaf
Bot Updating Package Versions 2024-12-24 21:43:07 +00:00
LinuxServer-CI
bcee19c6c6
Bot Updating Package Versions 2024-12-17 21:48:16 +00:00
LinuxServer-CI
b0c29f55da
Bot Updating Templated Files 2024-12-17 21:43:10 +00:00
LinuxServer-CI
684b3eda9d
Bot Updating Templated Files 2024-12-17 21:40:44 +00:00
LinuxServer-CI
08b88a4634
Bot Updating Package Versions 2024-12-10 21:49:05 +00:00
LinuxServer-CI
84be2dcb3a
Bot Updating Templated Files 2024-12-10 21:44:25 +00:00
LinuxServer-CI
de2719eae0
Bot Updating Package Versions 2024-12-03 21:49:09 +00:00
LinuxServer-CI
5f1daaf5a6
Bot Updating Templated Files 2024-12-03 21:41:57 +00:00
LinuxServer-CI
fe3bbf856c
Bot Updating Package Versions 2024-11-26 21:46:33 +00:00
LinuxServer-CI
4e9401bdbe
Bot Updating Package Versions 2024-11-25 22:42:29 +00:00
LinuxServer-CI
39688bbed6
Bot Updating Package Versions 2024-11-22 14:44:48 +00:00
LinuxServer-CI
2bf3bf52a3
Bot Updating Package Versions 2024-11-19 21:43:29 +00:00
LinuxServer-CI
78e845fc62
Bot Updating Package Versions 2024-11-14 23:40:18 +00:00
LinuxServer-CI
3418d70a27
Bot Updating Package Versions 2024-11-12 21:47:27 +00:00
LinuxServer-CI
84ddbe873d
Bot Updating Templated Files 2024-11-12 21:42:51 +00:00
LinuxServer-CI
bd4898e3d7
Bot Updating Templated Files 2024-11-12 21:40:31 +00:00
LinuxServer-CI
ea66afb64a
Bot Updating Package Versions 2024-11-05 21:43:52 +00:00
LinuxServer-CI
7c3c249c12
Bot Updating Package Versions 2024-10-31 20:41:44 +00:00
LinuxServer-CI
c6bb860ac2
Bot Updating Package Versions 2024-10-31 06:47:41 +00:00
LinuxServer-CI
81d25e56ed
Bot Updating Package Versions 2024-10-29 21:43:49 +00:00
LinuxServer-CI
ea9e07a83c
Bot Updating Package Versions 2024-10-23 16:50:20 +00:00
LinuxServer-CI
64dd97a6e7
Bot Updating Package Versions 2024-10-22 16:47:24 +00:00
LinuxServer-CI
f39d3f353c
Bot Updating Package Versions 2024-10-17 23:40:43 +00:00
LinuxServer-CI
7e7134f286
Bot Updating Package Versions 2024-10-15 13:03:06 +00:00
LinuxServer-CI
f7b04a3271
Bot Updating Package Versions 2024-10-08 21:42:48 +00:00
LinuxServer-CI
811664e570
Bot Updating Templated Files 2024-10-01 21:41:14 +00:00
LinuxServer-CI
8ad2d6b856
Bot Updating Package Versions 2024-09-27 23:44:13 +00:00
LinuxServer-CI
0ad72cba9a
Bot Updating Templated Files 2024-09-27 23:39:55 +00:00
LinuxServer-CI
b568561059
Bot Updating Templated Files 2024-09-27 23:38:28 +00:00
LinuxServer-CI
5e4eb12845
Bot Updating Templated Files 2024-09-27 23:36:57 +00:00
LinuxServer-CI
294e210822
Bot Updating Package Versions 2024-09-24 21:44:11 +00:00
thelamer
9571e6d1c0 update build logic to suport thumbnails 2024-09-17 18:11:55 -04:00
LinuxServer-CI
12d7e636ab
Bot Updating Package Versions 2024-09-17 21:45:07 +00:00
LinuxServer-CI
d239e1c872
Bot Updating Package Versions 2024-09-10 21:42:54 +00:00
LinuxServer-CI
4a333fad5d
Bot Updating Package Versions 2024-09-03 21:43:03 +00:00
LinuxServer-CI
44ea47d8d9
Bot Updating Package Versions 2024-08-27 21:45:43 +00:00
Adam
6fa36c9f06
Merge pull request #68 from linuxserver/develop-nowebci 2024-08-27 20:55:07 +01:00
thespad
9ed2ca4c25
DIsable webci due to lack of priv mode 2024-08-27 20:01:12 +01:00
LinuxServer-CI
eb00aded51
Bot Updating Package Versions 2024-08-23 03:41:33 +00:00
LinuxServer-CI
cdafc0a785
Bot Updating Package Versions 2024-08-21 02:51:22 +00:00
LinuxServer-CI
c7504da9a6
Bot Updating Package Versions 2024-08-20 21:45:52 +00:00
LinuxServer-CI
5bb49a1762
Bot Updating Templated Files 2024-08-20 21:41:37 +00:00
LinuxServer-CI
a254195692 Bot Updating Templated Files 2024-08-20 21:40:05 +00:00
LinuxServer-CI
090fbc05ec Bot Updating Package Versions 2024-08-15 04:41:55 +00:00
LinuxServer-CI
a5d67a05f5 Bot Updating Package Versions 2024-08-13 21:42:42 +00:00
LinuxServer-CI
261e95636d Bot Updating Package Versions 2024-08-10 03:41:29 +00:00
LinuxServer-CI
f37feb3ffd Bot Updating Package Versions 2024-08-08 18:48:41 +00:00
LinuxServer-CI
129f437aff Bot Updating Package Versions 2024-08-06 21:42:04 +00:00
LinuxServer-CI
41fd7c2319 Bot Updating Package Versions 2024-08-05 21:39:03 +00:00
LinuxServer-CI
aacdddd527 Bot Updating Package Versions 2024-08-01 18:44:28 +00:00
LinuxServer-CI
0d4cc7a926 Bot Updating Package Versions 2024-07-30 21:42:34 +00:00
LinuxServer-CI
6493c641f0 Bot Updating Package Versions 2024-07-30 01:51:25 +00:00
LinuxServer-CI
15fbd99ed9 Bot Updating Package Versions 2024-07-27 21:39:02 +00:00
LinuxServer-CI
7cd24c8c51 Bot Updating Package Versions 2024-07-24 04:42:58 +00:00
LinuxServer-CI
9afce09b1f Bot Updating Package Versions 2024-07-23 20:38:42 +00:00
LinuxServer-CI
4bc46a7d8c Bot Updating Package Versions 2024-07-17 15:45:35 +00:00
LinuxServer-CI
33cad90ee7 Bot Updating Package Versions 2024-07-16 21:43:39 +00:00
LinuxServer-CI
d118fd922c Bot Updating Package Versions 2024-07-16 05:42:41 +00:00
LinuxServer-CI
6c7e9cf7f2 Bot Updating Templated Files 2024-07-16 05:38:00 +00:00
LinuxServer-CI
f96a50b2e8 Bot Updating Templated Files 2024-07-16 05:36:40 +00:00
LinuxServer-CI
1932a6bfc2 Bot Updating Package Versions 2024-07-10 20:38:56 +00:00
LinuxServer-CI
156dab2729 Bot Updating Package Versions 2024-07-09 21:42:16 +00:00
thelamer
eeee9de950 need to check for the symlink to facilitate destruction and creation 2024-07-08 21:09:05 -04:00
LinuxServer-CI
462c8250c9 Bot Updating Package Versions 2024-07-09 00:42:40 +00:00
thelamer
61b647d587 update develop to be functional for 1.16 2024-07-08 20:37:37 -04:00
LinuxServer-CI
bd2cb954ea Bot Updating Package Versions 2024-07-06 10:39:27 +00:00
LinuxServer-CI
004ad84efa Bot Updating Package Versions 2024-07-05 03:41:36 +00:00
LinuxServer-CI
b334e6c823 Bot Updating Package Versions 2024-07-02 21:42:50 +00:00
LinuxServer-CI
79c1d306a5 Bot Updating Package Versions 2024-06-25 21:55:20 +00:00
thelamer
20d4962bd1 typo 2024-06-25 17:50:07 -04:00
LinuxServer-CI
3ebfac4665 Bot Updating Templated Files 2024-06-24 17:24:53 +00:00
LinuxServer-CI
82dcd24d8d Bot Updating Templated Files 2024-06-24 17:22:04 +00:00
thelamer
e615ac72b9 fix dev, DB is out of sync now but will catch next build 2024-06-24 13:19:29 -04:00
LinuxServer-CI
370ea1b07a Bot Updating Package Versions 2024-06-24 15:55:46 +00:00
LinuxServer-CI
5029c07086 Bot Updating Templated Files 2024-06-24 15:52:02 +00:00
LinuxServer-CI
1e0ec4e6bd Bot Updating Templated Files 2024-06-24 15:50:38 +00:00
LinuxServer-CI
cd2e670d69 Bot Updating Package Versions 2024-04-16 21:43:48 +00:00
LinuxServer-CI
5abeff2c52 Bot Updating Package Versions 2024-04-09 21:43:59 +00:00
LinuxServer-CI
c22fe34cc1 Bot Updating Package Versions 2024-04-03 22:39:55 +00:00
LinuxServer-CI
705f6730de Bot Updating Package Versions 2024-04-03 18:40:59 +00:00
LinuxServer-CI
9e885b0a00 Bot Updating Package Versions 2024-04-02 21:42:34 +00:00
LinuxServer-CI
e7ee46e478 Bot Updating Package Versions 2024-03-26 21:44:14 +00:00
LinuxServer-CI
f031f49f0e Bot Updating Package Versions 2024-03-19 21:42:09 +00:00
LinuxServer-CI
1e8cf35844 Bot Updating Package Versions 2024-03-19 16:43:16 +00:00
LinuxServer-CI
1a21b350a3 Bot Updating Package Versions 2024-03-14 18:40:10 +00:00
LinuxServer-CI
b7f7714a43 Bot Updating Templated Files 2024-03-12 21:40:14 +00:00
LinuxServer-CI
e513afa4b5 Bot Updating Package Versions 2024-03-12 19:38:54 +00:00
LinuxServer-CI
9df6fe7944 Bot Updating Package Versions 2024-03-05 21:42:15 +00:00
LinuxServer-CI
f682b6fb00 Bot Updating Package Versions 2024-02-27 17:29:04 +00:00
LinuxServer-CI
5dcbb2fba5 Bot Updating Templated Files 2024-02-27 17:24:07 +00:00
LinuxServer-CI
e30a66d14d Bot Updating Templated Files 2024-02-27 17:22:19 +00:00
LinuxServer-CI
2c8799abab Bot Updating Package Versions 2024-02-20 21:46:31 +00:00
LinuxServer-CI
beb78a348d Bot Updating Package Versions 2024-02-13 18:40:27 +00:00
thelamer
6bc959dede update image ingestion reference 2024-02-09 16:25:32 -08:00
LinuxServer-CI
25c6e79946 Bot Updating Package Versions 2024-02-09 14:39:27 +00:00
LinuxServer-CI
acc650759c Bot Updating Package Versions 2024-02-07 19:09:56 +00:00
thelamer
90b9e3c5c3 update develop to be functional 2024-02-07 11:02:48 -08:00
LinuxServer-CI
2e4601bd45 Bot Updating Package Versions 2024-02-07 17:42:02 +00:00
LinuxServer-CI
ee3ea10c5a Bot Updating Package Versions 2024-02-06 18:40:28 +00:00
LinuxServer-CI
f3bf3e1381 Bot Updating Package Versions 2024-02-05 19:40:06 +00:00
LinuxServer-CI
168dc3fcae Bot Updating Package Versions 2024-02-01 23:40:43 +00:00
LinuxServer-CI
c511a69bf8 Bot Updating Package Versions 2024-02-01 02:44:18 +00:00
LinuxServer-CI
27af739a1b Bot Updating Package Versions 2024-01-31 20:40:40 +00:00
LinuxServer-CI
0b63895275 Bot Updating Package Versions 2024-01-31 17:39:28 +00:00
LinuxServer-CI
cb5e17fb77 Bot Updating Package Versions 2024-01-30 21:43:19 +00:00
LinuxServer-CI
3540cc64b2 Bot Updating Package Versions 2024-01-29 05:40:17 +00:00
LinuxServer-CI
20ed720e74 Bot Updating Package Versions 2024-01-26 15:40:49 +00:00
LinuxServer-CI
c4194a3884 Bot Updating Package Versions 2024-01-25 21:42:57 +00:00
LinuxServer-CI
3851d3aebd Bot Updating Package Versions 2024-01-24 20:40:02 +00:00
LinuxServer-CI
dca450b071 Bot Updating Package Versions 2024-01-23 20:42:13 +00:00
LinuxServer-CI
c9dda32e96 Bot Updating Package Versions 2024-01-19 12:54:40 +00:00
LinuxServer-CI
912d7a5710 Bot Updating Package Versions 2024-01-16 21:43:19 +00:00
LinuxServer-CI
082f8c2da0 Bot Updating Package Versions 2024-01-09 21:50:04 +00:00
LinuxServer-CI
0c67272bd6 Bot Updating Templated Files 2024-01-09 21:42:46 +00:00
LinuxServer-CI
9b8c58fcfc Bot Updating Templated Files 2024-01-09 21:41:05 +00:00
LinuxServer-CI
d1f483218d Bot Updating Package Versions 2024-01-08 22:41:10 +00:00
LinuxServer-CI
a65b5b6943 Bot Updating Package Versions 2024-01-04 21:41:25 +00:00
LinuxServer-CI
2a1c5efbcb Bot Updating Package Versions 2024-01-02 20:42:35 +00:00
LinuxServer-CI
254511dbd6 Bot Updating Package Versions 2024-01-02 16:42:28 +00:00
LinuxServer-CI
1f51fa3c09 Bot Updating Package Versions 2023-12-26 21:42:52 +00:00
LinuxServer-CI
db0ccd4e7c Bot Updating Package Versions 2023-12-22 16:42:16 +00:00
LinuxServer-CI
484728d979 Bot Updating Package Versions 2023-12-19 21:44:24 +00:00
LinuxServer-CI
3131409615 Bot Updating Package Versions 2023-12-13 16:44:57 +00:00
LinuxServer-CI
34b5fe4d05 Bot Updating Package Versions 2023-12-12 21:45:00 +00:00
LinuxServer-CI
3bd094ce70 Bot Updating Package Versions 2023-12-04 04:41:18 +00:00
LinuxServer-CI
df218bff43 Bot Updating Package Versions 2023-11-30 16:46:11 +00:00
LinuxServer-CI
36e41a3bab Bot Updating Package Versions 2023-11-28 21:44:11 +00:00
LinuxServer-CI
53743f7905 Bot Updating Package Versions 2023-11-21 21:47:40 +00:00
LinuxServer-CI
2499293c5d Bot Updating Templated Files 2023-11-21 21:41:16 +00:00
LinuxServer-CI
da69081208 Bot Updating Package Versions 2023-11-14 21:45:13 +00:00
LinuxServer-CI
10c47f84dc Bot Updating Package Versions 2023-11-07 21:43:56 +00:00
LinuxServer-CI
c43ce9541b Bot Updating Package Versions 2023-10-31 21:44:00 +00:00
LinuxServer-CI
ec5c1aeddc Bot Updating Package Versions 2023-10-24 21:42:59 +00:00
LinuxServer-CI
f7f03998ed Bot Updating Package Versions 2023-10-17 21:44:36 +00:00
LinuxServer-CI
b354a5f890 Bot Updating Package Versions 2023-10-14 05:40:19 +00:00
LinuxServer-CI
23b3ef6e73 Bot Updating Package Versions 2023-10-10 21:48:21 +00:00
LinuxServer-CI
8520bf2465 Bot Updating Templated Files 2023-10-10 21:43:27 +00:00
LinuxServer-CI
c850e3cc32 Bot Updating Templated Files 2023-10-10 21:41:03 +00:00
LinuxServer-CI
6e9799cfd2 Bot Updating Package Versions 2023-10-06 13:40:19 +00:00
LinuxServer-CI
25ca678db7 Bot Updating Package Versions 2023-10-04 17:41:27 +00:00
LinuxServer-CI
4647fa9d02 Bot Updating Package Versions 2023-10-03 21:44:32 +00:00
LinuxServer-CI
4a35602f13 Bot Updating Package Versions 2023-09-26 21:43:12 +00:00
LinuxServer-CI
8acd73f9cb Bot Updating Package Versions 2023-09-19 18:41:12 +00:00
LinuxServer-CI
a35af113fd Bot Updating Package Versions 2023-09-15 16:41:57 +00:00
LinuxServer-CI
077cad133c Bot Updating Package Versions 2023-09-14 21:39:47 +00:00
LinuxServer-CI
b1c895b1a4 Bot Updating Package Versions 2023-09-12 21:43:09 +00:00
LinuxServer-CI
553bf88fe6 Bot Updating Package Versions 2023-09-08 17:40:02 +00:00
LinuxServer-CI
5edcd6bac9 Bot Updating Package Versions 2023-09-05 21:42:57 +00:00
LinuxServer-CI
df4d448c9c Bot Updating Package Versions 2023-09-05 15:41:14 +00:00
LinuxServer-CI
ca8ec53e2e Bot Updating Package Versions 2023-08-29 21:42:31 +00:00
LinuxServer-CI
785378c623 Bot Updating Package Versions 2023-08-22 21:44:30 +00:00
LinuxServer-CI
10c7477b19 Bot Updating Package Versions 2023-08-19 10:38:39 +00:00
LinuxServer-CI
83ac21c8ae Bot Updating Package Versions 2023-08-17 19:38:39 +00:00
LinuxServer-CI
2a8af5d442 Bot Updating Package Versions 2023-08-16 23:38:31 +00:00
LinuxServer-CI
46c6dc2404 Bot Updating Package Versions 2023-08-15 15:37:58 +00:00
LinuxServer-CI
67b0dfd7f7 Bot Updating Package Versions 2023-08-14 17:39:59 +00:00
LinuxServer-CI
ca9e45c970 Bot Updating Package Versions 2023-08-12 23:39:29 +00:00
LinuxServer-CI
fb4e0345bf Bot Updating Package Versions 2023-08-10 05:39:28 +00:00
LinuxServer-CI
3ec798b128 Bot Updating Package Versions 2023-08-09 21:38:04 +00:00
LinuxServer-CI
49c346cdb2 Bot Updating Package Versions 2023-08-08 21:43:40 +00:00
LinuxServer-CI
262f2424c0 Bot Updating Package Versions 2023-08-07 17:39:37 +00:00
LinuxServer-CI
5fd8a5c4b0 Bot Updating Package Versions 2023-08-02 04:39:41 +00:00
LinuxServer-CI
611cd3bb55 Bot Updating Package Versions 2023-08-01 17:38:27 +00:00
LinuxServer-CI
4ca6bb4497 Bot Updating Package Versions 2023-07-28 16:42:51 +00:00
LinuxServer-CI
20a216220c Bot Updating Package Versions 2023-07-27 14:42:25 +00:00
LinuxServer-CI
84bb44665f Bot Updating Package Versions 2023-07-26 04:38:15 +00:00
LinuxServer-CI
33a6592ce3 Bot Updating Package Versions 2023-07-25 21:43:48 +00:00
LinuxServer-CI
c5d0ee973e Bot Updating Package Versions 2023-07-24 17:39:55 +00:00
LinuxServer-CI
468bcb5122 Bot Updating Package Versions 2023-07-20 01:52:16 +00:00
LinuxServer-CI
20542ccf48 Bot Updating Package Versions 2023-07-18 21:43:54 +00:00
LinuxServer-CI
53109f2b69 Bot Updating Package Versions 2023-07-13 02:20:32 +00:00
LinuxServer-CI
92ea47518d Bot Updating Package Versions 2023-07-12 19:38:31 +00:00
LinuxServer-CI
1dcb34824e Bot Updating Package Versions 2023-07-11 19:38:30 +00:00
LinuxServer-CI
a8c4049a23 Bot Updating Package Versions 2023-07-06 19:39:54 +00:00
LinuxServer-CI
1d8dceb178 Bot Updating Package Versions 2023-07-05 22:41:23 +00:00
LinuxServer-CI
ed926ad452 Bot Updating Package Versions 2023-07-04 21:45:26 +00:00
LinuxServer-CI
f531e06c2e Bot Updating Templated Files 2023-07-04 21:41:05 +00:00
LinuxServer-CI
d25562908e Bot Updating Package Versions 2023-06-30 03:40:03 +00:00
LinuxServer-CI
e8e24fa729 Bot Updating Package Versions 2023-06-28 20:38:31 +00:00
LinuxServer-CI
396469d902 Bot Updating Package Versions 2023-06-27 13:42:44 +00:00
LinuxServer-CI
1c2202f1fb Bot Updating Package Versions 2023-06-23 10:43:46 +00:00
LinuxServer-CI
4196db56fc Bot Updating Package Versions 2023-06-22 19:38:17 +00:00
LinuxServer-CI
2424c63c14 Bot Updating Package Versions 2023-06-20 21:42:48 +00:00
LinuxServer-CI
b4445413e2 Bot Updating Package Versions 2023-06-13 21:41:54 +00:00
LinuxServer-CI
62b6fb51dd Bot Updating Package Versions 2023-06-12 19:40:37 +00:00
LinuxServer-CI
07871deb1c Bot Updating Package Versions 2023-06-06 21:44:09 +00:00
LinuxServer-CI
9ce2952d49 Bot Updating Package Versions 2023-06-05 20:38:40 +00:00
LinuxServer-CI
4a5040f809 Bot Updating Package Versions 2023-05-31 14:43:16 +00:00
LinuxServer-CI
6bc476072e Bot Updating Package Versions 2023-05-30 20:39:31 +00:00
LinuxServer-CI
c2c7f6591d Bot Updating Package Versions 2023-05-23 21:45:31 +00:00
LinuxServer-CI
6a1f8e6de9 Bot Updating Templated Files 2023-05-23 21:40:12 +00:00
LinuxServer-CI
a6b1daa57d Bot Updating Package Versions 2023-05-18 20:37:45 +00:00
LinuxServer-CI
9eb3bddae1 Bot Updating Package Versions 2023-05-16 21:41:59 +00:00
thelamer
bcedd8248f sync up mod layer with master 2023-05-16 14:58:05 -04:00
LinuxServer-CI
6d297d4949 Bot Updating Package Versions 2023-05-16 18:38:09 +00:00
LinuxServer-CI
fe2d85a3fd Bot Updating Package Versions 2023-05-15 18:38:13 +00:00
LinuxServer-CI
3e7828e6cf Bot Updating Package Versions 2023-05-12 13:38:19 +00:00
LinuxServer-CI
78049a078a Bot Updating Package Versions 2023-05-09 21:42:21 +00:00
LinuxServer-CI
61349ae648 Bot Updating Package Versions 2023-05-02 21:41:53 +00:00
LinuxServer-CI
c369ccfe86 Bot Updating Package Versions 2023-04-25 23:46:00 +02:00
LinuxServer-CI
1fde8e17a7 Bot Updating Templated Files 2023-04-25 23:42:07 +02:00
LinuxServer-CI
3bf0387a5f Bot Updating Templated Files 2023-04-25 23:40:28 +02:00
LinuxServer-CI
305dfa9b0b Bot Updating Package Versions 2023-04-18 16:42:33 -05:00
LinuxServer-CI
af6ef6e702 Bot Updating Package Versions 2023-04-12 16:18:53 -05:00
LinuxServer-CI
d107f1352b Bot Updating Package Versions 2023-04-11 23:42:25 +02:00
LinuxServer-CI
f0400f854c Bot Updating Package Versions 2023-04-05 07:46:32 -05:00
LinuxServer-CI
151a8cb05a Bot Updating Package Versions 2023-04-02 07:04:30 -05:00
LinuxServer-CI
86f38a3829 Bot Updating Templated Files 2023-04-02 14:00:21 +02:00
LinuxServer-CI
b7d0d13e5b Bot Updating Package Versions 2023-03-31 11:31:00 -05:00
LinuxServer-CI
8cee0bc20e Bot Updating Templated Files 2023-03-31 11:26:55 -05:00
LinuxServer-CI
3c4932fb3a Bot Updating Templated Files 2023-03-31 11:25:09 -05:00
LinuxServer-CI
6a14e66d0d Bot Updating Templated Files 2023-03-31 11:23:26 -05:00
LinuxServer-CI
28588a7e25 Bot Updating Package Versions 2023-03-29 16:24:11 +02:00
thelamer
4680f126e7 add lsof to dev image 2023-03-29 07:17:45 -07:00
LinuxServer-CI
72bcbd06f1 Bot Updating Package Versions 2023-03-29 12:24:34 +02:00
LinuxServer-CI
b8200da76d Bot Updating Package Versions 2023-03-28 08:31:40 -05:00
LinuxServer-CI
1589c35808 Bot Updating Package Versions 2023-03-26 07:01:52 -05:00
LinuxServer-CI
05c031dd17 Bot Updating Package Versions 2023-03-24 19:27:27 +01:00
LinuxServer-CI
4d5f4ae498 Bot Updating Package Versions 2023-03-23 21:39:55 -05:00
LinuxServer-CI
b15bea0ad9 Bot Updating Package Versions 2023-03-21 17:19:49 -05:00
LinuxServer-CI
922316d5c4 Bot Updating Package Versions 2023-03-15 00:21:32 -05:00
LinuxServer-CI
3384a04f77 Bot Updating Package Versions 2023-03-13 12:21:39 -05:00
LinuxServer-CI
a9947f55da Bot Updating Package Versions 2023-03-12 13:02:29 +01:00
LinuxServer-CI
e2bd297a87 Bot Updating Package Versions 2023-03-10 09:35:08 +01:00
LinuxServer-CI
3b769215db Bot Updating Package Versions 2023-03-05 13:02:48 +01:00
LinuxServer-CI
c4e595d3a6 Bot Updating Package Versions 2023-03-02 15:24:39 +01:00
LinuxServer-CI
7d33418989 Bot Updating Templated Files 2023-03-02 15:20:21 +01:00
LinuxServer-CI
2be26a11fb Bot Updating Package Versions 2023-02-28 06:26:25 +01:00
LinuxServer-CI
be40e569df Bot Updating Package Versions 2023-02-22 08:21:46 -06:00
LinuxServer-CI
cb5cd9bc54 Bot Updating Package Versions 2023-02-19 13:02:16 +01:00
Adam
1e00482b8b
Merge pull request #21 from linuxserver/develop-remove-armhf 2023-02-13 09:09:00 +00:00
TheSpad
81bc32b95e
Remove dummy armhf build - develop 2023-02-11 14:34:00 +00:00
LinuxServer-CI
5de237b0d0 Bot Updating Package Versions 2023-02-11 15:21:56 +01:00
LinuxServer-CI
91d1f7d868 Bot Updating Templated Files 2023-02-11 15:18:44 +01:00
LinuxServer-CI
2ac8c9ad58 Bot Updating Templated Files 2023-02-11 15:17:26 +01:00
LinuxServer-CI
c4f0e29aae Bot Updating Package Versions 2023-02-07 23:21:50 +01:00
LinuxServer-CI
b706c75bba Bot Updating Package Versions 2023-02-04 17:27:52 +01:00
LinuxServer-CI
8b217bec10 Bot Updating Package Versions 2023-02-02 21:23:46 +01:00
LinuxServer-CI
20a5558c1c Bot Updating Package Versions 2023-02-01 13:19:11 -06:00
LinuxServer-CI
93abaa69d0 Bot Updating Package Versions 2023-01-20 01:20:53 -06:00
LinuxServer-CI
528827e82c Bot Updating Package Versions 2023-01-18 20:52:17 -06:00
LinuxServer-CI
8773ba31ca Bot Updating Package Versions 2023-01-10 21:23:09 +01:00
LinuxServer-CI
322404ceb8 Bot Updating Package Versions 2023-01-10 02:45:33 +01:00
LinuxServer-CI
6d193ec70e Bot Updating Package Versions 2022-12-19 17:22:28 -06:00
LinuxServer-CI
413f539d47 Bot Updating Package Versions 2022-12-16 11:19:19 -06:00
LinuxServer-CI
5e0af0fe14 Bot Updating Package Versions 2022-12-14 20:18:52 +01:00
LinuxServer-CI
bb78bc724e Bot Updating Package Versions 2022-12-11 06:01:35 -06:00
LinuxServer-CI
298851db8b Bot Updating Package Versions 2022-12-01 15:05:30 +01:00
LinuxServer-CI
7e1c5c6a9d Bot Updating Templated Files 2022-12-01 15:02:07 +01:00
LinuxServer-CI
3fde5c812a Bot Updating Templated Files 2022-12-01 15:00:52 +01:00
LinuxServer-CI
0a8d47bb5e Bot Updating Templated Files 2022-12-01 14:59:33 +01:00
Ryan Kuba
96deeebaab
Merge pull request #13 from linuxserver/develop-upgrade-support
Develop upgrade support
2022-12-01 08:58:19 -05:00
ryan.kuba
9ebd2e1ef5 revert manual pinning for PR into develop 2022-11-30 15:22:23 -08:00
ryan.kuba
cc152c39c9 Update docker logic and point branch to upgrade feature 2022-11-27 20:52:03 -05:00
LinuxServer-CI
7c9d9bcaba Bot Updating Package Versions 2022-11-24 12:21:32 -06:00
Ryan Kuba
3e9acb1ae0
Merge pull request #12 from linuxserver/develop-rebase
Rebase to Jammy, document and add support for GPUs and Gamepads
2022-11-24 13:15:40 -05:00
ryan.kuba
1133cbc516 Slight tweak to ingestion and install docs for now tested nvidia support 2022-11-24 12:54:25 -05:00
LinuxServer-CI
62a4b95cc4 Bot Updating Package Versions 2022-11-22 10:34:40 -06:00
LinuxServer-CI
9a7cace9ac Bot Updating Package Versions 2022-11-15 14:41:25 +01:00
LinuxServer-CI
5715ae0f65 Bot Updating Package Versions 2022-11-13 13:01:14 +01:00
LinuxServer-CI
efd36861bf Bot Updating Package Versions 2022-11-10 17:39:50 +01:00
LinuxServer-CI
2a4243a6d6 Bot Updating Templated Files 2022-11-10 17:37:19 +01:00
LinuxServer-CI
13a2acb91f Bot Updating Package Versions 2022-11-08 10:39:43 -06:00
thelamer
1a5fcda940 Rebase to Jammy, document and add support for GPUs and Gamepads 2022-11-05 15:39:43 -07:00
LinuxServer-CI
85e0bcb212 Bot Updating Package Versions 2022-11-04 16:23:22 -05:00
LinuxServer-CI
a437f24d21 Bot Updating Package Versions 2022-10-25 21:45:19 +02:00
LinuxServer-CI
95981a48ae Bot Updating Package Versions 2022-10-25 20:02:39 +02:00
LinuxServer-CI
9d746de3a6 Bot Updating Package Versions 2022-10-20 23:21:43 -05:00
LinuxServer-CI
d40847b328 Bot Updating Package Versions 2022-10-09 14:00:57 +02:00
LinuxServer-CI
1946bbb92f Bot Updating Templated Files 2022-10-01 19:27:34 +02:00
Adam
dcd3651ebf
Merge pull request #9 from linuxserver/s6v3-develop 2022-10-01 18:26:05 +01:00
TheSpad
deced70ed6
Migrate to s6v3 2022-09-23 18:22:55 +01:00
LinuxServer-CI
04db9aed9f Bot Updating Package Versions 2022-09-22 11:58:07 -05:00
Adam
ae19bc06f4
Merge pull request #8 from linuxserver/base-pin-develop 2022-09-22 17:48:18 +01:00
TheSpad
7469071033
Pin to last v2 base 2022-09-22 17:23:39 +01:00
LinuxServer-CI
bbd0416112 Bot Updating Templated Files 2022-09-16 17:27:37 +02:00
LinuxServer-CI
0ea51e8255 Bot Updating Package Versions 2022-09-13 18:37:37 +02:00
LinuxServer-CI
d275d03f20 Bot Updating Package Versions 2022-09-11 07:00:44 -05:00
LinuxServer-CI
76eb94fb82 Bot Updating Package Versions 2022-09-09 11:38:42 -05:00
LinuxServer-CI
f7d100fdef Bot Updating Package Versions 2022-09-04 07:00:43 -05:00
LinuxServer-CI
340928388c Bot Updating Package Versions 2022-08-23 18:34:10 +02:00
LinuxServer-CI
1081009607 Bot Updating Package Versions 2022-08-21 14:01:08 +02:00
LinuxServer-CI
c64c9792e5 Bot Updating Package Versions 2022-08-14 07:01:00 -05:00
LinuxServer-CI
1bba57eba0 Bot Updating Package Versions 2022-08-07 05:50:50 +02:00
LinuxServer-CI
b6c2f7e645 Bot Updating Package Versions 2022-08-02 21:21:08 +02:00
LinuxServer-CI
5abf50c4f0 Bot Updating Package Versions 2022-07-31 07:00:40 -05:00
LinuxServer-CI
dee8e47d0e Bot Updating Package Versions 2022-07-27 18:24:51 -05:00
LinuxServer-CI
404cd56274 Bot Updating Package Versions 2022-07-26 13:22:27 +02:00
LinuxServer-CI
7738942a83 Bot Updating Package Versions 2022-07-22 14:48:33 +02:00
LinuxServer-CI
141cee8f80 Bot Updating Package Versions 2022-07-20 23:21:39 +02:00
LinuxServer-CI
736d85c718 Bot Updating Package Versions 2022-07-17 14:00:50 +02:00
thelamer
355e9f2050 add version arg to dockerfiles 2022-07-08 13:37:25 -04:00
thelamer
a3ecfd8044 need wizard kill 2022-07-08 11:24:09 -04:00
LinuxServer-CI
e06c72f169 Bot Updating Package Versions 2022-07-08 17:03:10 +02:00
LinuxServer-CI
4f9a2a5d36 Bot Updating Templated Files 2022-07-08 17:00:03 +02:00
Ryan Kuba
13ea576437
Merge pull request #2 from linuxserver/develop-initial
Go Live develop
2022-07-08 10:58:45 -04:00
thelamer
e815ad79d5 swap from using github devel to custom command 2022-07-08 10:42:21 -04:00
thelamer
c3034be8d0 update path for develop ingestion 2022-07-07 20:10:32 -04:00
thelamer
4801d37e72 update description 2022-07-05 09:28:48 -04:00
thelamer
ba86be3cca add initial logic for develop branch 2022-07-02 21:46:55 -04:00
thelamer
3c52c48a59 adding develop branch 2022-07-02 19:33:29 -04:00
28 changed files with 1204 additions and 2066 deletions

View file

@ -24,10 +24,10 @@
## 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-kasm/edit/master/readme-vars.yml).
Instead edit the [readme-vars.yml](https://github.com/linuxserver/docker-kasm/edit/develop/readme-vars.yml).
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-kasm)
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io)
### Fixing typos or clarify the text in the readme
@ -115,7 +115,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Update the changelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-kasm/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-kasm/tree/develop/root), add an entry to the changelog
```yml
changelogs:

View file

@ -9,5 +9,5 @@ contact_links:
about: Post on our community forum.
- name: Documentation
url: https://docs.linuxserver.io/images/docker-kasm
url: https://docs.linuxserver.io
about: Documentation - information about all of our containers.

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

@ -4,73 +4,10 @@ description: Create a report to help us improve
title: "[BUG] <title>"
labels: [Bug]
body:
- type: checkboxes
- type: markdown
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: Tell us what happens instead of the expected behavior.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Tell us what should happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 20.04
- **How docker service was installed**: distro's packagemanager
value: |
- OS:
- How docker service was installed:
render: markdown
validations:
required: false
- type: dropdown
attributes:
label: CPU architecture
options:
- x86-64
- arm64
validations:
required: true
- type: textarea
attributes:
label: Docker creation
description: |
Command used to create docker container
Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
render: bash
validations:
required: true
- type: textarea
attributes:
description: |
Provide a full docker log, output of "docker logs kasm"
label: Container logs
placeholder: |
Output of `docker logs kasm`
render: bash
validations:
required: true
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.

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

@ -4,28 +4,10 @@ description: Suggest an idea for this project
title: "[FEAT] <title>"
labels: [enhancement]
body:
- type: checkboxes
- type: markdown
attributes:
label: Is this a new feature request?
description: Please search to see if a feature request already exists.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Wanted change
description: Tell us what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Reason for change
description: Justify your request, why do you want it, what is the benefit.
validations:
required: true
- type: textarea
attributes:
label: Proposed code change
description: Do you have a potential code change in mind?
validations:
required: false
value: |
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.

View file

@ -1,3 +1,7 @@
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
<!--- Provide a general summary of your changes in the Title above -->
[linuxserverurl]: https://linuxserver.io
@ -21,7 +25,7 @@
------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-kasm/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-kasm/blob/develop/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------

View file

@ -1,19 +0,0 @@
name: Issue & PR Tracker
on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
permissions:
contents: read
jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit

View file

@ -1,16 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '16 9 * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit

View file

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

View file

@ -1,48 +0,0 @@
name: External Trigger Scheduler
on:
schedule:
- cron: '33 * * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
external-trigger-scheduler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: '0'
- name: External Trigger Scheduler
run: |
printf "# External trigger scheduler for docker-kasm\n\n" >> $GITHUB_STEP_SUMMARY
printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
do
if [[ "${br}" == "HEAD" ]]; then
printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
continue
fi
printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-kasm/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-kasm/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY
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-kasm/actions/workflows/external_trigger.yml/dispatches
else
echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi
else
echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi
done

View file

@ -2,18 +2,12 @@ name: Greetings
on: [pull_request_target, issues]
permissions:
contents: read
jobs:
greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-kasm/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-kasm/blob/develop/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View file

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

0
.github/workflows/permissions.yml vendored Normal file → Executable file
View file

View file

@ -1,53 +1,63 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
# set version label
ARG BUILD_DATE
ARG KASM_VERSION
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thespad"
LABEL maintainer="thelamer"
# Env
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility"
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" \
VERSION="develop"
# Container setup
RUN \
echo "**** install packages ****" && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu noble stable" > \
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable" > \
/etc/apt/sources.list.d/docker.list && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:28.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && \
curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y --no-install-recommends \
btrfs-progs \
build-essential \
containerd.io \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
e2fsprogs \
fuse-overlayfs \
g++ \
gcc \
iproute2 \
iptables \
jq \
lsof \
make \
nodejs \
nvidia-container-toolkit \
nvidia-docker2 \
openssl \
pigz \
python3 \
sudo \
uidmap \
xfsprogs && \
echo "**** compose install ****" && \
mkdir -p /usr/local/lib/docker/cli-plugins && \
curl -L \
https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m) -o \
/usr/local/lib/docker/cli-plugins/docker-compose && \
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose && \
echo "**** dind setup ****" && \
useradd -U dockremap && \
usermod -G dockremap dockremap && \
@ -61,8 +71,7 @@ RUN \
echo "**** setup wizard ****" && \
mkdir -p /wizard && \
if [ -z ${KASM_VERSION+x} ]; then \
KASM_VERSION=$(curl -sX GET 'https://api.github.com/repos/kasmtech/kasm-install-wizard/releases/latest' \
| jq -r '.name'); \
KASM_VERSION=$(curl -sX GET https://kasm-ci.s3.amazonaws.com/dev-version.txt); \
fi && \
echo "${KASM_VERSION}" > /version.txt && \
curl -o \
@ -83,7 +92,7 @@ RUN \
ALVERSION=$(cat /kasm_release/conf/database/seed_data/default_properties.yaml |awk '/alembic_version/ {print $2}') && \
curl -o \
/tmp/images.tar.gz -L \
"https://kasm-ci.s3.amazonaws.com/${KASM_VERSION}-images-combined.tar.gz" && \
"https://kasm-ci.s3.amazonaws.com/1.16.0-images-combined.tar.gz" && \
tar xf \
/tmp/images.tar.gz -C \
/ && \
@ -102,9 +111,6 @@ RUN \
cp \
/kasm_release/conf/database/seed_data/default_images_a* \
/wizard/ && \
useradd -u 70 kasm_db && \
useradd kasm && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apt-get remove -y g++ gcc make && \
apt-get -y autoremove && \

View file

@ -1,53 +1,63 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
# set version label
ARG BUILD_DATE
ARG KASM_VERSION
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thespad"
LABEL maintainer="thelamer"
# Env
ENV DOCKER_TLS_CERTDIR=""
ENV TINI_SUBREAPER=true
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility"
ENV NVIDIA_DRIVER_CAPABILITIES="compute,graphics,video,utility" \
VERSION="develop"
# Container setup
RUN \
echo "**** install packages ****" && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu noble stable" > \
echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu jammy stable" > \
/etc/apt/sources.list.d/docker.list && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
printf "Package: docker-ce docker-ce-cli docker-ce-rootless-extras\nPin: version 5:28.* \nPin-Priority: 1001" > /etc/apt/preferences.d/docker && \
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && \
curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list && \
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y --no-install-recommends \
btrfs-progs \
build-essential \
containerd.io \
docker-ce \
docker-ce-cli \
docker-compose-plugin \
e2fsprogs \
fuse-overlayfs \
g++ \
gcc \
iproute2 \
iptables \
jq \
lsof \
make \
nodejs \
nvidia-container-toolkit \
nvidia-docker2 \
openssl \
pigz \
python3 \
sudo \
uidmap \
xfsprogs && \
echo "**** compose install ****" && \
mkdir -p /usr/local/lib/docker/cli-plugins && \
curl -L \
https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m) -o \
/usr/local/lib/docker/cli-plugins/docker-compose && \
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose && \
echo "**** dind setup ****" && \
useradd -U dockremap && \
usermod -G dockremap dockremap && \
@ -61,8 +71,7 @@ RUN \
echo "**** setup wizard ****" && \
mkdir -p /wizard && \
if [ -z ${KASM_VERSION+x} ]; then \
KASM_VERSION=$(curl -sX GET 'https://api.github.com/repos/kasmtech/kasm-install-wizard/releases/latest' \
| jq -r '.name'); \
KASM_VERSION=$(curl -sX GET https://kasm-ci.s3.amazonaws.com/dev-version.txt); \
fi && \
echo "${KASM_VERSION}" > /version.txt && \
curl -o \
@ -83,7 +92,7 @@ RUN \
ALVERSION=$(cat /kasm_release/conf/database/seed_data/default_properties.yaml |awk '/alembic_version/ {print $2}') && \
curl -o \
/tmp/images.tar.gz -L \
"https://kasm-ci.s3.amazonaws.com/${KASM_VERSION}-images-combined.tar.gz" && \
"https://kasm-ci.s3.amazonaws.com/1.16.0-images-combined.tar.gz" && \
tar xf \
/tmp/images.tar.gz -C \
/ && \
@ -102,9 +111,6 @@ RUN \
cp \
/kasm_release/conf/database/seed_data/default_images_a* \
/wizard/ && \
useradd -u 70 kasm_db && \
useradd kasm && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apt-get remove -y g++ gcc make && \
apt-get -y autoremove && \

316
Jenkinsfile vendored
View file

@ -19,8 +19,6 @@ pipeline {
DOCKERHUB_TOKEN=credentials('docker-hub-ci-pat')
QUAYIO_API_TOKEN=credentials('quayio-repo-api-token')
GIT_SIGNING_KEY=credentials('484fbca6-9a4f-455e-b9e3-97ac98785f5f')
EXT_USER = 'kasmtech'
EXT_REPO = 'kasm-install-wizard'
BUILD_VERSION_ARG = 'KASM_VERSION'
LS_USER = 'linuxserver'
LS_REPO = 'docker-kasm'
@ -35,8 +33,8 @@ pipeline {
CI_PORT='3000'
CI_SSL='true'
CI_DELAY='120'
CI_DOCKERENV=''
CI_AUTH=''
CI_DOCKERENV='TEST=true'
CI_AUTH='user:password'
CI_WEBPATH=''
}
stages {
@ -78,7 +76,7 @@ pipeline {
script{
env.EXIT_STATUS = ''
env.LS_RELEASE = sh(
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:latest 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:develop 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
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' ''',
@ -95,12 +93,8 @@ pipeline {
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 .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/external_trigger_scheduler.yml ./.github/workflows/greetings.yml ./.github/workflows/package_trigger_scheduler.yml ./.github/workflows/call_issue_pr_tracker.yml ./.github/workflows/call_issues_cron.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml'
if ( env.SYFT_IMAGE_TAG == null ) {
env.SYFT_IMAGE_TAG = 'latest'
}
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE .editorconfig ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE/config.yml ./.github/ISSUE_TEMPLATE/issue.bug.yml ./.github/ISSUE_TEMPLATE/issue.feature.yml ./.github/PULL_REQUEST_TEMPLATE.md ./root/etc/s6-overlay/s6-rc.d/init-deprecate/run ./root/etc/s6-overlay/s6-rc.d/init-deprecate/up ./root/etc/s6-overlay/s6-rc.d/init-deprecate/type ./root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d/init-config-end ./root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d/init-deprecate ./root/etc/s6-overlay/s6-rc.d/user/contents.d/init-deprecate'
}
echo "Using syft image tag ${SYFT_IMAGE_TAG}"
sh '''#! /bin/bash
echo "The default github branch detected as ${GH_DEFAULT_BRANCH}" '''
script{
@ -111,7 +105,7 @@ pipeline {
script{
env.LS_TAG_NUMBER = sh(
script: '''#! /bin/bash
tagsha=$(git rev-list -n 1 ${LS_RELEASE} 2>/dev/null)
tagsha=$(git rev-list -n 1 develop-${LS_RELEASE} 2>/dev/null)
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
echo ${LS_RELEASE_NUMBER}
elif [ -z "${GIT_COMMIT}" ]; then
@ -144,23 +138,16 @@ pipeline {
/* ########################
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 -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''',
returnStdout: true).trim()
}
}
}
// If this is a stable or devel github release generate the link for the build message
stage("Set ENV github_link"){
steps{
script{
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
}
}
// If this is a custom command to determine version use that command
stage("Set tag custom bash"){
steps{
script{
env.EXT_RELEASE = sh(
script: ''' curl -sX GET https://kasm-ci.s3.amazonaws.com/dev-version.txt ''',
returnStdout: true).trim()
env.RELEASE_LINK = 'custom_command'
}
}
}
// Sanitize the release tag and strip illegal docker or github characters
stage("Sanitize tag"){
@ -196,10 +183,10 @@ pipeline {
}
}
}
// If this is a master build use live docker endpoints
// If this is a develop build use live docker endpoints
stage("Set ENV live build"){
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
}
steps {
@ -209,22 +196,21 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'latest'
}
}
}
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "master"}
not {branch "develop"}
environment name: 'CHANGE_ID', value: ''
}
steps {
@ -234,16 +220,15 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@ -259,17 +244,16 @@ pipeline {
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.CI_TAGS = 'amd64-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.CI_TAGS = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
}
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.META_TAG = 'develop-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'develop-version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
env.BUILDCACHE = 'docker.io/lsiodev/buildcache,registry.gitlab.com/linuxserver.io/docker-jenkins-builder/lsiodev-buildcache,ghcr.io/linuxserver/lsiodev-buildcache,quay.io/linuxserver.io/lsiodev-buildcache'
env.CITEST_IMAGETAG = 'develop'
}
}
}
@ -292,7 +276,7 @@ pipeline {
-v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
ghcr.io/linuxserver/baseimage-alpine:3.20 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache python3 && \
python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
@ -304,7 +288,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@ -316,24 +300,24 @@ pipeline {
TEMPDIR=$(mktemp -d)
docker pull ghcr.io/linuxserver/jenkins-builder:latest
# Cloned repo paths for templating:
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch master of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch master of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch develop of ${LS_USER}/${LS_REPO} for running the jenkins builder on
# ${TEMPDIR}/repo/${LS_REPO}: Cloned branch develop of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
# ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
# ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
# ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
git clone --branch master --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
git clone --branch develop --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true -e PUID=$(id -u) -e PGID=$(id -g) ghcr.io/linuxserver/jenkins-builder:latest
echo "Starting Stage 1 - Jenkinsfile update"
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f develop
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
git add Jenkinsfile
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@ -343,6 +327,7 @@ pipeline {
fi
echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml .github/workflows/package_trigger.yml"
OLD_TEMPLATES="${OLD_TEMPLATES} $(echo .github/workflows/{external_trigger,external_trigger_scheduler,package_trigger_scheduler,call_issue_pr_tracker,call_issues_cron}.yml)"
for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
@ -352,13 +337,13 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f develop
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@ -366,35 +351,6 @@ pipeline {
else
echo "No templates to delete"
fi
echo "Starting Stage 2.5 - Update init diagram"
if ! grep -q 'init_diagram:' readme-vars.yml; then
echo "Adding the key 'init_diagram' to readme-vars.yml"
sed -i '\\|^#.*changelog.*$|d' readme-vars.yml
sed -i 's|^changelogs:|# init diagram\\ninit_diagram:\\n\\n# changelog\\nchangelogs:|' readme-vars.yml
fi
mkdir -p ${TEMPDIR}/d2
docker run --rm -v ${TEMPDIR}/d2:/output -e PUID=$(id -u) -e PGID=$(id -g) -e RAW="true" ghcr.io/linuxserver/d2-builder:latest ${CONTAINER_NAME}:latest
ls -al ${TEMPDIR}/d2
yq -ei ".init_diagram |= load_str(\\"${TEMPDIR}/d2/${CONTAINER_NAME}-latest.d2\\")" readme-vars.yml
if [[ $(md5sum readme-vars.yml | cut -c1-8) != $(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/readme-vars.yml | cut -c1-8) ]]; then
echo "'init_diagram' has been updated. Updating repo and exiting build, new one will trigger based on commit."
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
cp ${WORKSPACE}/readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/readme-vars.yml
git add readme-vars.yml
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
exit 0
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Init diagram is unchanged"
fi
echo "Starting Stage 3 - Update templates"
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
@ -403,10 +359,14 @@ pipeline {
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
git checkout -f develop
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
mkdir -p \
${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/init-deprecate/dependencies.d \
${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/init-services/dependencies.d \
${TEMPDIR}/repo/${LS_REPO}/root/etc/s6-overlay/s6-rc.d/user/contents.d
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO}/
@ -416,8 +376,8 @@ pipeline {
fi
git add readme-vars.yml ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "Updating templates and exiting build, new one will trigger based on commit"
rm -Rf ${TEMPDIR}
@ -436,6 +396,19 @@ pipeline {
git add docs/images/docker-${CONTAINER_NAME}.md
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation'
git mv docs/images/docker-${CONTAINER_NAME}.md docs/deprecated_images/docker-${CONTAINER_NAME}.md || :
if ! command -v yq || ! yq --help | grep -q 'mikefarah'; then
YQ_DL_VERSION=$(curl -fsX GET "https://api.github.com/repos/mikefarah/yq/releases/latest" | jq -r '. | .tag_name')
echo "No yq found, retrieving from upstream release version ${YQ_DL_VERSION}"
curl -fo /usr/local/bin/yq -L "https://github.com/mikefarah/yq/releases/download/${YQ_DL_VERSION}/yq_linux_amd64"
chmod +x /usr/local/bin/yq
fi
if ! yq -e '.plugins.[].redirects.redirect_maps.[] | select(. == "deprecated_images/docker-" + env(CONTAINER_NAME) + ".md")' mkdocs.yml >/dev/null 2>&1; then
echo "Updating mkdocs.yml with deprecation info"
yq -i '(.plugins.[] | select(.redirects)).redirects.redirect_maps |= . + {"images/docker-" + env(CONTAINER_NAME) + ".md" : "deprecated_images/docker-" + env(CONTAINER_NAME) + ".md"}' mkdocs.yml
git add mkdocs.yml
fi
git commit -m 'Bot Moving Deprecated Documentation' || :
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
@ -484,7 +457,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@ -497,10 +470,10 @@ pipeline {
}
}
}
// If this is a master build check the S6 service file perms
// If this is a develop build check the S6 service file perms
stage("Check S6 Service file Permissions"){
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@ -567,7 +540,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Kasm\" \
--label \"org.opencontainers.image.description=[Kasm](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing) Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. The rendering of the graphical-based containers is powered by the open-source project [KasmVNC](https://www.kasmweb.com/kasmvnc.html?utm_campaign=LinuxServer&utm_source=kasmvnc). \" \
--label \"org.opencontainers.image.description=kasm image by linuxserver.io\" \
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
@ -593,16 +566,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@ -636,7 +606,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Kasm\" \
--label \"org.opencontainers.image.description=[Kasm](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing) Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. The rendering of the graphical-based containers is powered by the open-source project [KasmVNC](https://www.kasmweb.com/kasmvnc.html?utm_campaign=LinuxServer&utm_source=kasmvnc). \" \
--label \"org.opencontainers.image.description=kasm image by linuxserver.io\" \
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
@ -662,16 +632,13 @@ pipeline {
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@ -698,7 +665,7 @@ pipeline {
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
--label \"org.opencontainers.image.title=Kasm\" \
--label \"org.opencontainers.image.description=[Kasm](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing) Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. The rendering of the graphical-based containers is powered by the open-source project [KasmVNC](https://www.kasmweb.com/kasmvnc.html?utm_campaign=LinuxServer&utm_source=kasmvnc). \" \
--label \"org.opencontainers.image.description=kasm image by linuxserver.io\" \
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
--provenance=true --sbom=true --builder=container --load \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
@ -725,14 +692,12 @@ pipeline {
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
if [[ "${PACKAGE_CHECK}" != "true" ]]; then
declare -A pids
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
for i in "${CACHE[@]}"; do
docker push ${i}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} &
pids[$!]="$i"
done
for p in "${!pids[@]}"; do
wait "$p" || { [[ "${pids[$p]}" != *"quay.io"* ]] && exit 1; }
for p in $(jobs -p); do
wait "$p" || { echo "job $p failed" >&2; exit 1; }
done
fi
'''
@ -753,7 +718,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@ -770,20 +735,20 @@ pipeline {
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ${TEMPDIR}:/tmp \
ghcr.io/anchore/syft:${SYFT_IMAGE_TAG} \
ghcr.io/anchore/syft:latest \
${LOCAL_CONTAINER} -o table=/tmp/package_versions.txt
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f develop
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
git add package_versions.txt
git commit -m 'Bot Updating Package Versions'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git master
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
echo "Package tag updated, stopping build process"
else
@ -801,7 +766,7 @@ pipeline {
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
@ -815,7 +780,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
@ -857,7 +822,7 @@ pipeline {
CI_DOCKERENV="LSIO_FIRST_PARTY=true"
fi
fi
docker pull ghcr.io/linuxserver/ci:${CITEST_IMAGETAG}
docker pull ghcr.io/linuxserver/ci:latest
if [ "${MULTIARCH}" == "true" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} --platform=arm64
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
@ -869,7 +834,7 @@ pipeline {
-e DOCKER_LOGS_TIMEOUT=\"${CI_DELAY}\" \
-e TAGS=\"${CI_TAGS}\" \
-e META_TAG=\"${META_TAG}\" \
-e RELEASE_TAG=\"latest\" \
-e RELEASE_TAG=\"develop\" \
-e PORT=\"${CI_PORT}\" \
-e SSL=\"${CI_SSL}\" \
-e BASE=\"${DIST_IMAGE}\" \
@ -880,10 +845,7 @@ pipeline {
-e WEB_AUTH=\"${CI_AUTH}\" \
-e WEB_PATH=\"${CI_WEBPATH}\" \
-e NODE_NAME=\"${NODE_NAME}\" \
-e SYFT_IMAGE_TAG=\"${CI_SYFT_IMAGE_TAG:-${SYFT_IMAGE_TAG}}\" \
-e COMMIT_SHA=\"${COMMIT_SHA}\" \
-e BUILD_NUMBER=\"${BUILD_NUMBER}\" \
-t ghcr.io/linuxserver/ci:${CITEST_IMAGETAG} \
-t ghcr.io/linuxserver/ci:latest \
python3 test_build.py'''
}
}
@ -909,12 +871,11 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:latest -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${META_TAG} -t ${PUSHIMAGE}:develop -t ${PUSHIMAGE}:${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${PUSHIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${PUSHIMAGE}:${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
fi
docker buildx imagetools create -t ${PUSHIMAGE}:develop ghcr.io/linuxserver/jenkins-builder:empty || true
done
'''
}
@ -938,27 +899,20 @@ pipeline {
CACHEIMAGE=${i}
fi
done
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-latest -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-latest -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${META_TAG} -t ${MANIFESTIMAGE}:amd64-develop -t ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${META_TAG} -t ${MANIFESTIMAGE}:arm64v8-develop -t ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:amd64-${SEMVER} ${CACHEIMAGE}:amd64-${COMMIT_SHA}-${BUILD_NUMBER}
docker buildx imagetools create --prefer-index=false -t ${MANIFESTIMAGE}:arm64v8-${SEMVER} ${CACHEIMAGE}:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
fi
done
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
docker buildx imagetools create -t ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:develop -t ${MANIFESTIMAGE}:amd64-develop -t ${MANIFESTIMAGE}:arm64v8-develop ghcr.io/linuxserver/jenkins-builder:empty || true
docker buildx imagetools create -t ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker buildx imagetools create -t ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
if [ -n "${SEMVER}" ]; then
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} || \
{ if [[ "${MANIFESTIMAGE}" != "${QUAYIMAGE}" ]]; then exit 1; fi; }
docker buildx imagetools create -t ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
fi
done
'''
@ -968,7 +922,7 @@ pipeline {
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "master"
branch "develop"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@ -976,54 +930,36 @@ pipeline {
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Pushing New tag for current commit ${META_TAG}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to develop",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
echo "Auto-generating release notes"
if [ "$(git tag --points-at HEAD)" != "" ]; then
echo "Existing tag points to current commit, suggesting no new LS changes"
AUTO_RELEASE_NOTES="No changes"
else
AUTO_RELEASE_NOTES=$(curl -fsL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github+json" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/generate-notes \
-d '{"tag_name":"'${META_TAG}'",\
"target_commitish": "master"}' \
| jq -r '.body' | sed 's|## What.s Changed||')
fi
echo "Pushing New tag for current commit ${META_TAG}"
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${META_TAG}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer-CI","email": "ci@linuxserver.io","date": "'${GITHUB_DATE}'"}}'
echo "Pushing New release for Tag"
curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. |.body' > releasebody.json
jq -n \
--arg tag_name "$META_TAG" \
--arg target_commitish "master" \
--arg ci_url "${CI_URL:-N/A}" \
--arg ls_notes "$AUTO_RELEASE_NOTES" \
--arg remote_notes "$(cat releasebody.json)" \
'{
"tag_name": $tag_name,
"target_commitish": $target_commitish,
"name": $tag_name,
"body": ("**CI Report:**\\n\\n" + $ci_url + "\\n\\n**LinuxServer Changes:**\\n\\n" + $ls_notes + "\\n\\n**Remote Changes:**\\n\\n" + $remote_notes),
"draft": false,
"prerelease": false }' > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done
'''
echo "Updating to ${EXT_RELEASE_CLEAN}" > releasebody.json
echo '{"tag_name":"'${META_TAG}'",\
"target_commitish": "develop",\
"name": "'${META_TAG}'",\
"body": "**CI Report:**\\n\\n'${CI_URL:-N/A}'\\n\\n**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": true}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}
}
// Add protection to the release branch
stage('Github-Release-Branch-Protection') {
when {
branch "master"
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Setting up protection for release branch master"
echo "Setting up protection for release branch develop"
sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/develop/protection \
-d $(jq -c . << EOF
{
"required_status_checks": null,
@ -1126,6 +1062,26 @@ EOF
}
}
stage('Deprecate/Disable Future Builds') {
when {
branch "develop"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
sh '''#! /bin/bash
TEMPDIR=$(mktemp -d)
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 develop
git rm Jenkinsfile
git commit -m 'Disabling future builds'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git develop
rm -Rf ${TEMPDIR}'''
}
}
}
/* ######################
Send status to Discord

330
README.md
View file

@ -1,329 +1,7 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-kasm/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
<!-- Please read https://github.com/linuxserver/docker-kasm/blob/develop/.github/CONTRIBUTING.md -->
# DEPRECATION NOTICE
This image is deprecated. We will not offer support for this image and it will not be updated.
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![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.")
[![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
Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [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
# [linuxserver/kasm](https://github.com/linuxserver/docker-kasm)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fkasm?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-kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-kasm)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-kasm/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-kasm/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-kasm/container_registry)
[![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/kasm)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/kasm)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/kasm.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/kasm)
[![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-kasm%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-kasm/job/master/)
[![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%2Fkasm%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/kasm/latest/index.html)
[Kasm](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing) Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.
The rendering of the graphical-based containers is powered by the open-source project [KasmVNC](https://www.kasmweb.com/kasmvnc.html?utm_campaign=LinuxServer&utm_source=kasmvnc).
[![kasm](https://kasm-ci.s3.amazonaws.com/kasm_wide.png)](https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing)
## Supported Architectures
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `lscr.io/linuxserver/kasm: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 | Available | Tag |
| :----: | :----: | ---- |
| x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | ✅ | arm64v8-\<version tag\> |
## Application Setup
This container uses [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) and requires being run in `privileged` mode. This container also requires an initial setup that runs on port 3000.
**Unlike other containers the web interface port (default 443) needs to be set for the env variable `KASM_PORT` and both the inside and outside port IE for 4443 `KASM_PORT=4443` `-p 4443:4443`**
**Unraid users due to the DinD storage layer `/opt/` should be mounted directly to a disk IE `/mnt/disk1/appdata/path` or optimally with a cache disk at `/mnt/cache/appdata/path`**
Access the installation wizard at https://`your ip`:3000 and follow the instructions there. Once setup is complete access https://`your ip`:443 and login with the credentials you entered during setup. The default users are:
* admin@kasm.local
* user@kasm.local
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
### Updating KASM
In order to update kasm, first make sure you are using the latest docker image, and then perform the in app update in the admin panel. Docker image update and recreation of container alone won't update kasm.
### GPU Support
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Runtime](https://github.com/NVIDIA/nvidia-container-runtime) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://www.kasmweb.com/docs/latest/how_to/gpu.html) so you can optionally opt to simply use that instead of he manual override during installation.
### Gamepad support
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://www.kasmweb.com/docs/develop/guide/gamepad_passthrough.html) for instructions on enabling gamepad support.
### Persistant profiles
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://www.kasmweb.com/docs/latest/how_to/persistent_profiles.html).
### Reverse proxy
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://www.kasmweb.com/docs/latest/how_to/reverse_proxy.html#update-zones) to launch Workspaces sessions.
### Strict reverse proxies
This image uses a self-signed certificate by default. This naturally means the scheme is `https`.
If you are using a reverse proxy which validates certificates, you need to [disable this check for the container](https://docs.linuxserver.io/faq#strict-proxy).
## Usage
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flaged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml
---
services:
kasm:
image: lscr.io/linuxserver/kasm:latest
container_name: kasm
privileged: true
security_opt:
- apparmor:rootlesskit #optional
environment:
- KASM_PORT=443
- DOCKER_HUB_USERNAME=USER #optional
- DOCKER_HUB_PASSWORD=PASS #optional
- DOCKER_MTU=1500 #optional
volumes:
- /path/to/kasm/data:/opt
- /path/to/kasm/profiles:/profiles #optional
- /dev/input:/dev/input #optional
- /run/udev/data:/run/udev/data #optional
ports:
- 3000:3000
- 443:443
restart: unless-stopped
```
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
```bash
docker run -d \
--name=kasm \
--privileged \
--security-opt apparmor=rootlesskit `#optional` \
-e KASM_PORT=443 \
-e DOCKER_HUB_USERNAME=USER `#optional` \
-e DOCKER_HUB_PASSWORD=PASS `#optional` \
-e DOCKER_MTU=1500 `#optional` \
-p 3000:3000 \
-p 443:443 \
-v /path/to/kasm/data:/opt \
-v /path/to/kasm/profiles:/profiles `#optional` \
-v /dev/input:/dev/input `#optional` \
-v /run/udev/data:/run/udev/data `#optional` \
--restart unless-stopped \
lscr.io/linuxserver/kasm:latest
```
## Parameters
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 3000:3000` | Kasm Installation wizard. (https) |
| `-p 443:443` | Kasm Workspaces interface. (https) |
| `-e KASM_PORT=443` | Specify the port you bind to the outside for Kasm Workspaces. |
| `-e DOCKER_HUB_USERNAME=USER` | Optionally specify a DockerHub Username to pull private images. |
| `-e DOCKER_HUB_PASSWORD=PASS` | Optionally specify a DockerHub password to pull private images. |
| `-e DOCKER_MTU=1500` | Optionally specify the mtu options passed to dockerd. |
| `-v /opt` | Docker and installation storage. |
| `-v /profiles` | Optionally specify a path for persistent profile storage. |
| `-v /dev/input` | Optional for gamepad support. |
| `-v /run/udev/data` | Optional for gamepad support. |
| `--security-opt apparmor=rootlesskit` | Some hosts require this on top of privileged for namespacing to work properly inside the DinD layer. |
## Environment variables from files (Docker secrets)
You can set any environment variable from a file by using a special prepend `FILE__`.
As an example:
```bash
-e FILE__MYVAR=/run/secrets/mysecretvariable
```
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications
For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.
Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.
## Docker Mods
[![Docker Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=kasm&query=%24.mods%5B%27kasm%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=kasm "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:
```bash
docker exec -it kasm /bin/bash
```
* To monitor the logs of the container in realtime:
```bash
docker logs -f kasm
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' kasm
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kasm: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 (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 images:
* All images:
```bash
docker-compose pull
```
* Single image:
```bash
docker-compose pull kasm
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d kasm
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run
* Update the image:
```bash
docker pull lscr.io/linuxserver/kasm:latest
```
* Stop the running container:
```bash
docker stop kasm
```
* Delete the container:
```bash
docker rm kasm
```
* 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:
```bash
docker image prune
```
### Image Update Notifications - Diun (Docker Image Update Notifier)
>[!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-kasm.git
cd docker-kasm
docker build \
--no-cache \
--pull \
-t lscr.io/linuxserver/kasm:latest .
```
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
* **13.11.25:** - Pin docker to v28 to avoid API deprecation issues.
* **22.10.25:** - Update for 1.18.0 release.
* **08.06.25:** - Deprecate develop branch.
* **03.06.25:** - Rebase to Ubuntu Noble. Update for 1.17.0 release.
* **09.11.24:** - Update base image for 1.16.1 release.
* **24.09.24:** - Add base users in docker build logic to survive container upgrades.
* **17.09.24:** - Update base image for 1.16.0 release and fix Nvidia support.
* **16.02.24:** - Update base image for 1.15.0 release.
* **22.08.23:** - Update base image for 1.14.0 release.
* **07.04.23:** - Add mod layer for ingesting LSIO images for 1.13.0 release.
* **28.03.23:** - Pin compose to 2.5.0 to be in sync with upstream requirements.
* **05.11.22:** - Rebase to Jammy, add support for GPUs, add support for Gamepads.
* **23.09.22:** - Migrate to s6v3.
* **02.07.22:** - Initial Release.
Up to date documentation is available [here](https://github.com/linuxserver/docker-kasm/blob/master/README.md).

View file

@ -2,13 +2,13 @@
# jenkins variables
project_name: docker-kasm
external_type: github_stable
release_type: stable
release_tag: latest
ls_branch: master
external_type: na
custom_version_command: "curl -sX GET https://kasm-ci.s3.amazonaws.com/dev-version.txt"
release_type: prerelease
release_tag: develop
ls_branch: develop
build_armhf: false
repo_vars:
- EXT_USER = 'kasmtech'
- EXT_REPO = 'kasm-install-wizard'
- BUILD_VERSION_ARG = 'KASM_VERSION'
- LS_USER = 'linuxserver'
- LS_REPO = 'docker-kasm'
@ -23,6 +23,6 @@ repo_vars:
- CI_PORT='3000'
- CI_SSL='true'
- CI_DELAY='120'
- CI_DOCKERENV=''
- CI_AUTH=''
- CI_DOCKERENV='TEST=true'
- CI_AUTH='user:password'
- CI_WEBPATH=''

File diff suppressed because it is too large Load diff

View file

@ -1,142 +1,9 @@
---
# project information
project_name: kasm
project_url: "https://www.kasmweb.com/?utm_campaign=LinuxServer&utm_source=listing"
project_logo: "https://kasm-ci.s3.amazonaws.com/kasm_wide.png"
project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.
The rendering of the graphical-based containers is powered by the open-source project [KasmVNC](https://www.kasmweb.com/kasmvnc.html?utm_campaign=LinuxServer&utm_source=kasmvnc).
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Remote Desktop,Business"
# supported architectures
available_architectures:
- {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
# development version
development_versions: false
# container parameters
common_param_env_vars_enabled: false
param_container_name: "{{ project_name }}"
param_usage_include_net: false
param_usage_include_env: true
param_env_vars:
- {env_var: "KASM_PORT", env_value: "443", desc: "Specify the port you bind to the outside for Kasm Workspaces."}
param_usage_include_vols: true
param_volumes:
- {vol_path: "/opt", vol_host_path: "/path/to/{{ project_name }}/data", desc: "Docker and installation storage."}
param_usage_include_ports: true
param_ports:
- {external_port: "3000", internal_port: "3000", port_desc: "Kasm Installation wizard. (https)"}
- {external_port: "443", internal_port: "443", port_desc: "Kasm Workspaces interface. (https)"}
# optional container parameters
opt_param_usage_include_env: true
opt_param_env_vars:
- {env_var: "DOCKER_HUB_USERNAME", env_value: "USER", desc: "Optionally specify a DockerHub Username to pull private images."}
- {env_var: "DOCKER_HUB_PASSWORD", env_value: "PASS", desc: "Optionally specify a DockerHub password to pull private images."}
- {env_var: "DOCKER_MTU", env_value: "1500", desc: "Optionally specify the mtu options passed to dockerd."}
opt_param_usage_include_vols: true
opt_param_volumes:
- {vol_path: "/profiles", vol_host_path: "/path/to/{{ project_name }}/profiles", desc: "Optionally specify a path for persistent profile storage."}
- {vol_path: "/dev/input", vol_host_path: "/dev/input", desc: "Optional for gamepad support."}
- {vol_path: "/run/udev/data", vol_host_path: "/run/udev/data", desc: "Optional for gamepad support."}
opt_security_opt_param: true
opt_security_opt_param_vars:
- {run_var: "apparmor=rootlesskit", compose_var: "apparmor:rootlesskit", desc: "Some hosts require this on top of privileged for namespacing to work properly inside the DinD layer."}
unraid_template: false
privileged: true
# application setup block
app_setup_block_enabled: true
app_setup_block: |
This container uses [Docker in Docker](https://www.docker.com/blog/docker-can-now-run-within-docker/) and requires being run in `privileged` mode. This container also requires an initial setup that runs on port 3000.
**Unlike other containers the web interface port (default 443) needs to be set for the env variable `KASM_PORT` and both the inside and outside port IE for 4443 `KASM_PORT=4443` `-p 4443:4443`**
**Unraid users due to the DinD storage layer `/opt/` should be mounted directly to a disk IE `/mnt/disk1/appdata/path` or optimally with a cache disk at `/mnt/cache/appdata/path`**
Access the installation wizard at https://`your ip`:3000 and follow the instructions there. Once setup is complete access https://`your ip`:443 and login with the credentials you entered during setup. The default users are:
* admin@kasm.local
* user@kasm.local
Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.
### Updating KASM
In order to update kasm, first make sure you are using the latest docker image, and then perform the in app update in the admin panel. Docker image update and recreation of container alone won't update kasm.
### GPU Support
During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass `-e NVIDIA_VISIBLE_DEVICES=all` or `--gpus all` and have the [NVIDIA Container Runtime](https://github.com/NVIDIA/nvidia-container-runtime) installed on the host. Also if using NVIDIA, Kasm Workspaces has [native NVIDIA support](https://www.kasmweb.com/docs/latest/how_to/gpu.html) so you can optionally opt to simply use that instead of he manual override during installation.
### Gamepad support
In order to properly create virtual Gamepads you will need to mount from your host `/dev/input` and `/run/udev/data`. Please see [HERE](https://www.kasmweb.com/docs/develop/guide/gamepad_passthrough.html) for instructions on enabling gamepad support.
### Persistant profiles
In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to `/profiles`. From there when configuring a workspace you can set the `Persistant Profile Path` to IE `/profiles/ubuntu-focal/{username}/`, more infomation can be found [HERE](https://www.kasmweb.com/docs/latest/how_to/persistent_profiles.html).
### Reverse proxy
A sample for [SWAG](https://github.com/linuxserver/docker-swag) can be found [here](https://raw.githubusercontent.com/linuxserver/reverse-proxy-confs/master/kasm.subdomain.conf.sample). Post installation you will need to modify the "Proxy Port" setting under the default zone to 0 as outlined [here](https://www.kasmweb.com/docs/latest/how_to/reverse_proxy.html#update-zones) to launch Workspaces sessions.
# init diagram
init_diagram: |
"kasm: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-config-kasm -> init-config-end
init-crontab-config -> init-config-end
init-config -> init-config-kasm
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-custom-files -> init-services
init-services -> svc-cron
svc-cron -> legacy-services
init-config-kasm -> svc-docker
init-services -> svc-docker
svc-docker -> legacy-services
init-config-kasm -> svc-kasm-wizard
init-services -> svc-kasm-wizard
svc-kasm-wizard -> legacy-services
}
Base Images: {
"baseimage-ubuntu:noble"
}
"kasm:latest" <- Base Images
# changelog
changelogs:
- {date: "13.11.25:", desc: "Pin docker to v28 to avoid API deprecation issues."}
- {date: "22.10.25:", desc: "Update for 1.18.0 release."}
- {date: "08.06.25:", desc: "Deprecate develop branch."}
- {date: "03.06.25:", desc: "Rebase to Ubuntu Noble. Update for 1.17.0 release."}
- {date: "09.11.24:", desc: "Update base image for 1.16.1 release."}
- {date: "24.09.24:", desc: "Add base users in docker build logic to survive container upgrades."}
- {date: "17.09.24:", desc: "Update base image for 1.16.0 release and fix Nvidia support."}
- {date: "16.02.24:", desc: "Update base image for 1.15.0 release."}
- {date: "22.08.23:", desc: "Update base image for 1.14.0 release."}
- {date: "07.04.23:", desc: "Add mod layer for ingesting LSIO images for 1.13.0 release."}
- {date: "28.03.23:", desc: "Pin compose to 2.5.0 to be in sync with upstream requirements."}
- {date: "05.11.22:", desc: "Rebase to Jammy, add support for GPUs, add support for Gamepads."}
- {date: "23.09.22:", desc: "Migrate to s6v3."}
- {date: "02.07.22:", desc: "Initial Release."}
project_deprecation_status: true
full_custom_readme: |
{% raw -%}
Up to date documentation is available [here](https://github.com/linuxserver/docker-kasm/blob/master/README.md).
{%- endraw %}

View file

@ -1,20 +1,17 @@
#!/usr/bin/with-contenv bash
# Create directories
if [[ ! -d "/opt/docker" ]]; then
if [ ! -d "/opt/docker" ]; then
mkdir -p /opt/docker
fi
# Workaround for running in a rootless docker environment
sed -i '/set -e/d' /etc/init.d/docker
# Login to Dockerhub
if [[ -n "${DOCKER_HUB_USERNAME}" ]]; then
docker login --username "${DOCKER_HUB_USERNAME}" --password "${DOCKER_HUB_PASSWORD}"
if [ -n "${DOCKER_HUB_USERNAME}" ]; then
docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
fi
# Generate self cert for wizard
if [[ ! -f "/opt/kasm/certs/kasm_wizard.crt" ]]; then
if [ ! -f "/opt/kasm/certs/kasm_wizard.crt" ]; then
mkdir -p /opt/kasm/certs
openssl req -x509 -nodes -days 1825 -newkey rsa:2048 \
-keyout /opt/kasm/certs/kasm_wizard.key \
@ -23,9 +20,9 @@ if [[ ! -f "/opt/kasm/certs/kasm_wizard.crt" ]]; then
fi
# Create plugin directory
if [[ ! -L "/var/lib/docker-plugins" ]]; then
mkdir -p /opt/docker-plugins
ln -s /opt/docker-plugins /var/lib/docker-plugins
mkdir -p /var/lib/docker-plugins/rclone/config
mkdir -p /var/lib/docker-plugins/rclone/cache
if [ ! -L "/var/lib/docker-plugins" ]; then
mkdir -p /opt/docker-plugins
ln -s /opt/docker-plugins /var/lib/docker-plugins
mkdir -p /var/lib/docker-plugins/rclone/config
mkdir -p /var/lib/docker-plugins/rclone/cache
fi

View file

@ -0,0 +1,14 @@
#!/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. ║
║ ║
╠════════════════════════════════════════════════════╣
╚════════════════════════════════════════════════════╝
'

View file

@ -0,0 +1 @@
oneshot

View file

@ -2,16 +2,16 @@
# Wait for docker to be up
while true; do
if [[ -S "/var/run/docker.sock" ]]; then
if [ -S "/var/run/docker.sock" ]; then
break
fi
sleep 1
done
# Don't do anything if wizard is disabled
if [[ -f "/opt/NO_WIZARD" ]]; then
if [ -f "/opt/NO_WIZARD" ]; then
sleep infinity
fi
cd /wizard || exit 1
cd /wizard
/usr/bin/node index.js

View file

@ -116,7 +116,6 @@ if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
; then
# generate certs and use TLS if requested/possible (default in 19.03+)
set -- dockerd \
--mtu="${DOCKER_MTU:-1500}" \
--host="$dockerSocket" \
--host=tcp://0.0.0.0:2376 \
--tlsverify \
@ -128,7 +127,6 @@ if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
else
# TLS disabled (-e DOCKER_TLS_CERTDIR='') or missing certs
set -- dockerd \
--mtu="${DOCKER_MTU:-1500}" \
--host="$dockerSocket" \
"$@"
DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS="${DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS:-} -p 0.0.0.0:2375:2375/tcp"