Skip to content

Commit 07317af

Browse files
authored
Merge pull request #391 from linuxserver/monthly
Monthly
2 parents 5eda8da + 22e0279 commit 07317af

3 files changed

Lines changed: 62 additions & 22 deletions

File tree

Jenkinsfile

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ pipeline {
7676
script{
7777
env.EXIT_STATUS = ''
7878
env.CI_TEST_ATTEMPTED = ''
79+
env.PUSH_ATTEMPTED = ''
7980
env.LS_RELEASE = sh(
8081
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' || : ''',
8182
returnStdout: true).trim()
@@ -879,6 +880,9 @@ pipeline {
879880
environment name: 'EXIT_STATUS', value: ''
880881
}
881882
steps {
883+
script{
884+
env.PUSH_ATTEMPTED = 'true'
885+
}
882886
retry_backoff(5,5) {
883887
sh '''#! /bin/bash
884888
set -e
@@ -908,11 +912,18 @@ pipeline {
908912
environment name: 'EXIT_STATUS', value: ''
909913
}
910914
steps {
915+
script{
916+
env.PUSH_ATTEMPTED = 'true'
917+
}
911918
retry_backoff(5,5) {
912919
sh '''#! /bin/bash
913920
set -e
914921
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
915-
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
922+
if [[ "${MANIFESTIMAGE%%/*}" =~ \\. ]]; then
923+
MANIFESTIMAGEPLUS="${MANIFESTIMAGE}"
924+
else
925+
MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
926+
fi
916927
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
917928
for i in "${CACHE[@]}"; do
918929
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
@@ -1080,7 +1091,7 @@ EOF
10801091
}
10811092
script {
10821093
if (env.GITHUBIMAGE =~ /lspipepr/){
1083-
if (env.CI_TEST_ATTEMPTED == "true"){
1094+
if (env.CI_TEST_ATTEMPTED == "true" || env.PUSH_ATTEMPTED == "true"){
10841095
sh '''#! /bin/bash
10851096
# Function to retrieve JSON data from URL
10861097
get_json() {
@@ -1141,14 +1152,21 @@ EOF
11411152
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
11421153
-H "Accept: application/vnd.github.v3+json" \
11431154
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1144-
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
1155+
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR for commit ${COMMIT_SHA:0:7} : \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
11451156
else
11461157
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
11471158
-H "Accept: application/vnd.github.v3+json" \
11481159
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1149-
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
1160+
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR for commit ${COMMIT_SHA:0:7} : \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
11501161
fi
11511162
'''
1163+
} else {
1164+
sh '''#! /bin/bash
1165+
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
1166+
-H "Accept: application/vnd.github.v3+json" \
1167+
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1168+
-d "{\\"body\\": \\"I am a bot, the build for PR commit ${COMMIT_SHA:0:7} failed and as a result no CI test was attempted and no images were pushed.\\"}"
1169+
'''
11521170
}
11531171
}
11541172
}

ansible/roles/documentation/templates/README_SNIPPETS/SELKIES.j2

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{%- set selkies_variables -%}
22
| Variable | Description |
33
| :----: | --- |
4-
| PIXELFLUX_WAYLAND | **Experimental** If set to true the container will initialize in Wayland mode running [Smithay](https://github.com/Smithay/smithay) and Labwc while enabling zero copy encoding with a GPU |
4+
| PIXELFLUX_WAYLAND | If set to true the container will initialize in Wayland mode running [Smithay](https://github.com/Smithay/smithay) and Labwc while enabling zero copy encoding with a GPU |
55
| SELKIES_DESKTOP | If set to true and in Wayland mode, a simple panel will be initialized with labwc |
66
| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default `{% if external_http_port is defined %}{{ external_http_port }}{% else %}3000{% endif %}` |
77
| CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default `{% if external_https_port is defined %}{{ external_https_port }}{% else %}3001{% endif %}` |
@@ -48,14 +48,14 @@
4848

4949
When using 3d acceleration via Nvidia DRM or DRI3 in X11 mode, it is important to clamp the virtual display to a reasonable max resolution to avoid memory exhaustion or poor performance.
5050

51-
* `-e MAX_RESOLUTION=3840x2160`
51+
* `-e MAX_RES=3840x2160`
5252

5353
This will set the total virtual framebuffer to 4K. By default, the virtual monitor is 16K. If you have performance issues in an accelerated X11 session, try clamping the resolution to 1080p and work up from there:
5454

5555
```bash
5656
-e SELKIES_MANUAL_WIDTH=1920
5757
-e SELKIES_MANUAL_HEIGHT=1080
58-
-e MAX_RESOLUTION=1920x1080
58+
-e MAX_RES=1920x1080
5959
```
6060
{% endset -%}
6161
{%- set selkies_sec_vars -%}
@@ -173,20 +173,28 @@ The web interface includes a terminal with passwordless `sudo` access. Any user
173173

174174
While not generally recommended, certain legacy environments specifically those with older hardware or outdated Linux distributions may require the deactivation of the standard seccomp profile to get containerized desktop software to run. This can be achieved by utilizing the `--security-opt seccomp=unconfined` parameter. It is critical to use this option only when absolutely necessary as it disables a key security layer of Docker, elevating the potential for container escape vulnerabilities.
175175

176-
### Hardware Acceleration & The Move to Wayland
176+
### FullColor 4:4:4 Encoding
177177

178-
We are currently transitioning our desktop containers from X11 to Wayland. While X11 is still the default, we strongly encourage users to test the new Wayland mode.
178+
If you notice blurry text, particularly light text on a black background, you can send true 8-bit color to the browser by enabling the **FullColor 4:4:4** encoding in the sidebar, or by using the jpeg encoding mode.
179179

180-
**Important:** GPU acceleration support for X11 is being deprecated. Future development for hardware acceleration will focus entirely on the Wayland stack.
180+
**Note on Hardware Acceleration:** Currently, only Nvidia GPUs support encoding this color profile in **Zero Copy** mode. If FullColor 4:4:4 is enabled on Intel or AMD GPUs, the system will fall back to CPU encoding. This forces the CPU to read the pixels back from the GPU, which will cause a significant decrease in performance.
181181

182-
To enable Wayland mode, set the following environment variable:
182+
### Hardware Acceleration & Wayland
183183

184-
* `-e PIXELFLUX_WAYLAND=true`
184+
We have transitioned our desktop containers from X11 to a modern Wayland stack, which is now the default.
185185

186-
**Why use Wayland?**
186+
**Hardware Fallback Note:** On `x86_64` architecture, the Wayland stack requires a processor with AVX2 support (Intel Haswell generation or newer). If your processor lacks AVX2 (such as older CPUs or certain low-end Celerons), the container will automatically fall back to X11.
187+
188+
**Important:** GPU acceleration support for X11 is deprecated. Future development for hardware acceleration is focused entirely on the Wayland stack.
189+
190+
If you experience compatibility issues and need to manually disable Wayland (forcing a fallback to X11), you can do so by setting the following environment variable:
191+
192+
* `-e PIXELFLUX_WAYLAND=false`
193+
194+
**Why Wayland?**
187195

188196
* **Zero Copy Encoding:** When configured correctly with a GPU, the frame is rendered and encoded on the video card without ever being copied to the system RAM. This drastically lowers CPU usage and latency.
189-
* **Modern Stack:** Single-application containers utilize **Labwc** (replacing Openbox) and full desktop containers use **KDE Plasma Wayland**, providing a more modern and secure compositing environment while retaining the same user experience.
197+
* **Modern Stack:** Single-application containers utilize **Labwc** (replacing Openbox) and full desktop containers use **KDE Plasma Wayland**, providing a more modern, performant, and secure compositing environment while retaining the same user experience.
190198

191199
#### GPU Configuration
192200

@@ -218,12 +226,8 @@ For Intel and AMD GPUs.
218226

219227
##### Nvidia (Proprietary Drivers)
220228

221-
**Note: Nvidia support is currently considered experimental, driver changes can break it at any time.**
222-
223229
**Note: Nvidia support is not available for Alpine-based images.**
224230

225-
**Note: Nvidia frames have issues with hardware decoders in Chromium browsers you need to navigate to `chrome://flags/#disable-accelerated-video-decode` and toggle it to `Disabled` for smooth playback**
226-
227231
**Prerequisites:**
228232

229233
1. **Driver:** Proprietary drivers **580 or higher** are required. **Crucially, you should install the driver using the `.run` file downloaded directly from the Nvidia website.**

ansible/roles/repository/templates/Jenkinsfile.j2

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ pipeline {
6262
script{
6363
env.EXIT_STATUS = ''
6464
env.CI_TEST_ATTEMPTED = ''
65+
env.PUSH_ATTEMPTED = ''
6566
env.LS_RELEASE = sh(
6667
script: '''docker run --rm quay.io/skopeo/stable:v1 inspect docker://ghcr.io/${LS_USER}/${CONTAINER_NAME}:{{ release_tag }} 2>/dev/null | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
6768
returnStdout: true).trim()
@@ -1248,6 +1249,9 @@ pipeline {
12481249
environment name: 'EXIT_STATUS', value: ''
12491250
}
12501251
steps {
1252+
script{
1253+
env.PUSH_ATTEMPTED = 'true'
1254+
}
12511255
retry_backoff(5,5) {
12521256
sh '''#! /bin/bash
12531257
set -e
@@ -1280,11 +1284,18 @@ pipeline {
12801284
environment name: 'EXIT_STATUS', value: ''
12811285
}
12821286
steps {
1287+
script{
1288+
env.PUSH_ATTEMPTED = 'true'
1289+
}
12831290
retry_backoff(5,5) {
12841291
sh '''#! /bin/bash
12851292
set -e
12861293
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
1287-
[[ ${MANIFESTIMAGE%%/*} =~ \\. ]] && MANIFESTIMAGEPLUS="${MANIFESTIMAGE}" || MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
1294+
if [[ "${MANIFESTIMAGE%%/*}" =~ \\. ]]; then
1295+
MANIFESTIMAGEPLUS="${MANIFESTIMAGE}"
1296+
else
1297+
MANIFESTIMAGEPLUS="docker.io/${MANIFESTIMAGE}"
1298+
fi
12881299
IFS=',' read -ra CACHE <<< "$BUILDCACHE"
12891300
for i in "${CACHE[@]}"; do
12901301
if [[ "${MANIFESTIMAGEPLUS}" == "$(cut -d "/" -f1 <<< ${i})"* ]]; then
@@ -1512,7 +1523,7 @@ EOF
15121523
}
15131524
script {
15141525
if (env.GITHUBIMAGE =~ /lspipepr/){
1515-
if (env.CI_TEST_ATTEMPTED == "true"){
1526+
if (env.CI_TEST_ATTEMPTED == "true" || env.PUSH_ATTEMPTED == "true"){
15161527
sh '''#! /bin/bash
15171528
# Function to retrieve JSON data from URL
15181529
get_json() {
@@ -1573,14 +1584,21 @@ EOF
15731584
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
15741585
-H "Accept: application/vnd.github.v3+json" \
15751586
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1576-
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR: \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
1587+
-d "{\\"body\\": \\"I am a bot, here are the test results for this PR for commit ${COMMIT_SHA:0:7} : \\n${CI_URL}\\n${SHELLCHECK_URL}\\n${table}\\"}"
15771588
else
15781589
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
15791590
-H "Accept: application/vnd.github.v3+json" \
15801591
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1581-
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR: \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
1592+
-d "{\\"body\\": \\"I am a bot, here is the pushed image/manifest for this PR for commit ${COMMIT_SHA:0:7} : \\n\\n\\`${GITHUBIMAGE}:${META_TAG}\\`\\"}"
15821593
fi
15831594
'''
1595+
} else {
1596+
sh '''#! /bin/bash
1597+
curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
1598+
-H "Accept: application/vnd.github.v3+json" \
1599+
"https://api.github.com/repos/$LS_USER/$LS_REPO/issues/$PULL_REQUEST/comments" \
1600+
-d "{\\"body\\": \\"I am a bot, the build for PR commit ${COMMIT_SHA:0:7} failed and as a result no CI test was attempted and no images were pushed.\\"}"
1601+
'''
15841602
}
15851603
}
15861604
}

0 commit comments

Comments
 (0)