forked from Ivasoft/docker-tvheadend
Compare commits
38 Commits
c54f303c-p
...
466a0143-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46a3cbb580 | ||
|
|
26b737c76c | ||
|
|
78d9a02ed1 | ||
|
|
58e666bbd5 | ||
|
|
fadee48d67 | ||
|
|
0f9f1ef4d3 | ||
|
|
d052b13f92 | ||
|
|
9d64ee4636 | ||
|
|
753d0bbe38 | ||
|
|
43b924159e | ||
|
|
09504f7d5b | ||
|
|
31cd14f4f5 | ||
|
|
56a0b351da | ||
|
|
df82e31fe1 | ||
|
|
6e137dbdba | ||
|
|
435875e2a3 | ||
|
|
6025ca0750 | ||
|
|
3a4ee7ab9f | ||
|
|
a2f49bb75b | ||
|
|
3659c4708a | ||
|
|
8387285750 | ||
|
|
90d21b6f06 | ||
|
|
2631706f5b | ||
|
|
f6e2be9d51 | ||
|
|
e6bb2a1641 | ||
|
|
a702166af3 | ||
|
|
9dceb0a4ce | ||
|
|
22ed8475c7 | ||
|
|
c7ce0c4832 | ||
|
|
822dbde249 | ||
|
|
cd3964e06c | ||
|
|
70f300d86a | ||
|
|
25979ad455 | ||
|
|
1306f8cf2d | ||
|
|
f19ad9ca20 | ||
|
|
c0a37a6b8b | ||
|
|
dca4b0ed9b | ||
|
|
8768cdb702 |
44
Dockerfile
44
Dockerfile
@@ -1,9 +1,9 @@
|
||||
FROM lsiobase/alpine:3.8 as buildstage
|
||||
FROM lsiobase/alpine:3.9 as buildstage
|
||||
############## build stage ##############
|
||||
|
||||
# package versions
|
||||
ARG ARGTABLE_VER="2.13"
|
||||
ARG XMLTV_VER="0.5.69"
|
||||
ARG XMLTV_VER="v0.6.1"
|
||||
|
||||
# environment settings
|
||||
ARG TZ="Europe/Oslo"
|
||||
@@ -78,6 +78,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -109,7 +110,7 @@ RUN \
|
||||
x265-dev \
|
||||
zlib-dev && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv-dev
|
||||
|
||||
RUN \
|
||||
@@ -124,13 +125,9 @@ RUN \
|
||||
|
||||
RUN \
|
||||
echo "**** compile XMLTV ****" && \
|
||||
curl -o \
|
||||
/tmp/xmtltv-src.tar.bz2 -L \
|
||||
"https://sourceforge.net/projects/xmltv/files/xmltv/${XMLTV_VER}/xmltv-${XMLTV_VER}.tar.bz2" && \
|
||||
tar xf \
|
||||
/tmp/xmtltv-src.tar.bz2 -C \
|
||||
/tmp --strip-components=1 && \
|
||||
cd "/tmp/xmltv-${XMLTV_VER}" && \
|
||||
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \
|
||||
cd /tmp/xmltv && \
|
||||
git checkout ${XMLTV_VER} && \
|
||||
echo "**** Perl 5.26 fixes for XMTLV ****" && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
|
||||
@@ -140,7 +137,7 @@ RUN \
|
||||
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
|
||||
PERL5LIB=`pwd` && \
|
||||
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make test && \
|
||||
make DESTDIR=/tmp/xmltv-build install
|
||||
|
||||
@@ -150,15 +147,11 @@ RUN \
|
||||
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
|
||||
| jq -r '. | .sha'); \
|
||||
fi && \
|
||||
curl -o \
|
||||
/tmp/tvheadend.tar.gz -L \
|
||||
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
|
||||
mkdir -p \
|
||||
/tmp/tvheadend && \
|
||||
tar xf \
|
||||
/tmp/tvheadend.tar.gz -C \
|
||||
/tmp/tvheadend/ --strip-components=1 && \
|
||||
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
|
||||
cd /tmp/tvheadend && \
|
||||
git checkout ${TVHEADEND_COMMIT} && \
|
||||
./configure \
|
||||
`#Encoding` \
|
||||
--disable-ffmpeg_static \
|
||||
@@ -191,7 +184,7 @@ RUN \
|
||||
--mandir=/usr/share/man \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/config && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/tvheadend-build install
|
||||
|
||||
RUN \
|
||||
@@ -209,7 +202,7 @@ RUN \
|
||||
cd /tmp/argtable && \
|
||||
./configure \
|
||||
--prefix=/usr && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make check && \
|
||||
make DESTDIR=/tmp/argtable-build install && \
|
||||
echo "**** copy to /usr for comskip dependency ****" && \
|
||||
@@ -223,11 +216,11 @@ RUN \
|
||||
./configure \
|
||||
--bindir=/usr/bin \
|
||||
--sysconfdir=/config/comskip && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/comskip-build install
|
||||
|
||||
############## runtime stage ##############
|
||||
FROM lsiobase/alpine:3.8
|
||||
FROM lsiobase/alpine:3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@@ -247,11 +240,11 @@ RUN \
|
||||
ffmpeg \
|
||||
ffmpeg-libs \
|
||||
gzip \
|
||||
libcrypto1.0 \
|
||||
libcrypto1.1 \
|
||||
libcurl \
|
||||
libdvbcsa \
|
||||
libhdhomerun-libs \
|
||||
libssl1.0 \
|
||||
libssl1.1 \
|
||||
libva \
|
||||
libva-intel-driver \
|
||||
libvpx \
|
||||
@@ -293,6 +286,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -321,12 +315,12 @@ RUN \
|
||||
x265 \
|
||||
zlib && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv && \
|
||||
echo "**** Add Picons ****" && \
|
||||
mkdir -p /picons && \
|
||||
curl -o \
|
||||
/picons/picons.tar.bz2 -L \
|
||||
/picons.tar.bz2 -L \
|
||||
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
|
||||
|
||||
# copy local files and buildstage artifacts
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
FROM lsiobase/alpine.arm64:3.8 as buildstage
|
||||
FROM lsiobase/alpine:arm64v8-3.9 as buildstage
|
||||
############## build stage ##############
|
||||
|
||||
# package versions
|
||||
ARG ARGTABLE_VER="2.13"
|
||||
ARG XMLTV_VER="0.5.69"
|
||||
ARG XMLTV_VER="v0.6.1"
|
||||
|
||||
# environment settings
|
||||
ARG TZ="Europe/Oslo"
|
||||
@@ -77,6 +77,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -108,7 +109,7 @@ RUN \
|
||||
x265-dev \
|
||||
zlib-dev && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv-dev
|
||||
|
||||
RUN \
|
||||
@@ -123,13 +124,9 @@ RUN \
|
||||
|
||||
RUN \
|
||||
echo "**** compile XMLTV ****" && \
|
||||
curl -o \
|
||||
/tmp/xmtltv-src.tar.bz2 -L \
|
||||
"https://sourceforge.net/projects/xmltv/files/xmltv/${XMLTV_VER}/xmltv-${XMLTV_VER}.tar.bz2" && \
|
||||
tar xf \
|
||||
/tmp/xmtltv-src.tar.bz2 -C \
|
||||
/tmp --strip-components=1 && \
|
||||
cd "/tmp/xmltv-${XMLTV_VER}" && \
|
||||
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \
|
||||
cd /tmp/xmltv && \
|
||||
git checkout ${XMLTV_VER} && \
|
||||
echo "**** Perl 5.26 fixes for XMTLV ****" && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
|
||||
@@ -139,25 +136,21 @@ RUN \
|
||||
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
|
||||
PERL5LIB=`pwd` && \
|
||||
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make test && \
|
||||
make DESTDIR=/tmp/xmltv-build install
|
||||
|
||||
RUN \
|
||||
echo "**** compile tvheadend ****" && \
|
||||
if [ -z ${TVHEADEND_COMMIT+x} ]; then \
|
||||
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
|
||||
| jq -r '. | .sha'); \
|
||||
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
|
||||
| jq -r '. | .sha'); \
|
||||
fi && \
|
||||
curl -o \
|
||||
/tmp/tvheadend.tar.gz -L \
|
||||
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
|
||||
mkdir -p \
|
||||
/tmp/tvheadend && \
|
||||
tar xf \
|
||||
/tmp/tvheadend.tar.gz -C \
|
||||
/tmp/tvheadend/ --strip-components=1 && \
|
||||
/tmp/tvheadend && \
|
||||
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
|
||||
cd /tmp/tvheadend && \
|
||||
git checkout ${TVHEADEND_COMMIT} && \
|
||||
./configure \
|
||||
`#Encoding` \
|
||||
--disable-ffmpeg_static \
|
||||
@@ -189,7 +182,7 @@ RUN \
|
||||
--mandir=/usr/share/man \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/config && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/tvheadend-build install
|
||||
|
||||
RUN \
|
||||
@@ -207,7 +200,7 @@ RUN \
|
||||
cd /tmp/argtable && \
|
||||
./configure \
|
||||
--prefix=/usr && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make check && \
|
||||
make DESTDIR=/tmp/argtable-build install && \
|
||||
echo "**** copy to /usr for comskip dependency ****" && \
|
||||
@@ -221,14 +214,11 @@ RUN \
|
||||
./configure \
|
||||
--bindir=/usr/bin \
|
||||
--sysconfdir=/config/comskip && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/comskip-build install
|
||||
|
||||
############## runtime stage ##############
|
||||
FROM lsiobase/alpine.arm64:3.8
|
||||
|
||||
# Add qemu to build on x86_64 systems
|
||||
COPY qemu-aarch64-static /usr/bin
|
||||
FROM lsiobase/alpine:arm64v8-3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@@ -248,11 +238,11 @@ RUN \
|
||||
ffmpeg \
|
||||
ffmpeg-libs \
|
||||
gzip \
|
||||
libcrypto1.0 \
|
||||
libcrypto1.1 \
|
||||
libcurl \
|
||||
libdvbcsa \
|
||||
libhdhomerun-libs \
|
||||
libssl1.0 \
|
||||
libssl1.1 \
|
||||
libvpx \
|
||||
libxml2 \
|
||||
libxslt \
|
||||
@@ -292,6 +282,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -320,12 +311,12 @@ RUN \
|
||||
x265 \
|
||||
zlib && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv && \
|
||||
echo "**** Add Picons ****" && \
|
||||
mkdir -p /picons && \
|
||||
curl -o \
|
||||
/picons/picons.tar.bz2 -L \
|
||||
/picons.tar.bz2 -L \
|
||||
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
|
||||
|
||||
# copy local files and buildstage artifacts
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
FROM lsiobase/alpine.armhf:3.8 as buildstage
|
||||
FROM lsiobase/alpine:arm32v7-3.9 as buildstage
|
||||
############## build stage ##############
|
||||
|
||||
# package versions
|
||||
ARG ARGTABLE_VER="2.13"
|
||||
ARG XMLTV_VER="0.5.69"
|
||||
ARG XMLTV_VER="v0.6.1"
|
||||
|
||||
# environment settings
|
||||
ARG TZ="Europe/Oslo"
|
||||
@@ -77,6 +77,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -108,7 +109,7 @@ RUN \
|
||||
x265-dev \
|
||||
zlib-dev && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv-dev
|
||||
|
||||
RUN \
|
||||
@@ -123,13 +124,9 @@ RUN \
|
||||
|
||||
RUN \
|
||||
echo "**** compile XMLTV ****" && \
|
||||
curl -o \
|
||||
/tmp/xmtltv-src.tar.bz2 -L \
|
||||
"https://sourceforge.net/projects/xmltv/files/xmltv/${XMLTV_VER}/xmltv-${XMLTV_VER}.tar.bz2" && \
|
||||
tar xf \
|
||||
/tmp/xmtltv-src.tar.bz2 -C \
|
||||
/tmp --strip-components=1 && \
|
||||
cd "/tmp/xmltv-${XMLTV_VER}" && \
|
||||
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \
|
||||
cd /tmp/xmltv && \
|
||||
git checkout ${XMLTV_VER} && \
|
||||
echo "**** Perl 5.26 fixes for XMTLV ****" && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \
|
||||
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
|
||||
@@ -139,25 +136,21 @@ RUN \
|
||||
sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \
|
||||
PERL5LIB=`pwd` && \
|
||||
echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make test && \
|
||||
make DESTDIR=/tmp/xmltv-build install
|
||||
|
||||
RUN \
|
||||
echo "**** compile tvheadend ****" && \
|
||||
if [ -z ${TVHEADEND_COMMIT+x} ]; then \
|
||||
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
|
||||
| jq -r '. | .sha'); \
|
||||
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
|
||||
| jq -r '. | .sha'); \
|
||||
fi && \
|
||||
curl -o \
|
||||
/tmp/tvheadend.tar.gz -L \
|
||||
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
|
||||
mkdir -p \
|
||||
/tmp/tvheadend && \
|
||||
tar xf \
|
||||
/tmp/tvheadend.tar.gz -C \
|
||||
/tmp/tvheadend/ --strip-components=1 && \
|
||||
/tmp/tvheadend && \
|
||||
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
|
||||
cd /tmp/tvheadend && \
|
||||
git checkout ${TVHEADEND_COMMIT} && \
|
||||
./configure \
|
||||
`#Encoding` \
|
||||
--disable-ffmpeg_static \
|
||||
@@ -189,7 +182,7 @@ RUN \
|
||||
--mandir=/usr/share/man \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/config && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/tvheadend-build install
|
||||
|
||||
RUN \
|
||||
@@ -207,7 +200,7 @@ RUN \
|
||||
cd /tmp/argtable && \
|
||||
./configure \
|
||||
--prefix=/usr && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make check && \
|
||||
make DESTDIR=/tmp/argtable-build install && \
|
||||
echo "**** copy to /usr for comskip dependency ****" && \
|
||||
@@ -221,14 +214,11 @@ RUN \
|
||||
./configure \
|
||||
--bindir=/usr/bin \
|
||||
--sysconfdir=/config/comskip && \
|
||||
make && \
|
||||
make -j 2 && \
|
||||
make DESTDIR=/tmp/comskip-build install
|
||||
|
||||
############## runtime stage ##############
|
||||
FROM lsiobase/alpine.armhf:3.8
|
||||
|
||||
# Add qemu to build on x86_64 systems
|
||||
COPY qemu-arm-static /usr/bin
|
||||
FROM lsiobase/alpine:arm32v7-3.9
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@@ -248,11 +238,11 @@ RUN \
|
||||
ffmpeg \
|
||||
ffmpeg-libs \
|
||||
gzip \
|
||||
libcrypto1.0 \
|
||||
libcrypto1.1 \
|
||||
libcurl \
|
||||
libdvbcsa \
|
||||
libhdhomerun-libs \
|
||||
libssl1.0 \
|
||||
libssl1.1 \
|
||||
libvpx \
|
||||
libxml2 \
|
||||
libxslt \
|
||||
@@ -292,6 +282,7 @@ RUN \
|
||||
perl-lingua-en-numbers-ordinate \
|
||||
perl-lingua-preferred \
|
||||
perl-list-moreutils \
|
||||
perl-lwp-useragent-determined \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
@@ -320,12 +311,12 @@ RUN \
|
||||
x265 \
|
||||
zlib && \
|
||||
apk add --no-cache \
|
||||
--repository http://nl.alpinelinux.org/alpine/edge/testing \
|
||||
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
|
||||
gnu-libiconv && \
|
||||
echo "**** Add Picons ****" && \
|
||||
mkdir -p /picons && \
|
||||
curl -o \
|
||||
/picons/picons.tar.bz2 -L \
|
||||
/picons.tar.bz2 -L \
|
||||
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
|
||||
|
||||
# copy local files and buildstage artifacts
|
||||
|
||||
134
Jenkinsfile
vendored
134
Jenkinsfile
vendored
@@ -38,10 +38,10 @@ pipeline {
|
||||
script{
|
||||
env.EXIT_STATUS = ''
|
||||
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()
|
||||
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()
|
||||
env.GITHUB_DATE = sh(
|
||||
script: '''date '+%Y-%m-%dT%H:%M:%S%:z' ''',
|
||||
@@ -132,7 +132,7 @@ pipeline {
|
||||
script{
|
||||
env.IMAGE = env.DOCKERHUB_IMAGE
|
||||
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 {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
@@ -150,7 +150,7 @@ pipeline {
|
||||
script{
|
||||
env.IMAGE = env.DEV_DOCKERHUB_IMAGE
|
||||
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 {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
}
|
||||
@@ -168,7 +168,7 @@ pipeline {
|
||||
script{
|
||||
env.IMAGE = env.PR_DOCKERHUB_IMAGE
|
||||
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 {
|
||||
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
|
||||
stage('Update-Templates') {
|
||||
when {
|
||||
@@ -211,7 +240,7 @@ pipeline {
|
||||
fi
|
||||
mkdir -p ${TEMPDIR}/gitbook
|
||||
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
|
||||
if [ "${BRANCH_NAME}" = "master" ] && [ ! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md ] || [ "$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/${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/
|
||||
cd ${TEMPDIR}/gitbook/docker-documentation/
|
||||
git add images/docker-${CONTAINER_NAME}.md
|
||||
@@ -252,7 +281,7 @@ pipeline {
|
||||
environment name: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
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} ."
|
||||
}
|
||||
}
|
||||
@@ -265,7 +294,7 @@ pipeline {
|
||||
parallel {
|
||||
stage('Build X86') {
|
||||
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} ."
|
||||
}
|
||||
}
|
||||
@@ -286,12 +315,13 @@ pipeline {
|
||||
sh '''#! /bin/bash
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
'''
|
||||
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-arm-static -o qemu-arm-static"
|
||||
sh "chmod +x qemu-*"
|
||||
sh "docker build --no-cache -f Dockerfile.armhf -t ${IMAGE}:arm32v6-${META_TAG} \
|
||||
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm32v6-${META_TAG} lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh "docker push 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: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
|
||||
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
|
||||
'''
|
||||
sh "curl https://lsio-ci.ams3.digitaloceanspaces.com/qemu-aarch64-static -o qemu-aarch64-static"
|
||||
sh "chmod +x qemu-*"
|
||||
sh "docker build --no-cache -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
|
||||
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:arm64v8-${META_TAG} \
|
||||
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -341,13 +372,13 @@ pipeline {
|
||||
fi
|
||||
if [ "${DIST_IMAGE}" == "alpine" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apk info > packages && \
|
||||
apk info -v > versions && \
|
||||
paste -d " " packages versions > /tmp/package_versions.txt && \
|
||||
apk info -v > /tmp/package_versions.txt && \
|
||||
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \
|
||||
chmod 777 /tmp/package_versions.txt'
|
||||
elif [ "${DIST_IMAGE}" == "ubuntu" ]; then
|
||||
docker run --rm --entrypoint '/bin/sh' -v ${TEMPDIR}:/tmp ${LOCAL_CONTAINER} -c '\
|
||||
apt list -qq --installed > /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'
|
||||
fi
|
||||
NEW_PACKAGE_TAG=$(md5sum ${TEMPDIR}/package_versions.txt | cut -c1-8 )
|
||||
@@ -427,9 +458,9 @@ pipeline {
|
||||
set -e
|
||||
docker pull lsiodev/ci:latest
|
||||
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 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}
|
||||
fi
|
||||
docker run --rm \
|
||||
@@ -479,6 +510,10 @@ pipeline {
|
||||
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
|
||||
sh "docker push ${IMAGE}:latest"
|
||||
sh "docker push ${IMAGE}:${META_TAG}"
|
||||
sh '''docker rmi \
|
||||
${IMAGE}:${META_TAG} \
|
||||
${IMAGE}:latest || :'''
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -502,30 +537,39 @@ pipeline {
|
||||
'''
|
||||
sh '''#! /bin/bash
|
||||
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 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}
|
||||
fi'''
|
||||
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 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}:amd64-latest"
|
||||
sh "docker push ${IMAGE}:arm32v6-latest"
|
||||
sh "docker push ${IMAGE}:arm32v7-latest"
|
||||
sh "docker push ${IMAGE}:arm64v8-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 annotate ${IMAGE}:latest ${IMAGE}:arm32v6-latest --os linux --arch arm"
|
||||
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v7-latest ${IMAGE}:arm64v8-latest"
|
||||
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 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 annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v6-${META_TAG} --os linux --arch arm"
|
||||
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
|
||||
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
|
||||
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
|
||||
sh "docker manifest push --purge ${IMAGE}:latest"
|
||||
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 {
|
||||
branch "master"
|
||||
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: 'EXIT_STATUS', value: ''
|
||||
}
|
||||
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 \
|
||||
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
|
||||
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
|
||||
"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",\
|
||||
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
|
||||
echo "Pushing New release for Tag"
|
||||
sh '''#! /bin/bash
|
||||
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
|
||||
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",\
|
||||
"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
|
||||
printf '","draft": false,"prerelease": false}' >> releasebody.json
|
||||
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
|
||||
@@ -598,12 +654,12 @@ pipeline {
|
||||
}
|
||||
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,\
|
||||
"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} '''
|
||||
}
|
||||
else {
|
||||
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} '''
|
||||
}
|
||||
}
|
||||
|
||||
295
README.md
295
README.md
@@ -1,97 +1,148 @@
|
||||
[linuxserverurl]: https://linuxserver.io
|
||||
[forumurl]: https://forum.linuxserver.io
|
||||
[ircurl]: https://www.linuxserver.io/irc/
|
||||
[podcasturl]: https://www.linuxserver.io/podcast/
|
||||
[appurl]: https://www.tvheadend.org/
|
||||
[hub]: https://hub.docker.com/r/linuxserver/tvheadend/
|
||||
[](https://linuxserver.io)
|
||||
|
||||
[][linuxserverurl]
|
||||
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring :-
|
||||
|
||||
The [LinuxServer.io][linuxserverurl] team brings you another container release featuring easy user mapping and community support. Find us for support at:
|
||||
* [forum.linuxserver.io][forumurl]
|
||||
* [IRC][ircurl] on freenode at `#linuxserver.io`
|
||||
* [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation!
|
||||
* regular and timely application updates
|
||||
* easy user mappings (PGID, PUID)
|
||||
* custom base image with s6 overlay
|
||||
* weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
|
||||
* regular security updates
|
||||
|
||||
# linuxserver/tvheadend
|
||||
[](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com")[](https://microbadger.com/images/linuxserver/tvheadend "Get your own image badge on microbadger.com")[][hub][][hub][](https://ci.linuxserver.io/job/Docker-Builders/job/x86-64/job/x86-64-tvheadend/)
|
||||
Find us at:
|
||||
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
|
||||
* [IRC](https://irc.linuxserver.io) - on freenode at `#linuxserver.io`. Our primary support channel is Discord.
|
||||
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
|
||||
|
||||
[Tvheadend](https://www.tvheadend.org/) is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
|
||||
# [linuxserver/tvheadend](https://github.com/linuxserver/docker-tvheadend)
|
||||
[](https://discord.gg/YWrKVTn)
|
||||
[](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com")
|
||||
[](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com")
|
||||

|
||||

|
||||
[](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/)
|
||||
[](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/tvheadend/latest/index.html)
|
||||
|
||||
[Tvheadend](https://www.tvheadend.org/) works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
|
||||
Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
|
||||
Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).
|
||||
|
||||
[][appurl]
|
||||
|
||||
[](https://www.tvheadend.org/)
|
||||
|
||||
## Supported Architectures
|
||||
|
||||
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
|
||||
|
||||
Simply pulling `linuxserver/tvheadend` 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:
|
||||
|
||||
| Architecture | Tag |
|
||||
| :----: | --- |
|
||||
| x86-64 | amd64-latest |
|
||||
| arm64 | arm64v8-latest |
|
||||
| armhf | arm32v7-latest |
|
||||
|
||||
## Version Tags
|
||||
|
||||
This image provides various versions that are available via tags. `latest` tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.
|
||||
|
||||
| Tag | Description |
|
||||
| :----: | --- |
|
||||
| latest | Current latest release. |
|
||||
| release-4.2 | Latest release from 4.2 branch. |
|
||||
| stable-4.2.1 | Old stable version. Will not be updated anymore! |
|
||||
| stable-4.0.9 | Old stable version. Will not be updated anymore! |
|
||||
|
||||
## Usage
|
||||
|
||||
Here are some example snippets to help you get started creating a container.
|
||||
|
||||
### docker
|
||||
|
||||
```
|
||||
docker create \
|
||||
--name=tvheadend \
|
||||
--net=bridge \
|
||||
-v <path to data>:/config \
|
||||
-v <path to recordings>:/recordings \
|
||||
-e PGID=<gid> -e PUID=<uid> \
|
||||
-e RUN_OPTS=<parameter> \
|
||||
-e PUID=1000 \
|
||||
-e PGID=1000 \
|
||||
-e TZ=Europe/London \
|
||||
-e RUN_OPTS=<run options here> `#optional` \
|
||||
-p 9981:9981 \
|
||||
-p 9982:9982 \
|
||||
--device=/dev/dvb \
|
||||
--device=/dev/dri
|
||||
-v <path to data>:/config \
|
||||
-v <path to recordings>:/recordings \
|
||||
--device /dev/dri:/dev/dri `#optional` \
|
||||
--device /dev/drb:/dev/dvb `#optional` \
|
||||
--restart unless-stopped \
|
||||
linuxserver/tvheadend
|
||||
```
|
||||
The --device=/dev/dvb is only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out.
|
||||
The --device=/dev/dri is only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi).
|
||||
|
||||
You can choose between ,using tags, latest (default, and no tag required or a specific release branch of tvheadend.
|
||||
|
||||
Add one of the tags, if required, to the linuxserver/tvheadend line of the run/create command in the following format, linuxserver/tvheadend:release-4.2
|
||||
|
||||
#### Tags
|
||||
|
||||
+ **release-4.2** : latest release from 4.2 branch. Freshly built every friday night uk time.
|
||||
+ **stable-4.2.1** : old stable version. Will not be updated anymore!
|
||||
+ **stable-4.0.9** : old stable version. Will not be updated anymore!
|
||||
|
||||
#### Host vs. Bridge
|
||||
|
||||
If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because of a limitation in docker and multicast.
|
||||
|
||||
|
||||
### docker-compose
|
||||
|
||||
Compatible with docker-compose v2 schemas.
|
||||
|
||||
```
|
||||
---
|
||||
version: "2"
|
||||
services:
|
||||
tvheadend:
|
||||
image: linuxserver/tvheadend
|
||||
container_name: tvheadend
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/London
|
||||
- RUN_OPTS=<run options here> #optional
|
||||
volumes:
|
||||
- <path to data>:/config
|
||||
- <path to recordings>:/recordings
|
||||
ports:
|
||||
- 9981:9981
|
||||
- 9982:9982
|
||||
devices:
|
||||
- /dev/dri:/dev/dri #optional
|
||||
- /dev/drb:/dev/dvb #optional
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
`The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side.
|
||||
For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container.
|
||||
So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080
|
||||
http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.`
|
||||
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
|
||||
|
||||
| Parameter | Function |
|
||||
| :----: | --- |
|
||||
| `-p 9981` | WebUI |
|
||||
| `-p 9982` | HTSP server port. |
|
||||
| `-e PUID=1000` | for UserID - 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 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 /recordings` | Where you want the PVR to store recordings. |
|
||||
| `--device /dev/dri` | Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). |
|
||||
| `--device /dev/dvb` | Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out. |
|
||||
|
||||
* `-p 1234` - the port(s)
|
||||
* `-v /config` - Where TVHeadend show store it's config files
|
||||
* `-v /recordings` - Where you want the PVR to store recordings
|
||||
* `-e PGID` for GroupID - see below for explanation
|
||||
* `-e PUID` for UserID - see below for explanation
|
||||
* `-e RUN_OPTS` additional runtime parameters - see below for explanation
|
||||
* `--device=/dev/dvb` - for passing through DVB-cards
|
||||
* `--device=/dev/dri` - for passing through GPU
|
||||
* `--net=host` - for IPTV, SAT>IP and HDHomeRun
|
||||
* `-e TZ` - for timezone information *eg Europe/London, etc*
|
||||
## User / Group Identifiers
|
||||
|
||||
It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it tvheadend /bin/bash`.
|
||||
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
|
||||
|
||||
### User / Group Identifiers
|
||||
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
|
||||
|
||||
Sometimes when using data volumes (`-v` flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user `PUID` and group `PGID`. Ensure the data volume directory on the host is owned by the same user you specify and it will "just work" ™.
|
||||
|
||||
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 <dockeruser>
|
||||
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
|
||||
$ id username
|
||||
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
|
||||
```
|
||||
|
||||
## Additional runtime parameters
|
||||
|
||||
In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
|
||||
|
||||
|
||||
## Setting up the application
|
||||
|
||||
## Application Setup
|
||||
|
||||
The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.
|
||||
|
||||
@@ -147,44 +198,102 @@ For advanced setup of tvheadend, go to [Tvheadend][appurl]
|
||||
We have added all the picons from [picons.xyz](https://picons.xyz/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base.
|
||||
You need to enable minimum advanced view level to see the picons options.
|
||||
|
||||
## Info
|
||||
## Additional runtime parameters
|
||||
|
||||
In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
|
||||
|
||||
|
||||
|
||||
## Support Info
|
||||
|
||||
* Shell access whilst the container is running: `docker exec -it tvheadend /bin/bash`
|
||||
* To monitor the logs of the container in realtime: `docker logs -f tvheadend`
|
||||
|
||||
* container version number
|
||||
|
||||
`docker inspect -f '{{ index .Config.Labels "build_version" }}' tvheadend`
|
||||
|
||||
* container version number
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' tvheadend`
|
||||
* image version number
|
||||
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/tvheadend`
|
||||
|
||||
`docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/tvheadend`
|
||||
## 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/tvheadend`
|
||||
* Stop the running container: `docker stop tvheadend`
|
||||
* Delete the container: `docker rm tvheadend`
|
||||
* 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 tvheadend`
|
||||
* 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 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`
|
||||
|
||||
### 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
|
||||
|
||||
+ **15.01.19:** Add pipeline and multi arch logic.
|
||||
+ **12.09.18:** Rebase to alpine 3.8 and use buildstage type build.
|
||||
+ **21.04.18:** Add JSON::XS Perl package for grab_tv_huro.
|
||||
+ **24.03.18:** Add dvbcsa package.
|
||||
+ **04.03.18:** Use sourceforge master rather than mirror for xmltv.
|
||||
+ **22.02.18:** Add lost libva-intel-driver.
|
||||
+ **21.02.18:** Fix wrong version of iconv used.
|
||||
+ **18.02.18:** Add vaapi support, some cleanup and dropping of deprecated options.
|
||||
+ **04.01.18:** Deprecate cpu_core routine lack of scaling.
|
||||
+ **11.12.17:** Rebase to alpine 3.7, linting fixes.
|
||||
+ **02.09.17:** Add codec dependencies.
|
||||
+ **13.07.17:** Increase uniformity across all archs.
|
||||
+ **08.07.17:** Update README with full path for comskip.
|
||||
+ **02.07.17:** Move to one branch for all 4.2 releases.
|
||||
+ **27.05.17:** Rebase to alpine 3.6.
|
||||
+ **01.05.17:** Update to tvheadend 4.2.1 stable.
|
||||
+ **18.04.17:** Use repo version of gnu-libiconv rather than compiling.
|
||||
+ **09.04.17:** Chain cpanm installs in one block and use --installdeps.
|
||||
+ **09.02.17:** Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
|
||||
+ **07.02.17:** Add variable to add additional runtime paramters.
|
||||
+ **05.02.17:** Update to alpine 3.5 and change dvb-apps to only compile needed libs.
|
||||
+ **14.11.16:** Add picons from picons.xyz to /picons folder and add info to README.
|
||||
+ **22.09.16:** Fix broken tv_grab_wg, libs for xmltv and update README.
|
||||
+ **18.09.16:** Update XMLTV to 0.5.68 and update README.
|
||||
+ **10.09.16:** Add layer badges to README.
|
||||
+ **05.09.16:** Initial release.
|
||||
* **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.
|
||||
* **14.02.19:** - Add picons path to config.
|
||||
* **15.01.19:** - Add pipeline logic and multi arch.
|
||||
* **12.09.18:** - Rebase to alpine 3.8 and use buildstage type build.
|
||||
* **21.04.18:** - Add JSON::XS Perl package for grab_tv_huro.
|
||||
* **24.03.18:** - Add dvbcsa package.
|
||||
* **04.03.18:** - Use sourceforge master rather than mirror for xmltv.
|
||||
* **22.02.18:** - Add lost libva-intel-driver.
|
||||
* **21.02.18:** - Fix wrong version of iconv used.
|
||||
* **18.02.18:** - Add vaapi support, some cleanup and dropping of deprecated options.
|
||||
* **04.01.18:** - Deprecate cpu_core routine lack of scaling.
|
||||
* **11.12.17:** - Rebase to alpine 3.7, linting fixes.
|
||||
* **02.09.17:** - Add codec dependencies.
|
||||
* **13.07.17:** - Increase uniformity across all archs.
|
||||
* **08.07.17:** - Update README with full path for comskip.
|
||||
* **02.07.17:** - Move to one branch for all 4.2 releases.
|
||||
* **27.05.17:** - Rebase to alpine 3.6.
|
||||
* **01.05.17:** - Update to tvheadend 4.2.1 stable.
|
||||
* **18.04.17:** - Use repo version of gnu-libiconv rather than compiling.
|
||||
* **09.04.17:** - Chain cpanm installs in one block and use --installdeps.
|
||||
* **09.02.17:** - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
|
||||
* **07.02.17:** - Add variable to add additional runtime paramters.
|
||||
* **05.02.17:** - Update to alpine 3.5 and change dvb-apps to only compile needed libs.
|
||||
* **14.11.16:** - Add picons from picons.xyz to /picons folder and add info to README.
|
||||
* **22.09.16:** - Fix broken tv_grab_wg, libs for xmltv and update README.
|
||||
* **18.09.16:** - Update XMLTV to 0.5.68 and update README.
|
||||
* **10.09.16:** - Add layer badges to README.
|
||||
* **05.09.16:** - Initial Release.
|
||||
|
||||
@@ -1,216 +1,218 @@
|
||||
musl musl-1.1.19-r10
|
||||
busybox busybox-1.28.4-r3
|
||||
alpine-baselayout alpine-baselayout-3.1.0-r0
|
||||
alpine-keys alpine-keys-2.1-r1
|
||||
libressl2.7-libcrypto libressl2.7-libcrypto-2.7.4-r0
|
||||
libressl2.7-libssl libressl2.7-libssl-2.7.4-r0
|
||||
libressl2.7-libtls libressl2.7-libtls-2.7.4-r0
|
||||
ssl_client ssl_client-1.28.4-r3
|
||||
zlib zlib-1.2.11-r1
|
||||
apk-tools apk-tools-2.10.1-r0
|
||||
scanelf scanelf-1.2.3-r0
|
||||
musl-utils musl-utils-1.1.19-r10
|
||||
libc-utils libc-utils-0.7.1-r0
|
||||
xz-libs xz-libs-5.2.4-r0
|
||||
xz xz-5.2.4-r0
|
||||
ca-certificates ca-certificates-20171114-r3
|
||||
ncurses-terminfo-base ncurses-terminfo-base-6.1_p20180818-r1
|
||||
ncurses-terminfo ncurses-terminfo-6.1_p20180818-r1
|
||||
ncurses-libs ncurses-libs-6.1_p20180818-r1
|
||||
readline readline-7.0.003-r0
|
||||
bash bash-4.4.19-r1
|
||||
libattr libattr-2.4.47-r7
|
||||
libacl libacl-2.2.52-r5
|
||||
coreutils coreutils-8.29-r2
|
||||
linux-pam linux-pam-1.3.0-r0
|
||||
shadow shadow-4.5-r0
|
||||
tzdata tzdata-2018f-r0
|
||||
bsd-compat-headers bsd-compat-headers-0.7.1-r0
|
||||
bzip2 bzip2-1.0.6-r6
|
||||
nghttp2-libs nghttp2-libs-1.32.0-r0
|
||||
libssh2 libssh2-1.8.0-r3
|
||||
libcurl libcurl-7.61.1-r1
|
||||
curl curl-7.61.1-r1
|
||||
sdl2 sdl2-2.0.8-r1
|
||||
libxau libxau-1.0.8-r2
|
||||
libbsd libbsd-0.8.6-r2
|
||||
libxdmcp libxdmcp-1.1.2-r4
|
||||
libxcb libxcb-1.13-r2
|
||||
libx11 libx11-1.6.6-r0
|
||||
alsa-lib alsa-lib-1.1.6-r0
|
||||
expat expat-2.2.5-r0
|
||||
libbz2 libbz2-1.0.6-r6
|
||||
libpng libpng-1.6.34-r1
|
||||
freetype freetype-2.9.1-r1
|
||||
fontconfig fontconfig-2.12.6-r1
|
||||
fribidi fribidi-1.0.2-r0
|
||||
libass libass-0.13.7-r1
|
||||
gmp gmp-6.1.2-r1
|
||||
nettle nettle-3.4-r1
|
||||
libffi libffi-3.2.1-r4
|
||||
p11-kit p11-kit-0.23.10-r0
|
||||
libtasn1 libtasn1-4.13-r0
|
||||
libunistring libunistring-0.9.7-r0
|
||||
gnutls gnutls-3.6.2-r0
|
||||
lame lame-3.100-r0
|
||||
opus opus-1.2.1-r1
|
||||
librtmp librtmp-2.4_git20160909-r5
|
||||
libogg libogg-1.3.3-r2
|
||||
libtheora libtheora-1.1.1-r13
|
||||
libjpeg-turbo libjpeg-turbo-1.5.3-r4
|
||||
v4l-utils-libs v4l-utils-libs-1.12.6-r1
|
||||
libxext libxext-1.3.3-r2
|
||||
libxfixes libxfixes-5.0.3-r1
|
||||
libpciaccess libpciaccess-0.13.5-r1
|
||||
libdrm libdrm-2.4.92-r0
|
||||
libva libva-2.1.0-r1
|
||||
libvdpau libvdpau-1.1.1-r1
|
||||
libvorbis libvorbis-1.3.6-r2
|
||||
libvpx libvpx-1.6.1-r0
|
||||
x264-libs x264-libs-20180304-r1
|
||||
libgcc libgcc-6.4.0-r9
|
||||
libstdc++ libstdc++-6.4.0-r9
|
||||
x265 x265-2.7-r1
|
||||
xvidcore xvidcore-1.3.4-r1
|
||||
ffmpeg-libs ffmpeg-libs-3.4.4-r1
|
||||
ffmpeg ffmpeg-3.4.4-r1
|
||||
gzip gzip-1.9-r0
|
||||
libcrypto1.0 libcrypto1.0-1.0.2q-r0
|
||||
libdvbcsa libdvbcsa-1.1.0-r1
|
||||
libhdhomerun-libs libhdhomerun-libs-20161117-r1
|
||||
libssl1.0 libssl1.0-1.0.2q-r0
|
||||
libva-intel-driver libva-intel-driver-2.1.0-r0
|
||||
libxml2 libxml2-2.9.8-r1
|
||||
libgpg-error libgpg-error-1.30-r0
|
||||
libgcrypt libgcrypt-1.8.3-r0
|
||||
libxslt libxslt-1.1.32-r0
|
||||
linux-headers linux-headers-4.4.6-r2
|
||||
openssl openssl-1.0.2q-r0
|
||||
pcre2 pcre2-10.31-r0
|
||||
perl perl-5.26.3-r0
|
||||
perl-archive-zip perl-archive-zip-1.60-r0
|
||||
perl-boolean perl-boolean-0.46-r0
|
||||
perl-capture-tiny perl-capture-tiny-0.48-r0
|
||||
perl-html-tagset perl-html-tagset-3.20-r1
|
||||
perl-html-parser perl-html-parser-3.72-r2
|
||||
perl-cgi perl-cgi-4.38-r0
|
||||
perl-compress-raw-zlib perl-compress-raw-zlib-2.081-r0
|
||||
perl-data-dumper perl-data-dumper-2.161-r2
|
||||
perl-yaml-syck perl-yaml-syck-1.30-r1
|
||||
perl-date-manip perl-date-manip-6.70-r0
|
||||
perl-cpan-meta-check perl-cpan-meta-check-0.014-r1
|
||||
perl-exporter-tiny perl-exporter-tiny-1.000000-r0
|
||||
perl-list-moreutils perl-list-moreutils-0.419-r1
|
||||
perl-module-runtime perl-module-runtime-0.016-r0
|
||||
perl-dist-checkconflicts perl-dist-checkconflicts-0.11-r1
|
||||
perl-class-inspector perl-class-inspector-1.28-r1
|
||||
perl-file-sharedir perl-file-sharedir-1.106-r0
|
||||
perl-file-sharedir-install perl-file-sharedir-install-0.11-r0
|
||||
perl-sub-exporter-progressive perl-sub-exporter-progressive-0.001013-r0
|
||||
perl-devel-symdump perl-devel-symdump-2.18-r0
|
||||
perl-test-pod perl-test-pod-1.52-r0
|
||||
perl-pod-coverage perl-pod-coverage-0.23-r0
|
||||
perl-try-tiny perl-try-tiny-0.30-r0
|
||||
perl-test-taint perl-test-taint-1.06-r5
|
||||
perl-module-implementation perl-module-implementation-0.09-r1
|
||||
perl-variable-magic perl-variable-magic-0.62-r0
|
||||
perl-b-hooks-endofscope perl-b-hooks-endofscope-0.24-r0
|
||||
perl-package-stash-xs perl-package-stash-xs-0.28-r4
|
||||
perl-package-stash perl-package-stash-0.37-r0
|
||||
perl-sub-name perl-sub-name-0.21-r1
|
||||
perl-sub-identify perl-sub-identify-0.14-r1
|
||||
perl-namespace-clean perl-namespace-clean-0.27-r0
|
||||
perl-namespace-autoclean perl-namespace-autoclean-0.28-r0
|
||||
perl-params-validate perl-params-validate-1.28-r0
|
||||
perl-test-needs perl-test-needs-0.002005-r1
|
||||
perl-devel-stacktrace perl-devel-stacktrace-2.02-r0
|
||||
perl-eval-closure perl-eval-closure-0.14-r0
|
||||
perl-mro-compat perl-mro-compat-0.13-r0
|
||||
perl-role-tiny perl-role-tiny-2.000005-r0
|
||||
perl-test-fatal perl-test-fatal-0.014-r1
|
||||
perl-sub-quote perl-sub-quote-2.004000-r0
|
||||
perl-specio perl-specio-0.42-r0
|
||||
perl-test-simple perl-test-simple-1.302136-r0
|
||||
perl-importer perl-importer-0.025-r0
|
||||
perl-term-table perl-term-table-0.012-r0
|
||||
perl-sub-info perl-sub-info-0.002-r0
|
||||
perl-scope-guard perl-scope-guard-0.21-r0
|
||||
perl-module-pluggable perl-module-pluggable-5.2-r0
|
||||
perl-test2-suite perl-test2-suite-0.000114-r0
|
||||
perl-test-without-module perl-test-without-module-0.20-r0
|
||||
perl-class-data-inheritable perl-class-data-inheritable-0.08-r0
|
||||
perl-exception-class perl-exception-class-1.44-r0
|
||||
perl-ipc-run3 perl-ipc-run3-0.048-r0
|
||||
perl-test2-plugin-nowarnings perl-test2-plugin-nowarnings-0.06-r0
|
||||
perl-params-validationcompiler perl-params-validationcompiler-0.24-r1
|
||||
perl-scalar-list-utils perl-scalar-list-utils-1.50-r0
|
||||
perl-test-requires perl-test-requires-0.10-r0
|
||||
perl-test-warnings perl-test-warnings-0.026-r0
|
||||
perl-datetime-locale perl-datetime-locale-1.18-r0
|
||||
perl-class-singleton perl-class-singleton-1.5-r0
|
||||
perl-datetime-timezone perl-datetime-timezone-2.19-r0
|
||||
perl-datetime perl-datetime-1.44-r0
|
||||
perl-sub-install perl-sub-install-0.928-r1
|
||||
perl-params-util perl-params-util-1.07-r5
|
||||
perl-package-deprecationmanager perl-package-deprecationmanager-0.17-r0
|
||||
perl-datetime-format-strptime perl-datetime-format-strptime-1.74-r0
|
||||
perl-dbi perl-dbi-1.641-r0
|
||||
perl-dbd-sqlite perl-dbd-sqlite-1.58-r0
|
||||
perl-digest-sha1 perl-digest-sha1-2.13-r9
|
||||
perl-doc perl-doc-5.26.3-r0
|
||||
perl-file-slurp perl-file-slurp-9999.19-r0
|
||||
perl-file-temp perl-file-temp-0.2304-r0
|
||||
perl-file-which perl-file-which-1.22-r0
|
||||
perl-getopt-long perl-getopt-long-2.50-r0
|
||||
perl-html-tree perl-html-tree-5.07-r0
|
||||
perl-http-date perl-http-date-6.02-r1
|
||||
perl-lwp-mediatypes perl-lwp-mediatypes-6.02-r1
|
||||
perl-encode-locale perl-encode-locale-1.05-r1
|
||||
perl-uri perl-uri-1.72-r0
|
||||
perl-io-html perl-io-html-1.001-r1
|
||||
perl-http-message perl-http-message-6.15-r0
|
||||
perl-http-cookies perl-http-cookies-6.04-r0
|
||||
perl-io perl-io-1.25-r4
|
||||
perl-compress-raw-bzip2 perl-compress-raw-bzip2-2.081-r0
|
||||
perl-io-compress perl-io-compress-2.081-r0
|
||||
libidn libidn-1.34-r1
|
||||
perl-net-libidn perl-net-libidn-0.12-r4
|
||||
perl-net-ssleay perl-net-ssleay-1.85-r1
|
||||
perl-io-socket-ssl perl-io-socket-ssl-2.048-r1
|
||||
perl-io-stringy perl-io-stringy-2.111-r1
|
||||
perl-json perl-json-2.97000-r0
|
||||
perl-net-http perl-net-http-6.09-r1
|
||||
perl-http-daemon perl-http-daemon-6.01-r1
|
||||
perl-file-listing perl-file-listing-6.04-r1
|
||||
perl-www-robotrules perl-www-robotrules-6.02-r1
|
||||
perl-http-negotiate perl-http-negotiate-6.01-r1
|
||||
perl-libwww perl-libwww-6.34-r0
|
||||
perl-lingua-en-numbers-ordinate perl-lingua-en-numbers-ordinate-1.04-r1
|
||||
perl-lingua-preferred perl-lingua-preferred-0.2.4-r1
|
||||
perl-module-build perl-module-build-0.4224-r0
|
||||
perl-parse-recdescent perl-parse-recdescent-1.967015-r1
|
||||
perl-path-class perl-path-class-0.37-r0
|
||||
perl-class-methodmaker perl-class-methodmaker-2.24-r2
|
||||
perl-term-readkey perl-term-readkey-2.37-r1
|
||||
perl-sub-uplevel perl-sub-uplevel-0.2800-r0
|
||||
perl-test-exception perl-test-exception-0.43-r0
|
||||
perl-term-progressbar perl-term-progressbar-2.22-r0
|
||||
perl-timedate perl-timedate-2.30-r1
|
||||
perl-unicode-string perl-unicode-string-2.09-r6
|
||||
perl-xml-sax-base perl-xml-sax-base-1.09-r0
|
||||
perl-xml-namespacesupport perl-xml-namespacesupport-1.12-r0
|
||||
perl-xml-sax perl-xml-sax-0.99-r2
|
||||
perl-xml-libxml perl-xml-libxml-2.0132-r1
|
||||
perl-xml-libxslt perl-xml-libxslt-1.96-r0
|
||||
perl-xml-parser perl-xml-parser-2.44-r4
|
||||
perl-xml-treepp perl-xml-treepp-0.43-r1
|
||||
perl-xml-twig perl-xml-twig-3.52-r1
|
||||
perl-xml-writer perl-xml-writer-0.625-r2
|
||||
gdbm gdbm-1.13-r1
|
||||
sqlite-libs sqlite-libs-3.25.3-r0
|
||||
python2 python2-2.7.15-r1
|
||||
tar tar-1.31-r0
|
||||
uriparser uriparser-0.8.5-r0
|
||||
wget wget-1.20.1-r0
|
||||
x264 x264-20180304-r1
|
||||
gnu-libiconv gnu-libiconv-1.15-r2
|
||||
alpine-baselayout-3.1.0-r3
|
||||
alpine-keys-2.1-r1
|
||||
alsa-lib-1.1.8-r0
|
||||
apk-tools-2.10.3-r1
|
||||
bash-4.4.19-r1
|
||||
bsd-compat-headers-0.7.1-r0
|
||||
busybox-1.29.3-r10
|
||||
bzip2-1.0.6-r6
|
||||
ca-certificates-20190108-r0
|
||||
ca-certificates-cacert-20190108-r0
|
||||
coreutils-8.30-r0
|
||||
curl-7.64.0-r1
|
||||
expat-2.2.6-r0
|
||||
ffmpeg-4.0.2-r0
|
||||
ffmpeg-libs-4.0.2-r0
|
||||
fontconfig-2.13.1-r0
|
||||
freetype-2.9.1-r2
|
||||
fribidi-1.0.5-r0
|
||||
gdbm-1.13-r1
|
||||
gmp-6.1.2-r1
|
||||
gnu-libiconv-1.15-r2
|
||||
gnutls-3.6.7-r0
|
||||
gzip-1.10-r0
|
||||
lame-3.100-r0
|
||||
libacl-2.2.52-r5
|
||||
libass-0.14.0-r0
|
||||
libattr-2.4.47-r7
|
||||
libbsd-0.8.6-r2
|
||||
libbz2-1.0.6-r6
|
||||
libc-utils-0.7.1-r0
|
||||
libcrypto1.1-1.1.1b-r1
|
||||
libcurl-7.64.0-r1
|
||||
libdrm-2.4.96-r0
|
||||
libdvbcsa-1.1.0-r1
|
||||
libffi-3.2.1-r6
|
||||
libgcc-8.3.0-r0
|
||||
libgcrypt-1.8.4-r0
|
||||
libgpg-error-1.33-r0
|
||||
libhdhomerun-libs-20161117-r1
|
||||
libidn-1.35-r0
|
||||
libjpeg-turbo-1.5.3-r4
|
||||
libogg-1.3.3-r2
|
||||
libpciaccess-0.14-r0
|
||||
libpng-1.6.37-r0
|
||||
libssh2-1.8.2-r0
|
||||
libssl1.1-1.1.1b-r1
|
||||
libstdc++-8.3.0-r0
|
||||
libtasn1-4.13-r0
|
||||
libtheora-1.1.1-r13
|
||||
libtls-standalone-2.7.4-r6
|
||||
libunistring-0.9.10-r0
|
||||
libuuid-2.33-r0
|
||||
libva-2.2.0-r0
|
||||
libva-intel-driver-2.2.0-r0
|
||||
libvdpau-1.1.1-r2
|
||||
libvorbis-1.3.6-r2
|
||||
libvpx-1.6.1-r1
|
||||
libx11-1.6.7-r0
|
||||
libxau-1.0.8-r3
|
||||
libxcb-1.13-r2
|
||||
libxdmcp-1.1.2-r5
|
||||
libxext-1.3.3-r3
|
||||
libxfixes-5.0.3-r2
|
||||
libxml2-2.9.9-r1
|
||||
libxslt-1.1.33-r1
|
||||
linux-headers-4.18.13-r1
|
||||
linux-pam-1.3.0-r0
|
||||
musl-1.1.20-r4
|
||||
musl-utils-1.1.20-r4
|
||||
ncurses-libs-6.1_p20190105-r0
|
||||
ncurses-terminfo-6.1_p20190105-r0
|
||||
ncurses-terminfo-base-6.1_p20190105-r0
|
||||
nettle-3.4.1-r0
|
||||
nghttp2-libs-1.35.1-r0
|
||||
openssl-1.1.1b-r1
|
||||
opus-1.3-r0
|
||||
p11-kit-0.23.14-r0
|
||||
pcre2-10.32-r1
|
||||
perl-5.26.3-r0
|
||||
perl-archive-zip-1.64-r0
|
||||
perl-b-hooks-endofscope-0.24-r0
|
||||
perl-boolean-0.46-r0
|
||||
perl-capture-tiny-0.48-r0
|
||||
perl-cgi-4.40-r0
|
||||
perl-class-data-inheritable-0.08-r0
|
||||
perl-class-inspector-1.32-r0
|
||||
perl-class-methodmaker-2.24-r2
|
||||
perl-class-singleton-1.5-r0
|
||||
perl-compress-raw-bzip2-2.084-r0
|
||||
perl-compress-raw-zlib-2.084-r0
|
||||
perl-cpan-meta-check-0.014-r1
|
||||
perl-data-dumper-2.173-r0
|
||||
perl-date-manip-6.75-r1
|
||||
perl-datetime-1.44-r0
|
||||
perl-datetime-format-strptime-1.74-r0
|
||||
perl-datetime-locale-1.22-r0
|
||||
perl-datetime-timezone-2.19-r0
|
||||
perl-dbd-sqlite-1.62-r0
|
||||
perl-dbi-1.642-r0
|
||||
perl-devel-stacktrace-2.03-r0
|
||||
perl-devel-symdump-2.18-r0
|
||||
perl-digest-sha1-2.13-r9
|
||||
perl-dist-checkconflicts-0.11-r1
|
||||
perl-doc-5.26.3-r0
|
||||
perl-encode-locale-1.05-r1
|
||||
perl-eval-closure-0.14-r0
|
||||
perl-exception-class-1.44-r0
|
||||
perl-exporter-tiny-1.002001-r0
|
||||
perl-file-listing-6.04-r1
|
||||
perl-file-sharedir-1.116-r0
|
||||
perl-file-sharedir-install-0.13-r0
|
||||
perl-file-slurp-9999.25-r0
|
||||
perl-file-temp-0.2308-r0
|
||||
perl-file-which-1.22-r0
|
||||
perl-getopt-long-2.50-r0
|
||||
perl-html-parser-3.72-r2
|
||||
perl-html-tagset-3.20-r1
|
||||
perl-html-tree-5.07-r0
|
||||
perl-http-cookies-6.04-r0
|
||||
perl-http-daemon-6.01-r1
|
||||
perl-http-date-6.02-r1
|
||||
perl-http-message-6.18-r0
|
||||
perl-http-negotiate-6.01-r1
|
||||
perl-importer-0.025-r0
|
||||
perl-io-1.25-r4
|
||||
perl-io-compress-2.084-r0
|
||||
perl-io-html-1.001-r1
|
||||
perl-io-socket-ssl-2.060-r0
|
||||
perl-io-stringy-2.111-r1
|
||||
perl-ipc-run3-0.048-r0
|
||||
perl-json-2.97000-r0
|
||||
perl-libwww-6.36-r0
|
||||
perl-lingua-en-numbers-ordinate-1.04-r1
|
||||
perl-lingua-preferred-0.2.4-r1
|
||||
perl-list-moreutils-0.419-r1
|
||||
perl-lwp-mediatypes-6.02-r1
|
||||
perl-lwp-useragent-determined-1.07-r0
|
||||
perl-module-build-0.4224-r0
|
||||
perl-module-implementation-0.09-r1
|
||||
perl-module-pluggable-5.2-r0
|
||||
perl-module-runtime-0.016-r1
|
||||
perl-mro-compat-0.13-r0
|
||||
perl-namespace-autoclean-0.28-r0
|
||||
perl-namespace-clean-0.27-r0
|
||||
perl-net-http-6.09-r1
|
||||
perl-net-libidn-0.12-r5
|
||||
perl-net-ssleay-1.85-r4
|
||||
perl-package-deprecationmanager-0.17-r0
|
||||
perl-package-stash-0.37-r0
|
||||
perl-package-stash-xs-0.28-r4
|
||||
perl-params-classify-0.015-r0
|
||||
perl-params-util-1.07-r5
|
||||
perl-params-validate-1.29-r0
|
||||
perl-params-validationcompiler-0.27-r0
|
||||
perl-parse-recdescent-1.967015-r1
|
||||
perl-path-class-0.37-r0
|
||||
perl-pod-coverage-0.23-r0
|
||||
perl-role-tiny-2.000006-r0
|
||||
perl-scalar-list-utils-1.50-r0
|
||||
perl-scope-guard-0.21-r0
|
||||
perl-specio-0.42-r0
|
||||
perl-sub-exporter-progressive-0.001013-r0
|
||||
perl-sub-identify-0.14-r1
|
||||
perl-sub-info-0.002-r0
|
||||
perl-sub-install-0.928-r1
|
||||
perl-sub-name-0.21-r1
|
||||
perl-sub-quote-2.004000-r0
|
||||
perl-sub-uplevel-0.2800-r0
|
||||
perl-term-progressbar-2.22-r0
|
||||
perl-term-readkey-2.37-r1
|
||||
perl-term-table-0.012-r0
|
||||
perl-test-exception-0.43-r0
|
||||
perl-test-fatal-0.014-r1
|
||||
perl-test-needs-0.002005-r1
|
||||
perl-test-pod-1.52-r0
|
||||
perl-test-requires-0.10-r0
|
||||
perl-test-simple-1.302141-r0
|
||||
perl-test-taint-1.06-r5
|
||||
perl-test-warnings-0.026-r0
|
||||
perl-test-without-module-0.20-r0
|
||||
perl-test2-plugin-nowarnings-0.06-r0
|
||||
perl-test2-suite-0.000114-r0
|
||||
perl-timedate-2.30-r1
|
||||
perl-try-tiny-0.30-r0
|
||||
perl-unicode-string-2.09-r6
|
||||
perl-uri-1.74-r0
|
||||
perl-variable-magic-0.62-r0
|
||||
perl-www-robotrules-6.02-r1
|
||||
perl-xml-libxml-2.0132-r1
|
||||
perl-xml-libxslt-1.96-r0
|
||||
perl-xml-namespacesupport-1.12-r0
|
||||
perl-xml-parser-2.44-r4
|
||||
perl-xml-sax-0.99-r2
|
||||
perl-xml-sax-base-1.09-r0
|
||||
perl-xml-treepp-0.43-r1
|
||||
perl-xml-twig-3.52-r1
|
||||
perl-xml-writer-0.625-r2
|
||||
perl-yaml-syck-1.31-r0
|
||||
python2-2.7.16-r1
|
||||
readline-7.0.003-r1
|
||||
scanelf-1.2.3-r0
|
||||
sdl2-2.0.9-r0
|
||||
shadow-4.5-r1
|
||||
sqlite-libs-3.26.0-r3
|
||||
ssl_client-1.29.3-r10
|
||||
tar-1.32-r0
|
||||
tzdata-2019a-r0
|
||||
uriparser-0.9.1-r0
|
||||
v4l-utils-libs-1.16.2-r0
|
||||
wget-1.20.3-r0
|
||||
x264-20180304-r1
|
||||
x264-libs-20180304-r1
|
||||
x265-2.8-r1
|
||||
x265-libs-2.8-r1
|
||||
xvidcore-1.3.4-r1
|
||||
xz-5.2.4-r0
|
||||
xz-libs-5.2.4-r0
|
||||
zlib-1.2.11-r1
|
||||
|
||||
220
readme-vars.yml
220
readme-vars.yml
@@ -2,103 +2,69 @@
|
||||
|
||||
# project information
|
||||
project_name: tvheadend
|
||||
full_custom_readme: |
|
||||
{% raw -%}
|
||||
[linuxserverurl]: https://linuxserver.io
|
||||
[forumurl]: https://forum.linuxserver.io
|
||||
[ircurl]: https://www.linuxserver.io/irc/
|
||||
[podcasturl]: https://www.linuxserver.io/podcast/
|
||||
[appurl]: https://www.tvheadend.org/
|
||||
[hub]: https://hub.docker.com/r/linuxserver/tvheadend/
|
||||
|
||||
[][linuxserverurl]
|
||||
|
||||
The [LinuxServer.io][linuxserverurl] team brings you another container release featuring easy user mapping and community support. Find us for support at:
|
||||
* [forum.linuxserver.io][forumurl]
|
||||
* [IRC][ircurl] on freenode at `#linuxserver.io`
|
||||
* [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation!
|
||||
|
||||
# linuxserver/tvheadend
|
||||
[](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com")[](https://microbadger.com/images/linuxserver/tvheadend "Get your own image badge on microbadger.com")[][hub][][hub][](https://ci.linuxserver.io/job/Docker-Builders/job/x86-64/job/x86-64-tvheadend/)
|
||||
|
||||
[Tvheadend](https://www.tvheadend.org/) is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
|
||||
project_url: "https://www.tvheadend.org/"
|
||||
project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/tvheadend-big.png"
|
||||
project_blurb: |
|
||||
[{{ project_name|capitalize }}]({{ project_url }}) works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
|
||||
Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
|
||||
Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).
|
||||
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
|
||||
project_blurb_optional_extras_enabled: false
|
||||
|
||||
[][appurl]
|
||||
# supported architectures
|
||||
available_architectures:
|
||||
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
|
||||
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
|
||||
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
|
||||
|
||||
## Usage
|
||||
# development version
|
||||
# development version
|
||||
development_versions: true
|
||||
development_versions_items:
|
||||
- { tag: "latest", desc: "Current latest release." }
|
||||
- { tag: "release-4.2", desc: "Latest release from 4.2 branch." }
|
||||
- { tag: "stable-4.2.1", desc: "Old stable version. Will not be updated anymore!" }
|
||||
- { tag: "stable-4.0.9", desc: "Old stable version. Will not be updated anymore!" }
|
||||
|
||||
```
|
||||
docker create \
|
||||
--name=tvheadend \
|
||||
--net=bridge \
|
||||
-v <path to data>:/config \
|
||||
-v <path to recordings>:/recordings \
|
||||
-e PGID=<gid> -e PUID=<uid> \
|
||||
-e RUN_OPTS=<parameter> \
|
||||
-p 9981:9981 \
|
||||
-p 9982:9982 \
|
||||
--device=/dev/dvb \
|
||||
--device=/dev/dri
|
||||
linuxserver/tvheadend
|
||||
```
|
||||
The --device=/dev/dvb is only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out.
|
||||
The --device=/dev/dri is only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi).
|
||||
# container parameters
|
||||
common_param_env_vars_enabled: true
|
||||
param_container_name: "{{ project_name }}"
|
||||
param_usage_include_net: false
|
||||
param_usage_include_env: true
|
||||
param_env_vars:
|
||||
- { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." }
|
||||
param_usage_include_vols: true
|
||||
param_volumes:
|
||||
- { vol_path: "/config", vol_host_path: "<path to data>", desc: "Where TVHeadend show store it's config files." }
|
||||
- { vol_path: "/recordings", vol_host_path: "<path to recordings>", desc: "Where you want the PVR to store recordings." }
|
||||
param_usage_include_ports: true
|
||||
param_ports:
|
||||
- { external_port: "9981", internal_port: "9981", port_desc: "WebUI" }
|
||||
- { external_port: "9982", internal_port: "9982", port_desc: "HTSP server port." }
|
||||
param_device_map: false
|
||||
cap_add_param: false
|
||||
|
||||
You can choose between ,using tags, latest (default, and no tag required or a specific release branch of tvheadend.
|
||||
# optional container parameters
|
||||
opt_param_usage_include_env: true
|
||||
opt_param_env_vars:
|
||||
- { env_var: "RUN_OPTS", env_value: "<run options here>", desc: "Optionally specify additional arguments to be passed. See Additional runtime parameters." }
|
||||
opt_param_usage_include_vols: false
|
||||
opt_param_usage_include_ports: false
|
||||
opt_param_device_map: true
|
||||
opt_param_devices:
|
||||
- { device_path: "/dev/dri", device_host_path: "/dev/dri", desc: "Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi)." }
|
||||
- { device_path: "/dev/dvb", device_host_path: "/dev/drb", desc: "Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out." }
|
||||
opt_cap_add_param: false
|
||||
optional_block_1: true
|
||||
optional_block_1_items:
|
||||
- |
|
||||
#### Host vs. Bridge
|
||||
|
||||
Add one of the tags, if required, to the linuxserver/tvheadend line of the run/create command in the following format, linuxserver/tvheadend:release-4.2
|
||||
|
||||
#### Tags
|
||||
|
||||
+ **release-4.2** : latest release from 4.2 branch. Freshly built every friday night uk time.
|
||||
+ **stable-4.2.1** : old stable version. Will not be updated anymore!
|
||||
+ **stable-4.0.9** : old stable version. Will not be updated anymore!
|
||||
|
||||
#### Host vs. Bridge
|
||||
|
||||
If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because of a limitation in docker and multicast.
|
||||
|
||||
## Parameters
|
||||
|
||||
`The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side.
|
||||
For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container.
|
||||
So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080
|
||||
http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.`
|
||||
|
||||
|
||||
* `-p 1234` - the port(s)
|
||||
* `-v /config` - Where TVHeadend show store it's config files
|
||||
* `-v /recordings` - Where you want the PVR to store recordings
|
||||
* `-e PGID` for GroupID - see below for explanation
|
||||
* `-e PUID` for UserID - see below for explanation
|
||||
* `-e RUN_OPTS` additional runtime parameters - see below for explanation
|
||||
* `--device=/dev/dvb` - for passing through DVB-cards
|
||||
* `--device=/dev/dri` - for passing through GPU
|
||||
* `--net=host` - for IPTV, SAT>IP and HDHomeRun
|
||||
* `-e TZ` - for timezone information *eg Europe/London, etc*
|
||||
|
||||
It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it tvheadend /bin/bash`.
|
||||
|
||||
### User / Group Identifiers
|
||||
|
||||
Sometimes when using data volumes (`-v` flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user `PUID` and group `PGID`. Ensure the data volume directory on the host is owned by the same user you specify and it will "just work" ™.
|
||||
|
||||
In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as below:
|
||||
|
||||
```
|
||||
$ id <dockeruser>
|
||||
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
|
||||
```
|
||||
|
||||
## Additional runtime parameters
|
||||
|
||||
In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
|
||||
|
||||
|
||||
## Setting up the application
|
||||
If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because of a limitation in docker and multicast.
|
||||
|
||||
# application setup block
|
||||
app_setup_block_enabled: true
|
||||
app_setup_block: |
|
||||
The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.
|
||||
|
||||
**Stable**
|
||||
@@ -153,45 +119,41 @@ full_custom_readme: |
|
||||
We have added all the picons from [picons.xyz](https://picons.xyz/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base.
|
||||
You need to enable minimum advanced view level to see the picons options.
|
||||
|
||||
## Info
|
||||
## Additional runtime parameters
|
||||
|
||||
* Shell access whilst the container is running: `docker exec -it tvheadend /bin/bash`
|
||||
* To monitor the logs of the container in realtime: `docker logs -f tvheadend`
|
||||
In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
|
||||
|
||||
* container version number
|
||||
|
||||
`docker inspect -f '{{ index .Config.Labels "build_version" }}' tvheadend`
|
||||
|
||||
* image version number
|
||||
|
||||
`docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/tvheadend`
|
||||
|
||||
## Versions
|
||||
|
||||
+ **15.01.19:** Add pipeline and multi arch logic.
|
||||
+ **12.09.18:** Rebase to alpine 3.8 and use buildstage type build.
|
||||
+ **21.04.18:** Add JSON::XS Perl package for grab_tv_huro.
|
||||
+ **24.03.18:** Add dvbcsa package.
|
||||
+ **04.03.18:** Use sourceforge master rather than mirror for xmltv.
|
||||
+ **22.02.18:** Add lost libva-intel-driver.
|
||||
+ **21.02.18:** Fix wrong version of iconv used.
|
||||
+ **18.02.18:** Add vaapi support, some cleanup and dropping of deprecated options.
|
||||
+ **04.01.18:** Deprecate cpu_core routine lack of scaling.
|
||||
+ **11.12.17:** Rebase to alpine 3.7, linting fixes.
|
||||
+ **02.09.17:** Add codec dependencies.
|
||||
+ **13.07.17:** Increase uniformity across all archs.
|
||||
+ **08.07.17:** Update README with full path for comskip.
|
||||
+ **02.07.17:** Move to one branch for all 4.2 releases.
|
||||
+ **27.05.17:** Rebase to alpine 3.6.
|
||||
+ **01.05.17:** Update to tvheadend 4.2.1 stable.
|
||||
+ **18.04.17:** Use repo version of gnu-libiconv rather than compiling.
|
||||
+ **09.04.17:** Chain cpanm installs in one block and use --installdeps.
|
||||
+ **09.02.17:** Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
|
||||
+ **07.02.17:** Add variable to add additional runtime paramters.
|
||||
+ **05.02.17:** Update to alpine 3.5 and change dvb-apps to only compile needed libs.
|
||||
+ **14.11.16:** Add picons from picons.xyz to /picons folder and add info to README.
|
||||
+ **22.09.16:** Fix broken tv_grab_wg, libs for xmltv and update README.
|
||||
+ **18.09.16:** Update XMLTV to 0.5.68 and update README.
|
||||
+ **10.09.16:** Add layer badges to README.
|
||||
+ **05.09.16:** Initial release.
|
||||
{%- endraw %}
|
||||
# changelog
|
||||
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: "14.02.19:", desc: "Add picons path to config." }
|
||||
- { date: "15.01.19:", desc: "Add pipeline logic and multi arch." }
|
||||
- { date: "12.09.18:", desc: "Rebase to alpine 3.8 and use buildstage type build." }
|
||||
- { date: "21.04.18:", desc: "Add JSON::XS Perl package for grab_tv_huro." }
|
||||
- { date: "24.03.18:", desc: "Add dvbcsa package." }
|
||||
- { date: "04.03.18:", desc: "Use sourceforge master rather than mirror for xmltv." }
|
||||
- { date: "22.02.18:", desc: "Add lost libva-intel-driver." }
|
||||
- { date: "21.02.18:", desc: "Fix wrong version of iconv used." }
|
||||
- { date: "18.02.18:", desc: "Add vaapi support, some cleanup and dropping of deprecated options." }
|
||||
- { date: "04.01.18:", desc: "Deprecate cpu_core routine lack of scaling." }
|
||||
- { date: "11.12.17:", desc: "Rebase to alpine 3.7, linting fixes." }
|
||||
- { date: "02.09.17:", desc: "Add codec dependencies." }
|
||||
- { date: "13.07.17:", desc: "Increase uniformity across all archs." }
|
||||
- { date: "08.07.17:", desc: "Update README with full path for comskip." }
|
||||
- { date: "02.07.17:", desc: "Move to one branch for all 4.2 releases." }
|
||||
- { date: "27.05.17:", desc: "Rebase to alpine 3.6." }
|
||||
- { date: "01.05.17:", desc: "Update to tvheadend 4.2.1 stable." }
|
||||
- { date: "18.04.17:", desc: "Use repo version of gnu-libiconv rather than compiling." }
|
||||
- { date: "09.04.17:", desc: "Chain cpanm installs in one block and use --installdeps." }
|
||||
- { date: "09.02.17:", desc: "Perl changes, add picons file to gitignore and update XMLTV to 0.5.69." }
|
||||
- { date: "07.02.17:", desc: "Add variable to add additional runtime paramters." }
|
||||
- { date: "05.02.17:", desc: "Update to alpine 3.5 and change dvb-apps to only compile needed libs." }
|
||||
- { date: "14.11.16:", desc: "Add picons from picons.xyz to /picons folder and add info to README." }
|
||||
- { date: "22.09.16:", desc: "Fix broken tv_grab_wg, libs for xmltv and update README." }
|
||||
- { date: "18.09.16:", desc: "Update XMLTV to 0.5.68 and update README." }
|
||||
- { date: "10.09.16:", desc: "Add layer badges to README." }
|
||||
- { date: "05.09.16:", desc: "Initial Release." }
|
||||
|
||||
7
root/defaults/config
Normal file
7
root/defaults/config
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"prefer_picon": true,
|
||||
"chiconpath": "file:///picons/%C.png",
|
||||
"piconpath": "file:///picons/",
|
||||
"piconscheme": 0,
|
||||
"chiconscheme": 2
|
||||
}
|
||||
@@ -9,8 +9,38 @@ mkdir -p \
|
||||
(mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0)
|
||||
[[ ! -e /config/comskip/comskip.ini ]] && \
|
||||
cp /defaults/comskip.ini.org /config/comskip/comskip.ini
|
||||
[[ ! -e /config/config ]] && \
|
||||
(cp /defaults/config /config/config)
|
||||
|
||||
# permissions
|
||||
chown -R abc:abc \
|
||||
/config \
|
||||
/picons
|
||||
# extract picons on first run
|
||||
[[ -f /picons.tar.bz2 ]] && \
|
||||
tar xf \
|
||||
/picons.tar.bz2 -C \
|
||||
/picons &&
|
||||
rm -f /picons.tar.bz2
|
||||
|
||||
# function to randomly sample 5 files for their owner and only chown if not abc
|
||||
chowner () {
|
||||
files=(${1}/*)
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user