Compare commits

..

157 Commits

Author SHA1 Message Date
LinuxServer-CI
68fa8d66f0 Bot Updating Package Versions 2020-11-21 00:56:28 +00:00
LinuxServer-CI
b2503d31a7 Bot Updating Package Versions 2020-11-02 09:41:35 -05:00
LinuxServer-CI
287389fcc4 Bot Updating Templated Files 2020-11-02 09:39:23 -05:00
thelamer
e57e35b4dd update baseimages 2020-11-02 06:38:11 -08:00
LinuxServer-CI
7c90bb4f82 Bot Updating Package Versions 2020-10-31 01:00:56 +00:00
LinuxServer-CI
50cac6bd7c Bot Updating Package Versions 2020-10-09 23:56:22 +00:00
LinuxServer-CI
d4240f471e Bot Updating Package Versions 2020-10-02 23:58:37 +00:00
LinuxServer-CI
6d5c55c186 Bot Updating Templated Files 2020-10-03 00:56:09 +01:00
LinuxServer-CI
c80ca25b19 Bot Updating Templated Files 2020-10-03 00:55:05 +01:00
LinuxServer-CI
03900b83f5 Bot Updating Package Versions 2020-09-26 00:00:13 +00:00
LinuxServer-CI
b7e314c74f Bot Updating Package Versions 2020-09-18 23:56:40 +00:00
LinuxServer-CI
51c1b6e2c2 Bot Updating Package Versions 2020-09-12 00:56:37 +01:00
LinuxServer-CI
bf5138f275 Bot Updating Package Versions 2020-09-04 23:56:15 +00:00
LinuxServer-CI
962367e300 Bot Updating Templated Files 2020-08-21 19:54:56 -04:00
LinuxServer-CI
e50f250597 Bot Updating Package Versions 2020-08-17 10:55:23 -04:00
LinuxServer-CI
2ad2df3ade Bot Updating Templated Files 2020-08-17 14:53:32 +00:00
aptalca
1d2349f031 Merge pull request #67 from divialth/curl
added php7-curl for http_proxy ENV support
2020-08-17 10:51:59 -04:00
divialth
f4aa6bc2fe Updated Changelog 2020-08-17 16:29:47 +02:00
divialth
30eed8d477 added php7-curl 2020-08-17 12:08:42 +02:00
LinuxServer-CI
d6d4a04dd2 Bot Updating Package Versions 2020-08-14 23:56:49 +00:00
LinuxServer-CI
7e5afbabf3 Bot Updating Package Versions 2020-08-07 23:58:25 +00:00
LinuxServer-CI
51b2fb0179 Bot Updating Templated Files 2020-08-07 23:56:07 +00:00
LinuxServer-CI
c3fe331b8c Bot Updating Templated Files 2020-08-07 23:54:50 +00:00
LinuxServer-CI
e3682d08bc Bot Updating Package Versions 2020-07-17 19:55:50 -04:00
LinuxServer-CI
5d9a89615f Bot Updating Package Versions 2020-06-27 00:57:08 +01:00
LinuxServer-CI
2f79293858 Bot Updating Package Versions 2020-06-19 23:55:47 +00:00
LinuxServer-CI
c7ac2f2dbd Bot Updating Package Versions 2020-06-12 23:56:12 +00:00
LinuxServer-CI
2552f03f22 Bot Updating Package Versions 2020-06-05 23:57:06 +00:00
LinuxServer-CI
cb77cb7f92 Bot Updating Package Versions 2020-06-03 16:27:55 +02:00
LinuxServer-CI
25f01cf24d Bot Updating Templated Files 2020-06-03 10:26:03 -04:00
chbmb
df7f460555 Merge pull request #63 from linuxserver/master-3.12
Rebasing to Alpine 3.12
2020-06-03 15:24:58 +01:00
thelamer
ea0e2bef9e Rebasing to Alpine 3.12 2020-06-01 12:58:12 -07:00
LinuxServer-CI
cd40fc146e Bot Updating Package Versions 2020-05-29 23:57:02 +00:00
LinuxServer-CI
1fe37c9352 Bot Updating Templated Files 2020-05-29 19:54:57 -04:00
LinuxServer-CI
066a129894 Bot Updating Package Versions 2020-05-22 23:56:00 +00:00
LinuxServer-CI
3e179041f2 Bot Updating Package Versions 2020-05-15 23:59:05 +00:00
LinuxServer-CI
4c7af31bc3 Bot Updating Package Versions 2020-05-08 19:57:01 -04:00
LinuxServer-CI
d18d55a9eb Bot Updating Templated Files 2020-05-01 23:54:53 +00:00
LinuxServer-CI
ea7872ccc0 Bot Updating Package Versions 2020-04-25 00:00:10 +00:00
LinuxServer-CI
9e3b3ab9d0 Bot Updating Package Versions 2020-04-17 19:55:44 -04:00
LinuxServer-CI
f27f1a0f32 Bot Updating Package Versions 2020-04-10 19:59:00 -04:00
LinuxServer-CI
f1f25f60d1 Bot Updating Templated Files 2020-04-10 23:55:16 +00:00
LinuxServer-CI
810e937beb Bot Updating Package Versions 2020-04-04 04:51:11 +01:00
LinuxServer-CI
39d4baafab Bot Updating Package Versions 2020-03-27 20:57:18 -04:00
LinuxServer-CI
87a0fae6b8 Bot Updating Package Versions 2020-03-21 01:55:46 +01:00
LinuxServer-CI
aa636d17d7 Bot Updating Package Versions 2020-03-14 00:56:14 +00:00
LinuxServer-CI
3c67dd6419 Bot Updating Package Versions 2020-03-06 19:56:20 -05:00
LinuxServer-CI
65e7ad2636 Bot Updating Package Versions 2020-02-28 19:56:51 -05:00
LinuxServer-CI
35d67db857 Bot Updating Package Versions 2020-02-14 19:55:56 -05:00
LinuxServer-CI
234c90aae0 Bot Updating Package Versions 2020-02-08 00:58:07 +00:00
LinuxServer-CI
16b07a2622 Bot Updating Package Versions 2020-02-01 00:57:34 +00:00
LinuxServer-CI
259c34085b Bot Updating Package Versions 2020-01-25 01:56:39 +01:00
LinuxServer-CI
583ddfa1da Bot Updating Package Versions 2020-01-17 23:38:34 -05:00
aptalca
03cea49daa Use nginx from baseimage 2020-01-17 20:34:15 -08:00
LinuxServer-CI
684e3fa2bd Bot Updating Package Versions 2020-01-18 01:58:23 +01:00
LinuxServer-CI
2d88de2217 Bot Updating Package Versions 2019-12-27 19:57:14 -05:00
LinuxServer-CI
ef0a2ef1b4 Bot Updating Package Versions 2019-12-20 17:02:55 -05:00
LinuxServer-CI
146710ba22 Bot Updating Templated Files 2019-12-20 22:00:34 +00:00
saarg
2ffaa68c97 Merge pull request #54 from linuxserver/master-3.11
Rebasing to Alpine 3.11
2019-12-20 22:59:34 +01:00
thelamer
79c12d25c6 Rebasing to Alpine 3.11 2019-12-19 17:00:42 -08:00
LinuxServer-CI
cbf8afe840 Bot Updating Package Versions 2019-12-14 00:57:27 +00:00
LinuxServer-CI
4509bda804 Bot Updating Templated Files 2019-11-30 00:54:51 +00:00
LinuxServer-CI
bdd6c709d8 Bot Updating Package Versions 2019-11-22 19:56:18 -05:00
LinuxServer-CI
c9bcd0519c Bot Updating Package Versions 2019-11-01 14:01:17 +00:00
LinuxServer-CI
f5f09c95eb Bot Updating Templated Files 2019-11-01 13:59:24 +00:00
aptalca
f0d5c590ea Merge pull request #52 from brechsteiner/master
add pgsql driver
2019-11-01 09:58:27 -04:00
brechsteiner
0c2f2a481e change order 2019-10-29 08:23:21 +01:00
brechsteiner
90badb2245 change package 2019-10-28 17:37:51 +01:00
brechsteiner
94e161129c add pgsql driver 2019-10-28 17:07:59 +01:00
LinuxServer-CI
0a4a9371db Bot Updating Package Versions 2019-10-25 19:57:57 -04:00
LinuxServer-CI
c167fda7f3 Bot Updating Package Versions 2019-10-11 19:58:24 -04:00
LinuxServer-CI
e6419e3c26 Bot Updating Templated Files 2019-10-12 00:56:47 +01:00
LinuxServer-CI
1c4cafefc0 Bot Updating Templated Files 2019-10-11 19:55:57 -04:00
LinuxServer-CI
50107e4b20 Bot Updating Package Versions 2019-10-04 19:56:31 -04:00
LinuxServer-CI
f5a6466329 Bot Updating Package Versions 2019-09-28 00:58:01 +01:00
LinuxServer-CI
c1f3838437 Bot Updating Package Versions 2019-09-20 19:56:46 -04:00
LinuxServer-CI
a115fbfd53 Bot Updating Package Versions 2019-09-13 19:56:09 -04:00
LinuxServer-CI
f6615088b1 Bot Updating Templated Files 2019-09-06 19:56:42 -04:00
LinuxServer-CI
8fd28ab87e Bot Updating Templated Files 2019-09-07 00:54:55 +01:00
LinuxServer-CI
d1fb1fdb0d Bot Updating Package Versions 2019-08-31 00:55:57 +01:00
LinuxServer-CI
85a6be7169 Bot Updating Package Versions 2019-08-24 00:56:26 +01:00
LinuxServer-CI
459218f07f Bot Updating Package Versions 2019-08-17 00:58:43 +01:00
LinuxServer-CI
d7840dc802 Bot Updating Package Versions 2019-08-09 23:55:40 +00:00
j0nnymoe
ab62b2269e save laravel.log to /config (#49)
save laravel.log to /config
2019-07-17 22:56:09 +01:00
aptalca
b3e5cb11cb save laravel.log to /config 2019-07-16 19:59:38 -04:00
LinuxServer-CI
42468518a5 Bot Updating Package Versions 2019-07-13 00:55:49 +01:00
LinuxServer-CI
f6abce49b8 Bot Updating Templated Files 2019-07-05 19:55:00 -04:00
LinuxServer-CI
aaf40620c5 Bot Updating Package Versions 2019-06-30 20:49:45 +01:00
LinuxServer-CI
a03a8da188 Bot Updating Templated Files 2019-06-30 20:24:10 +01:00
chbmb
4138ee793e Merge pull request #45 from linuxserver/master-3.10
Rebasing to Alpine 3.10
2019-06-30 20:23:14 +01:00
thelamer
b6825c8911 Rebasing to Alpine 3.10 2019-06-28 18:00:51 -07:00
LinuxServer-CI
45d80c2217 Bot Updating Package Versions 2019-06-19 10:54:08 +00:00
LinuxServer-CI
0cd9f4da50 Bot Updating Package Versions 2019-06-15 00:57:40 +01:00
LinuxServer-CI
9cd399f988 Bot Updating Package Versions 2019-06-07 23:56:31 +00:00
LinuxServer-CI
99cd0e8d5a Bot Updating Templated Files 2019-06-08 00:54:52 +01:00
LinuxServer-CI
9932c9fdba Bot Updating Templated Files 2019-05-24 19:55:48 -04:00
LinuxServer-CI
892bcf2e72 Bot Updating Templated Files 2019-05-25 00:54:49 +01:00
LinuxServer-CI
db958c7ec0 Bot Updating Package Versions 2019-05-18 00:56:06 +01:00
LinuxServer-CI
9830aec70e Bot Updating Package Versions 2019-05-10 09:47:32 -04:00
LinuxServer-CI
c4c57fcaf9 Bot Updating Templated Files 2019-05-03 19:55:04 -04:00
LinuxServer-CI
0c0663a5ab Bot Updating Package Versions 2019-04-20 00:55:55 +01:00
LinuxServer-CI
e73bef69c8 Bot Updating Package Versions 2019-04-06 00:56:41 +01:00
aptalca
cadf51061f recursive chown /config every time 2019-04-02 01:43:02 +08:00
aptalca
723c0c7af0 fix echo message 2019-04-02 01:43:02 +08:00
aptalca
a157f54f20 fix permission logic 2019-04-02 01:43:02 +08:00
aptalca
5ad4d9489f set app permissions only after install 2019-03-31 03:30:39 +08:00
thelamer
c3b57f9aa2 reducing sample size to 5 for chown logic as it is not recursive 2019-03-31 03:30:39 +08:00
thelamer
2ce4be8c28 adding first version of boilerplate code we can use for chowning 2019-03-31 03:30:39 +08:00
aptalca
54e59d820e fix typo in if 2019-03-31 03:30:39 +08:00
aptalca
b0797041a2 install heimdall during container start 2019-03-31 03:30:39 +08:00
LinuxServer-CI
2552eaa416 Bot Updating Package Versions 2019-03-29 20:58:29 -04:00
LinuxServer-CI
5e011ac2da Bot Updating Package Versions 2019-03-24 20:42:15 +01:00
aptalca
792e4c5a61 Merge pull request #40 from thelamer/master
Switching to new Base images, shift to arm32v7 tag.
2019-03-24 15:40:03 -04:00
thelamer
c69e0361ee Switching to new Base images, shift to arm32v7 tag. 2019-03-23 16:28:25 -07:00
LinuxServer-CI
8f8288a46f Bot Updating Package Versions 2019-03-22 20:58:08 -04:00
LinuxServer-CI
9fb66573e7 Bot Updating Package Versions 2019-03-15 18:21:11 -04:00
saarg
72e9fed104 Merge pull request #39 from linuxserver/readme
clarify docker image tags
2019-03-15 23:17:58 +01:00
aptalca
2994d28230 clarify docker image tags 2019-03-15 17:55:30 -04:00
LinuxServer-CI
836e553c12 Bot Updating Templated Files 2019-03-09 00:54:30 +00:00
LinuxServer-CI
0c4526f0f8 Bot Updating Package Versions 2019-03-02 01:00:33 +00:00
LinuxServer-CI
3500eab73b Bot Updating Templated Files 2019-03-01 19:54:49 -05:00
LinuxServer-CI
4f251c4f7c Bot Updating Package Versions 2019-02-24 01:04:03 -05:00
LinuxServer-CI
ca39143c95 Bot Updating Templated Files 2019-02-24 00:55:11 -05:00
aptalca
0ca99bae7d Merge pull request #37 from linuxserver/master-3.9
Rebasing to Alpine 3.9
2019-02-24 00:54:24 -05:00
thelamer
6c4da80342 Rebasing to Alpine 3.9 2019-02-22 17:23:36 -08:00
LinuxServer-CI
04fe5275d9 Bot Updating Package Versions 2019-02-22 20:02:31 -05:00
LinuxServer-CI
9b7d2285b7 Bot Updating Package Versions 2019-02-09 00:59:37 +00:00
LinuxServer-CI
3bfdf1b530 Bot Updating Templated Files 2019-02-09 00:54:33 +00:00
chbmb
51ba5af37b Merge pull request #32 from linuxserver/readme
add development tag info
2019-01-30 22:53:35 +00:00
LinuxServer-CI
019d4d7a62 Bot Updating Package Versions 2019-01-29 12:54:18 +00:00
LinuxServer-CI
85b139e67f Bot Updating Package Versions 2019-01-22 12:51:33 +00:00
aptalca
0fff1e5453 add development tag info 2019-01-16 13:52:40 -05:00
Alex Phillips
ae66ea597c Merge pull request #30 from linuxserver/appkey
generate app key on new install
2019-01-16 13:29:59 -05:00
aptalca
273c4f86e9 fix changelog date 2019-01-16 12:31:40 -05:00
LinuxServer-CI
ff93e822b2 Bot Updating Package Versions 2019-01-15 12:52:49 +00:00
LinuxServer-CI
60ebf428bb Bot Updating Templated Files 2019-01-15 07:49:00 -05:00
LinuxServer-CI
f3f5231a66 Bot Updating Package Versions 2019-01-08 12:54:17 +00:00
LinuxServer-CI
bcb72552cf Bot Updating Templated Files 2019-01-08 12:49:57 +00:00
aptalca
85afafa585 generate app key on new install 2019-01-04 15:36:03 +00:00
LinuxServer-CI
6b7de48dbf Bot Updating Package Versions 2019-01-01 12:52:53 +00:00
LinuxServer-CI
aedecabd37 Bot Updating Templated Files 2019-01-01 12:48:48 +00:00
LinuxServer-CI
1d9a9b84b1 Bot Updating Package Versions 2018-12-22 00:55:21 +00:00
LinuxServer-CI
08ef032b3c Bot Updating Templated Files 2018-12-22 00:50:42 +00:00
LinuxServer-CI
64a7009f83 Bot Updating Package Versions 2018-12-11 12:53:16 +00:00
LinuxServer-CI
90e8c4c608 Bot Updating Templated Files 2018-12-11 12:49:12 +00:00
LinuxServer-CI
84a05313d9 Bot Updating Templated Files 2018-12-04 12:49:03 +00:00
LinuxServer-CI
7f8b28e490 Bot Updating Templated Files 2018-12-04 10:47:27 +00:00
j0nnymoe
f7ac22decf Merge pull request #24 from thelamer/master
adding build logic templating to repository on development
2018-12-04 10:46:45 +00:00
thelamer
e41f0eb794 adding build logic templating to repository on development 2018-12-03 20:24:38 -08:00
LinuxServer-CI
d25b2b563e Bot Updating Package Versions 2018-11-27 12:52:09 +00:00
LinuxServer-CI
59fdc51086 Bot Updating README from template 2018-11-20 18:23:08 +00:00
Homer
a703cb7e13 Merge pull request #23 from linuxserver/aptalca-patch-1
Update Jenkinsfile
2018-11-20 18:14:45 +00:00
aptalca
6b4d8c8f85 Update Jenkinsfile 2018-11-20 13:13:17 -05:00
Homer
7dba595954 Merge pull request #22 from linuxserver/nginx
upgrade baseimage packages during build
2018-11-20 17:57:01 +00:00
aptalca
a87dcde2cd upgrade baseimage packages during build 2018-11-20 12:21:17 -05:00
LinuxServer-CI
082195f95e Bot Updating Package Versions 2018-11-10 18:26:59 +00:00
LinuxServer-CI
d7f12610c6 Bot Updating Package Versions 2018-11-06 15:23:50 +00:00
17 changed files with 731 additions and 452 deletions

122
.github/CONTRIBUTING.md vendored Executable file
View File

@@ -0,0 +1,122 @@
# Contributing to heimdall
## 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 or documentation in the README please file an issue
* 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-heimdall/edit/master/readme-vars.yml).
These variables are used in a template for our [Jenkins Builder](https://github.com/linuxserver/docker-jenkins-builder) as part of an ansible play.
Most of these variables are also carried over to [docs.linuxserver.io](https://docs.linuxserver.io/images/docker-heimdall)
### 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
```
git clone https://github.com/linuxserver/docker-heimdall.git
cd docker-heimdall
docker build \
--no-cache \
--pull \
-t linuxserver/heimdall:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
```
docker run --rm --privileged multiarch/qemu-user-static:register --reset
```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Update the chagelog
If you are modifying the Dockerfiles or any of the startup scripts in [root](https://github.com/linuxserver/docker-heimdall/tree/master/root), add an entry to the changelog
```yml
changelogs:
- { date: "DD.MM.YY:", desc: "Added some love to templates" }
```

2
.github/FUNDING.yml vendored Executable file
View File

@@ -0,0 +1,2 @@
github: linuxserver
open_collective: linuxserver

View File

@@ -1,21 +1,38 @@
<!--- Provide a general summary of the issue in the Title above -->
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you have an issue with the project, please provide us with the following information -->
<!--- 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. --->
<!--- Host OS -->
<!--- Command line users, your run/create command, GUI/Unraid users, a screenshot of your template settings. -->
<!--- Docker log output, docker log <container-name> -->
<!--- Mention if you're using symlinks on any of the volume mounts. -->
<!--- If this acts as a feature request please ask yourself if this modification is something the whole userbase will benefit from --->
<!--- If this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- Provide a general summary of the issue in the Title above -->
<!--- If you have a suggestion or fix for the project, please provide us with the following information -->
------------------------------
<!--- What you think your suggestion brings to the project, or fixes with the project -->
<!--- If it's a fix, would it be better suited as a Pull request to the repo ? -->
## Expected Behavior
<!--- Tell us what should happen -->
## Thanks, team linuxserver.io
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Environment
**OS:**
**CPU architecture:** x86_64/arm32/arm64
**How docker service was installed:**
<!--- ie. from the official docker repo, from the distro repo, nas OS provided, etc. -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Command used to create docker container (run/create/compose/screenshot)
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
## Docker logs
<!--- Provide a full docker log, output of "docker logs heimdall" -->

View File

@@ -2,14 +2,42 @@
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- Before submitting a pull request please check the following -->
<!--- That you have made a branch in your fork, we'd rather not merge from your master -->
<!--- 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 -->
<!--- 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 -->
<!--- -->
<!--- We maintain a changelog of major revisions to the container at the end of readme-vars.yml in the root of this repository, please add your changes there if appropriate -->
## Thanks, team linuxserver.io
<!--- Coding guidelines: -->
<!--- 1. Installed packages in the Dockerfiles should be in alphabetical order -->
<!--- 2. Changes to Dockerfile should be replicated in Dockerfile.armhf and Dockerfile.aarch64 if applicable -->
<!--- 3. Indentation style (tabs vs 4 spaces vs 1 space) should match the rest of the document -->
<!--- 4. Readme is auto generated from readme-vars.yml, make your changes there -->
------------------------------
- [ ] I have read the [contributing](https://github.com/linuxserver/docker-heimdall/blob/master/.github/CONTRIBUTING.md) guideline and understand that I have made the correct modifications
------------------------------
<!--- We welcome all PRs though this doesnt guarantee it will be accepted. -->
## Description:
<!--- Describe your changes in detail -->
## Benefits of this PR and context:
<!--- Please explain why we should accept this PR. If this fixes an outstanding bug, please reference the issue # -->
## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
## Source / References:
<!--- Please include any forum posts/github links relevant to the PR -->

13
.github/workflows/greetings.yml vendored Executable file
View 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 [issue template](https://github.com/linuxserver/docker-heimdall/blob/master/.github/ISSUE_TEMPLATE.md)!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-heimdall/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

23
.github/workflows/stale.yml vendored Executable file
View 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@v1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,5 +1,4 @@
FROM lsiobase/cloud9:files-alpine as c9files
FROM lsiobase/nginx:3.10
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.12
# set version label
ARG BUILD_DATE
@@ -11,61 +10,27 @@ LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
# cloud9
COPY --from=c9files /buildout/ /
RUN \
echo "**** install dev packages ****" && \
apk add --no-cache \
c-ares \
curl \
git \
gnupg \
http-parser \
libevent \
libevent \
libstdc++ \
libuv \
sudo && \
echo "**** user perms ****" && \
usermod -aG wheel \
abc && \
echo "auth sufficient pam_shells.so" > /etc/pam.d/chsh && \
chsh abc -s /bin/bash && \
sed -e \
's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' \
-i /etc/sudoers && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
apk add --no-cache --upgrade \
curl \
php7-ctype \
php7-curl \
php7-pdo_pgsql \
php7-pdo_sqlite \
php7-tokenizer \
php7-zip \
tar && \
echo "**** install heimdall ****" && \
mkdir -p \
/c9sdk/build/standalone \
/var/www/localhost/heimdall && \
git clone \
https://github.com/linuxserver/Heimdall.git \
/var/www/localhost/heimdall && \
echo "**** dev setup and permissions ****" && \
echo -e \
'\n# Heimdall user authorization\nfastcgi_param PHP_AUTH_USER $remote_user;\nfastcgi_param PHP_AUTH_PW $http_authorization;' >> \
/etc/nginx/fastcgi_params && \
cp \
/var/www/localhost/heimdall/.env.example \
/var/www/localhost/heimdall/.env && \
php /var/www/localhost/heimdall/artisan key:generate && \
sed -i \
's/QUEUE_DRIVER=sync/QUEUE_DRIVER=database/' \
/var/www/localhost/heimdall/.env && \
chown -R abc:abc \
/c9sdk/build/standalone \
/c9bins \
/config \
/var/www/localhost/heimdall && \
/heimdall && \
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/heimdall/heimdall.tar.gz -L \
"https://github.com/linuxserver/Heimdall/archive/${HEIMDALL_RELEASE}.tar.gz" && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*

View File

@@ -1,5 +1,4 @@
FROM lsiobase/cloud9:arm64v8-files-alpine as c9files
FROM lsiobase/nginx:arm64v8-3.10
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.12
# set version label
ARG BUILD_DATE
@@ -11,61 +10,27 @@ LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
# cloud9
COPY --from=c9files /buildout/ /
RUN \
echo "**** install dev packages ****" && \
apk add --no-cache \
c-ares \
curl \
git \
gnupg \
http-parser \
libevent \
libevent \
libstdc++ \
libuv \
sudo && \
echo "**** user perms ****" && \
usermod -aG wheel \
abc && \
echo "auth sufficient pam_shells.so" > /etc/pam.d/chsh && \
chsh abc -s /bin/bash && \
sed -e \
's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' \
-i /etc/sudoers && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
apk add --no-cache --upgrade \
curl \
php7-ctype \
php7-curl \
php7-pdo_pgsql \
php7-pdo_sqlite \
php7-tokenizer \
php7-zip \
tar && \
echo "**** install heimdall ****" && \
mkdir -p \
/c9sdk/build/standalone \
/var/www/localhost/heimdall && \
git clone \
https://github.com/linuxserver/Heimdall.git \
/var/www/localhost/heimdall && \
echo "**** dev setup and permissions ****" && \
echo -e \
'\n# Heimdall user authorization\nfastcgi_param PHP_AUTH_USER $remote_user;\nfastcgi_param PHP_AUTH_PW $http_authorization;' >> \
/etc/nginx/fastcgi_params && \
cp \
/var/www/localhost/heimdall/.env.example \
/var/www/localhost/heimdall/.env && \
php /var/www/localhost/heimdall/artisan key:generate && \
sed -i \
's/QUEUE_DRIVER=sync/QUEUE_DRIVER=database/' \
/var/www/localhost/heimdall/.env && \
chown -R abc:abc \
/c9sdk/build/standalone \
/c9bins \
/config \
/var/www/localhost/heimdall && \
/heimdall && \
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/heimdall/heimdall.tar.gz -L \
"https://github.com/linuxserver/Heimdall/archive/${HEIMDALL_RELEASE}.tar.gz" && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*

View File

@@ -1,5 +1,4 @@
FROM lsiobase/cloud9:arm32v7-files-alpine as c9files
FROM lsiobase/nginx:arm32v7-3.10
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.12
# set version label
ARG BUILD_DATE
@@ -11,61 +10,27 @@ LABEL maintainer="aptalca"
# environment settings
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
# cloud9
COPY --from=c9files /buildout/ /
RUN \
echo "**** install dev packages ****" && \
apk add --no-cache \
c-ares \
curl \
git \
gnupg \
http-parser \
libevent \
libevent \
libstdc++ \
libuv \
sudo && \
echo "**** user perms ****" && \
usermod -aG wheel \
abc && \
echo "auth sufficient pam_shells.so" > /etc/pam.d/chsh && \
chsh abc -s /bin/bash && \
sed -e \
's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' \
-i /etc/sudoers && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
apk add --no-cache --upgrade \
curl \
php7-ctype \
php7-curl \
php7-pdo_pgsql \
php7-pdo_sqlite \
php7-tokenizer \
php7-zip \
tar && \
echo "**** install heimdall ****" && \
mkdir -p \
/c9sdk/build/standalone \
/var/www/localhost/heimdall && \
git clone \
https://github.com/linuxserver/Heimdall.git \
/var/www/localhost/heimdall && \
echo "**** dev setup and permissions ****" && \
echo -e \
'\n# Heimdall user authorization\nfastcgi_param PHP_AUTH_USER $remote_user;\nfastcgi_param PHP_AUTH_PW $http_authorization;' >> \
/etc/nginx/fastcgi_params && \
cp \
/var/www/localhost/heimdall/.env.example \
/var/www/localhost/heimdall/.env && \
php /var/www/localhost/heimdall/artisan key:generate && \
sed -i \
's/QUEUE_DRIVER=sync/QUEUE_DRIVER=database/' \
/var/www/localhost/heimdall/.env && \
chown -R abc:abc \
/c9sdk/build/standalone \
/c9bins \
/config \
/var/www/localhost/heimdall && \
/heimdall && \
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/heimdall/heimdall.tar.gz -L \
"https://github.com/linuxserver/Heimdall/archive/${HEIMDALL_RELEASE}.tar.gz" && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*

362
Jenkinsfile vendored
View File

@@ -2,6 +2,10 @@ pipeline {
agent {
label 'X86-64-MULTI'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', daysToKeepStr: '60'))
parallelsAlwaysFailFast()
}
// Input to determine if this is a package check
parameters {
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
@@ -10,6 +14,8 @@ pipeline {
environment {
BUILDS_DISCORD=credentials('build_webhook_url')
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
EXT_GIT_BRANCH = 'master'
EXT_USER = 'linuxserver'
EXT_REPO = 'Heimdall'
@@ -38,7 +44,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}':development 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}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@@ -52,14 +58,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.LICENSE_TAG = sh(
script: '''#!/bin/bash
if [ -e LICENSE ] ; then
cat LICENSE | md5sum | cut -c1-8
else
echo none
fi''',
returnStdout: true).trim()
env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/CONTRIBUTING.md ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/greetings.yml ./.github/workflows/stale.yml'
}
script{
env.LS_RELEASE_NUMBER = sh(
@@ -102,21 +101,21 @@ pipeline {
/* ########################
External Release Tagging
######################## */
// If this is a github commit trigger determine the current commit at head
stage("Set ENV github_commit"){
// If this is a stable github release use the latest endpoint from github to determine the ext tag
stage("Set ENV github_stable"){
steps{
script{
env.EXT_RELEASE = sh(
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq -r '. | .sha' | cut -c1-8 ''',
script: '''curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''',
returnStdout: true).trim()
}
}
}
// If this is a github commit trigger Set the external release link
stage("Set ENV commit_link"){
// If this is a stable or devel github release generate the link for the build message
stage("Set ENV github_link"){
steps{
script{
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/commit/' + env.EXT_RELEASE
env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE
}
}
}
@@ -130,39 +129,45 @@ pipeline {
}
}
}
// If this is a development build use live docker endpoints
// If this is a master build use live docker endpoints
stage("Set ENV live build"){
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
}
steps {
script{
env.IMAGE = env.DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
}
}
}
// If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){
when {
not {branch "development"}
not {branch "master"}
environment name: 'CHANGE_ID', value: ''
}
steps {
script{
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lsiodev-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
}
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
}
}
@@ -175,12 +180,15 @@ pipeline {
steps {
script{
env.IMAGE = env.PR_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'ghcr.io/' + env.LS_USER + '/lspipepr-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
} else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
}
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
env.EXT_RELEASE_TAG = 'version-' + env.EXT_RELEASE_CLEAN
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
}
@@ -193,24 +201,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'''
}
}
@@ -218,7 +226,7 @@ pipeline {
// Use helper containers to render templated files
stage('Update-Templates') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
expression {
env.CONTAINER_NAME != null
@@ -228,34 +236,34 @@ 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=development -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker pull linuxserver/doc-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=development -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \
[ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ]; then
docker pull ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins ghcr.io/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
mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f development
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/
cd ${TEMPDIR}/repo/${LS_REPO}
git checkout -f master
cd ${TEMPDIR}/docker-${CONTAINER_NAME}
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/
cd ${TEMPDIR}/repo/${LS_REPO}/
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md LICENSE
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git commit -m 'Bot Updating Templated Files'
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
git add ${TEMPLATED_FILES}
git commit -m 'Bot Updating Templated Files'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -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}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
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/
cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Templated Files'
git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
rm -Rf ${TEMPDIR}'''
@@ -269,7 +277,7 @@ pipeline {
// Exit the build if the Templated files were just updated
stage('Template-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true'
expression {
@@ -282,6 +290,26 @@ pipeline {
}
}
}
/* #######################
GitLab Mirroring
####################### */
// Ping into Gitlab to mirror this repo and have a registry endpoint
stage("GitLab Mirror"){
when {
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'",
"mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\
"visibility":"public"}' '''
}
}
/* ###############
Build Container
############### */
@@ -314,26 +342,19 @@ pipeline {
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 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_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') {
@@ -341,26 +362,19 @@ pipeline {
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 'Logging into Github'
sh '''#! /bin/bash
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
'''
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_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} || :'''
}
}
}
@@ -368,7 +382,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison
stage('Update-packages') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
@@ -396,7 +410,7 @@ pipeline {
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 development
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/
wait
@@ -420,7 +434,7 @@ pipeline {
// Exit the build if the package file was just updated
stage('PACKAGE-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: ''
@@ -434,7 +448,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') {
when {
branch "development"
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: ''
@@ -459,20 +473,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/lsiodev-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 \
@@ -484,15 +498,15 @@ 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 \
-t ghcr.io/linuxserver/lsiodev-ci:latest \
python /ci/ci.py'''
}
}
@@ -515,17 +529,30 @@ pipeline {
passwordVariable: 'DOCKERPASS'
]
]) {
echo 'Logging into DockerHub'
retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG}
docker push ${PUSHIMAGE}:latest
docker push ${PUSHIMAGE}:${META_TAG}
docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG}
done
'''
}
sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
for DELETEIMAGE in "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:${EXT_RELEASE_TAG} \
${DELETEIMAGE}:latest || :
done
'''
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:development"
sh "docker push ${IMAGE}:development"
sh "docker push ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:${META_TAG} \
${IMAGE}:development || :'''
}
}
}
@@ -544,51 +571,75 @@ pipeline {
passwordVariable: 'DOCKERPASS'
]
]) {
retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
if [ "${CI}" == "false" ]; then
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}" "${GITHUBIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-latest
docker push ${MANIFESTIMAGE}:arm32v7-latest
docker push ${MANIFESTIMAGE}:arm64v8-latest
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:latest
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
done
'''
}
sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:amd64-${META_TAG} \
${DELETEIMAGE}:amd64-latest \
${DELETEIMAGE}:arm32v7-${META_TAG} \
${DELETEIMAGE}:arm32v7-latest \
${DELETEIMAGE}:arm64v8-${META_TAG} \
${DELETEIMAGE}:arm64v8-latest || :
done
docker rmi \
ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
sh '''#! /bin/bash
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'''
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-development"
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-development"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-development"
sh "docker push ${IMAGE}:amd64-${META_TAG}"
sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
sh "docker push ${IMAGE}:amd64-development"
sh "docker push ${IMAGE}:arm32v7-development"
sh "docker push ${IMAGE}:arm64v8-development"
sh "docker manifest push --purge ${IMAGE}:development || :"
sh "docker manifest create ${IMAGE}:development ${IMAGE}:amd64-development ${IMAGE}:arm32v7-development ${IMAGE}:arm64v8-development"
sh "docker manifest annotate ${IMAGE}:development ${IMAGE}:arm32v7-development --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:development ${IMAGE}:arm64v8-development --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:development"
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:amd64-${META_TAG} \
${IMAGE}:amd64-development \
${IMAGE}:arm32v7-${META_TAG} \
${IMAGE}:arm32v7-development \
${IMAGE}:arm64v8-${META_TAG} \
${IMAGE}:arm64v8-development \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
}
}
}
// If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') {
when {
branch "development"
branch "master"
expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
}
@@ -600,17 +651,17 @@ pipeline {
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}'",\
"object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to development",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\
"type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag"
sh '''#! /bin/bash
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "development",\
"target_commitish": "master",\
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": true}' >> releasebody.json
printf '","draft": false,"prerelease": false}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}
@@ -631,14 +682,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/lsiodev-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/lsiodev-readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
}
}
}
@@ -665,16 +722,19 @@ pipeline {
sh 'echo "build aborted"'
}
else if (currentBuild.currentResult == "SUCCESS"){
sh ''' curl -X POST --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://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
else {
sh ''' curl -X POST --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://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} '''
}
}
}
cleanup {
cleanWs()
}
}
}

166
README.md
View File

@@ -1,6 +1,16 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring :-
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring:
* regular and timely application updates
* easy user mappings (PGID, PUID)
@@ -9,18 +19,24 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
* regular security updates
Find us at:
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [IRC](https://irc.linuxserver.io) - on freenode at `#linuxserver.io`. Our primary support channel is Discord.
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall)
[![](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)
[![](https://images.microbadger.com/badges/version/linuxserver/heimdall.svg)](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
[![](https://images.microbadger.com/badges/image/linuxserver/heimdall.svg)](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/heimdall.svg)
![Docker Stars](https://img.shields.io/docker/stars/linuxserver/heimdall.svg)
[![Build Status](https://ci.linuxserver.io/buildStatus/icon?job=Docker-Pipeline-Builders/docker-heimdall/master)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/master/)
[![](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/heimdall/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/heimdall/latest/index.html)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-heimdall/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-heimdall/packages)
[![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/Linuxserver.io/docker-heimdall/container_registry)
[![MicroBadger Layers](https://img.shields.io/microbadger/layers/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge)](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/heimdall.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/heimdall)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-heimdall%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/master/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fheimdall%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/heimdall/latest/index.html)
[Heimdall](https://heimdall.site) is a way to organise all those links to your most used web sites and web applications in a simple way.
Simplicity is the key to Heimdall.
@@ -30,9 +46,9 @@ Why not use it as your browser start page? It even has the ability to include a
## Supported Architectures
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `linuxserver/heimdall` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
Simply pulling `ghcr.io/linuxserver/heimdall` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are:
@@ -42,42 +58,29 @@ The architectures supported by this image are:
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
## Version Tags
This image provides various versions that are available via tags. `latest` tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.
| Tag | Description |
| :----: | --- |
| latest | Stable Heimdall releases. |
| development | Latest commit from the github master branch. |
## Usage
Here are some example snippets to help you get started creating a container.
### docker
```
docker create \
--name=heimdall \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-p 80:80 \
-p 443:443 \
-v </path/to/appdata/config>:/config \
--restart unless-stopped \
linuxserver/heimdall
```
Using tags, you can switch between the stable releases of Heimdall and the master branch. No tag is required for the latest stable release.
Add the development tag, if required, to the linuxserver/heimdall line of the run/create command in the following format, linuxserver/heimdall:development
The development tag will be the latest commit in the master branch of Heimdall.
HOWEVER , USE THE DEVELOPMENT TAG AT YOUR OWN PERIL !!!!!!!!!
### docker-compose
### docker-compose ([recommended](https://docs.linuxserver.io/general/docker-compose))
Compatible with docker-compose v2 schemas.
```
```yaml
---
version: "2"
version: "2.1"
services:
heimdall:
image: linuxserver/heimdall
image: ghcr.io/linuxserver/heimdall
container_name: heimdall
environment:
- PUID=1000
@@ -91,6 +94,22 @@ services:
restart: unless-stopped
```
### docker cli
```
docker run -d \
--name=heimdall \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-p 80:80 \
-p 443:443 \
-v </path/to/appdata/config>:/config \
--restart unless-stopped \
ghcr.io/linuxserver/heimdall
```
## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
@@ -104,6 +123,23 @@ Container images are configured using parameters passed at runtime (such as thos
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London |
| `-v /config` | Contains all relevant configuration files. |
## Environment variables from files (Docker secrets)
You can set any environment variable from a file by using a special prepend `FILE__`.
As an example:
```
-e FILE__PASSWORD=/run/secrets/mysecretpassword
```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
## Umask for running applications
For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.
Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.
## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
@@ -129,29 +165,26 @@ Access the web gui at http://SERVERIP:PORT
This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file `docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>`. Replace <username> with a username of your choice and you will be asked to enter a password. New installs will automatically pick it up and implement password protected access. Existing users updating their image can delete their site config at `/config/nginx/site-confs/default` and restart the container after updating the image. A new site config with htpasswd support will be created in its place.
## Docker Mods
[![Docker Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=heimdall&query=%24.mods%5B%27heimdall%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=heimdall "view available mods for this container.") [![Docker Universal Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=universal&query=%24.mods%5B%27universal%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=universal "view available universal mods.")
We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.
## Support Info
* Shell access whilst the container is running: `docker exec -it heimdall /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f heimdall`
* container version number
* container version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/heimdall`
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/heimdall`
## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Run/Create
* Update the image: `docker pull linuxserver/heimdall`
* Stop the running container: `docker stop heimdall`
* Delete the container: `docker rm heimdall`
* Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* Start the new container: `docker start heimdall`
* You can also remove the old dangling images: `docker image prune`
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers:
### Via Docker Compose
* Update all images: `docker-compose pull`
@@ -160,7 +193,14 @@ Below are the instructions for updating containers:
* or update a single container: `docker-compose up -d heimdall`
* You can also remove the old dangling images: `docker image prune`
### Via Watchtower auto-updater (especially useful if you don't remember the original parameters)
### Via Docker Run
* Update the image: `docker pull ghcr.io/linuxserver/heimdall`
* Stop the running container: `docker stop heimdall`
* Delete the container: `docker rm heimdall`
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune`
### Via Watchtower auto-updater (only use if you don't remember the original parameters)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```
docker run --rm \
@@ -168,21 +208,23 @@ Below are the instructions for updating containers:
containrrr/watchtower \
--run-once heimdall
```
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally
If you want to make local modifications to these images for development purposes or just to customize the logic:
If you want to make local modifications to these images for development purposes or just to customize the logic:
```
git clone https://github.com/linuxserver/docker-heimdall.git
cd docker-heimdall
docker build \
--no-cache \
--pull \
-t linuxserver/heimdall:latest .
-t ghcr.io/linuxserver/heimdall:latest .
```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static`
@@ -194,11 +236,19 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **26.07.19:** - Modify development branch to include integrated IDE.
* **15.07.19:** - Save laravel.log to /config, install heimdall during first start.
* **17.08.20:** - Add php7-curl.
* **01.06.20:** - Rebasing to alpine 3.12.
* **17.01.20:** - Use nginx from baseimage.
* **19.12.19:** - Rebasing to alpine 3.11.
* **16.07.19:** - Save laravel.log to /config/log/heimdall.
* **28.06.19:** - Rebasing to alpine 3.10.
* **01.04.19:** - Fix permission detect logic.
* **26.03.19:** - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown.
* **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
* **15.03.19:** - Clarify docker image tags in readme.
* **22.02.19:** - Rebasing to alpine 3.9.
* **16.01.18:** - Generate random app key in .env for new installs.
* **20.11.18:** - Upgrade baseimage packages during build.
* **04.11.18:** - Add php7-zip.
* **31.10.18:** - Add queue service.
* **17.10.18:** - Symlink avatars folder.

View File

@@ -2,10 +2,10 @@
# jenkins variables
project_name: docker-heimdall
external_type: github_commit
release_type: prerelease
release_tag: development
ls_branch: development
external_type: github_stable
release_type: stable
release_tag: latest
ls_branch: master
repo_vars:
- EXT_GIT_BRANCH = 'master'
- EXT_USER = 'linuxserver'

View File

@@ -1,68 +1,77 @@
alpine-baselayout-3.1.2-r0
alpine-keys-2.1-r2
apache2-utils-2.4.39-r0
apk-tools-2.10.4-r1
apr-1.6.5-r0
alpine-baselayout-3.2.0-r7
alpine-keys-2.2-r0
apache2-utils-2.4.46-r0
apk-tools-2.10.5-r1
apr-1.7.0-r0
apr-util-1.6.1-r6
bash-5.0.0-r0
busybox-1.30.1-r2
ca-certificates-20190108-r0
ca-certificates-cacert-20190108-r0
coreutils-8.31-r0
curl-7.65.1-r0
expat-2.2.6-r0
git-2.22.0-r0
libacl-2.2.52-r6
argon2-libs-20190702-r1
bash-5.0.17-r0
busybox-1.31.1-r19
ca-certificates-20191127-r4
ca-certificates-bundle-20191127-r4
coreutils-8.32-r0
curl-7.69.1-r1
db-5.3.28-r1
expat-2.2.9-r1
git-2.26.2-r0
libacl-2.2.53-r0
libattr-2.4.48-r0
libc-utils-0.7.1-r0
libcrypto1.1-1.1.1c-r0
libcurl-7.65.1-r0
libedit-20190324.3.1-r0
libmagic-5.37-r0
libressl2.7-libcrypto-2.7.5-r0
libressl2.7-libssl-2.7.5-r0
libssl1.1-1.1.1c-r0
libtls-standalone-2.9.1-r0
libuuid-2.33.2-r0
libxml2-2.9.9-r2
libzip-1.5.2-r0
linux-pam-1.3.0-r1
logrotate-3.15.0-r0
musl-1.1.22-r2
musl-utils-1.1.22-r2
nano-4.3-r0
ncurses-libs-6.1_p20190518-r0
ncurses-terminfo-6.1_p20190518-r0
ncurses-terminfo-base-6.1_p20190518-r0
nghttp2-libs-1.38.0-r0
nginx-1.16.0-r2
openssl-1.1.1c-r0
pcre-8.43-r0
pcre2-10.33-r0
php7-7.3.6-r0
php7-common-7.3.6-r0
php7-ctype-7.3.7-r0
php7-fileinfo-7.3.6-r0
php7-fpm-7.3.6-r0
php7-json-7.3.6-r0
php7-mbstring-7.3.6-r0
php7-openssl-7.3.6-r0
php7-pdo-7.3.7-r0
php7-pdo_sqlite-7.3.7-r0
php7-session-7.3.6-r0
php7-simplexml-7.3.6-r0
php7-tokenizer-7.3.7-r0
php7-xml-7.3.6-r0
php7-xmlwriter-7.3.6-r0
php7-zip-7.3.7-r0
libc-utils-0.7.2-r3
libcrypto1.1-1.1.1g-r0
libcurl-7.69.1-r1
libedit-20191231.3.1-r0
libintl-0.20.2-r0
libldap-2.4.50-r0
libmagic-5.38-r0
libpq-12.4-r0
libproc-3.3.16-r0
libressl3.1-libcrypto-3.1.2-r0
libressl3.1-libssl-3.1.2-r0
libsasl-2.1.27-r6
libssl1.1-1.1.1g-r0
libtls-standalone-2.9.1-r1
libuuid-2.35.2-r0
libxml2-2.9.10-r5
libzip-1.6.1-r1
linux-pam-1.3.1-r4
logrotate-3.16.0-r0
musl-1.1.24-r10
musl-utils-1.1.24-r9
nano-4.9.3-r0
ncurses-libs-6.2_p20200523-r0
ncurses-terminfo-base-6.2_p20200523-r0
nghttp2-libs-1.41.0-r0
nginx-1.18.0-r1
openssl-1.1.1g-r0
pcre-8.44-r0
pcre2-10.35-r0
php7-7.3.24-r0
php7-common-7.3.24-r0
php7-ctype-7.3.24-r0
php7-curl-7.3.24-r0
php7-fileinfo-7.3.24-r0
php7-fpm-7.3.24-r0
php7-json-7.3.24-r0
php7-mbstring-7.3.24-r0
php7-openssl-7.3.24-r0
php7-pdo-7.3.24-r0
php7-pdo_pgsql-7.3.24-r0
php7-pdo_sqlite-7.3.24-r0
php7-session-7.3.24-r0
php7-simplexml-7.3.24-r0
php7-tokenizer-7.3.24-r0
php7-xml-7.3.24-r0
php7-xmlwriter-7.3.24-r0
php7-zip-7.3.24-r0
popt-1.16-r7
readline-8.0.0-r0
scanelf-1.2.3-r0
shadow-4.6-r2
sqlite-libs-3.28.0-r0
ssl_client-1.30.1-r2
tar-1.32-r0
tzdata-2019a-r0
xz-5.2.4-r0
xz-libs-5.2.4-r0
zlib-1.2.11-r1
procps-3.3.16-r0
readline-8.0.4-r0
scanelf-1.2.6-r0
shadow-4.8.1-r0
sqlite-libs-3.32.1-r0
ssl_client-1.31.1-r19
tar-1.32-r1
tzdata-2020c-r0
xz-5.2.5-r0
xz-libs-5.2.5-r0
zlib-1.2.11-r3

View File

@@ -17,6 +17,12 @@ available_architectures:
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version
development_versions: true
development_versions_items:
- { tag: "latest", desc: "Stable Heimdall releases." }
- { tag: "development", desc: "Latest commit from the github master branch." }
# container parameters
common_param_env_vars_enabled: true
param_container_name: "{{ project_name }}"
@@ -31,15 +37,6 @@ param_usage_include_env: true
param_env_vars:
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
# optional parameters
optional_block_1: true
optional_block_1_items:
- |
Using tags, you can switch between the stable releases of Heimdall and the master branch. No tag is required for the latest stable release.
Add the development tag, if required, to the linuxserver/heimdall line of the run/create command in the following format, linuxserver/heimdall:development
The development tag will be the latest commit in the master branch of Heimdall.
HOWEVER , USE THE DEVELOPMENT TAG AT YOUR OWN PERIL !!!!!!!!!
# application setup block
app_setup_block_enabled: true
app_setup_block: |
@@ -52,11 +49,19 @@ app_setup_block: |
# changelog
changelogs:
- { date: "26.07.19:", desc: "Modify development branch to include integrated IDE." }
- { date: "15.07.19:", desc: "Save laravel.log to /config, install heimdall during first start." }
- { date: "17.08.20:", desc: "Add php7-curl." }
- { date: "01.06.20:", desc: "Rebasing to alpine 3.12." }
- { date: "17.01.20:", desc: "Use nginx from baseimage." }
- { date: "19.12.19:", desc: "Rebasing to alpine 3.11." }
- { date: "16.07.19:", desc: "Save laravel.log to /config/log/heimdall." }
- { date: "28.06.19:", desc: "Rebasing to alpine 3.10." }
- { date: "01.04.19:", desc: "Fix permission detect logic." }
- { date: "26.03.19:", desc: "Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown." }
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- { date: "15.03.19:", desc: "Clarify docker image tags in readme." }
- { date: "22.02.19:", desc: "Rebasing to alpine 3.9." }
- { date: "16.01.18:", desc: "Generate random app key in .env for new installs." }
- { date: "20.11.18:", desc: "Upgrade baseimage packages during build." }
- { date: "04.11.18:", desc: "Add php7-zip." }
- { date: "31.10.18:", desc: "Add queue service." }
- { date: "17.10.18:", desc: "Symlink avatars folder." }

View File

@@ -0,0 +1,52 @@
#!/usr/bin/with-contenv bash
# make our folders
mkdir -p \
/config/www/{backgrounds,icons,avatars,SupportedApps} \
/var/www/localhost/heimdall \
/config/log/heimdall
# install heimdall if necessary
[[ -f /heimdall/heimdall.tar.gz ]] && \
echo "New container detected, installing Heimdall" && \
tar xf \
/heimdall/heimdall.tar.gz -C \
/var/www/localhost/heimdall --strip-components=1 && \
echo -e '\n# Heimdall user authorization\nfastcgi_param PHP_AUTH_USER $remote_user;\nfastcgi_param PHP_AUTH_PW $http_authorization;' >> \
/etc/nginx/fastcgi_params && \
rm -rf /heimdall && \
chown -R abc:abc /var/www/localhost/heimdall
# create symlinks
symlinks=( \
/var/www/localhost/heimdall/storage/app/public/avatars \
/var/www/localhost/heimdall/storage/app/public/backgrounds \
/var/www/localhost/heimdall/storage/app/public/icons \
/var/www/localhost/heimdall/app/SupportedApps \
/var/www/localhost/heimdall/database/app.sqlite \
/var/www/localhost/heimdall/.env )
for i in "${symlinks[@]}"
do
[[ -e "$i" && ! -L "$i" ]] && rm -rf "$i"
[[ ! -L "$i" ]] && ln -s /config/www/"$(basename "$i")" "$i"
done
[[ -e "/var/www/localhost/heimdall/storage/logs/laravel.log" && ! -L "/var/www/localhost/heimdall/storage/logs/laravel.log" ]] \
&& rm -rf "/var/www/localhost/heimdall/storage/logs/laravel.log"
[[ ! -L "/var/www/localhost/heimdall/storage/logs/laravel.log" ]] && \
ln -s "/config/log/heimdall/laravel.log" "/var/www/localhost/heimdall/storage/logs/laravel.log"
# copy .env if not exists
[[ ! -f /config/www/.env ]] && \
cp /var/www/localhost/heimdall/.env.example /config/www/.env && \
echo "Creating app key. This may take a while on slower systems" && \
php /var/www/localhost/heimdall/artisan key:generate
# set queue driver to database
sed -i 's/QUEUE_DRIVER=sync/QUEUE_DRIVER=database/' /config/www/.env
# permissions
echo "Setting permissions"
chown -R abc:abc \
/config

View File

@@ -0,0 +1,9 @@
/config/log/heimdall/laravel.log {
size 5M
rotate 5
compress
nodateext
notifempty
missingok
su abc abc
}

View File

@@ -1,6 +0,0 @@
#!/usr/bin/with-contenv bash
cd /c9sdk
HOME=/c9bins exec \
s6-setuidgid abc \
/c9bins/.c9/node/bin/node server.js --listen 0.0.0.0 -p 8000 -w /var/www/localhost/heimdall -a :