mirror of
https://github.com/linuxserver/docker-heimdall.git
synced 2026-04-14 06:12:27 +09:00
Compare commits
42 Commits
developmen
...
2.1.13-pkg
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fb66573e7 | ||
|
|
72e9fed104 | ||
|
|
2994d28230 | ||
|
|
836e553c12 | ||
|
|
0c4526f0f8 | ||
|
|
3500eab73b | ||
|
|
4f251c4f7c | ||
|
|
ca39143c95 | ||
|
|
0ca99bae7d | ||
|
|
6c4da80342 | ||
|
|
04fe5275d9 | ||
|
|
9b7d2285b7 | ||
|
|
3bfdf1b530 | ||
|
|
51ba5af37b | ||
|
|
019d4d7a62 | ||
|
|
85b139e67f | ||
|
|
0fff1e5453 | ||
|
|
ae66ea597c | ||
|
|
273c4f86e9 | ||
|
|
ff93e822b2 | ||
|
|
60ebf428bb | ||
|
|
f3f5231a66 | ||
|
|
bcb72552cf | ||
|
|
85afafa585 | ||
|
|
6b7de48dbf | ||
|
|
aedecabd37 | ||
|
|
1d9a9b84b1 | ||
|
|
08ef032b3c | ||
|
|
64a7009f83 | ||
|
|
90e8c4c608 | ||
|
|
84a05313d9 | ||
|
|
7f8b28e490 | ||
|
|
f7ac22decf | ||
|
|
e41f0eb794 | ||
|
|
d25b2b563e | ||
|
|
59fdc51086 | ||
|
|
a703cb7e13 | ||
|
|
6b4d8c8f85 | ||
|
|
7dba595954 | ||
|
|
a87dcde2cd | ||
|
|
082195f95e | ||
|
|
d7f12610c6 |
@@ -1,4 +1,4 @@
|
|||||||
FROM lsiobase/alpine.nginx:3.8
|
FROM lsiobase/alpine.nginx:3.9
|
||||||
|
|
||||||
# set version label
|
# set version label
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
@@ -12,8 +12,9 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
|
|||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install runtime packages ****" && \
|
echo "**** install runtime packages ****" && \
|
||||||
apk add --no-cache \
|
apk add --no-cache --upgrade \
|
||||||
curl \
|
curl \
|
||||||
|
nginx \
|
||||||
php7-ctype \
|
php7-ctype \
|
||||||
php7-pdo_sqlite \
|
php7-pdo_sqlite \
|
||||||
php7-tokenizer \
|
php7-tokenizer \
|
||||||
@@ -23,7 +24,7 @@ RUN \
|
|||||||
mkdir -p \
|
mkdir -p \
|
||||||
/var/www/localhost/heimdall && \
|
/var/www/localhost/heimdall && \
|
||||||
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
||||||
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
||||||
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
||||||
fi && \
|
fi && \
|
||||||
curl -o \
|
curl -o \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM lsiobase/alpine.nginx.arm64:3.8
|
FROM lsiobase/alpine.nginx.arm64:3.9
|
||||||
|
|
||||||
# Add qemu to build on x86_64 systems
|
# Add qemu to build on x86_64 systems
|
||||||
COPY qemu-aarch64-static /usr/bin
|
COPY qemu-aarch64-static /usr/bin
|
||||||
@@ -15,8 +15,9 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
|
|||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install runtime packages ****" && \
|
echo "**** install runtime packages ****" && \
|
||||||
apk add --no-cache \
|
apk add --no-cache --upgrade \
|
||||||
curl \
|
curl \
|
||||||
|
nginx \
|
||||||
php7-ctype \
|
php7-ctype \
|
||||||
php7-pdo_sqlite \
|
php7-pdo_sqlite \
|
||||||
php7-tokenizer \
|
php7-tokenizer \
|
||||||
@@ -26,7 +27,7 @@ RUN \
|
|||||||
mkdir -p \
|
mkdir -p \
|
||||||
/var/www/localhost/heimdall && \
|
/var/www/localhost/heimdall && \
|
||||||
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
||||||
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
||||||
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
||||||
fi && \
|
fi && \
|
||||||
curl -o \
|
curl -o \
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM lsiobase/alpine.nginx.armhf:3.8
|
FROM lsiobase/alpine.nginx.armhf:3.9
|
||||||
|
|
||||||
# Add qemu to build on x86_64 systems
|
# Add qemu to build on x86_64 systems
|
||||||
COPY qemu-arm-static /usr/bin
|
COPY qemu-arm-static /usr/bin
|
||||||
@@ -15,8 +15,9 @@ ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2
|
|||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
echo "**** install runtime packages ****" && \
|
echo "**** install runtime packages ****" && \
|
||||||
apk add --no-cache \
|
apk add --no-cache --upgrade \
|
||||||
curl \
|
curl \
|
||||||
|
nginx \
|
||||||
php7-ctype \
|
php7-ctype \
|
||||||
php7-pdo_sqlite \
|
php7-pdo_sqlite \
|
||||||
php7-tokenizer \
|
php7-tokenizer \
|
||||||
@@ -26,7 +27,7 @@ RUN \
|
|||||||
mkdir -p \
|
mkdir -p \
|
||||||
/var/www/localhost/heimdall && \
|
/var/www/localhost/heimdall && \
|
||||||
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
if [ -z ${HEIMDALL_RELEASE+x} ]; then \
|
||||||
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
HEIMDALL_RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" \
|
||||||
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
|
||||||
fi && \
|
fi && \
|
||||||
curl -o \
|
curl -o \
|
||||||
|
|||||||
169
Jenkinsfile
vendored
169
Jenkinsfile
vendored
@@ -6,19 +6,20 @@ pipeline {
|
|||||||
parameters {
|
parameters {
|
||||||
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
|
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
|
||||||
}
|
}
|
||||||
// Configuraiton for the variables used for this specific repo
|
// Configuration for the variables used for this specific repo
|
||||||
environment {
|
environment {
|
||||||
|
BUILDS_DISCORD=credentials('build_webhook_url')
|
||||||
|
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
||||||
EXT_GIT_BRANCH = 'master'
|
EXT_GIT_BRANCH = 'master'
|
||||||
EXT_USER = 'linuxserver'
|
EXT_USER = 'linuxserver'
|
||||||
EXT_REPO = 'Heimdall'
|
EXT_REPO = 'Heimdall'
|
||||||
|
CONTAINER_NAME = 'heimdall'
|
||||||
BUILD_VERSION_ARG = 'HEIMDALL_RELEASE'
|
BUILD_VERSION_ARG = 'HEIMDALL_RELEASE'
|
||||||
LS_USER = 'linuxserver'
|
LS_USER = 'linuxserver'
|
||||||
LS_REPO = 'docker-heimdall'
|
LS_REPO = 'docker-heimdall'
|
||||||
DOCKERHUB_IMAGE = 'linuxserver/heimdall'
|
DOCKERHUB_IMAGE = 'linuxserver/heimdall'
|
||||||
DEV_DOCKERHUB_IMAGE = 'lsiodev/heimdall'
|
DEV_DOCKERHUB_IMAGE = 'lsiodev/heimdall'
|
||||||
PR_DOCKERHUB_IMAGE = 'lspipepr/heimdall'
|
PR_DOCKERHUB_IMAGE = 'lspipepr/heimdall'
|
||||||
BUILDS_DISCORD = credentials('build_webhook_url')
|
|
||||||
GITHUB_TOKEN = credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
|
|
||||||
DIST_IMAGE = 'alpine'
|
DIST_IMAGE = 'alpine'
|
||||||
MULTIARCH='true'
|
MULTIARCH='true'
|
||||||
CI='true'
|
CI='true'
|
||||||
@@ -40,7 +41,7 @@ pipeline {
|
|||||||
script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/latest | jq -r '. | .tag_name' ''',
|
script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/latest | jq -r '. | .tag_name' ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
env.LS_RELEASE_NOTES = sh(
|
env.LS_RELEASE_NOTES = sh(
|
||||||
script: '''git log -1 --pretty=%B | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
env.GITHUB_DATE = sh(
|
env.GITHUB_DATE = sh(
|
||||||
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
|
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
|
||||||
@@ -81,14 +82,10 @@ pipeline {
|
|||||||
script{
|
script{
|
||||||
env.PACKAGE_TAG = sh(
|
env.PACKAGE_TAG = sh(
|
||||||
script: '''#!/bin/bash
|
script: '''#!/bin/bash
|
||||||
http_code=$(curl --write-out %{http_code} -s -o /dev/null \
|
if [ -e package_versions.txt ] ; then
|
||||||
https://raw.githubusercontent.com/${LS_USER}/${LS_REPO}/master/package_versions.txt)
|
cat package_versions.txt | md5sum | cut -c1-8
|
||||||
if [[ "${http_code}" -ne 200 ]] ; then
|
|
||||||
echo none
|
|
||||||
else
|
else
|
||||||
curl -s \
|
echo none
|
||||||
https://raw.githubusercontent.com/${LS_USER}/${LS_REPO}/master/package_versions.txt \
|
|
||||||
| md5sum | cut -c1-8
|
|
||||||
fi''',
|
fi''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
}
|
}
|
||||||
@@ -115,6 +112,16 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Sanitize the release tag and strip illegal docker or github characters
|
||||||
|
stage("Sanitize tag"){
|
||||||
|
steps{
|
||||||
|
script{
|
||||||
|
env.EXT_RELEASE_CLEAN = sh(
|
||||||
|
script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''',
|
||||||
|
returnStdout: true).trim()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// If this is a master build use live docker endpoints
|
// If this is a master build use live docker endpoints
|
||||||
stage("Set ENV live build"){
|
stage("Set ENV live build"){
|
||||||
when {
|
when {
|
||||||
@@ -125,11 +132,11 @@ pipeline {
|
|||||||
script{
|
script{
|
||||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE + '-ls' + env.LS_TAG_NUMBER + '|arm32v6-' + env.EXT_RELEASE + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE + '-ls' + env.LS_TAG_NUMBER
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
} else {
|
} else {
|
||||||
env.CI_TAGS = env.EXT_RELEASE + '-ls' + env.LS_TAG_NUMBER
|
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
}
|
}
|
||||||
env.META_TAG = env.EXT_RELEASE + '-ls' + env.LS_TAG_NUMBER
|
env.META_TAG = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -143,11 +150,11 @@ pipeline {
|
|||||||
script{
|
script{
|
||||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v6-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v6-' + 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 {
|
} else {
|
||||||
env.CI_TAGS = env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||||
}
|
}
|
||||||
env.META_TAG = env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DEV_DOCKERHUB_IMAGE + '/tags/'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,18 +168,18 @@ pipeline {
|
|||||||
script{
|
script{
|
||||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||||
if (env.MULTIARCH == 'true') {
|
if (env.MULTIARCH == 'true') {
|
||||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v6-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v6-' + 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 {
|
} else {
|
||||||
env.CI_TAGS = env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||||
}
|
}
|
||||||
env.META_TAG = env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
env.META_TAG = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
|
||||||
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/pull/' + env.PULL_REQUEST
|
||||||
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.PR_DOCKERHUB_IMAGE + '/tags/'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Use helper container to render a readme from the template if needed
|
// Use helper containers to render templated files
|
||||||
stage('Update-README') {
|
stage('Update-Templates') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "master"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
@@ -182,34 +189,49 @@ pipeline {
|
|||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
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
|
||||||
docker pull linuxserver/doc-builder:latest
|
docker pull linuxserver/doc-builder:latest
|
||||||
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
|
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
|
||||||
if [ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ]; then
|
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 }')" ]; then
|
||||||
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
mkdir -p ${TEMPDIR}/repo
|
||||||
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/${LS_REPO}/
|
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
|
||||||
cd ${TEMPDIR}/${LS_REPO}/
|
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git add README.md
|
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git commit -m 'Bot Updating README from template'
|
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
cd ${TEMPDIR}/repo/${LS_REPO}/
|
||||||
|
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md
|
||||||
|
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
|
||||||
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
else
|
else
|
||||||
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
fi
|
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/
|
||||||
|
cd ${TEMPDIR}/gitbook/docker-documentation/
|
||||||
|
git add images/docker-${CONTAINER_NAME}.md
|
||||||
|
git commit -m 'Bot Updating Templated Files'
|
||||||
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
|
||||||
|
fi
|
||||||
rm -Rf ${TEMPDIR}'''
|
rm -Rf ${TEMPDIR}'''
|
||||||
script{
|
script{
|
||||||
env.README_UPDATED = sh(
|
env.FILES_UPDATED = sh(
|
||||||
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
|
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
|
||||||
returnStdout: true).trim()
|
returnStdout: true).trim()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Exit the build if the Readme was just updated
|
// Exit the build if the Templated files were just updated
|
||||||
stage('README-exit') {
|
stage('Template-exit') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "master"
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'README_UPDATED', value: 'true'
|
environment name: 'FILES_UPDATED', value: 'true'
|
||||||
expression {
|
expression {
|
||||||
env.CONTAINER_NAME != null
|
env.CONTAINER_NAME != null
|
||||||
}
|
}
|
||||||
@@ -270,6 +292,9 @@ pipeline {
|
|||||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||||
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
|
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||||
sh "docker push lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
|
sh "docker push lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||||
|
sh '''docker rmi \
|
||||||
|
${IMAGE}:arm32v6-${META_TAG} \
|
||||||
|
lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -296,6 +321,9 @@ pipeline {
|
|||||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
--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 tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||||
sh "docker push 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} '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -310,6 +338,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
|
set -e
|
||||||
TEMPDIR=$(mktemp -d)
|
TEMPDIR=$(mktemp -d)
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ]; then
|
||||||
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:amd64-${META_TAG}
|
||||||
@@ -317,24 +346,32 @@ pipeline {
|
|||||||
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
LOCAL_CONTAINER=${IMAGE}:${META_TAG}
|
||||||
fi
|
fi
|
||||||
if [ "${DIST_IMAGE}" == "alpine" ]; then
|
if [ "${DIST_IMAGE}" == "alpine" ]; then
|
||||||
docker run --rm -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} sh -c '\
|
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||||
apk info > packages && \
|
apk info > packages && \
|
||||||
apk info -v > versions && \
|
apk info -v > versions && \
|
||||||
paste -d " " packages versions > /tmp/package_versions.txt'
|
paste -d " " packages versions > /tmp/package_versions.txt && \
|
||||||
|
chmod 777 /tmp/package_versions.txt'
|
||||||
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
|
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
|
||||||
docker run --rm -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} sh -c '\
|
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||||
apt -qq list --installed | awk "{print \$1,\$2}" > /tmp/package_versions.txt'
|
apt list -qq --installed | cut -d" " -f1-2 > /tmp/package_versions.txt && \
|
||||||
|
chmod 777 /tmp/package_versions.txt'
|
||||||
fi
|
fi
|
||||||
if [ "$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )" != "${PACKAGE_TAG}" ]; then
|
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 clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
|
||||||
|
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master
|
||||||
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
|
||||||
cd ${TEMPDIR}/${LS_REPO}/
|
cd ${TEMPDIR}/${LS_REPO}/
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git add package_versions.txt
|
wait
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git commit -m 'Bot Updating Package Versions'
|
git add package_versions.txt
|
||||||
git --git-dir ${TEMPDIR}/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
git commit -m 'Bot Updating Package Versions'
|
||||||
|
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
|
||||||
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "true" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
|
echo "Package tag updated, stopping build process"
|
||||||
else
|
else
|
||||||
echo "false" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
echo "false" > /tmp/packages-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
|
echo "Package tag is same as previous continue with build process"
|
||||||
fi
|
fi
|
||||||
rm -Rf ${TEMPDIR}'''
|
rm -Rf ${TEMPDIR}'''
|
||||||
script{
|
script{
|
||||||
@@ -389,7 +426,11 @@ pipeline {
|
|||||||
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
|
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
|
||||||
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
|
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
|
||||||
]) {
|
]) {
|
||||||
|
script{
|
||||||
|
env.CI_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
||||||
|
}
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
|
set -e
|
||||||
docker pull lsiodev/ci:latest
|
docker pull lsiodev/ci:latest
|
||||||
if [ "${MULTIARCH}" == "true" ]; then
|
if [ "${MULTIARCH}" == "true" ]; then
|
||||||
docker pull lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}
|
docker pull lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||||
@@ -416,9 +457,6 @@ pipeline {
|
|||||||
-e DO_BUCKET="lsio-ci" \
|
-e DO_BUCKET="lsio-ci" \
|
||||||
-t lsiodev/ci:latest \
|
-t lsiodev/ci:latest \
|
||||||
python /ci/ci.py'''
|
python /ci/ci.py'''
|
||||||
script{
|
|
||||||
env.CI_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + env.IMAGE + '/' + env.META_TAG + '/index.html'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -447,6 +485,10 @@ pipeline {
|
|||||||
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
|
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
|
||||||
sh "docker push ${IMAGE}:latest"
|
sh "docker push ${IMAGE}:latest"
|
||||||
sh "docker push ${IMAGE}:${META_TAG}"
|
sh "docker push ${IMAGE}:${META_TAG}"
|
||||||
|
sh '''docker rmi \
|
||||||
|
${IMAGE}:${META_TAG} \
|
||||||
|
${IMAGE}:latest '''
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -488,39 +530,48 @@ pipeline {
|
|||||||
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v6-latest ${IMAGE}:arm64v8-latest"
|
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v6-latest ${IMAGE}:arm64v8-latest"
|
||||||
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v6-latest --os linux --arch arm"
|
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v6-latest --os linux --arch arm"
|
||||||
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8"
|
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8"
|
||||||
sh "docker manifest push --purge ${IMAGE}:${EXT_RELEASE}-ls${LS_TAG_NUMBER} || :"
|
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
|
||||||
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
|
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
|
||||||
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v6-${META_TAG} --os linux --arch arm"
|
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v6-${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 annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
|
||||||
sh "docker manifest push --purge ${IMAGE}:latest"
|
sh "docker manifest push --purge ${IMAGE}:latest"
|
||||||
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
|
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
|
||||||
|
sh '''docker rmi \
|
||||||
|
${IMAGE}:amd64-${META_TAG} \
|
||||||
|
${IMAGE}:amd64-latest \
|
||||||
|
${IMAGE}:arm32v6-${META_TAG} \
|
||||||
|
${IMAGE}:arm32v6-latest \
|
||||||
|
${IMAGE}:arm64v8-${META_TAG} \
|
||||||
|
${IMAGE}:arm64v8-latest \
|
||||||
|
lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} \
|
||||||
|
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} '''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If this is a public release tag it in the LS Github and push a changelog from external repo and our internal one
|
// If this is a public release tag it in the LS Github
|
||||||
stage('Github-Tag-Push-Release') {
|
stage('Github-Tag-Push-Release') {
|
||||||
when {
|
when {
|
||||||
branch "master"
|
branch "master"
|
||||||
expression {
|
expression {
|
||||||
env.LS_RELEASE != env.EXT_RELEASE + '-pkg-' + env.PACKAGE_TAG + '-ls' + env.LS_TAG_NUMBER
|
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-ls' + env.LS_TAG_NUMBER
|
||||||
}
|
}
|
||||||
environment name: 'CHANGE_ID', value: ''
|
environment name: 'CHANGE_ID', value: ''
|
||||||
environment name: 'EXIT_STATUS', value: ''
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
echo "Pushing New tag for current commit ${EXT_RELEASE}-pkg-${PACKAGE_TAG}-ls${LS_TAG_NUMBER}"
|
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-pkg-${PACKAGE_TAG}-ls${LS_TAG_NUMBER}"
|
||||||
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
|
||||||
-d '{"tag":"'${EXT_RELEASE}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
||||||
"object": "'${COMMIT_SHA}'",\
|
"object": "'${COMMIT_SHA}'",\
|
||||||
"message": "Tagging Release '${EXT_RELEASE}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
|
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\
|
||||||
"type": "commit",\
|
"type": "commit",\
|
||||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||||
echo "Pushing New release for Tag"
|
echo "Pushing New release for Tag"
|
||||||
sh '''#! /bin/bash
|
sh '''#! /bin/bash
|
||||||
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | 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}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
||||||
"target_commitish": "master",\
|
"target_commitish": "master",\
|
||||||
"name": "'${EXT_RELEASE}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
"name": "'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
||||||
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
|
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
|
||||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
||||||
paste -d'\\0' start releasebody.json > releasebody.json.done
|
paste -d'\\0' start releasebody.json > releasebody.json.done
|
||||||
@@ -554,6 +605,18 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// If this is a Pull request send the CI link as a comment on it
|
||||||
|
stage('Pull Request Comment') {
|
||||||
|
when {
|
||||||
|
not {environment name: 'CHANGE_ID', value: ''}
|
||||||
|
environment name: 'CI', value: 'true'
|
||||||
|
environment name: 'EXIT_STATUS', value: ''
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/issues/${PULL_REQUEST}/comments \
|
||||||
|
-d '{"body": "I am a bot, here are the test results for this PR '${CI_URL}'"}' '''
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* ######################
|
/* ######################
|
||||||
Send status to Discord
|
Send status to Discord
|
||||||
|
|||||||
78
README.md
78
README.md
@@ -14,17 +14,14 @@ Find us at:
|
|||||||
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
|
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
|
||||||
* [Podcast](https://anchor.fm/linuxserverio) - on hiatus. Coming back soon (late 2018).
|
* [Podcast](https://anchor.fm/linuxserverio) - on hiatus. Coming back soon (late 2018).
|
||||||
|
|
||||||
# PSA: Changes are happening
|
|
||||||
|
|
||||||
From August 2018 onwards, Linuxserver are in the midst of switching to a new CI platform which will enable us to build and release multiple architectures under a single repo. To this end, existing images for `arm64` and `armhf` builds are being deprecated. They are replaced by a manifest file in each container which automatically pulls the correct image for your architecture. You'll also be able to pull based on a specific architecture tag.
|
|
||||||
|
|
||||||
TLDR: Multi-arch support is changing from multiple repos to one repo per container image.
|
|
||||||
|
|
||||||
# [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall)
|
# [linuxserver/heimdall](https://github.com/linuxserver/docker-heimdall)
|
||||||
|
[](https://discord.gg/YWrKVTn)
|
||||||
[](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
|
[](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
|
||||||
[](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
|
[](https://microbadger.com/images/linuxserver/heimdall "Get your own version badge on microbadger.com")
|
||||||

|

|
||||||

|

|
||||||
|
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-heimdall/job/master/)
|
||||||
|
[](https://lsio-ci.ams3.digitaloceanspaces.com/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.
|
[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.
|
Simplicity is the key to Heimdall.
|
||||||
@@ -34,16 +31,27 @@ Why not use it as your browser start page? It even has the ability to include a
|
|||||||
|
|
||||||
## Supported Architectures
|
## 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).
|
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.
|
||||||
|
|
||||||
The architectures supported by this image are:
|
The architectures supported by this image are:
|
||||||
|
|
||||||
| Architecture | Tag |
|
| Architecture | Tag |
|
||||||
| :----: | --- |
|
| :----: | --- |
|
||||||
| X86-64 | amd64-latest |
|
| x86-64 | amd64-latest |
|
||||||
| arm64 | arm64v8-latest |
|
| arm64 | arm64v8-latest |
|
||||||
| armhf | arm32v6-latest |
|
| armhf | arm32v6-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
|
## Usage
|
||||||
|
|
||||||
Here are some example snippets to help you get started creating a container.
|
Here are some example snippets to help you get started creating a container.
|
||||||
@@ -53,12 +61,13 @@ Here are some example snippets to help you get started creating a container.
|
|||||||
```
|
```
|
||||||
docker create \
|
docker create \
|
||||||
--name=heimdall \
|
--name=heimdall \
|
||||||
-e PUID=1001 \
|
-e PUID=1000 \
|
||||||
-e PGID=1001 \
|
-e PGID=1000 \
|
||||||
-e TZ=Europe/London \
|
-e TZ=Europe/London \
|
||||||
-p 80:80 \
|
-p 80:80 \
|
||||||
-p 443:443 \
|
-p 443:443 \
|
||||||
-v </path/to/appdata/config>:/config \
|
-v </path/to/appdata/config>:/config \
|
||||||
|
--restart unless-stopped \
|
||||||
linuxserver/heimdall
|
linuxserver/heimdall
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -75,15 +84,14 @@ services:
|
|||||||
image: linuxserver/heimdall
|
image: linuxserver/heimdall
|
||||||
container_name: heimdall
|
container_name: heimdall
|
||||||
environment:
|
environment:
|
||||||
- PUID=1001
|
- PUID=1000
|
||||||
- PGID=1001
|
- PGID=1000
|
||||||
- TZ=Europe/London
|
- TZ=Europe/London
|
||||||
volumes:
|
volumes:
|
||||||
- </path/to/appdata/config>:/config
|
- </path/to/appdata/config>:/config
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 80:80
|
||||||
- 443:443
|
- 443:443
|
||||||
mem_limit: 4096m
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -95,8 +103,8 @@ Container images are configured using parameters passed at runtime (such as thos
|
|||||||
| :----: | --- |
|
| :----: | --- |
|
||||||
| `-p 80` | http gui |
|
| `-p 80` | http gui |
|
||||||
| `-p 443` | https gui |
|
| `-p 443` | https gui |
|
||||||
| `-e PUID=1001` | for UserID - see below for explanation |
|
| `-e PUID=1000` | for UserID - see below for explanation |
|
||||||
| `-e PGID=1001` | for GroupID - see below for explanation |
|
| `-e PGID=1000` | for GroupID - see below for explanation |
|
||||||
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London |
|
| `-e TZ=Europe/London` | Specify a timezone to use EG Europe/London |
|
||||||
| `-v /config` | Contains all relevant configuration files. |
|
| `-v /config` | Contains all relevant configuration files. |
|
||||||
|
|
||||||
@@ -106,13 +114,14 @@ When using volumes (`-v` flags) permissions issues can arise between the host OS
|
|||||||
|
|
||||||
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
|
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
|
||||||
|
|
||||||
In this instance `PUID=1001` and `PGID=1001`, to find yours use `id user` as below:
|
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ id username
|
$ id username
|
||||||
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
|
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Application Setup
|
## Application Setup
|
||||||
|
|
||||||
@@ -134,8 +143,43 @@ This image now supports password protection through htpasswd. Run the following
|
|||||||
* image version number
|
* image version number
|
||||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/heimdall`
|
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' 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`
|
||||||
|
|
||||||
|
### Via Taisun auto-updater (especially useful 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 shot:
|
||||||
|
```
|
||||||
|
docker run --rm \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock taisun/updater \
|
||||||
|
--oneshot heimdall
|
||||||
|
```
|
||||||
|
* You can also remove the old dangling images: `docker image prune`
|
||||||
|
|
||||||
|
### Via Docker Compose
|
||||||
|
* Update all images: `docker-compose pull`
|
||||||
|
* or update a single image: `docker-compose pull heimdall`
|
||||||
|
* Let compose update all containers as necessary: `docker-compose up -d`
|
||||||
|
* or update a single container: `docker-compose up -d heimdall`
|
||||||
|
* You can also remove the old dangling images: `docker image prune`
|
||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
|
* **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.
|
* **31.10.18:** - Add queue service.
|
||||||
* **17.10.18:** - Symlink avatars folder.
|
* **17.10.18:** - Symlink avatars folder.
|
||||||
* **16.10.18:** - Updated fastcgi_params for user login support.
|
* **16.10.18:** - Updated fastcgi_params for user login support.
|
||||||
|
|||||||
29
jenkins-vars.yml
Normal file
29
jenkins-vars.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# jenkins variables
|
||||||
|
project_name: docker-heimdall
|
||||||
|
external_type: github_stable
|
||||||
|
release_type: stable
|
||||||
|
release_tag: latest
|
||||||
|
ls_branch: master
|
||||||
|
repo_vars:
|
||||||
|
- EXT_GIT_BRANCH = 'master'
|
||||||
|
- EXT_USER = 'linuxserver'
|
||||||
|
- EXT_REPO = 'Heimdall'
|
||||||
|
- CONTAINER_NAME = 'heimdall'
|
||||||
|
- BUILD_VERSION_ARG = 'HEIMDALL_RELEASE'
|
||||||
|
- LS_USER = 'linuxserver'
|
||||||
|
- LS_REPO = 'docker-heimdall'
|
||||||
|
- DOCKERHUB_IMAGE = 'linuxserver/heimdall'
|
||||||
|
- DEV_DOCKERHUB_IMAGE = 'lsiodev/heimdall'
|
||||||
|
- PR_DOCKERHUB_IMAGE = 'lspipepr/heimdall'
|
||||||
|
- DIST_IMAGE = 'alpine'
|
||||||
|
- MULTIARCH='true'
|
||||||
|
- CI='true'
|
||||||
|
- CI_WEB='true'
|
||||||
|
- CI_PORT='80'
|
||||||
|
- CI_SSL='false'
|
||||||
|
- CI_DELAY='120'
|
||||||
|
- CI_DOCKERENV='TZ=US/Pacific'
|
||||||
|
- CI_AUTH='user:password'
|
||||||
|
- CI_WEBPATH=''
|
||||||
@@ -1,68 +1,69 @@
|
|||||||
musl musl-1.1.19-r10
|
musl musl-1.1.20-r3
|
||||||
busybox busybox-1.28.4-r1
|
busybox busybox-1.29.3-r10
|
||||||
alpine-baselayout alpine-baselayout-3.1.0-r0
|
alpine-baselayout alpine-baselayout-3.1.0-r3
|
||||||
alpine-keys alpine-keys-2.1-r1
|
alpine-keys alpine-keys-2.1-r1
|
||||||
libressl2.7-libcrypto libressl2.7-libcrypto-2.7.4-r0
|
ca-certificates-cacert ca-certificates-cacert-20190108-r0
|
||||||
libressl2.7-libssl libressl2.7-libssl-2.7.4-r0
|
libtls-standalone libtls-standalone-2.7.4-r6
|
||||||
libressl2.7-libtls libressl2.7-libtls-2.7.4-r0
|
ssl_client ssl_client-1.29.3-r10
|
||||||
ssl_client ssl_client-1.28.4-r1
|
|
||||||
zlib zlib-1.2.11-r1
|
zlib zlib-1.2.11-r1
|
||||||
apk-tools apk-tools-2.10.1-r0
|
apk-tools apk-tools-2.10.3-r1
|
||||||
scanelf scanelf-1.2.3-r0
|
scanelf scanelf-1.2.3-r0
|
||||||
musl-utils musl-utils-1.1.19-r10
|
musl-utils musl-utils-1.1.20-r3
|
||||||
libc-utils libc-utils-0.7.1-r0
|
libc-utils libc-utils-0.7.1-r0
|
||||||
xz-libs xz-libs-5.2.4-r0
|
xz-libs xz-libs-5.2.4-r0
|
||||||
xz xz-5.2.4-r0
|
xz xz-5.2.4-r0
|
||||||
ca-certificates ca-certificates-20171114-r3
|
ca-certificates ca-certificates-20190108-r0
|
||||||
ncurses-terminfo-base ncurses-terminfo-base-6.1_p20180818-r1
|
ncurses-terminfo-base ncurses-terminfo-base-6.1_p20190105-r0
|
||||||
ncurses-terminfo ncurses-terminfo-6.1_p20180818-r1
|
ncurses-terminfo ncurses-terminfo-6.1_p20190105-r0
|
||||||
ncurses-libs ncurses-libs-6.1_p20180818-r1
|
ncurses-libs ncurses-libs-6.1_p20190105-r0
|
||||||
readline readline-7.0.003-r0
|
readline readline-7.0.003-r1
|
||||||
bash bash-4.4.19-r1
|
bash bash-4.4.19-r1
|
||||||
libattr libattr-2.4.47-r7
|
libattr libattr-2.4.47-r7
|
||||||
libacl libacl-2.2.52-r5
|
libacl libacl-2.2.52-r5
|
||||||
coreutils coreutils-8.29-r2
|
coreutils coreutils-8.30-r0
|
||||||
linux-pam linux-pam-1.3.0-r0
|
linux-pam linux-pam-1.3.0-r0
|
||||||
shadow shadow-4.5-r0
|
shadow shadow-4.5-r0
|
||||||
tzdata tzdata-2018f-r0
|
tzdata tzdata-2018i-r0
|
||||||
libuuid libuuid-2.32-r0
|
libuuid libuuid-2.33-r0
|
||||||
apr apr-1.6.3-r1
|
apr apr-1.6.5-r0
|
||||||
expat expat-2.2.5-r0
|
expat expat-2.2.6-r0
|
||||||
apr-util apr-util-1.6.1-r2
|
apr-util apr-util-1.6.1-r5
|
||||||
apache2-utils apache2-utils-2.4.35-r0
|
apache2-utils apache2-utils-2.4.38-r2
|
||||||
nghttp2-libs nghttp2-libs-1.32.0-r0
|
nghttp2-libs nghttp2-libs-1.35.1-r0
|
||||||
libssh2 libssh2-1.8.0-r3
|
libssh2 libssh2-1.8.0-r4
|
||||||
libcurl libcurl-7.61.1-r0
|
libcurl libcurl-7.64.0-r1
|
||||||
pcre2 pcre2-10.31-r0
|
pcre2 pcre2-10.32-r1
|
||||||
git git-2.18.1-r0
|
git git-2.20.1-r0
|
||||||
|
libressl2.7-libcrypto libressl2.7-libcrypto-2.7.5-r0
|
||||||
|
libressl2.7-libssl libressl2.7-libssl-2.7.5-r0
|
||||||
popt popt-1.16-r7
|
popt popt-1.16-r7
|
||||||
logrotate logrotate-3.14.0-r0
|
logrotate logrotate-3.15.0-r0
|
||||||
libmagic libmagic-5.32-r0
|
libmagic libmagic-5.35-r0
|
||||||
nano nano-2.9.8-r0
|
nano nano-3.2-r0
|
||||||
pcre pcre-8.42-r0
|
pcre pcre-8.42-r1
|
||||||
nginx nginx-1.14.0-r1
|
nginx nginx-1.14.2-r0
|
||||||
libcrypto1.0 libcrypto1.0-1.0.2p-r0
|
openssl openssl-1.1.1a-r1
|
||||||
libssl1.0 libssl1.0-1.0.2p-r0
|
php7-common php7-common-7.2.14-r0
|
||||||
openssl openssl-1.0.2p-r0
|
libedit libedit-20181209.3.1-r0
|
||||||
php7-common php7-common-7.2.10-r0
|
libxml2 libxml2-2.9.9-r1
|
||||||
libedit libedit-20170329.3.1-r3
|
php7 php7-7.2.14-r0
|
||||||
libxml2 libxml2-2.9.8-r1
|
php7-fileinfo php7-fileinfo-7.2.14-r0
|
||||||
php7 php7-7.2.10-r0
|
php7-fpm php7-fpm-7.2.14-r0
|
||||||
php7-fileinfo php7-fileinfo-7.2.10-r0
|
php7-json php7-json-7.2.14-r0
|
||||||
php7-fpm php7-fpm-7.2.10-r0
|
php7-mbstring php7-mbstring-7.2.14-r0
|
||||||
php7-json php7-json-7.2.10-r0
|
php7-openssl php7-openssl-7.2.14-r0
|
||||||
php7-mbstring php7-mbstring-7.2.10-r0
|
php7-session php7-session-7.2.14-r0
|
||||||
php7-openssl php7-openssl-7.2.10-r0
|
php7-simplexml php7-simplexml-7.2.14-r0
|
||||||
php7-session php7-session-7.2.10-r0
|
php7-xml php7-xml-7.2.14-r0
|
||||||
php7-simplexml php7-simplexml-7.2.10-r0
|
php7-xmlwriter php7-xmlwriter-7.2.14-r0
|
||||||
php7-xml php7-xml-7.2.10-r0
|
libcrypto1.1 libcrypto1.1-1.1.1b-r1
|
||||||
php7-xmlwriter php7-xmlwriter-7.2.10-r0
|
libssl1.1 libssl1.1-1.1.1b-r1
|
||||||
curl curl-7.61.1-r0
|
curl curl-7.64.0-r1
|
||||||
php7-ctype php7-ctype-7.2.10-r0
|
php7-ctype php7-ctype-7.2.14-r0
|
||||||
php7-pdo php7-pdo-7.2.10-r0
|
php7-pdo php7-pdo-7.2.14-r0
|
||||||
sqlite-libs sqlite-libs-3.24.0-r0
|
sqlite-libs sqlite-libs-3.26.0-r3
|
||||||
php7-pdo_sqlite php7-pdo_sqlite-7.2.10-r0
|
php7-pdo_sqlite php7-pdo_sqlite-7.2.14-r0
|
||||||
php7-tokenizer php7-tokenizer-7.2.10-r0
|
php7-tokenizer php7-tokenizer-7.2.14-r0
|
||||||
libzip libzip-1.5.1-r1
|
libzip libzip-1.5.1-r2
|
||||||
php7-zip php7-zip-7.2.10-r0
|
php7-zip php7-zip-7.2.14-r0
|
||||||
tar tar-1.30-r0
|
tar tar-1.32-r0
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ available_architectures:
|
|||||||
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||||
- { arch: "{{ arch_armhf }}", tag: "arm32v6-latest"}
|
- { arch: "{{ arch_armhf }}", tag: "arm32v6-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
|
# container parameters
|
||||||
common_param_env_vars_enabled: true
|
common_param_env_vars_enabled: true
|
||||||
param_container_name: "{{ project_name }}"
|
param_container_name: "{{ project_name }}"
|
||||||
@@ -31,10 +37,6 @@ param_usage_include_env: true
|
|||||||
param_env_vars:
|
param_env_vars:
|
||||||
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
|
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London"}
|
||||||
|
|
||||||
# optional parameters
|
|
||||||
optional_block_1: false
|
|
||||||
optional_block_1_items: ""
|
|
||||||
|
|
||||||
# application setup block
|
# application setup block
|
||||||
app_setup_block_enabled: true
|
app_setup_block_enabled: true
|
||||||
app_setup_block: |
|
app_setup_block: |
|
||||||
@@ -47,6 +49,10 @@ app_setup_block: |
|
|||||||
|
|
||||||
# changelog
|
# changelog
|
||||||
changelogs:
|
changelogs:
|
||||||
|
- { 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: "04.11.18:", desc: "Add php7-zip." }
|
||||||
- { date: "31.10.18:", desc: "Add queue service." }
|
- { date: "31.10.18:", desc: "Add queue service." }
|
||||||
- { date: "17.10.18:", desc: "Symlink avatars folder." }
|
- { date: "17.10.18:", desc: "Symlink avatars folder." }
|
||||||
|
|||||||
@@ -4,12 +4,6 @@
|
|||||||
mkdir -p \
|
mkdir -p \
|
||||||
/config/www/{backgrounds,icons,avatars,SupportedApps}
|
/config/www/{backgrounds,icons,avatars,SupportedApps}
|
||||||
|
|
||||||
# copy .env if not exists
|
|
||||||
[[ ! -f /config/www/.env ]] && \
|
|
||||||
cp /var/www/localhost/heimdall/.env /config/www/.env
|
|
||||||
# set queue driver to database
|
|
||||||
sed -i 's/QUEUE_DRIVER=sync/QUEUE_DRIVER=database/' /config/www/.env
|
|
||||||
|
|
||||||
# create symlinks
|
# create symlinks
|
||||||
|
|
||||||
symlinks=( \
|
symlinks=( \
|
||||||
@@ -26,6 +20,13 @@ do
|
|||||||
[[ ! -L "$i" ]] && ln -s /config/www/"$(basename "$i")" "$i"
|
[[ ! -L "$i" ]] && ln -s /config/www/"$(basename "$i")" "$i"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# copy .env if not exists
|
||||||
|
[[ ! -f /config/www/.env ]] && \
|
||||||
|
cp /var/www/localhost/heimdall/.env.example /config/www/.env && \
|
||||||
|
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
|
# permissions
|
||||||
chown -R abc:abc \
|
chown -R abc:abc \
|
||||||
/config \
|
/config \
|
||||||
|
|||||||
Reference in New Issue
Block a user