Compare commits

..

25 Commits

Author SHA1 Message Date
LinuxServer-CI
26b737c76c Bot Updating Package Versions 2019-05-10 02:38:20 +00:00
LinuxServer-CI
78d9a02ed1 Bot Updating Templated Files 2019-05-02 22:03:15 -04:00
LinuxServer-CI
58e666bbd5 Bot Updating Package Versions 2019-04-19 04:48:08 +02:00
LinuxServer-CI
fadee48d67 Bot Updating Package Versions 2019-04-12 02:30:47 +00:00
Ryan Kuba
0f9f1ef4d3 Extract Tarball on boot (#127)
* reworking logic to untar on first boot and reducing sample size for chown logic as it is not recursive

* bad path in arm variants
2019-03-28 22:53:57 +01:00
LinuxServer-CI
d052b13f92 Bot Updating Package Versions 2019-03-28 04:20:14 -04:00
Ryan Kuba
9d64ee4636 #72 fix chowning (#125)
* #72 only chown once using new logic, rebase to alpine 3.9, increase make threads now that arm boxes are single threaded

* typo
2019-03-28 08:02:54 +01:00
Ryan Kuba
753d0bbe38 Merge pull request #123 from thelamer/master
Switching to new Base images, shift to arm32v7 tag.
2019-03-24 17:10:02 -07:00
LinuxServer-CI
43b924159e Bot Updating Package Versions 2019-03-24 18:08:10 -04:00
LinuxServer-CI
09504f7d5b Bot Updating Templated Files 2019-03-24 21:16:32 +00:00
thelamer
31cd14f4f5 Switching to new Base images, shift to arm32v7 tag. 2019-03-23 22:17:41 -07:00
LinuxServer-CI
56a0b351da Bot Updating Package Versions 2019-03-20 22:33:57 +00:00
LinuxServer-CI
df82e31fe1 Bot Updating Package Versions 2019-03-08 00:58:39 +00:00
aptalca
6e137dbdba Merge pull request #120 from thelamer/master
libiconv shifted to community repos
2019-03-07 18:43:22 -05:00
thelamer
435875e2a3 libiconv shifted to community repos 2019-03-07 14:09:01 -08:00
LinuxServer-CI
6025ca0750 Bot Updating Templated Files 2019-03-07 16:16:49 -05:00
Rasmus
3a4ee7ab9f Bump xmltv to 0.6.1 (#118) 2019-03-02 15:15:33 +01:00
LinuxServer-CI
a2f49bb75b Bot Updating Package Versions 2019-03-01 22:19:05 +00:00
LinuxServer-CI
3659c4708a Bot Updating Templated Files 2019-03-01 16:35:30 -05:00
aptalca
8387285750 Merge pull request #117 from danofun/master
add perl-lwp-useragent-determined which is needed for tv_grab_zz_sdjson_sqlite
2019-03-01 16:34:31 -05:00
LinuxServer-CI
90d21b6f06 Bot Updating Templated Files 2019-03-01 16:16:43 -05:00
danofun
2631706f5b add changelog entry as requested. 2019-02-28 09:34:40 -05:00
danofun
f6e2be9d51 add perl-lwp-useragent 2019-02-27 21:21:15 -05:00
LinuxServer-CI
e6bb2a1641 Bot Updating Package Versions 2019-02-27 19:26:21 -05:00
LinuxServer-CI
a702166af3 Bot Updating Templated Files 2019-02-27 21:16:49 +00:00
8 changed files with 441 additions and 343 deletions

View File

@@ -1,9 +1,9 @@
FROM lsiobase/alpine:3.8 as buildstage FROM lsiobase/alpine:3.9 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.5.70" ARG XMLTV_VER="v0.6.1"
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
@@ -78,6 +78,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -109,7 +110,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -136,7 +137,7 @@ RUN \
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
PERL5LIB=`pwd` && \ PERL5LIB=`pwd` && \
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
make && \ make -j 2 && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
@@ -183,7 +184,7 @@ RUN \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make && \ make -j 2 && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -201,7 +202,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make && \ make -j 2 && \
make check && \ make check && \
make DESTDIR=/tmp/argtable-build install && \ make DESTDIR=/tmp/argtable-build install && \
echo "**** copy to /usr for comskip dependency ****" && \ echo "**** copy to /usr for comskip dependency ****" && \
@@ -215,11 +216,11 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make && \ make -j 2 && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine:3.8 FROM lsiobase/alpine:3.9
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -239,11 +240,11 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.0 \ libcrypto1.1 \
libcurl \ libcurl \
libdvbcsa \ libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.0 \ libssl1.1 \
libva \ libva \
libva-intel-driver \ libva-intel-driver \
libvpx \ libvpx \
@@ -285,6 +286,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -313,19 +315,13 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/tmp/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 && \ https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
tar xf \
/tmp/picons.tar.bz2 -C \
/picons && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*
# copy local files and buildstage artifacts # copy local files and buildstage artifacts
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ COPY --from=buildstage /tmp/argtable-build/usr/ /usr/

View File

@@ -1,9 +1,9 @@
FROM lsiobase/alpine.arm64:3.8 as buildstage FROM lsiobase/alpine:arm64v8-3.9 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.5.70" ARG XMLTV_VER="v0.6.1"
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
@@ -77,6 +77,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -108,7 +109,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -135,7 +136,7 @@ RUN \
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
PERL5LIB=`pwd` && \ PERL5LIB=`pwd` && \
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
make && \ make -j 2 && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
@@ -181,7 +182,7 @@ RUN \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make && \ make -j 2 && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -199,7 +200,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make && \ make -j 2 && \
make check && \ make check && \
make DESTDIR=/tmp/argtable-build install && \ make DESTDIR=/tmp/argtable-build install && \
echo "**** copy to /usr for comskip dependency ****" && \ echo "**** copy to /usr for comskip dependency ****" && \
@@ -213,14 +214,11 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make && \ make -j 2 && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine.arm64:3.8 FROM lsiobase/alpine:arm64v8-3.9
# Add qemu to build on x86_64 systems
COPY qemu-aarch64-static /usr/bin
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -240,11 +238,11 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.0 \ libcrypto1.1 \
libcurl \ libcurl \
libdvbcsa \ libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.0 \ libssl1.1 \
libvpx \ libvpx \
libxml2 \ libxml2 \
libxslt \ libxslt \
@@ -284,6 +282,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -312,19 +311,13 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/tmp/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 && \ https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
tar xf \
/tmp/picons.tar.bz2 -C \
/picons && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*
# copy local files and buildstage artifacts # copy local files and buildstage artifacts
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ COPY --from=buildstage /tmp/argtable-build/usr/ /usr/

View File

@@ -1,9 +1,9 @@
FROM lsiobase/alpine.armhf:3.8 as buildstage FROM lsiobase/alpine:arm32v7-3.9 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.5.70" ARG XMLTV_VER="v0.6.1"
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
@@ -77,6 +77,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -108,7 +109,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -135,7 +136,7 @@ RUN \
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
PERL5LIB=`pwd` && \ PERL5LIB=`pwd` && \
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
make && \ make -j 2 && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
@@ -181,7 +182,7 @@ RUN \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make && \ make -j 2 && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -199,7 +200,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make && \ make -j 2 && \
make check && \ make check && \
make DESTDIR=/tmp/argtable-build install && \ make DESTDIR=/tmp/argtable-build install && \
echo "**** copy to /usr for comskip dependency ****" && \ echo "**** copy to /usr for comskip dependency ****" && \
@@ -213,14 +214,11 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make && \ make -j 2 && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine.armhf:3.8 FROM lsiobase/alpine:arm32v7-3.9
# Add qemu to build on x86_64 systems
COPY qemu-arm-static /usr/bin
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -240,11 +238,11 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.0 \ libcrypto1.1 \
libcurl \ libcurl \
libdvbcsa \ libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.0 \ libssl1.1 \
libvpx \ libvpx \
libxml2 \ libxml2 \
libxslt \ libxslt \
@@ -284,6 +282,7 @@ RUN \
perl-lingua-en-numbers-ordinate \ perl-lingua-en-numbers-ordinate \
perl-lingua-preferred \ perl-lingua-preferred \
perl-list-moreutils \ perl-list-moreutils \
perl-lwp-useragent-determined \
perl-module-build \ perl-module-build \
perl-module-pluggable \ perl-module-pluggable \
perl-net-ssleay \ perl-net-ssleay \
@@ -312,19 +311,13 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://nl.alpinelinux.org/alpine/edge/testing \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/tmp/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 && \ https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
tar xf \
/tmp/picons.tar.bz2 -C \
/picons && \
echo "**** cleanup ****" && \
rm -rf \
/tmp/*
# copy local files and buildstage artifacts # copy local files and buildstage artifacts
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ COPY --from=buildstage /tmp/argtable-build/usr/ /usr/

134
Jenkinsfile vendored
View File

@@ -38,10 +38,10 @@ pipeline {
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases/latest | jq -r '. | .tag_name' ''', script: '''docker run --rm 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() 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' ''',
@@ -132,7 +132,7 @@ 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_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 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 { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -150,7 +150,7 @@ 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_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 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 { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} }
@@ -168,7 +168,7 @@ 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_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 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 { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
} }
@@ -178,6 +178,35 @@ pipeline {
} }
} }
} }
// Run ShellCheck
stage('ShellCheck') {
when {
environment name: 'CI', value: 'true'
}
steps {
withCredentials([
string(credentialsId: 'spaces-key', variable: 'DO_KEY'),
string(credentialsId: 'spaces-secret', variable: 'DO_SECRET')
]) {
script{
env.SHELLCHECK_URL = 'https://lsio-ci.ams3.digitaloceanspaces.com/' + 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 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 \
python /upload.py'''
}
}
}
// Use helper containers to render templated files // Use helper containers to render templated files
stage('Update-Templates') { stage('Update-Templates') {
when { when {
@@ -211,7 +240,7 @@ pipeline {
fi fi
mkdir -p ${TEMPDIR}/gitbook mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation 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 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/ cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
cd ${TEMPDIR}/gitbook/docker-documentation/ cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md git add images/docker-${CONTAINER_NAME}.md
@@ -252,7 +281,7 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh "docker build --no-cache -t ${IMAGE}:${META_TAG} \ sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -265,7 +294,7 @@ pipeline {
parallel { parallel {
stage('Build X86') { stage('Build X86') {
steps { steps {
sh "docker build --no-cache -t ${IMAGE}:amd64-${META_TAG} \ sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
} }
} }
@@ -286,12 +315,13 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
''' '''
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-arm-static -o qemu-arm-static" sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
sh "chmod +x qemu-*"
sh "docker build --no-cache -f Dockerfile.armhf -t ${IMAGE}:arm32v6-${META_TAG} \
--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}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
sh "docker push lsiodev/buildcache:arm32v6-${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} || :'''
} }
} }
} }
@@ -312,12 +342,13 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
''' '''
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-aarch64-static -o qemu-aarch64-static" sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
sh "chmod +x qemu-*"
sh "docker build --no-cache -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} ." --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} || :'''
} }
} }
} }
@@ -341,13 +372,13 @@ pipeline {
fi fi
if [ "${DIST_IMAGE}" == "alpine" ]; then if [ "${DIST_IMAGE}" == "alpine" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\ docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apk info > packages && \ apk info -v > /tmp/package_versions.txt && \
apk info -v > versions && \ sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
paste -d " " packages versions > /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt' chmod 777 /tmp/package_versions.txt'
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\ docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
apt list -qq --installed > /tmp/package_versions.txt && \ apt list -qq --installed | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
chmod 777 /tmp/package_versions.txt' chmod 777 /tmp/package_versions.txt'
fi fi
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 ) NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
@@ -427,9 +458,9 @@ pipeline {
set -e 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:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${META_TAG} 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 tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi fi
docker run --rm \ docker run --rm \
@@ -479,6 +510,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 || :'''
} }
} }
} }
@@ -502,30 +537,39 @@ pipeline {
''' '''
sh '''#! /bin/bash sh '''#! /bin/bash
if [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${META_TAG} 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 tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi''' fi'''
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-latest" sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-latest"
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm32v6-latest" sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-latest"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest"
sh "docker push ${IMAGE}:amd64-${META_TAG}" sh "docker push ${IMAGE}:amd64-${META_TAG}"
sh "docker push ${IMAGE}:arm32v6-${META_TAG}" sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
sh "docker push ${IMAGE}:arm64v8-${META_TAG}" sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
sh "docker push ${IMAGE}:amd64-latest" sh "docker push ${IMAGE}:amd64-latest"
sh "docker push ${IMAGE}:arm32v6-latest" sh "docker push ${IMAGE}:arm32v7-latest"
sh "docker push ${IMAGE}:arm64v8-latest" sh "docker push ${IMAGE}:arm64v8-latest"
sh "docker manifest push --purge ${IMAGE}:latest || :" sh "docker manifest push --purge ${IMAGE}:latest || :"
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}:arm32v7-latest ${IMAGE}:arm64v8-latest"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v6-latest --os linux --arch arm" sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v7-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}:${META_TAG} || :" 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}:arm32v7-${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}: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 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}:arm32v7-${META_TAG} \
${IMAGE}:arm32v7-latest \
${IMAGE}:arm64v8-${META_TAG} \
${IMAGE}:arm64v8-latest \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
} }
} }
} }
@@ -534,25 +578,25 @@ pipeline {
when { when {
branch "master" branch "master"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-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_CLEAN}-pkg-${PACKAGE_TAG}-ls${LS_TAG_NUMBER}" echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-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_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\ -d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-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}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\ echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "master",\ "target_commitish": "master",\
"name": "'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\ "name": "'${EXT_RELEASE_CLEAN}'-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
@@ -586,6 +630,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: \\n'${CI_URL}' \\n'${SHELLCHECK_URL}'"}' '''
}
}
} }
/* ###################### /* ######################
Send status to Discord Send status to Discord
@@ -598,12 +654,12 @@ pipeline {
} }
else if (currentBuild.currentResult == "SUCCESS"){ 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 --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**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "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} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
else { 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 --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**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "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} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
} }

View File

@@ -12,13 +12,6 @@ Find us at:
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. * [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. * [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! * [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).
# 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/tvheadend](https://github.com/linuxserver/docker-tvheadend) # [linuxserver/tvheadend](https://github.com/linuxserver/docker-tvheadend)
[![](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn) [![](https://img.shields.io/discord/354974912613449730.svg?logo=discord&label=LSIO%20Discord&style=flat-square)](https://discord.gg/YWrKVTn)
@@ -38,7 +31,7 @@ Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV D
## 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/tvheadend` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `linuxserver/tvheadend` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
@@ -48,7 +41,7 @@ The architectures supported by this image are:
| :----: | --- | | :----: | --- |
| x86-64 | amd64-latest | | x86-64 | amd64-latest |
| arm64 | arm64v8-latest | | arm64 | arm64v8-latest |
| armhf | arm32v6-latest | | armhf | arm32v7-latest |
## Version Tags ## Version Tags
@@ -70,8 +63,8 @@ Here are some example snippets to help you get started creating a container.
``` ```
docker create \ docker create \
--name=tvheadend \ --name=tvheadend \
-e PUID=1001 \ -e PUID=1000 \
-e PGID=1001 \ -e PGID=1000 \
-e TZ=Europe/London \ -e TZ=Europe/London \
-e RUN_OPTS=<run options here> `#optional` \ -e RUN_OPTS=<run options here> `#optional` \
-p 9981:9981 \ -p 9981:9981 \
@@ -101,8 +94,8 @@ services:
image: linuxserver/tvheadend image: linuxserver/tvheadend
container_name: tvheadend container_name: tvheadend
environment: environment:
- PUID=1001 - PUID=1000
- PGID=1001 - PGID=1000
- TZ=Europe/London - TZ=Europe/London
- RUN_OPTS=<run options here> #optional - RUN_OPTS=<run options here> #optional
volumes: volumes:
@@ -114,7 +107,6 @@ services:
devices: devices:
- /dev/dri:/dev/dri #optional - /dev/dri:/dev/dri #optional
- /dev/drb:/dev/dvb #optional - /dev/drb:/dev/dvb #optional
mem_limit: 4096m
restart: unless-stopped restart: unless-stopped
``` ```
@@ -126,8 +118,8 @@ Container images are configured using parameters passed at runtime (such as thos
| :----: | --- | | :----: | --- |
| `-p 9981` | WebUI | | `-p 9981` | WebUI |
| `-p 9982` | HTSP server port. | | `-p 9982` | HTSP server port. |
| `-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. |
| `-e RUN_OPTS=<run options here>` | Optionally specify additional arguments to be passed. See Additional runtime parameters. | | `-e RUN_OPTS=<run options here>` | Optionally specify additional arguments to be passed. See Additional runtime parameters. |
| `-v /config` | Where TVHeadend show store it's config files. | | `-v /config` | Where TVHeadend show store it's config files. |
@@ -141,11 +133,11 @@ 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)
``` ```
@@ -236,12 +228,47 @@ Below are the instructions for updating containers:
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images: `docker image prune`
### Via Docker Compose ### Via Docker Compose
* Update the image: `docker-compose pull linuxserver/tvheadend` * Update all images: `docker-compose pull`
* Let compose update containers as necessary: `docker-compose up -d` * or update a single image: `docker-compose pull tvheadend`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d tvheadend`
* You can also remove the old dangling images: `docker image prune` * 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)
* Pull the latest image at its tag and replace it with the same env variables in one run:
```
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once tvheadend
```
* You can also remove the old dangling images: `docker image prune`
## Building locally
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-tvheadend.git
cd docker-tvheadend
docker build \
--no-cache \
--pull \
-t linuxserver/tvheadend: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`.
## Versions ## Versions
* **27.03.19:** - Rebase to Alpine 3.9, fix init logic to only chown once.
* **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
* **01.03.19:** - Bump xmltv to 0.6.1.
* **28.02.19:** - add perl-lwp-useragent-determined.
* **17.02.19:** - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend. * **17.02.19:** - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.
* **14.02.19:** - Add picons path to config. * **14.02.19:** - Add picons path to config.
* **15.01.19:** - Add pipeline logic and multi arch. * **15.01.19:** - Add pipeline logic and multi arch.

View File

@@ -1,216 +1,218 @@
musl musl-1.1.19-r10 alpine-baselayout-3.1.0-r3
busybox busybox-1.28.4-r3 alpine-keys-2.1-r1
alpine-baselayout alpine-baselayout-3.1.0-r0 alsa-lib-1.1.8-r0
alpine-keys alpine-keys-2.1-r1 apk-tools-2.10.3-r1
libressl2.7-libcrypto libressl2.7-libcrypto-2.7.4-r0 bash-4.4.19-r1
libressl2.7-libssl libressl2.7-libssl-2.7.4-r0 bsd-compat-headers-0.7.1-r0
libressl2.7-libtls libressl2.7-libtls-2.7.4-r0 busybox-1.29.3-r10
ssl_client ssl_client-1.28.4-r3 bzip2-1.0.6-r6
zlib zlib-1.2.11-r1 ca-certificates-20190108-r0
apk-tools apk-tools-2.10.1-r0 ca-certificates-cacert-20190108-r0
scanelf scanelf-1.2.3-r0 coreutils-8.30-r0
musl-utils musl-utils-1.1.19-r10 curl-7.64.0-r1
libc-utils libc-utils-0.7.1-r0 expat-2.2.6-r0
xz-libs xz-libs-5.2.4-r0 ffmpeg-4.0.2-r0
xz xz-5.2.4-r0 ffmpeg-libs-4.0.2-r0
ca-certificates ca-certificates-20171114-r3 fontconfig-2.13.1-r0
ncurses-terminfo-base ncurses-terminfo-base-6.1_p20180818-r1 freetype-2.9.1-r2
ncurses-terminfo ncurses-terminfo-6.1_p20180818-r1 fribidi-1.0.5-r0
ncurses-libs ncurses-libs-6.1_p20180818-r1 gdbm-1.13-r1
readline readline-7.0.003-r0 gmp-6.1.2-r1
bash bash-4.4.19-r1 gnu-libiconv-1.15-r2
libattr libattr-2.4.47-r7 gnutls-3.6.7-r0
libacl libacl-2.2.52-r5 gzip-1.10-r0
coreutils coreutils-8.29-r2 lame-3.100-r0
linux-pam linux-pam-1.3.0-r0 libacl-2.2.52-r5
shadow shadow-4.5-r0 libass-0.14.0-r0
tzdata tzdata-2018f-r0 libattr-2.4.47-r7
bsd-compat-headers bsd-compat-headers-0.7.1-r0 libbsd-0.8.6-r2
bzip2 bzip2-1.0.6-r6 libbz2-1.0.6-r6
nghttp2-libs nghttp2-libs-1.32.0-r0 libc-utils-0.7.1-r0
libssh2 libssh2-1.8.0-r3 libcrypto1.1-1.1.1b-r1
libcurl libcurl-7.61.1-r1 libcurl-7.64.0-r1
curl curl-7.61.1-r1 libdrm-2.4.96-r0
sdl2 sdl2-2.0.8-r1 libdvbcsa-1.1.0-r1
libxau libxau-1.0.8-r2 libffi-3.2.1-r6
libbsd libbsd-0.8.6-r2 libgcc-8.3.0-r0
libxdmcp libxdmcp-1.1.2-r4 libgcrypt-1.8.4-r0
libxcb libxcb-1.13-r2 libgpg-error-1.33-r0
libx11 libx11-1.6.6-r0 libhdhomerun-libs-20161117-r1
alsa-lib alsa-lib-1.1.6-r0 libidn-1.35-r0
expat expat-2.2.5-r0 libjpeg-turbo-1.5.3-r4
libbz2 libbz2-1.0.6-r6 libogg-1.3.3-r2
libpng libpng-1.6.34-r1 libpciaccess-0.14-r0
freetype freetype-2.9.1-r1 libpng-1.6.37-r0
fontconfig fontconfig-2.12.6-r1 libssh2-1.8.2-r0
fribidi fribidi-1.0.2-r0 libssl1.1-1.1.1b-r1
libass libass-0.13.7-r1 libstdc++-8.3.0-r0
gmp gmp-6.1.2-r1 libtasn1-4.13-r0
nettle nettle-3.4-r1 libtheora-1.1.1-r13
libffi libffi-3.2.1-r4 libtls-standalone-2.7.4-r6
p11-kit p11-kit-0.23.10-r0 libunistring-0.9.10-r0
libtasn1 libtasn1-4.13-r0 libuuid-2.33-r0
libunistring libunistring-0.9.7-r0 libva-2.2.0-r0
gnutls gnutls-3.6.2-r0 libva-intel-driver-2.2.0-r0
lame lame-3.100-r0 libvdpau-1.1.1-r2
opus opus-1.2.1-r1 libvorbis-1.3.6-r2
librtmp librtmp-2.4_git20160909-r5 libvpx-1.6.1-r1
libogg libogg-1.3.3-r2 libx11-1.6.7-r0
libtheora libtheora-1.1.1-r13 libxau-1.0.8-r3
libjpeg-turbo libjpeg-turbo-1.5.3-r4 libxcb-1.13-r2
v4l-utils-libs v4l-utils-libs-1.12.6-r1 libxdmcp-1.1.2-r5
libxext libxext-1.3.3-r2 libxext-1.3.3-r3
libxfixes libxfixes-5.0.3-r1 libxfixes-5.0.3-r2
libpciaccess libpciaccess-0.13.5-r1 libxml2-2.9.9-r1
libdrm libdrm-2.4.92-r0 libxslt-1.1.33-r1
libva libva-2.1.0-r1 linux-headers-4.18.13-r1
libvdpau libvdpau-1.1.1-r1 linux-pam-1.3.0-r0
libvorbis libvorbis-1.3.6-r2 musl-1.1.20-r4
libvpx libvpx-1.6.1-r0 musl-utils-1.1.20-r4
x264-libs x264-libs-20180304-r1 ncurses-libs-6.1_p20190105-r0
libgcc libgcc-6.4.0-r9 ncurses-terminfo-6.1_p20190105-r0
libstdc++ libstdc++-6.4.0-r9 ncurses-terminfo-base-6.1_p20190105-r0
x265 x265-2.7-r1 nettle-3.4.1-r0
xvidcore xvidcore-1.3.4-r1 nghttp2-libs-1.35.1-r0
ffmpeg-libs ffmpeg-libs-3.4.4-r1 openssl-1.1.1b-r1
ffmpeg ffmpeg-3.4.4-r1 opus-1.3-r0
gzip gzip-1.9-r0 p11-kit-0.23.14-r0
libcrypto1.0 libcrypto1.0-1.0.2q-r0 pcre2-10.32-r1
libdvbcsa libdvbcsa-1.1.0-r1 perl-5.26.3-r0
libhdhomerun-libs libhdhomerun-libs-20161117-r1 perl-archive-zip-1.64-r0
libssl1.0 libssl1.0-1.0.2q-r0 perl-b-hooks-endofscope-0.24-r0
libva-intel-driver libva-intel-driver-2.1.0-r0 perl-boolean-0.46-r0
libxml2 libxml2-2.9.8-r1 perl-capture-tiny-0.48-r0
libgpg-error libgpg-error-1.30-r0 perl-cgi-4.40-r0
libgcrypt libgcrypt-1.8.3-r0 perl-class-data-inheritable-0.08-r0
libxslt libxslt-1.1.32-r0 perl-class-inspector-1.32-r0
linux-headers linux-headers-4.4.6-r2 perl-class-methodmaker-2.24-r2
openssl openssl-1.0.2q-r0 perl-class-singleton-1.5-r0
pcre2 pcre2-10.31-r0 perl-compress-raw-bzip2-2.084-r0
perl perl-5.26.3-r0 perl-compress-raw-zlib-2.084-r0
perl-archive-zip perl-archive-zip-1.60-r0 perl-cpan-meta-check-0.014-r1
perl-boolean perl-boolean-0.46-r0 perl-data-dumper-2.173-r0
perl-capture-tiny perl-capture-tiny-0.48-r0 perl-date-manip-6.75-r1
perl-html-tagset perl-html-tagset-3.20-r1 perl-datetime-1.44-r0
perl-html-parser perl-html-parser-3.72-r2 perl-datetime-format-strptime-1.74-r0
perl-cgi perl-cgi-4.38-r0 perl-datetime-locale-1.22-r0
perl-compress-raw-zlib perl-compress-raw-zlib-2.081-r0 perl-datetime-timezone-2.19-r0
perl-data-dumper perl-data-dumper-2.161-r2 perl-dbd-sqlite-1.62-r0
perl-yaml-syck perl-yaml-syck-1.30-r1 perl-dbi-1.642-r0
perl-date-manip perl-date-manip-6.70-r0 perl-devel-stacktrace-2.03-r0
perl-cpan-meta-check perl-cpan-meta-check-0.014-r1 perl-devel-symdump-2.18-r0
perl-exporter-tiny perl-exporter-tiny-1.000000-r0 perl-digest-sha1-2.13-r9
perl-list-moreutils perl-list-moreutils-0.419-r1 perl-dist-checkconflicts-0.11-r1
perl-module-runtime perl-module-runtime-0.016-r0 perl-doc-5.26.3-r0
perl-dist-checkconflicts perl-dist-checkconflicts-0.11-r1 perl-encode-locale-1.05-r1
perl-class-inspector perl-class-inspector-1.28-r1 perl-eval-closure-0.14-r0
perl-file-sharedir perl-file-sharedir-1.106-r0 perl-exception-class-1.44-r0
perl-file-sharedir-install perl-file-sharedir-install-0.11-r0 perl-exporter-tiny-1.002001-r0
perl-sub-exporter-progressive perl-sub-exporter-progressive-0.001013-r0 perl-file-listing-6.04-r1
perl-devel-symdump perl-devel-symdump-2.18-r0 perl-file-sharedir-1.116-r0
perl-test-pod perl-test-pod-1.52-r0 perl-file-sharedir-install-0.13-r0
perl-pod-coverage perl-pod-coverage-0.23-r0 perl-file-slurp-9999.25-r0
perl-try-tiny perl-try-tiny-0.30-r0 perl-file-temp-0.2308-r0
perl-test-taint perl-test-taint-1.06-r5 perl-file-which-1.22-r0
perl-module-implementation perl-module-implementation-0.09-r1 perl-getopt-long-2.50-r0
perl-variable-magic perl-variable-magic-0.62-r0 perl-html-parser-3.72-r2
perl-b-hooks-endofscope perl-b-hooks-endofscope-0.24-r0 perl-html-tagset-3.20-r1
perl-package-stash-xs perl-package-stash-xs-0.28-r4 perl-html-tree-5.07-r0
perl-package-stash perl-package-stash-0.37-r0 perl-http-cookies-6.04-r0
perl-sub-name perl-sub-name-0.21-r1 perl-http-daemon-6.01-r1
perl-sub-identify perl-sub-identify-0.14-r1 perl-http-date-6.02-r1
perl-namespace-clean perl-namespace-clean-0.27-r0 perl-http-message-6.18-r0
perl-namespace-autoclean perl-namespace-autoclean-0.28-r0 perl-http-negotiate-6.01-r1
perl-params-validate perl-params-validate-1.28-r0 perl-importer-0.025-r0
perl-test-needs perl-test-needs-0.002005-r1 perl-io-1.25-r4
perl-devel-stacktrace perl-devel-stacktrace-2.02-r0 perl-io-compress-2.084-r0
perl-eval-closure perl-eval-closure-0.14-r0 perl-io-html-1.001-r1
perl-mro-compat perl-mro-compat-0.13-r0 perl-io-socket-ssl-2.060-r0
perl-role-tiny perl-role-tiny-2.000005-r0 perl-io-stringy-2.111-r1
perl-test-fatal perl-test-fatal-0.014-r1 perl-ipc-run3-0.048-r0
perl-sub-quote perl-sub-quote-2.004000-r0 perl-json-2.97000-r0
perl-specio perl-specio-0.42-r0 perl-libwww-6.36-r0
perl-test-simple perl-test-simple-1.302136-r0 perl-lingua-en-numbers-ordinate-1.04-r1
perl-importer perl-importer-0.025-r0 perl-lingua-preferred-0.2.4-r1
perl-term-table perl-term-table-0.012-r0 perl-list-moreutils-0.419-r1
perl-sub-info perl-sub-info-0.002-r0 perl-lwp-mediatypes-6.02-r1
perl-scope-guard perl-scope-guard-0.21-r0 perl-lwp-useragent-determined-1.07-r0
perl-module-pluggable perl-module-pluggable-5.2-r0 perl-module-build-0.4224-r0
perl-test2-suite perl-test2-suite-0.000114-r0 perl-module-implementation-0.09-r1
perl-test-without-module perl-test-without-module-0.20-r0 perl-module-pluggable-5.2-r0
perl-class-data-inheritable perl-class-data-inheritable-0.08-r0 perl-module-runtime-0.016-r1
perl-exception-class perl-exception-class-1.44-r0 perl-mro-compat-0.13-r0
perl-ipc-run3 perl-ipc-run3-0.048-r0 perl-namespace-autoclean-0.28-r0
perl-test2-plugin-nowarnings perl-test2-plugin-nowarnings-0.06-r0 perl-namespace-clean-0.27-r0
perl-params-validationcompiler perl-params-validationcompiler-0.24-r1 perl-net-http-6.09-r1
perl-scalar-list-utils perl-scalar-list-utils-1.50-r0 perl-net-libidn-0.12-r5
perl-test-requires perl-test-requires-0.10-r0 perl-net-ssleay-1.85-r4
perl-test-warnings perl-test-warnings-0.026-r0 perl-package-deprecationmanager-0.17-r0
perl-datetime-locale perl-datetime-locale-1.18-r0 perl-package-stash-0.37-r0
perl-class-singleton perl-class-singleton-1.5-r0 perl-package-stash-xs-0.28-r4
perl-datetime-timezone perl-datetime-timezone-2.19-r0 perl-params-classify-0.015-r0
perl-datetime perl-datetime-1.44-r0 perl-params-util-1.07-r5
perl-sub-install perl-sub-install-0.928-r1 perl-params-validate-1.29-r0
perl-params-util perl-params-util-1.07-r5 perl-params-validationcompiler-0.27-r0
perl-package-deprecationmanager perl-package-deprecationmanager-0.17-r0 perl-parse-recdescent-1.967015-r1
perl-datetime-format-strptime perl-datetime-format-strptime-1.74-r0 perl-path-class-0.37-r0
perl-dbi perl-dbi-1.641-r0 perl-pod-coverage-0.23-r0
perl-dbd-sqlite perl-dbd-sqlite-1.58-r0 perl-role-tiny-2.000006-r0
perl-digest-sha1 perl-digest-sha1-2.13-r9 perl-scalar-list-utils-1.50-r0
perl-doc perl-doc-5.26.3-r0 perl-scope-guard-0.21-r0
perl-file-slurp perl-file-slurp-9999.19-r0 perl-specio-0.42-r0
perl-file-temp perl-file-temp-0.2304-r0 perl-sub-exporter-progressive-0.001013-r0
perl-file-which perl-file-which-1.22-r0 perl-sub-identify-0.14-r1
perl-getopt-long perl-getopt-long-2.50-r0 perl-sub-info-0.002-r0
perl-html-tree perl-html-tree-5.07-r0 perl-sub-install-0.928-r1
perl-http-date perl-http-date-6.02-r1 perl-sub-name-0.21-r1
perl-lwp-mediatypes perl-lwp-mediatypes-6.02-r1 perl-sub-quote-2.004000-r0
perl-encode-locale perl-encode-locale-1.05-r1 perl-sub-uplevel-0.2800-r0
perl-uri perl-uri-1.72-r0 perl-term-progressbar-2.22-r0
perl-io-html perl-io-html-1.001-r1 perl-term-readkey-2.37-r1
perl-http-message perl-http-message-6.15-r0 perl-term-table-0.012-r0
perl-http-cookies perl-http-cookies-6.04-r0 perl-test-exception-0.43-r0
perl-io perl-io-1.25-r4 perl-test-fatal-0.014-r1
perl-compress-raw-bzip2 perl-compress-raw-bzip2-2.081-r0 perl-test-needs-0.002005-r1
perl-io-compress perl-io-compress-2.081-r0 perl-test-pod-1.52-r0
libidn libidn-1.34-r1 perl-test-requires-0.10-r0
perl-net-libidn perl-net-libidn-0.12-r4 perl-test-simple-1.302141-r0
perl-net-ssleay perl-net-ssleay-1.85-r1 perl-test-taint-1.06-r5
perl-io-socket-ssl perl-io-socket-ssl-2.048-r1 perl-test-warnings-0.026-r0
perl-io-stringy perl-io-stringy-2.111-r1 perl-test-without-module-0.20-r0
perl-json perl-json-2.97000-r0 perl-test2-plugin-nowarnings-0.06-r0
perl-net-http perl-net-http-6.09-r1 perl-test2-suite-0.000114-r0
perl-http-daemon perl-http-daemon-6.01-r1 perl-timedate-2.30-r1
perl-file-listing perl-file-listing-6.04-r1 perl-try-tiny-0.30-r0
perl-www-robotrules perl-www-robotrules-6.02-r1 perl-unicode-string-2.09-r6
perl-http-negotiate perl-http-negotiate-6.01-r1 perl-uri-1.74-r0
perl-libwww perl-libwww-6.34-r0 perl-variable-magic-0.62-r0
perl-lingua-en-numbers-ordinate perl-lingua-en-numbers-ordinate-1.04-r1 perl-www-robotrules-6.02-r1
perl-lingua-preferred perl-lingua-preferred-0.2.4-r1 perl-xml-libxml-2.0132-r1
perl-module-build perl-module-build-0.4224-r0 perl-xml-libxslt-1.96-r0
perl-parse-recdescent perl-parse-recdescent-1.967015-r1 perl-xml-namespacesupport-1.12-r0
perl-path-class perl-path-class-0.37-r0 perl-xml-parser-2.44-r4
perl-class-methodmaker perl-class-methodmaker-2.24-r2 perl-xml-sax-0.99-r2
perl-term-readkey perl-term-readkey-2.37-r1 perl-xml-sax-base-1.09-r0
perl-sub-uplevel perl-sub-uplevel-0.2800-r0 perl-xml-treepp-0.43-r1
perl-test-exception perl-test-exception-0.43-r0 perl-xml-twig-3.52-r1
perl-term-progressbar perl-term-progressbar-2.22-r0 perl-xml-writer-0.625-r2
perl-timedate perl-timedate-2.30-r1 perl-yaml-syck-1.31-r0
perl-unicode-string perl-unicode-string-2.09-r6 python2-2.7.16-r1
perl-xml-sax-base perl-xml-sax-base-1.09-r0 readline-7.0.003-r1
perl-xml-namespacesupport perl-xml-namespacesupport-1.12-r0 scanelf-1.2.3-r0
perl-xml-sax perl-xml-sax-0.99-r2 sdl2-2.0.9-r0
perl-xml-libxml perl-xml-libxml-2.0132-r1 shadow-4.5-r0
perl-xml-libxslt perl-xml-libxslt-1.96-r0 sqlite-libs-3.26.0-r3
perl-xml-parser perl-xml-parser-2.44-r4 ssl_client-1.29.3-r10
perl-xml-treepp perl-xml-treepp-0.43-r1 tar-1.32-r0
perl-xml-twig perl-xml-twig-3.52-r1 tzdata-2019a-r0
perl-xml-writer perl-xml-writer-0.625-r2 uriparser-0.9.1-r0
gdbm gdbm-1.13-r1 v4l-utils-libs-1.16.2-r0
sqlite-libs sqlite-libs-3.25.3-r0 wget-1.20.3-r0
python2 python2-2.7.15-r1 x264-20180304-r1
tar tar-1.31-r0 x264-libs-20180304-r1
uriparser uriparser-0.8.5-r0 x265-2.8-r1
wget wget-1.20.1-r0 x265-libs-2.8-r1
x264 x264-20180304-r1 xvidcore-1.3.4-r1
gnu-libiconv gnu-libiconv-1.15-r2 xz-5.2.4-r0
xz-libs-5.2.4-r0
zlib-1.2.11-r1

View File

@@ -15,7 +15,7 @@ project_blurb_optional_extras_enabled: false
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v6-latest"} - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# development version # development version
# development version # development version
@@ -125,6 +125,10 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "27.03.19:", desc: "Rebase to Alpine 3.9, fix init logic to only chown once." }
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- { date: "01.03.19:", desc: "Bump xmltv to 0.6.1." }
- { date: "28.02.19:", desc: "add perl-lwp-useragent-determined." }
- { date: "17.02.19:", desc: "Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend." } - { date: "17.02.19:", desc: "Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend." }
- { date: "14.02.19:", desc: "Add picons path to config." } - { date: "14.02.19:", desc: "Add picons path to config." }
- { date: "15.01.19:", desc: "Add pipeline logic and multi arch." } - { date: "15.01.19:", desc: "Add pipeline logic and multi arch." }

View File

@@ -12,8 +12,35 @@ mkdir -p \
[[ ! -e /config/config ]] && \ [[ ! -e /config/config ]] && \
(cp /defaults/config /config/config) (cp /defaults/config /config/config)
# extract picons on first run
[[ -f /picons.tar.bz2 ]] && \
tar xf \
/picons.tar.bz2 -C \
/picons &&
rm -f /picons.tar.bz2
# permissions # function to randomly sample 5 files for their owner and only chown if not abc
chown -R abc:abc \ chowner () {
/config \ files=(${1}/*)
/picons for i in {1..5}; do
user=$(stat -c '%U' $(printf "%s\n" "${files[RANDOM % ${#files[@]}]}"))
if [ "${user}" != "abc" ]; then
chown -R abc:abc ${1}
break
fi
done
}
# permissions
echo "Setting permissions"
abc_dirs=( \
/config \
/picons \
)
for i in "${abc_dirs[@]}"; do
if [ "$(ls -A ${i})" ]; then
chowner ${i}
else
chown -R abc:abc ${i}
fi
done