mirror of
https://github.com/linuxserver/docker-baseimage-rdesktop.git
synced 2026-02-20 08:39:58 +08:00
Compare commits
166 Commits
master
...
bionic-e80
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
875fa13608 | ||
|
|
fc7ab77892 | ||
|
|
260aa546a3 | ||
|
|
623812e0bd | ||
|
|
16a7ce92e8 | ||
|
|
65041a3dab | ||
|
|
dbbf8ab658 | ||
|
|
4c696ee331 | ||
|
|
c4cc292239 | ||
|
|
38bb4b244d | ||
|
|
b7f4ea3397 | ||
|
|
065cab0349 | ||
|
|
1cb20b18a5 | ||
|
|
08900b0399 | ||
|
|
21971085ba | ||
|
|
dda9660b7f | ||
|
|
652c2ee236 | ||
|
|
32759427c8 | ||
|
|
d9de952a64 | ||
|
|
879ab11cbc | ||
|
|
826cc34757 | ||
|
|
5571ffce02 | ||
|
|
735fd8b865 | ||
|
|
95bd91900b | ||
|
|
38f306681a | ||
|
|
3ab5a75f63 | ||
|
|
3f2fa6dc82 | ||
|
|
c968cb4628 | ||
|
|
ba1c237854 | ||
|
|
0572aef242 | ||
|
|
6516868be9 | ||
|
|
f43c8721f4 | ||
|
|
0df37896d8 | ||
|
|
77d387e29b | ||
|
|
732bed9326 | ||
|
|
35d7391929 | ||
|
|
25e68371f4 | ||
|
|
66a87796ae | ||
|
|
eb1a7eb1f9 | ||
|
|
55ff952992 | ||
|
|
3050c4ea4b | ||
|
|
28a339970e | ||
|
|
4fe66985aa | ||
|
|
2d3080f895 | ||
|
|
ee146dff16 | ||
|
|
eb72974aa5 | ||
|
|
c248dbc5a0 | ||
|
|
69f29b0fa6 | ||
|
|
2aec2acf38 | ||
|
|
d8e6f25145 | ||
|
|
e4af01cd8c | ||
|
|
a99502e804 | ||
|
|
e10e850144 | ||
|
|
e169747ce3 | ||
|
|
a14073503d | ||
|
|
ac20d31d2e | ||
|
|
e9fd3159b2 | ||
|
|
3d9b0d80ca | ||
|
|
92191e4764 | ||
|
|
78d585f6e5 | ||
|
|
0e838f80ea | ||
|
|
08d2917672 | ||
|
|
6a9f1e0a06 | ||
|
|
6b551858b9 | ||
|
|
5f8371a670 | ||
|
|
73b325d65a | ||
|
|
cc15348eaa | ||
|
|
c4ebe30f79 | ||
|
|
013aeb1de7 | ||
|
|
4891cca64c | ||
|
|
f354c0e467 | ||
|
|
85776f2f13 | ||
|
|
5bc503d78b | ||
|
|
d88c45c064 | ||
|
|
85c70372d0 | ||
|
|
41680a9304 | ||
|
|
170f830543 | ||
|
|
894f098f72 | ||
|
|
46db7501bd | ||
|
|
c54a419739 | ||
|
|
65b16dfb78 | ||
|
|
3039c2ebde | ||
|
|
10dc9af98c | ||
|
|
fceac77940 | ||
|
|
c549807caa | ||
|
|
41517b5ee3 | ||
|
|
b838773def | ||
|
|
e462d180ec | ||
|
|
468f513758 | ||
|
|
e17baede47 | ||
|
|
ee98e7bebd | ||
|
|
b7dec8f4f5 | ||
|
|
4fb21082f2 | ||
|
|
256160f80e | ||
|
|
447f62e551 | ||
|
|
2eb91c33d5 | ||
|
|
ac4da0a7f5 | ||
|
|
5c139aef7a | ||
|
|
cdb327912c | ||
|
|
43e484cfc9 | ||
|
|
3e7bea0ba5 | ||
|
|
527c203d40 | ||
|
|
e6e21835c9 | ||
|
|
c98490308e | ||
|
|
9813d42a6c | ||
|
|
de63b6d649 | ||
|
|
a55c63ac10 | ||
|
|
c1aa17182b | ||
|
|
06afae021f | ||
|
|
9ff9d61c7c | ||
|
|
cd69e3f65c | ||
|
|
9f897e45b9 | ||
|
|
9aafba1545 | ||
|
|
7e093aeb55 | ||
|
|
a8a8f5f7cc | ||
|
|
7e1f8532e8 | ||
|
|
b6787c8694 | ||
|
|
47046ea136 | ||
|
|
5452663f7b | ||
|
|
2ca0a7bca2 | ||
|
|
e9deb7df8e | ||
|
|
5224c39203 | ||
|
|
1918e6fb95 | ||
|
|
6eff0ee821 | ||
|
|
696eb4e7d0 | ||
|
|
a973ccd8c2 | ||
|
|
1d28e93bd4 | ||
|
|
96bb212f01 | ||
|
|
697422f562 | ||
|
|
ac378f43ba | ||
|
|
9a0b4007c2 | ||
|
|
56e507ac00 | ||
|
|
792c2576a7 | ||
|
|
67a7e6c552 | ||
|
|
fbdde873f7 | ||
|
|
bfd24e534b | ||
|
|
295fddec13 | ||
|
|
03fe7dac32 | ||
|
|
ee5d76e253 | ||
|
|
f606c97135 | ||
|
|
83de2cee53 | ||
|
|
83017ec293 | ||
|
|
474653802b | ||
|
|
55a93380a6 | ||
|
|
a771d10578 | ||
|
|
b1c8a9bcd5 | ||
|
|
d080e4babf | ||
|
|
f9960e8657 | ||
|
|
3723304ab1 | ||
|
|
3b1a4fb757 | ||
|
|
6d09b87b4b | ||
|
|
d8bcdbede2 | ||
|
|
ae44672b2d | ||
|
|
e1e16a844d | ||
|
|
908c85cef9 | ||
|
|
70bc4411b5 | ||
|
|
37b6d51306 | ||
|
|
6421898638 | ||
|
|
14ccd60477 | ||
|
|
e7c8e745a5 | ||
|
|
e5d8063236 | ||
|
|
41e8cefb1f | ||
|
|
e60c318640 | ||
|
|
3e6b87a0a7 | ||
|
|
84e4b38901 | ||
|
|
a448e5463e |
20
.editorconfig
Executable file
20
.editorconfig
Executable file
@ -0,0 +1,20 @@
|
||||
# This file is globally distributed to all container image projects from
|
||||
# https://github.com/linuxserver/docker-jenkins-builder/blob/master/.editorconfig
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
# trim_trailing_whitespace may cause unintended issues and should not be globally set true
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[{Dockerfile*,**.yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
123
.github/CONTRIBUTING.md
vendored
Executable file
123
.github/CONTRIBUTING.md
vendored
Executable file
@ -0,0 +1,123 @@
|
||||
# Contributing to baseimage-rdesktop
|
||||
|
||||
## Gotchas
|
||||
|
||||
* While contributing make sure to make all your changes before creating a Pull Request, as our pipeline builds each commit after the PR is open.
|
||||
* Read, and fill the Pull Request template
|
||||
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
|
||||
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
|
||||
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn)
|
||||
|
||||
## Common files
|
||||
|
||||
| File | Use case |
|
||||
| :----: | --- |
|
||||
| `Dockerfile` | Dockerfile used to build amd64 images |
|
||||
| `Dockerfile.aarch64` | Dockerfile used to build 64bit ARM architectures |
|
||||
| `Dockerfile.armhf` | Dockerfile used to build 32bit ARM architectures |
|
||||
| `Jenkinsfile` | This file is a product of our builder and should not be edited directly. This is used to build the image |
|
||||
| `jenkins-vars.yml` | This file is used to generate the `Jenkinsfile` mentioned above, it only affects the build-process |
|
||||
| `package_versions.txt` | This file is generated as a part of the build-process and should not be edited directly. It lists all the installed packages and their versions |
|
||||
| `README.md` | This file is a product of our builder and should not be edited directly. This displays the readme for the repository and image registries |
|
||||
| `readme-vars.yml` | This file is used to generate the `README.md` |
|
||||
|
||||
## 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-baseimage-rdesktop/edit/bionic/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)
|
||||
|
||||
### Fixing typos or clarify the text in the readme
|
||||
|
||||
There are variables for multiple parts of the readme, the most common ones are:
|
||||
|
||||
| Variable | Description |
|
||||
| :----: | --- |
|
||||
| `project_blurb` | This is the short excerpt shown above the project logo. |
|
||||
| `app_setup_block` | This is the text that shows up under "Application Setup" if enabled |
|
||||
|
||||
### Parameters
|
||||
|
||||
The compose and run examples are also generated from these variables.
|
||||
|
||||
We have a [reference file](https://github.com/linuxserver/docker-jenkins-builder/blob/master/vars/_container-vars-blank) in our Jenkins Builder.
|
||||
|
||||
These are prefixed with `param_` for required parameters, or `opt_param` for optional parameters, except for `cap_add`.
|
||||
Remember to enable param, if currently disabled. This differs between parameters, and can be seen in the reference file.
|
||||
|
||||
Devices, environment variables, ports and volumes expects its variables in a certain way.
|
||||
|
||||
### Devices
|
||||
|
||||
```yml
|
||||
param_devices:
|
||||
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "For hardware transcoding" }
|
||||
opt_param_devices:
|
||||
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "For hardware transcoding" }
|
||||
```
|
||||
|
||||
### Environment variables
|
||||
|
||||
```yml
|
||||
param_env_vars:
|
||||
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
|
||||
opt_param_env_vars:
|
||||
- { env_var: "VERSION", env_value: "latest", desc: "Supported values are LATEST, PLEXPASS or a specific version number." }
|
||||
```
|
||||
|
||||
### Ports
|
||||
|
||||
```yml
|
||||
param_ports:
|
||||
- { external_port: "80", internal_port: "80", port_desc: "Application WebUI" }
|
||||
opt_param_ports:
|
||||
- { external_port: "80", internal_port: "80", port_desc: "Application WebUI" }
|
||||
```
|
||||
|
||||
### Volumes
|
||||
|
||||
```yml
|
||||
param_volumes:
|
||||
- { vol_path: "/config", vol_host_path: "</path/to/appdata/config>", desc: "Configuration files." }
|
||||
opt_param_volumes:
|
||||
- { vol_path: "/config", vol_host_path: "</path/to/appdata/config>", desc: "Configuration files." }
|
||||
```
|
||||
|
||||
### Testing template changes
|
||||
|
||||
After you make any changes to the templates, you can use our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) to have the files updated from the modified templates. Please use the command found under `Running Locally` [on this page](https://github.com/linuxserver/docker-jenkins-builder/blob/master/README.md) to generate them prior to submitting a PR.
|
||||
|
||||
## Dockerfiles
|
||||
|
||||
We use multiple Dockerfiles in our repos, this is because sometimes some CPU architectures needs different packages to work.
|
||||
If you are proposing additional packages to be added, ensure that you added the packages to all the Dockerfiles in alphabetical order.
|
||||
|
||||
### Testing your changes
|
||||
|
||||
```bash
|
||||
git clone https://github.com/linuxserver/docker-baseimage-rdesktop.git
|
||||
cd docker-baseimage-rdesktop
|
||||
docker build \
|
||||
--no-cache \
|
||||
--pull \
|
||||
-t linuxserver/baseimage-rdesktop:latest .
|
||||
```
|
||||
|
||||
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
|
||||
|
||||
```bash
|
||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
```
|
||||
|
||||
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-baseimage-rdesktop/tree/bionic/root), add an entry to the changelog
|
||||
|
||||
```yml
|
||||
changelogs:
|
||||
- { date: "DD.MM.YY:", desc: "Added some love to templates" }
|
||||
```
|
||||
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@ -1 +1,2 @@
|
||||
github: linuxserver
|
||||
open_collective: linuxserver
|
||||
|
||||
34
.github/ISSUE_TEMPLATE.md
vendored
34
.github/ISSUE_TEMPLATE.md
vendored
@ -1,34 +0,0 @@
|
||||
[linuxserverurl]: https://linuxserver.io
|
||||
[][linuxserverurl]
|
||||
|
||||
If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support.
|
||||
|
||||
<!--- Provide a general summary of the issue in the Title above -->
|
||||
|
||||
------------------------------
|
||||
|
||||
## Expected Behavior
|
||||
<!--- Tell us what should happen -->
|
||||
|
||||
## Current Behavior
|
||||
<!--- Tell us what happens instead of the expected behavior -->
|
||||
|
||||
## Steps to Reproduce
|
||||
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4.
|
||||
|
||||
## Environment
|
||||
**OS:**
|
||||
**CPU architecture:** x86_64/arm32/arm64
|
||||
**How docker service was installed:**
|
||||
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||
|
||||
## Command used to create docker container (run/create/compose/screenshot)
|
||||
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
|
||||
|
||||
## Docker logs
|
||||
<!--- Provide a full docker log, output of "docker logs baseimage-rdesktop" -->
|
||||
13
.github/ISSUE_TEMPLATE/config.yml
vendored
Executable file
13
.github/ISSUE_TEMPLATE/config.yml
vendored
Executable file
@ -0,0 +1,13 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discord chat support
|
||||
url: https://discord.gg/YWrKVTn
|
||||
about: Realtime support / chat with the community and the team.
|
||||
|
||||
- name: Discourse discussion forum
|
||||
url: https://discourse.linuxserver.io
|
||||
about: Post on our community forum.
|
||||
|
||||
- name: Documentation
|
||||
url: https://docs.linuxserver.io
|
||||
about: Documentation - information about all of our containers.
|
||||
68
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Executable file
68
.github/ISSUE_TEMPLATE/issue.bug.yml
vendored
Executable file
@ -0,0 +1,68 @@
|
||||
# Based on the issue template
|
||||
name: Bug report
|
||||
description: Create a report to help us improve
|
||||
title: "[BUG] <title>"
|
||||
labels: [Bug]
|
||||
body:
|
||||
- type: checkboxes
|
||||
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: 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 linuxserver.io"
|
||||
label: Container logs
|
||||
placeholder: |
|
||||
Output of `docker logs linuxserver.io`
|
||||
render: bash
|
||||
validations:
|
||||
required: true
|
||||
31
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Executable file
31
.github/ISSUE_TEMPLATE/issue.feature.yml
vendored
Executable file
@ -0,0 +1,31 @@
|
||||
# Based on the issue template
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
title: "[FEAT] <title>"
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: checkboxes
|
||||
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
|
||||
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -2,11 +2,11 @@
|
||||
|
||||
[linuxserverurl]: https://linuxserver.io
|
||||
[][linuxserverurl]
|
||||
|
||||
|
||||
|
||||
<!--- Before submitting a pull request please check the following -->
|
||||
|
||||
<!--- If this is a fix for a typo in code or documentation in the README please file an issue and let us sort it out we do not need a PR -->
|
||||
<!--- If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR -->
|
||||
<!--- Ask yourself if this modification is something the whole userbase will benefit from, if this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
|
||||
<!--- That if the PR is addressing an existing issue include, closes #<issue number> , in the body of the PR commit message -->
|
||||
<!--- You have included links to any files / patches etc your PR may be using in the body of the PR commit message -->
|
||||
@ -21,7 +21,11 @@
|
||||
|
||||
------------------------------
|
||||
|
||||
We welcome all PR’s though this doesn’t guarantee it will be accepted.
|
||||
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-baseimage-rdesktop/blob/bionic/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
|
||||
|
||||
------------------------------
|
||||
|
||||
<!--- We welcome all PR’s though this doesn’t guarantee it will be accepted. -->
|
||||
|
||||
## Description:
|
||||
<!--- Describe your changes in detail -->
|
||||
|
||||
12
.github/workflows/call_invalid_helper.yml
vendored
Executable file
12
.github/workflows/call_invalid_helper.yml
vendored
Executable file
@ -0,0 +1,12 @@
|
||||
name: Comment on invalid interaction
|
||||
on:
|
||||
issues:
|
||||
types:
|
||||
- labeled
|
||||
jobs:
|
||||
add-comment-on-invalid:
|
||||
if: github.event.label.name == 'invalid'
|
||||
permissions:
|
||||
issues: write
|
||||
uses: linuxserver/github-workflows/.github/workflows/invalid-interaction-helper.yml@v1
|
||||
secrets: inherit
|
||||
16
.github/workflows/external_trigger.yml
vendored
Normal file
16
.github/workflows/external_trigger.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
name: External Trigger Main
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
external-trigger-bionic:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
|
||||
- name: External Trigger
|
||||
if: github.ref == 'refs/heads/bionic'
|
||||
run: |
|
||||
echo "**** No external release, exiting ****"
|
||||
exit 0
|
||||
43
.github/workflows/external_trigger_scheduler.yml
vendored
Normal file
43
.github/workflows/external_trigger_scheduler.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
name: External Trigger Scheduler
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '32 * * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
external-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
|
||||
- name: External Trigger Scheduler
|
||||
run: |
|
||||
echo "**** Branches found: ****"
|
||||
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||
echo "**** Pulling the yq docker image ****"
|
||||
docker pull ghcr.io/linuxserver/yq
|
||||
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||
do
|
||||
br=$(echo "$br" | sed 's|origin/||g')
|
||||
echo "**** Evaluating branch ${br} ****"
|
||||
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-baseimage-rdesktop/${br}/jenkins-vars.yml \
|
||||
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
|
||||
if [ "$br" == "$ls_branch" ]; then
|
||||
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
||||
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-baseimage-rdesktop/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
|
||||
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****."
|
||||
curl -iX POST \
|
||||
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-d "{\"ref\":\"refs/heads/${br}\"}" \
|
||||
https://api.github.com/repos/linuxserver/docker-baseimage-rdesktop/actions/workflows/external_trigger.yml/dispatches
|
||||
else
|
||||
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||
fi
|
||||
else
|
||||
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
||||
fi
|
||||
done
|
||||
13
.github/workflows/greetings.yml
vendored
Executable file
13
.github/workflows/greetings.yml
vendored
Executable file
@ -0,0 +1,13 @@
|
||||
name: Greetings
|
||||
|
||||
on: [pull_request_target, issues]
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
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-baseimage-rdesktop/blob/bionic/.github/PULL_REQUEST_TEMPLATE.md)!'
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
38
.github/workflows/package_trigger.yml
vendored
Normal file
38
.github/workflows/package_trigger.yml
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
name: Package Trigger Main
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
package-trigger-bionic:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
|
||||
- name: Package Trigger
|
||||
if: github.ref == 'refs/heads/bionic'
|
||||
run: |
|
||||
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_BIONIC }}" ]; then
|
||||
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_BIONIC is set; skipping trigger. ****"
|
||||
exit 0
|
||||
fi
|
||||
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/bionic/lastBuild/api/json | jq -r '.building') == "true" ]; then
|
||||
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
|
||||
exit 0
|
||||
fi
|
||||
echo "**** Package trigger running off of bionic branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_BASEIMAGE_RDESKTOP_BIONIC\". ****"
|
||||
response=$(curl -iX POST \
|
||||
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-baseimage-rdesktop/job/bionic/buildWithParameters?PACKAGE_CHECK=true \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
|
||||
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
|
||||
echo "**** Sleeping 10 seconds until job starts ****"
|
||||
sleep 10
|
||||
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
|
||||
buildurl="${buildurl%$'\r'}"
|
||||
echo "**** Jenkins job build url: ${buildurl} ****"
|
||||
echo "**** Attempting to change the Jenkins job description ****"
|
||||
curl -iX POST \
|
||||
"${buildurl}submitDescription" \
|
||||
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
|
||||
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
|
||||
--data-urlencode "Submit=Submit"
|
||||
50
.github/workflows/package_trigger_scheduler.yml
vendored
Normal file
50
.github/workflows/package_trigger_scheduler.yml
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
name: Package Trigger Scheduler
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '04 6 * * 4'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
package-trigger-scheduler:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
|
||||
- name: Package Trigger Scheduler
|
||||
run: |
|
||||
echo "**** Branches found: ****"
|
||||
git for-each-ref --format='%(refname:short)' refs/remotes
|
||||
echo "**** Pulling the yq docker image ****"
|
||||
docker pull ghcr.io/linuxserver/yq
|
||||
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
|
||||
do
|
||||
br=$(echo "$br" | sed 's|origin/||g')
|
||||
echo "**** Evaluating branch ${br} ****"
|
||||
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-baseimage-rdesktop/${br}/jenkins-vars.yml \
|
||||
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch)
|
||||
if [ "${br}" == "${ls_branch}" ]; then
|
||||
echo "**** Branch ${br} appears to be live; checking workflow. ****"
|
||||
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-baseimage-rdesktop/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then
|
||||
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****"
|
||||
triggered_branches="${triggered_branches}${br} "
|
||||
curl -iX POST \
|
||||
-H "Authorization: token ${{ secrets.CR_PAT }}" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-d "{\"ref\":\"refs/heads/${br}\"}" \
|
||||
https://api.github.com/repos/linuxserver/docker-baseimage-rdesktop/actions/workflows/package_trigger.yml/dispatches
|
||||
sleep 30
|
||||
else
|
||||
echo "**** Workflow doesn't exist; skipping trigger. ****"
|
||||
fi
|
||||
else
|
||||
echo "**** ${br} appears to be a dev branch; skipping trigger. ****"
|
||||
fi
|
||||
done
|
||||
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
|
||||
echo "**** Notifying Discord ****"
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
|
||||
"description": "**Package Check Build(s) Triggered for baseimage-rdesktop** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-baseimage-rdesktop/activity/"' \n"}],
|
||||
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
|
||||
9
.github/workflows/permissions.yml
vendored
Executable file
9
.github/workflows/permissions.yml
vendored
Executable file
@ -0,0 +1,9 @@
|
||||
name: Permission check
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '**/run'
|
||||
- '**/finish'
|
||||
jobs:
|
||||
permission_check:
|
||||
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1
|
||||
23
.github/workflows/stale.yml
vendored
Executable file
23
.github/workflows/stale.yml
vendored
Executable file
@ -0,0 +1,23 @@
|
||||
name: Mark stale issues and pull requests
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "30 1 * * *"
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v6.0.1
|
||||
with:
|
||||
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
|
||||
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
|
||||
stale-issue-label: 'no-issue-activity'
|
||||
stale-pr-label: 'no-pr-activity'
|
||||
days-before-stale: 30
|
||||
days-before-close: 365
|
||||
exempt-issue-labels: 'awaiting-approval,work-in-progress'
|
||||
exempt-pr-labels: 'awaiting-approval,work-in-progress'
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.jenkins-external
|
||||
180
Dockerfile
180
Dockerfile
@ -1,54 +1,58 @@
|
||||
FROM lsiobase/ubuntu:focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:bionic as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
|
||||
# docker compose
|
||||
FROM ghcr.io/linuxserver/docker-compose:amd64-latest as compose
|
||||
|
||||
# runtime stage
|
||||
FROM lsiobase/ubuntu:focal
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:bionic
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -58,51 +62,59 @@ LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=compose /usr/local/bin/docker-compose /usr/local/bin/docker-compose
|
||||
|
||||
#Add needed nvidia environment variables for https://github.com/NVIDIA/nvidia-docker
|
||||
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
openssh-client \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xserver-xorg-video-intel \
|
||||
xserver-xorg-video-amdgpu \
|
||||
xserver-xorg-video-ati \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
@ -1,54 +1,58 @@
|
||||
FROM lsiobase/ubuntu:arm64v8-focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-bionic as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
|
||||
# docker compose
|
||||
FROM ghcr.io/linuxserver/docker-compose:arm64v8-latest as compose
|
||||
|
||||
# runtime stage
|
||||
FROM lsiobase/ubuntu:arm64v8-focal
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-bionic
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -58,51 +62,53 @@ LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=compose /usr/local/bin/docker-compose /usr/local/bin/docker-compose
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
openssh-client \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
176
Dockerfile.armhf
176
Dockerfile.armhf
@ -1,54 +1,58 @@
|
||||
FROM lsiobase/ubuntu:arm32v7-focal as buildstage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-bionic as buildstage
|
||||
|
||||
ARG XRDP_PULSE_VERSION=v0.4
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN \
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
echo "**** install build deps ****" && \
|
||||
sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
devscripts \
|
||||
dpkg-dev \
|
||||
git \
|
||||
libpulse-dev \
|
||||
pulseaudio && \
|
||||
apt build-dep -y \
|
||||
pulseaudio \
|
||||
xrdp
|
||||
|
||||
RUN \
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
echo "**** build pulseaudio modules ****" && \
|
||||
mkdir -p /buildout/var/lib/xrdp-pulseaudio-installer && \
|
||||
tmp=$(mktemp -d); cd "$tmp" && \
|
||||
pulseaudio_version=$(dpkg-query -W -f='${source:Version}' pulseaudio|awk -F: '{print $2}') && \
|
||||
pulseaudio_upstream_version=$(dpkg-query -W -f='${source:Upstream-Version}' pulseaudio) && \
|
||||
set -- $(apt-cache policy pulseaudio | fgrep -A1 '***' | tail -1) && \
|
||||
mirror=$2 && \
|
||||
suite=${3#*/} && \
|
||||
dget -u "$mirror/pool/$suite/p/pulseaudio/pulseaudio_$pulseaudio_version.dsc" && \
|
||||
cd "pulseaudio-$pulseaudio_upstream_version" && \
|
||||
./configure && \
|
||||
cd - && \
|
||||
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git && \
|
||||
cd pulseaudio-module-xrdp && \
|
||||
git checkout ${XRDP_PULSE_VERSION} && \
|
||||
./bootstrap && \
|
||||
./configure PULSE_DIR="$tmp/pulseaudio-$pulseaudio_upstream_version" && \
|
||||
make && \
|
||||
install -t "/buildout/var/lib/xrdp-pulseaudio-installer" -D -m 644 src/.libs/*.so
|
||||
|
||||
RUN \
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
echo "**** build xrdp with fuse disabled ****" && \
|
||||
cd /tmp && \
|
||||
apt-get source xrdp && \
|
||||
cd xrdp-* && \
|
||||
sed -i 's/--enable-fuse/--disable-fuse/g' debian/rules && \
|
||||
debuild -b -uc -us && \
|
||||
cp -ax ../xrdp_*.deb /buildout/xrdp.deb
|
||||
|
||||
# docker compose
|
||||
FROM ghcr.io/linuxserver/docker-compose:arm32v7-latest as compose
|
||||
|
||||
# runtime stage
|
||||
FROM lsiobase/ubuntu:arm32v7-focal
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-bionic
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -58,51 +62,55 @@ LABEL maintainer="thelamer"
|
||||
|
||||
# copy over libs and installers from build stage
|
||||
COPY --from=buildstage /buildout/ /
|
||||
COPY --from=compose /usr/local/bin/docker-compose /usr/local/bin/docker-compose
|
||||
|
||||
RUN \
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=arm] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
echo "**** install deps ****" && \
|
||||
ldconfig && \
|
||||
apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dbus-x11 \
|
||||
gawk \
|
||||
gnupg2 \
|
||||
libfuse2 \
|
||||
libx11-dev \
|
||||
libxfixes3 \
|
||||
libxml2 \
|
||||
libxrandr2 \
|
||||
openssh-client \
|
||||
pulseaudio \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
x11-apps \
|
||||
x11-xserver-utils \
|
||||
xfonts-base \
|
||||
xorgxrdp \
|
||||
xrdp \
|
||||
xserver-xorg-core \
|
||||
xserver-xorg-video-armsoc-exynos \
|
||||
xserver-xorg-video-omap \
|
||||
xutils \
|
||||
zlib1g && \
|
||||
dpkg -i /xrdp.deb && \
|
||||
rm /xrdp.deb && \
|
||||
echo "**** install docker ****" && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu bionic stable" && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
docker-ce-cli && \
|
||||
echo "**** cleanup and user perms ****" && \
|
||||
echo "abc:abc" | chpasswd && \
|
||||
usermod -aG sudo abc && \
|
||||
apt-get autoclean && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/* \
|
||||
/tmp/*
|
||||
|
||||
# add local files
|
||||
COPY /root /
|
||||
|
||||
589
Jenkinsfile
vendored
589
Jenkinsfile
vendored
@ -16,6 +16,7 @@ pipeline {
|
||||
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
|
||||
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
|
||||
SCARF_TOKEN=credentials('scarf_api_key')
|
||||
BUILD_VERSION_ARG = 'XRDP_VERSION'
|
||||
LS_USER = 'linuxserver'
|
||||
LS_REPO = 'docker-baseimage-rdesktop'
|
||||
@ -41,7 +42,7 @@ pipeline {
|
||||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
env.LS_RELEASE = sh(
|
||||
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':focal 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
|
||||
script: '''docker run --rm ghcr.io/linuxserver/alexeiled-skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':bionic 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' ''',
|
||||
@ -55,7 +56,7 @@ 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 ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE.md ./.github/PULL_REQUEST_TEMPLATE.md'
|
||||
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/stale.yml ./.github/workflows/call_invalid_helper.yml ./.github/workflows/permissions.yml ./.github/workflows/external_trigger.yml ./.github/workflows/package_trigger.yml'
|
||||
}
|
||||
script{
|
||||
env.LS_RELEASE_NUMBER = sh(
|
||||
@ -65,7 +66,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 bionic-${LS_RELEASE} 2>/dev/null)
|
||||
if [ "${tagsha}" == "${COMMIT_SHA}" ]; then
|
||||
echo ${LS_RELEASE_NUMBER}
|
||||
elif [ -z "${GIT_COMMIT}" ]; then
|
||||
@ -114,48 +115,76 @@ pipeline {
|
||||
env.EXT_RELEASE_CLEAN = sh(
|
||||
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||
returnStdout: true).trim()
|
||||
|
||||
def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/
|
||||
if (semver.find()) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||
} else {
|
||||
semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)/
|
||||
if (semver.find()) {
|
||||
if (semver[0][3]) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}"
|
||||
} else if (!semver[0][3] && !semver[0][4]) {
|
||||
env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${(new Date()).format('YYYYMMdd')}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (env.SEMVER != null) {
|
||||
if (BRANCH_NAME != "master" && BRANCH_NAME != "main") {
|
||||
env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}"
|
||||
}
|
||||
println("SEMVER: ${env.SEMVER}")
|
||||
} else {
|
||||
println("No SEMVER detected")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a master build use live docker endpoints
|
||||
// If this is a bionic build use live docker endpoints
|
||||
stage("Set ENV live build"){
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-bionic-' + 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 = 'bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.META_TAG = 'bionic-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.EXT_RELEASE_TAG = 'bionic-version-' + env.EXT_RELEASE_CLEAN
|
||||
}
|
||||
}
|
||||
}
|
||||
// If this is a dev build use dev docker endpoints
|
||||
stage("Set ENV dev build"){
|
||||
when {
|
||||
not {branch "master"}
|
||||
not {branch "bionic"}
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
}
|
||||
steps {
|
||||
script{
|
||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||
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 + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-bionic-' + 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 = 'bionic-' + 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.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.META_TAG = 'bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.EXT_RELEASE_TAG = 'bionic-version-' + env.EXT_RELEASE_CLEAN
|
||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
||||
}
|
||||
}
|
||||
@ -168,15 +197,17 @@ pipeline {
|
||||
steps {
|
||||
script{
|
||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||
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 + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = 'amd64-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
} else {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = 'bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
}
|
||||
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.VERSION_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.META_TAG = 'bionic-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||
env.EXT_RELEASE_TAG = 'bionic-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/'
|
||||
}
|
||||
@ -189,24 +220,24 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
|
||||
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
|
||||
string(credentialsId: 'ci-tests-s3-key-id', variable: 'S3_KEY'),
|
||||
string(credentialsId: 'ci-tests-s3-secret-access-key', variable: 'S3_SECRET')
|
||||
]) {
|
||||
script{
|
||||
env.SHELLCHECK_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
|
||||
env.SHELLCHECK_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/shellcheck-result.xml'
|
||||
}
|
||||
sh '''curl -sL https://raw.githubusercontent.com/linuxserver/docker-shellcheck/master/checkrun.sh | /bin/bash'''
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
docker pull lsiodev/spaces-file-upload:latest
|
||||
docker pull ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest
|
||||
docker run --rm \
|
||||
-e DESTINATION=\"${IMAGE}/${META_TAG}/shellcheck-result.xml\" \
|
||||
-e FILE_NAME="shellcheck-result.xml" \
|
||||
-e MIMETYPE="text/xml" \
|
||||
-v ${WORKSPACE}:/mnt \
|
||||
-e SECRET_KEY=\"${DO_SECRET}\" \
|
||||
-e ACCESS_KEY=\"${DO_KEY}\" \
|
||||
-t lsiodev/spaces-file-upload:latest \
|
||||
-e SECRET_KEY=\"${S3_SECRET}\" \
|
||||
-e ACCESS_KEY=\"${S3_KEY}\" \
|
||||
-t ghcr.io/linuxserver/lsiodev-spaces-file-upload:latest \
|
||||
python /upload.py'''
|
||||
}
|
||||
}
|
||||
@ -214,7 +245,7 @@ pipeline {
|
||||
// Use helper containers to render templated files
|
||||
stage('Update-Templates') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
expression {
|
||||
env.CONTAINER_NAME != null
|
||||
@ -224,20 +255,67 @@ pipeline {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then
|
||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=bionic -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||
# Stage 1 - Jenkinsfile update
|
||||
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f master
|
||||
git checkout -f bionic
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||
git add Jenkinsfile
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Updating Jenkinsfile"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "Jenkinsfile is up to date."
|
||||
fi
|
||||
# Stage 2 - Delete old templates
|
||||
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md\n.github/ISSUE_TEMPLATE/issue.bug.md\n.github/ISSUE_TEMPLATE/issue.feature.md"
|
||||
for i in ${OLD_TEMPLATES}; do
|
||||
if [[ -f "${i}" ]]; then
|
||||
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
|
||||
fi
|
||||
done
|
||||
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f bionic
|
||||
for i in ${TEMPLATES_TO_DELETE}; do
|
||||
git rm "${i}"
|
||||
done
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
echo "Deleting old templates"
|
||||
rm -Rf ${TEMPDIR}
|
||||
exit 0
|
||||
else
|
||||
echo "No templates to delete"
|
||||
fi
|
||||
# Stage 3 - Update templates
|
||||
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
|
||||
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
|
||||
mkdir -p ${TEMPDIR}/repo
|
||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}
|
||||
git checkout -f bionic
|
||||
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github
|
||||
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
|
||||
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
|
||||
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
|
||||
cd ${TEMPDIR}/repo/${LS_REPO}/
|
||||
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
|
||||
echo ".jenkins-external" >> .gitignore
|
||||
git add .gitignore
|
||||
fi
|
||||
git add ${TEMPLATED_FILES}
|
||||
git commit -m 'Bot Updating Templated Files'
|
||||
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
||||
@ -247,8 +325,8 @@ pipeline {
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/gitbook
|
||||
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
|
||||
if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
|
||||
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
|
||||
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
|
||||
cd ${TEMPDIR}/gitbook/docker-documentation/
|
||||
git add images/docker-${CONTAINER_NAME}.md
|
||||
git commit -m 'Bot Updating Documentation'
|
||||
@ -265,7 +343,7 @@ pipeline {
|
||||
// Exit the build if the Templated files were just updated
|
||||
stage('Template-exit') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'FILES_UPDATED', value: 'true'
|
||||
expression {
|
||||
@ -298,85 +376,162 @@ pipeline {
|
||||
"visibility":"public"}' '''
|
||||
}
|
||||
}
|
||||
/* #######################
|
||||
Scarf.sh package registry
|
||||
####################### */
|
||||
// Add package to Scarf.sh and set permissions
|
||||
stage("Scarf.sh package registry"){
|
||||
when {
|
||||
branch "bionic"
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps{
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/baseimage-rdesktop") | .uuid')
|
||||
if [ -z "${PACKAGE_UUID}" ]; then
|
||||
echo "Adding package to Scarf.sh"
|
||||
curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \
|
||||
-H "Authorization: Bearer ${SCARF_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name":"linuxserver/baseimage-rdesktop",\
|
||||
"shortDescription":"example description",\
|
||||
"libraryType":"docker",\
|
||||
"website":"https://github.com/linuxserver/docker-baseimage-rdesktop",\
|
||||
"backendUrl":"https://ghcr.io/linuxserver/baseimage-rdesktop",\
|
||||
"publicUrl":"https://lscr.io/linuxserver/baseimage-rdesktop"}' || :
|
||||
else
|
||||
echo "Package already exists on Scarf.sh"
|
||||
fi
|
||||
'''
|
||||
}
|
||||
}
|
||||
/* ###############
|
||||
Build Container
|
||||
############### */
|
||||
// Build Docker container for push to LS Repo
|
||||
stage('Build-Single') {
|
||||
when {
|
||||
environment name: 'MULTIARCH', value: 'false'
|
||||
expression {
|
||||
env.MULTIARCH == 'false' || params.PACKAGE_CHECK == 'true'
|
||||
}
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
--label \"org.opencontainers.image.authors=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-baseimage-rdesktop/packages\" \
|
||||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
|
||||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.title=Baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.description=baseimage-rdesktop image by linuxserver.io\" \
|
||||
--no-cache --pull -t ${IMAGE}:${META_TAG} --platform=linux/amd64 \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
}
|
||||
}
|
||||
// Build MultiArch Docker containers for push to LS Repo
|
||||
stage('Build-Multi') {
|
||||
when {
|
||||
environment name: 'MULTIARCH', value: 'true'
|
||||
allOf {
|
||||
environment name: 'MULTIARCH', value: 'true'
|
||||
expression { params.PACKAGE_CHECK == 'false' }
|
||||
}
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
parallel {
|
||||
stage('Build X86') {
|
||||
steps {
|
||||
sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
--label \"org.opencontainers.image.authors=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-baseimage-rdesktop/packages\" \
|
||||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
|
||||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.title=Baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.description=baseimage-rdesktop image by linuxserver.io\" \
|
||||
--no-cache --pull -t ${IMAGE}:amd64-${META_TAG} --platform=linux/amd64 \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
}
|
||||
}
|
||||
stage('Build ARMHF') {
|
||||
agent {
|
||||
label 'X86-64-MULTI'
|
||||
label 'ARMHF'
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
]
|
||||
]) {
|
||||
echo 'Logging into DockerHub'
|
||||
sh '''#! /bin/bash
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
'''
|
||||
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:arm32v7-${META_TAG} \
|
||||
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
echo 'Logging into Github'
|
||||
sh '''#! /bin/bash
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
'''
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
--label \"org.opencontainers.image.authors=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-baseimage-rdesktop/packages\" \
|
||||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
|
||||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.title=Baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.description=baseimage-rdesktop image by linuxserver.io\" \
|
||||
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
retry(5) {
|
||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
}
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:arm32v7-${META_TAG} \
|
||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
||||
}
|
||||
}
|
||||
stage('Build ARM64') {
|
||||
agent {
|
||||
label 'X86-64-MULTI'
|
||||
label 'ARM64'
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
[
|
||||
$class: 'UsernamePasswordMultiBinding',
|
||||
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
|
||||
usernameVariable: 'DOCKERUSER',
|
||||
passwordVariable: 'DOCKERPASS'
|
||||
]
|
||||
]) {
|
||||
echo 'Logging into DockerHub'
|
||||
sh '''#! /bin/bash
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
'''
|
||||
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:arm64v8-${META_TAG} \
|
||||
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
echo 'Logging into Github'
|
||||
sh '''#! /bin/bash
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
'''
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
--label \"org.opencontainers.image.authors=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-baseimage-rdesktop/packages\" \
|
||||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
|
||||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.title=Baseimage-rdesktop\" \
|
||||
--label \"org.opencontainers.image.description=baseimage-rdesktop image by linuxserver.io\" \
|
||||
--no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} --platform=linux/arm64 \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
retry(5) {
|
||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
}
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:arm64v8-${META_TAG} \
|
||||
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -384,7 +539,7 @@ pipeline {
|
||||
// Take the image we just built and dump package versions for comparison
|
||||
stage('Update-packages') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
@ -392,27 +547,22 @@ pipeline {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
if [ "${MULTIARCH}" == "true" ] && [ "${PACKAGE_CHECK}" == "false" ]; then
|
||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||
else
|
||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||
fi
|
||||
if [ "${DIST_IMAGE}" == "alpine" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apk info -v > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
fi
|
||||
touch ${TEMPDIR}/package_versions.txt
|
||||
docker run --rm \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
-v ${TEMPDIR}:/tmp \
|
||||
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 bionic
|
||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||
cd ${TEMPDIR}/${LS_REPO}/
|
||||
wait
|
||||
@ -436,7 +586,7 @@ pipeline {
|
||||
// Exit the build if the package file was just updated
|
||||
stage('PACKAGE-exit') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'true'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@ -450,7 +600,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 "bionic"
|
||||
environment name: 'CHANGE_ID', value: ''
|
||||
environment name: 'PACKAGE_UPDATED', value: 'false'
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
@ -475,20 +625,20 @@ pipeline {
|
||||
}
|
||||
steps {
|
||||
withCredentials([
|
||||
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
|
||||
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
|
||||
string(credentialsId: 'ci-tests-s3-key-id', variable: 'S3_KEY'),
|
||||
string(credentialsId: 'ci-tests-s3-secret-access-key ', variable: 'S3_SECRET')
|
||||
]) {
|
||||
script{
|
||||
env.CI_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
||||
env.CI_URL = 'https://ci-tests.linuxserver.io/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
docker pull lsiodev/ci:latest
|
||||
docker pull ghcr.io/linuxserver/ci:latest
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
docker run --rm \
|
||||
--shm-size=1gb \
|
||||
@ -500,16 +650,16 @@ pipeline {
|
||||
-e PORT=\"${CI_PORT}\" \
|
||||
-e SSL=\"${CI_SSL}\" \
|
||||
-e BASE=\"${DIST_IMAGE}\" \
|
||||
-e SECRET_KEY=\"${DO_SECRET}\" \
|
||||
-e ACCESS_KEY=\"${DO_KEY}\" \
|
||||
-e SECRET_KEY=\"${S3_SECRET}\" \
|
||||
-e ACCESS_KEY=\"${S3_KEY}\" \
|
||||
-e DOCKER_ENV=\"${CI_DOCKERENV}\" \
|
||||
-e WEB_SCREENSHOT=\"${CI_WEB}\" \
|
||||
-e WEB_AUTH=\"${CI_AUTH}\" \
|
||||
-e WEB_PATH=\"${CI_WEBPATH}\" \
|
||||
-e DO_REGION="ams3" \
|
||||
-e DO_BUCKET="lsio-ci" \
|
||||
-t lsiodev/ci:latest \
|
||||
python /ci/ci.py'''
|
||||
-t ghcr.io/linuxserver/ci:latest \
|
||||
python3 test_build.py'''
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -537,22 +687,38 @@ pipeline {
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:bionic
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
docker push ${PUSHIMAGE}:bionic
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${PUSHIMAGE}:${SEMVER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
for PUSHIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
|
||||
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
|
||||
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:focal
|
||||
docker push ${PUSHIMAGE}:focal
|
||||
docker push ${PUSHIMAGE}:${META_TAG}
|
||||
done
|
||||
for DELETEIMAGE in "${QUAYIMAGE}" "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:${META_TAG} \
|
||||
${DELETEIMAGE}:focal || :
|
||||
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
|
||||
${DELETEIMAGE}:bionic || :
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker rmi ${DELETEIMAGE}:${SEMVER} || :
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
@ -579,58 +745,93 @@ pipeline {
|
||||
passwordVariable: 'QUAYPASS'
|
||||
]
|
||||
]) {
|
||||
retry(5) {
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [ "${CI}" == "false" ]; then
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-bionic
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-bionic
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-bionic
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-bionic
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-bionic
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-bionic
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:bionic || :
|
||||
docker manifest create ${MANIFESTIMAGE}:bionic ${MANIFESTIMAGE}:amd64-bionic ${MANIFESTIMAGE}:arm32v7-bionic ${MANIFESTIMAGE}:arm64v8-bionic
|
||||
docker manifest annotate ${MANIFESTIMAGE}:bionic ${MANIFESTIMAGE}:arm32v7-bionic --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:bionic ${MANIFESTIMAGE}:arm64v8-bionic --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:bionic
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER}
|
||||
fi
|
||||
done
|
||||
'''
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
set -e
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
if [ "${CI}" == "false" ]; then
|
||||
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-focal
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-focal
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-focal
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-focal
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-focal
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-focal
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:focal || :
|
||||
docker manifest create ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:amd64-focal ${MANIFESTIMAGE}:arm32v7-focal ${MANIFESTIMAGE}:arm64v8-focal
|
||||
docker manifest annotate ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:arm32v7-focal --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:focal ${MANIFESTIMAGE}:arm64v8-focal --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:focal
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||
done
|
||||
for LEGACYIMAGE in "${GITHUBIMAGE}" "${QUAYIMAGE}"; do
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:focal
|
||||
docker tag ${LEGACYIMAGE}:amd64-${META_TAG} ${LEGACYIMAGE}:${META_TAG}
|
||||
docker tag ${LEGACYIMAGE}:arm32v7-${META_TAG} ${LEGACYIMAGE}:arm32v7-focal
|
||||
docker tag ${LEGACYIMAGE}:arm64v8-${META_TAG} ${LEGACYIMAGE}:arm64v8-focal
|
||||
docker push ${LEGACYIMAGE}:amd64-${META_TAG}
|
||||
docker push ${LEGACYIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${LEGACYIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${LEGACYIMAGE}:focal
|
||||
docker push ${LEGACYIMAGE}:${META_TAG}
|
||||
docker push ${LEGACYIMAGE}:arm32v7-focal
|
||||
docker push ${LEGACYIMAGE}:arm64v8-focal
|
||||
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${QUAYIMAGE}" "${IMAGE}"; do
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:arm32v7-${META_TAG} \
|
||||
${DELETEIMAGE}:arm32v7-bionic \
|
||||
${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \
|
||||
${DELETEIMAGE}:arm64v8-${META_TAG} \
|
||||
${DELETEIMAGE}:arm64v8-bionic \
|
||||
${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || :
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker rmi \
|
||||
${DELETEIMAGE}:arm32v7-${SEMVER} \
|
||||
${DELETEIMAGE}:arm64v8-${SEMVER} || :
|
||||
fi
|
||||
done
|
||||
docker rmi \
|
||||
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
|
||||
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
|
||||
'''
|
||||
}
|
||||
}
|
||||
@ -638,7 +839,7 @@ pipeline {
|
||||
// If this is a public release tag it in the LS Github
|
||||
stage('Github-Tag-Push-Release') {
|
||||
when {
|
||||
branch "master"
|
||||
branch "bionic"
|
||||
expression {
|
||||
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
@ -646,21 +847,21 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
steps {
|
||||
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}"
|
||||
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":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
-d '{"tag":"'${META_TAG}'",\
|
||||
"object": "'${COMMIT_SHA}'",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
|
||||
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to bionic",\
|
||||
"type": "commit",\
|
||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||
echo "Pushing New release for Tag"
|
||||
sh '''#! /bin/bash
|
||||
echo "Updating base packages to ${PACKAGE_TAG}" > releasebody.json
|
||||
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"target_commitish": "master",\
|
||||
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**OS Changes:**\\n\\n' > start
|
||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
||||
echo '{"tag_name":"'${META_TAG}'",\
|
||||
"target_commitish": "bionic",\
|
||||
"name": "'${META_TAG}'",\
|
||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**OS 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'''
|
||||
}
|
||||
@ -681,14 +882,20 @@ pipeline {
|
||||
]
|
||||
]) {
|
||||
sh '''#! /bin/bash
|
||||
docker pull lsiodev/readme-sync
|
||||
set -e
|
||||
TEMPDIR=$(mktemp -d)
|
||||
docker pull ghcr.io/linuxserver/jenkins-builder:latest
|
||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH="${BRANCH_NAME}" -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest
|
||||
docker pull ghcr.io/linuxserver/readme-sync
|
||||
docker run --rm=true \
|
||||
-e DOCKERHUB_USERNAME=$DOCKERUSER \
|
||||
-e DOCKERHUB_PASSWORD=$DOCKERPASS \
|
||||
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
|
||||
-e DOCKER_REPOSITORY=${IMAGE} \
|
||||
-e GIT_BRANCH=master \
|
||||
lsiodev/readme-sync bash -c 'node sync' '''
|
||||
-v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
|
||||
ghcr.io/linuxserver/readme-sync bash -c 'node sync'
|
||||
rm -Rf ${TEMPDIR} '''
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -715,12 +922,12 @@ pipeline {
|
||||
sh 'echo "build aborted"'
|
||||
}
|
||||
else if (currentBuild.currentResult == "SUCCESS"){
|
||||
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
|
||||
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\
|
||||
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
|
||||
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
|
||||
}
|
||||
else {
|
||||
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
|
||||
sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\
|
||||
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
|
||||
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
|
||||
}
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
<!-- DO NOT EDIT THIS FILE MANUALLY -->
|
||||
<!-- Please read the https://github.com/linuxserver/docker-baseimage-rdesktop/blob/bionic/.github/CONTRIBUTING.md -->
|
||||
|
||||
[linuxserverurl]: https://linuxserver.io
|
||||
[forumurl]: https://forum.linuxserver.io
|
||||
[ircurl]: https://www.linuxserver.io/irc/
|
||||
|
||||
@ -3,10 +3,9 @@
|
||||
# jenkins variables
|
||||
project_name: docker-baseimage-rdesktop
|
||||
external_type: os
|
||||
release_type: stable
|
||||
release_tag: focal
|
||||
ls_branch: master
|
||||
use_qemu: true
|
||||
release_type: prerelease
|
||||
release_tag: bionic
|
||||
ls_branch: bionic
|
||||
repo_vars:
|
||||
- BUILD_VERSION_ARG = 'XRDP_VERSION'
|
||||
- LS_USER = 'linuxserver'
|
||||
|
||||
335
package_versions.txt
Executable file
335
package_versions.txt
Executable file
@ -0,0 +1,335 @@
|
||||
NAME VERSION TYPE
|
||||
PyGObject 3.26.1 python
|
||||
adduser 3.116ubuntu1 deb
|
||||
apt 1.6.14 deb
|
||||
apt-transport-https 1.6.14 deb
|
||||
apt-utils 1.6.14 deb
|
||||
base-files 10.1ubuntu2.11 deb
|
||||
base-passwd 3.5.44 deb
|
||||
bash 4.4.18-2ubuntu1.2 deb
|
||||
bsdmainutils 11.1.2ubuntu1 deb
|
||||
bsdutils 1:2.31.1-0.4ubuntu3.7 deb
|
||||
bzip2 1.0.6-8.1ubuntu0.2 deb
|
||||
ca-certificates 20211016ubuntu0.18.04.1 deb
|
||||
coreutils 8.28-1ubuntu1 deb
|
||||
cpp 4:7.4.0-1ubuntu2.3 deb
|
||||
cpp-7 7.5.0-3ubuntu1~18.04 deb
|
||||
curl 7.58.0-2ubuntu3.23 deb
|
||||
dash 0.5.8-2.10 deb
|
||||
dbus 1.12.2-1ubuntu1.4 deb
|
||||
dbus-x11 1.12.2-1ubuntu1.4 deb
|
||||
dconf-gsettings-backend 0.26.0-2ubuntu3 deb
|
||||
dconf-service 0.26.0-2ubuntu3 deb
|
||||
debconf 1.5.66ubuntu1 deb
|
||||
debianutils 4.8.4 deb
|
||||
diffutils 1:3.6-1 deb
|
||||
dirmngr 2.2.4-1ubuntu1.6 deb
|
||||
distro-info-data 0.37ubuntu0.15 deb
|
||||
docker-ce-cli 5:23.0.1-1~ubuntu.18.04~bionic deb
|
||||
dpkg 1.19.0.5ubuntu2.3 deb
|
||||
e2fsprogs 1.44.1-1ubuntu1.3 deb
|
||||
fdisk 2.31.1-0.4ubuntu3.7 deb
|
||||
findutils 4.6.0+git+20170828-2 deb
|
||||
fontconfig-config 2.12.6-0ubuntu2 deb
|
||||
fonts-dejavu-core 2.37-1 deb
|
||||
gawk 1:4.1.4+dfsg-1build1 deb
|
||||
gcc-7-base 7.5.0-3ubuntu1~18.04 deb
|
||||
gcc-8-base 8.4.0-1ubuntu1~18.04 deb
|
||||
gir1.2-glib-2.0 1.56.1-1 deb
|
||||
glib-networking 2.56.0-1ubuntu0.1 deb
|
||||
glib-networking-common 2.56.0-1ubuntu0.1 deb
|
||||
glib-networking-services 2.56.0-1ubuntu0.1 deb
|
||||
gnupg 2.2.4-1ubuntu1.6 deb
|
||||
gnupg-l10n 2.2.4-1ubuntu1.6 deb
|
||||
gnupg-utils 2.2.4-1ubuntu1.6 deb
|
||||
gnupg2 2.2.4-1ubuntu1.6 deb
|
||||
gpg 2.2.4-1ubuntu1.6 deb
|
||||
gpg-agent 2.2.4-1ubuntu1.6 deb
|
||||
gpg-wks-client 2.2.4-1ubuntu1.6 deb
|
||||
gpg-wks-server 2.2.4-1ubuntu1.6 deb
|
||||
gpgconf 2.2.4-1ubuntu1.6 deb
|
||||
gpgsm 2.2.4-1ubuntu1.6 deb
|
||||
gpgv 2.2.4-1ubuntu1.6 deb
|
||||
grep 3.1-2build1 deb
|
||||
groff-base 1.22.3-10 deb
|
||||
gsettings-desktop-schemas 3.28.0-1ubuntu1 deb
|
||||
gzip 1.6-5ubuntu1.1 deb
|
||||
hostname 3.20 deb
|
||||
init-system-helpers 1.51 deb
|
||||
iso-codes 3.79-1 deb
|
||||
keyboard-configuration 1.178ubuntu2.9 deb
|
||||
krb5-locales 1.16-2ubuntu0.3 deb
|
||||
libacl1 2.2.52-3build1 deb
|
||||
libapparmor1 2.12-4ubuntu5.1 deb
|
||||
libapt-inst2.0 1.6.14 deb
|
||||
libapt-pkg5.0 1.6.14 deb
|
||||
libasn1-8-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libasound2 1.1.3-5ubuntu0.6 deb
|
||||
libasound2-data 1.1.3-5ubuntu0.6 deb
|
||||
libasound2-plugins 1.1.1-1ubuntu1 deb
|
||||
libassuan0 2.5.1-2 deb
|
||||
libasyncns0 0.8-6 deb
|
||||
libattr1 1:2.4.47-2build1 deb
|
||||
libaudit-common 1:2.8.2-1ubuntu1.1 deb
|
||||
libaudit1 1:2.8.2-1ubuntu1.1 deb
|
||||
libblkid1 2.31.1-0.4ubuntu3.7 deb
|
||||
libbsd0 0.8.7-1ubuntu0.1 deb
|
||||
libbz2-1.0 1.0.6-8.1ubuntu0.2 deb
|
||||
libc-bin 2.27-3ubuntu1.5 deb
|
||||
libc6 2.27-3ubuntu1.5 deb
|
||||
libcap-ng0 0.7.7-3.1 deb
|
||||
libcap2 1:2.25-1.2 deb
|
||||
libcom-err2 1.44.1-1ubuntu1.3 deb
|
||||
libcurl4 7.58.0-2ubuntu3.23 deb
|
||||
libdb5.3 5.3.28-13.1ubuntu1.1 deb
|
||||
libdbus-1-3 1.12.2-1ubuntu1.4 deb
|
||||
libdconf1 0.26.0-2ubuntu3 deb
|
||||
libdebconfclient0 0.213ubuntu1 deb
|
||||
libdrm-amdgpu1 2.4.101-2~18.04.1 deb
|
||||
libdrm-common 2.4.101-2~18.04.1 deb
|
||||
libdrm-intel1 2.4.101-2~18.04.1 deb
|
||||
libdrm-nouveau2 2.4.101-2~18.04.1 deb
|
||||
libdrm-radeon1 2.4.101-2~18.04.1 deb
|
||||
libdrm2 2.4.101-2~18.04.1 deb
|
||||
libedit2 3.1-20170329-1 deb
|
||||
libegl-mesa0 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libegl1 1.0.0-2ubuntu2.3 deb
|
||||
libegl1-mesa 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libelf1 0.170-0.4ubuntu0.1 deb
|
||||
libepoxy0 1.4.3-1 deb
|
||||
libexpat1 2.2.5-3ubuntu0.9 deb
|
||||
libext2fs2 1.44.1-1ubuntu1.3 deb
|
||||
libfdisk1 2.31.1-0.4ubuntu3.7 deb
|
||||
libffi6 3.2.1-8 deb
|
||||
libflac8 1.3.2-1ubuntu0.1 deb
|
||||
libfontconfig1 2.12.6-0ubuntu2 deb
|
||||
libfontenc1 1:1.1.3-1 deb
|
||||
libfreetype6 2.8.1-2ubuntu2.2 deb
|
||||
libfuse2 2.9.7-1ubuntu1 deb
|
||||
libgbm1 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libgcc1 1:8.4.0-1ubuntu1~18.04 deb
|
||||
libgcrypt20 1.8.1-4ubuntu1.3 deb
|
||||
libgdbm5 1.14.1-6 deb
|
||||
libgirepository-1.0-1 1.56.1-1 deb
|
||||
libgl1 1.0.0-2ubuntu2.3 deb
|
||||
libgl1-mesa-dri 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libglapi-mesa 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libglib2.0-0 2.56.4-0ubuntu0.18.04.9 deb
|
||||
libglvnd0 1.0.0-2ubuntu2.3 deb
|
||||
libglx-mesa0 20.0.8-0ubuntu1~18.04.1 deb
|
||||
libglx0 1.0.0-2ubuntu2.3 deb
|
||||
libgmp10 2:6.1.2+dfsg-2 deb
|
||||
libgnutls30 3.5.18-1ubuntu1.5 deb
|
||||
libgpg-error0 1.27-6 deb
|
||||
libgssapi-krb5-2 1.16-2ubuntu0.3 deb
|
||||
libgssapi3-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libhcrypto4-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libheimbase1-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libheimntlm0-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libhogweed4 3.4.1-0ubuntu0.18.04.1 deb
|
||||
libhx509-5-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libice6 2:1.0.9-2ubuntu0.18.04.1 deb
|
||||
libicu60 60.2-3ubuntu3.2 deb
|
||||
libidn2-0 2.0.4-1.1ubuntu0.2 deb
|
||||
libisl19 0.19-1 deb
|
||||
libjack-jackd2-0 1.9.12~dfsg-2 deb
|
||||
libjpeg-turbo8 1.5.2-0ubuntu5.18.04.6 deb
|
||||
libjpeg8 8c-2ubuntu8 deb
|
||||
libjson-glib-1.0-0 1.4.2-3ubuntu0.18.04.1 deb
|
||||
libjson-glib-1.0-common 1.4.2-3ubuntu0.18.04.1 deb
|
||||
libk5crypto3 1.16-2ubuntu0.3 deb
|
||||
libkeyutils1 1.5.9-9.2ubuntu2.1 deb
|
||||
libkmod2 24-1ubuntu3.5 deb
|
||||
libkrb5-26-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libkrb5-3 1.16-2ubuntu0.3 deb
|
||||
libkrb5support0 1.16-2ubuntu0.3 deb
|
||||
libksba8 1.3.5-2ubuntu0.18.04.2 deb
|
||||
libldap-2.4-2 2.4.45+dfsg-1ubuntu1.11 deb
|
||||
libldap-common 2.4.45+dfsg-1ubuntu1.11 deb
|
||||
libllvm10 1:10.0.0-4ubuntu1~18.04.2 deb
|
||||
liblocale-gettext-perl 1.07-3build2 deb
|
||||
libltdl7 2.4.6-2 deb
|
||||
liblz4-1 0.0~r131-2ubuntu3.1 deb
|
||||
liblzma5 5.2.2-1.3 deb
|
||||
libmount1 2.31.1-0.4ubuntu3.7 deb
|
||||
libmpc3 1.1.0-1 deb
|
||||
libmpdec2 2.4.2-1ubuntu1 deb
|
||||
libmpfr6 4.0.1-1 deb
|
||||
libncurses5 6.1-1ubuntu1.18.04 deb
|
||||
libncursesw5 6.1-1ubuntu1.18.04 deb
|
||||
libnettle6 3.4.1-0ubuntu0.18.04.1 deb
|
||||
libnghttp2-14 1.30.0-1ubuntu1 deb
|
||||
libnpth0 1.5-3 deb
|
||||
libogg0 1.3.2-1 deb
|
||||
libopus0 1.1.2-1ubuntu1 deb
|
||||
liborc-0.4-0 1:0.4.28-1 deb
|
||||
libp11-kit0 0.23.9-2ubuntu0.1 deb
|
||||
libpam-modules 1.1.8-3.6ubuntu2.18.04.3 deb
|
||||
libpam-modules-bin 1.1.8-3.6ubuntu2.18.04.3 deb
|
||||
libpam-runtime 1.1.8-3.6ubuntu2.18.04.3 deb
|
||||
libpam0g 1.1.8-3.6ubuntu2.18.04.3 deb
|
||||
libpciaccess0 0.14-1 deb
|
||||
libpcre3 2:8.39-9 deb
|
||||
libpipeline1 1.5.0-1 deb
|
||||
libpixman-1-0 0.34.0-2ubuntu0.1 deb
|
||||
libpng16-16 1.6.34-1ubuntu0.18.04.2 deb
|
||||
libprocps6 2:3.3.12-3ubuntu1.2 deb
|
||||
libproxy1v5 0.4.15-1ubuntu0.2 deb
|
||||
libpsl5 0.19.1-5build1 deb
|
||||
libpthread-stubs0-dev 0.3-4 deb
|
||||
libpulse0 1:11.1-1ubuntu7.11 deb
|
||||
libpulsedsp 1:11.1-1ubuntu7.11 deb
|
||||
libpython3-stdlib 3.6.7-1~18.04 deb
|
||||
libpython3.6-minimal 3.6.9-1~18.04ubuntu1.9 deb
|
||||
libpython3.6-stdlib 3.6.9-1~18.04ubuntu1.9 deb
|
||||
libreadline7 7.0-3 deb
|
||||
libroken18-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
librtmp1 2.4+20151223.gitfa8646d.1-1 deb
|
||||
libsamplerate0 0.1.9-1 deb
|
||||
libsasl2-2 2.1.27~101-g0780600+dfsg-3ubuntu2.4 deb
|
||||
libsasl2-modules 2.1.27~101-g0780600+dfsg-3ubuntu2.4 deb
|
||||
libsasl2-modules-db 2.1.27~101-g0780600+dfsg-3ubuntu2.4 deb
|
||||
libseccomp2 2.5.1-1ubuntu1~18.04.2 deb
|
||||
libselinux1 2.7-2build2 deb
|
||||
libsemanage-common 2.7-2build2 deb
|
||||
libsemanage1 2.7-2build2 deb
|
||||
libsensors4 1:3.4.0-4ubuntu0.1 deb
|
||||
libsepol1 2.7-1 deb
|
||||
libsigsegv2 2.12-1 deb
|
||||
libsm6 2:1.2.2-1 deb
|
||||
libsmartcols1 2.31.1-0.4ubuntu3.7 deb
|
||||
libsnapd-glib1 1.58-0ubuntu0.18.04.0 deb
|
||||
libsndfile1 1.0.28-4ubuntu0.18.04.2 deb
|
||||
libsoup2.4-1 2.62.1-1ubuntu0.4 deb
|
||||
libspeexdsp1 1.2~rc1.2-1ubuntu2.1 deb
|
||||
libsqlite3-0 3.22.0-1ubuntu0.7 deb
|
||||
libss2 1.44.1-1ubuntu1.3 deb
|
||||
libssl1.0.0 1.0.2n-1ubuntu5.11 deb
|
||||
libssl1.1 1.1.1-1ubuntu2.1~18.04.21 deb
|
||||
libstdc++6 8.4.0-1ubuntu1~18.04 deb
|
||||
libsystemd0 237-3ubuntu10.53 deb
|
||||
libtasn1-6 4.13-2 deb
|
||||
libtdb1 1.3.15-2 deb
|
||||
libtinfo5 6.1-1ubuntu1.18.04 deb
|
||||
libudev1 237-3ubuntu10.56 deb
|
||||
libunistring2 0.9.9-0ubuntu2 deb
|
||||
libuuid1 2.31.1-0.4ubuntu3.7 deb
|
||||
libvorbis0a 1.3.5-4.2 deb
|
||||
libvorbisenc2 1.3.5-4.2 deb
|
||||
libwayland-client0 1.16.0-1ubuntu1.1~18.04.4 deb
|
||||
libwayland-server0 1.16.0-1ubuntu1.1~18.04.4 deb
|
||||
libwebrtc-audio-processing1 0.3-1 deb
|
||||
libwind0-heimdal 7.5.0+dfsg-1ubuntu0.4 deb
|
||||
libwrap0 7.6.q-27 deb
|
||||
libx11-6 2:1.6.4-3ubuntu0.4 deb
|
||||
libx11-data 2:1.6.4-3ubuntu0.4 deb
|
||||
libx11-dev 2:1.6.4-3ubuntu0.4 deb
|
||||
libx11-xcb1 2:1.6.4-3ubuntu0.4 deb
|
||||
libxau-dev 1:1.0.8-1ubuntu1 deb
|
||||
libxau6 1:1.0.8-1ubuntu1 deb
|
||||
libxaw7 2:1.0.13-1 deb
|
||||
libxcb-dri2-0 1.13-2~ubuntu18.04 deb
|
||||
libxcb-dri3-0 1.13-2~ubuntu18.04 deb
|
||||
libxcb-glx0 1.13-2~ubuntu18.04 deb
|
||||
libxcb-present0 1.13-2~ubuntu18.04 deb
|
||||
libxcb-shape0 1.13-2~ubuntu18.04 deb
|
||||
libxcb-sync1 1.13-2~ubuntu18.04 deb
|
||||
libxcb-util1 0.4.0-0ubuntu3 deb
|
||||
libxcb-xfixes0 1.13-2~ubuntu18.04 deb
|
||||
libxcb1 1.13-2~ubuntu18.04 deb
|
||||
libxcb1-dev 1.13-2~ubuntu18.04 deb
|
||||
libxcomposite1 1:0.4.4-2 deb
|
||||
libxcursor1 1:1.1.15-1 deb
|
||||
libxdamage1 1:1.1.4-3 deb
|
||||
libxdmcp-dev 1:1.1.2-3 deb
|
||||
libxdmcp6 1:1.1.2-3 deb
|
||||
libxext6 2:1.3.3-1 deb
|
||||
libxfixes3 1:5.0.3-1 deb
|
||||
libxfont2 1:2.0.3-1 deb
|
||||
libxft2 2.3.2-1 deb
|
||||
libxi6 2:1.7.9-1 deb
|
||||
libxinerama1 2:1.1.3-1 deb
|
||||
libxkbfile1 1:1.0.9-2 deb
|
||||
libxml2 2.9.4+dfsg1-6.1ubuntu1.8 deb
|
||||
libxmu6 2:1.1.2-2 deb
|
||||
libxmuu1 2:1.1.2-2 deb
|
||||
libxpm4 1:3.5.12-1ubuntu0.18.04.2 deb
|
||||
libxrandr2 2:1.5.1-1 deb
|
||||
libxrender1 1:0.9.10-1 deb
|
||||
libxshmfence1 1.3-1 deb
|
||||
libxss1 1:1.2.2-1 deb
|
||||
libxt6 1:1.1.5-1 deb
|
||||
libxtst6 2:1.2.3-1 deb
|
||||
libxv1 2:1.0.11-1 deb
|
||||
libxvmc1 2:1.0.10-1 deb
|
||||
libxxf86dga1 2:1.1.4-1 deb
|
||||
libxxf86vm1 1:1.1.4-1 deb
|
||||
libzstd1 1.3.3+dfsg-2ubuntu1.2 deb
|
||||
locales 2.27-3ubuntu1.6 deb
|
||||
login 1:4.5-1ubuntu2.2 deb
|
||||
lsb-base 9.20170808ubuntu1 deb
|
||||
lsb-release 9.20170808ubuntu1 deb
|
||||
man-db 2.8.3-2ubuntu0.1 deb
|
||||
mawk 1.3.3-17ubuntu3 deb
|
||||
mime-support 3.60ubuntu1 deb
|
||||
mount 2.31.1-0.4ubuntu3.7 deb
|
||||
multiarch-support 2.27-3ubuntu1.6 deb
|
||||
ncurses-base 6.1-1ubuntu1.18.04 deb
|
||||
ncurses-bin 6.1-1ubuntu1.18.04 deb
|
||||
openssh-client 1:7.6p1-4ubuntu0.7 deb
|
||||
openssl 1.1.1-1ubuntu2.1~18.04.21 deb
|
||||
passwd 1:4.5-1ubuntu2.2 deb
|
||||
perl-base 5.26.1-6ubuntu0.5 deb
|
||||
pinentry-curses 1.1.0-1 deb
|
||||
procps 2:3.3.12-3ubuntu1.2 deb
|
||||
publicsuffix 20180223.1310-1 deb
|
||||
pulseaudio 1:11.1-1ubuntu7.11 deb
|
||||
pulseaudio-utils 1:11.1-1ubuntu7.11 deb
|
||||
python 3.6.9 binary
|
||||
python-apt 1.6.6 python
|
||||
python-apt-common 1.6.6 deb
|
||||
python3 3.6.7-1~18.04 deb
|
||||
python3-apt 1.6.6 deb
|
||||
python3-dbus 1.2.6-1 deb
|
||||
python3-gi 3.26.1-2ubuntu1 deb
|
||||
python3-minimal 3.6.7-1~18.04 deb
|
||||
python3-software-properties 0.96.24.32.20 deb
|
||||
python3.6 3.6.9-1~18.04ubuntu1.9 deb
|
||||
python3.6-minimal 3.6.9-1~18.04ubuntu1.9 deb
|
||||
readline-common 7.0-3 deb
|
||||
sed 4.4-2 deb
|
||||
sensible-utils 0.0.12 deb
|
||||
software-properties-common 0.96.24.32.20 deb
|
||||
ssl-cert 1.0.39 deb
|
||||
sudo 1.8.21p2-3ubuntu1.5 deb
|
||||
sysvinit-utils 2.88dsf-59.10ubuntu1 deb
|
||||
tar 1.29b-2ubuntu0.3 deb
|
||||
tzdata 2022g-0ubuntu0.18.04 deb
|
||||
ubuntu-keyring 2018.09.18.1~18.04.2 deb
|
||||
ucf 3.0038 deb
|
||||
udev 237-3ubuntu10.56 deb
|
||||
util-linux 2.31.1-0.4ubuntu3.7 deb
|
||||
x11-apps 7.7+6ubuntu1 deb
|
||||
x11-common 1:7.7+19ubuntu7.1 deb
|
||||
x11-session-utils 7.7+2build1 deb
|
||||
x11-utils 7.7+3build1 deb
|
||||
x11-xkb-utils 7.7+3ubuntu0.18.04.1 deb
|
||||
x11-xserver-utils 7.7+7build1 deb
|
||||
x11proto-core-dev 2018.4-4 deb
|
||||
x11proto-dev 2018.4-4 deb
|
||||
xfonts-base 1:1.0.4+nmu1 deb
|
||||
xfonts-encodings 1:1.0.4-2 deb
|
||||
xfonts-utils 1:7.7+6 deb
|
||||
xkb-data 2.23.1-1ubuntu1.18.04.1 deb
|
||||
xorg-sgml-doctools 1:1.11-1 deb
|
||||
xorgxrdp 0.9.5-2 deb
|
||||
xrdp 0.9.5-2 deb
|
||||
xserver-common 2:1.19.6-1ubuntu4.14 deb
|
||||
xserver-xorg-core 2:1.19.6-1ubuntu4.14 deb
|
||||
xserver-xorg-video-amdgpu 18.0.1-1 deb
|
||||
xserver-xorg-video-ati 1:18.0.1-1 deb
|
||||
xserver-xorg-video-intel 2:2.99.917+git20171229-1 deb
|
||||
xserver-xorg-video-radeon 1:18.0.1-1 deb
|
||||
xtrans-dev 1.3.5-1 deb
|
||||
xutils 1:7.7+19ubuntu7.1 deb
|
||||
zlib1g 1:1.2.11.dfsg-0ubuntu2.2 deb
|
||||
12
root/etc/cont-init.d/13-keygen
Normal file
12
root/etc/cont-init.d/13-keygen
Normal file
@ -0,0 +1,12 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
if [ ! -f "/keylock" ]; then
|
||||
cd /etc/xrdp
|
||||
xrdp-keygen xrdp
|
||||
rm -f /etc/xrdp/*.pem
|
||||
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
|
||||
-keyout /etc/xrdp/key.pem \
|
||||
-out /etc/xrdp/cert.pem \
|
||||
-subj "/C=US/ST=CA/L=Carlsbad/O=Linuxserver.io/OU=LSIO Server/CN=*"
|
||||
touch /keylock
|
||||
fi
|
||||
35
root/etc/cont-init.d/50-gid-video
Normal file
35
root/etc/cont-init.d/50-gid-video
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null)
|
||||
|
||||
for i in $FILES
|
||||
do
|
||||
VIDEO_GID=$(stat -c '%g' "${i}")
|
||||
VIDEO_UID=$(stat -c '%u' "${i}")
|
||||
# check if user matches device
|
||||
if id -u abc | grep -qw "${VIDEO_UID}"; then
|
||||
echo "**** permissions for ${i} are good ****"
|
||||
else
|
||||
# check if group matches and that device has group rw
|
||||
if id -G abc | grep -qw "${VIDEO_GID}" && [ $(stat -c '%A' "${i}" | cut -b 5,6) = "rw" ]; then
|
||||
echo "**** permissions for ${i} are good ****"
|
||||
# check if device needs to be added to video group
|
||||
elif ! id -G abc | grep -qw "${VIDEO_GID}"; then
|
||||
# check if video group needs to be created
|
||||
VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}')
|
||||
if [ -z "${VIDEO_NAME}" ]; then
|
||||
VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c4)"
|
||||
groupadd "${VIDEO_NAME}"
|
||||
groupmod -g "${VIDEO_GID}" "${VIDEO_NAME}"
|
||||
echo "**** creating video group ${VIDEO_NAME} with id ${VIDEO_GID} ****"
|
||||
fi
|
||||
echo "**** adding ${i} to video group ${VIDEO_NAME} with id ${VIDEO_GID} ****"
|
||||
usermod -a -G "${VIDEO_NAME}" abc
|
||||
fi
|
||||
# check if device has group rw
|
||||
if [ $(stat -c '%A' "${i}" | cut -b 5,6) != "rw" ]; then
|
||||
echo -e "**** The device ${i} does not have group read/write permissions, attempting to fix inside the container.If it doesn't work, you can run the following on your docker host: ****\nsudo chmod g+rw ${i}\n"
|
||||
chmod g+rw "${i}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
8
root/startpulse.sh
Executable file
8
root/startpulse.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
while :
|
||||
do
|
||||
if [[ ! `/usr/bin/pulseaudio --check` ]]; then
|
||||
/usr/bin/pulseaudio --start
|
||||
fi
|
||||
sleep 10
|
||||
done
|
||||
Loading…
x
Reference in New Issue
Block a user