Compare commits

..

41 Commits

Author SHA1 Message Date
j0nnymoe
6dfbb30c0a Merge pull request #108 from thelamer/release-4.2
adding dynamic readme
2019-02-12 14:34:26 +00:00
thelamer
94b0bc34c7 adding dynamic readme 2019-02-11 21:07:25 -08:00
LinuxServer-CI
2c89a24550 Bot Updating Package Versions 2019-02-11 22:20:05 +00:00
LinuxServer-CI
4d2207db61 Bot Updating Templated Files 2019-02-11 21:42:22 +00:00
aptalca
27ac3525fb Merge pull request #105 from linuxserver/pipeline-4.2
adding multi arch and pipeline logic, pulling picons from object storage
2019-02-11 16:41:43 -05:00
thelamer
946c4fd8a9 adding multi arch and pipeline logic, pulling picons from object storage 2019-01-17 22:46:45 -08:00
aptalca
bf0911b6f5 Merge pull request #95 from linuxserver/release-4.2_rebase_alpine_3.8
rebase to alpine 3.8 and use buildstage type build
2018-09-12 15:31:15 -04:00
sparklyballs
1a9770d227 rebase to alpine 3.8 2018-09-12 15:46:35 +01:00
sparklyballs
c0a3661442 rebase to alpine 3.8 and use buildstage type build 2018-09-03 12:38:00 +01:00
saarg
ba0a26bfb1 Merge pull request #85 from linuxserver/xmltv_4.2
Add JSON::XS Perl package for grab_tv_huro
2018-04-21 21:00:35 +02:00
tobbenb
ac7dc7b478 Add JSON::XS Perl package for grab_tv_huro 2018-04-21 16:41:11 +02:00
sparklyballs
24d94ed4ad Merge pull request #79 from linuxserver/release-4.2_use_sourceforge_master_xmltv
use sourceforge master rather than mirror for xmltv
2018-03-04 11:26:02 +00:00
sparklyballs
fb45df2646 use sourceforge master rather than mirror for xmltv 2018-03-04 09:39:23 +00:00
sparklyballs
57893d0451 Merge pull request #76 from linuxserver/pngquant
Add missing pngquant package
2018-02-23 13:06:20 +00:00
tobbenb
692ee67cf4 Add missing pngquant package 2018-02-22 21:57:43 +01:00
saarg
cacfb82b62 Merge pull request #75 from linuxserver/iconv_4.2
Fix wrong version of Iconv and add build options
2018-02-21 23:41:34 +01:00
tobbenb
e3b56a32cc Remove old libiconv patch 2018-02-21 23:01:55 +01:00
tobbenb
b487342878 Sparklyfi Dockerfile 2018-02-21 21:57:19 +01:00
tobbenb
0a365513dd Update README 2018-02-21 21:54:23 +01:00
tobbenb
1075ff6c38 Add build options from CvH 2018-02-21 21:52:32 +01:00
tobbenb
76d27bb36d Fix iconv runtime crash 2018-02-21 21:50:56 +01:00
sparklyballs
2f197666ac Merge pull request #66 from linuxserver/release-4.2_deprecate_cpu_core
deprecate cpu_core routine lack of scaling
2018-01-04 20:45:39 +00:00
sparklyballs
34b9ebf98f deprecate cpu_core routine lack of scaling 2018-01-04 11:49:17 +00:00
sparklyballs
e1e7730dcc Merge pull request #64 from linuxserver/release-4.2_3.7
bump alpine 3.7, fix continuation lines, linting fixes
2017-12-11 14:44:51 +00:00
sparklyballs
8269eee493 bump alpine 3.7, fix continuation lines, linting fixes 2017-12-11 12:42:03 +00:00
sparklyballs
4fa1634986 Update README.md 2017-12-09 00:40:09 +00:00
sparklyballs
5b5dee7f67 dot resolves weird github/jenkins syncing commits 2017-12-02 00:08:48 +00:00
aptalca
56c3b9a524 Merge pull request #61 from linuxserver/release-4.2_config_patches
increased uniformity across all archs
2017-07-13 20:28:00 -04:00
sparklyballs
a815f66aa3 increased uniformity across all archs 2017-07-13 20:21:04 +01:00
sparklyballs
bcaaad93e4 update of README with badges for new ci 2017-07-11 09:38:21 +01:00
sparklyballs
1cd1bf3fc5 Merge pull request #59 from linuxserver/readme-release
Update README with full path for comskip
2017-07-09 12:25:22 +01:00
tobbenb
b210ad4793 Update README with full path for comskip 2017-07-08 12:28:27 +02:00
sparklyballs
4af4d02187 Merge pull request #57 from linuxserver/dockerfile_tidy
tidy up Dockerfile and install runtime packages all in one
2017-07-03 11:12:17 +01:00
sparklyballs
c340938778 tidy up Dockerfile and install runtime packages all in one 2017-07-03 05:42:55 +01:00
tobbenb
cce4adf7e4 Move to one branch for all 4.2 releases 2017-07-02 16:40:53 +02:00
saarg
ee18601f12 Merge pull request #55 from linuxserver/stable-4.2.1_alpine3.6
bump to alpine 3.6
2017-05-28 16:12:22 +02:00
sparklyballs
68cc40f86e bump to alpine 3.6 2017-05-28 02:29:34 +01:00
sparklyballs
9b1f7b3303 Merge pull request #51 from linuxserver/4.2.1
Update to tvheadend 4.2.1 stable
2017-05-01 13:56:26 +01:00
sparklyballs
01af20a3df Update README.md 2017-05-01 12:37:09 +01:00
tobbenb
f65d09bea2 Cleaning up after sparklys cut and paste double 2017-05-01 13:17:08 +02:00
tobbenb
aab4fb1b35 Update to tvheadend 4.2.1 stable 2017-05-01 12:55:41 +02:00
11 changed files with 464 additions and 582 deletions

View File

@@ -1,13 +1,14 @@
FROM lsiobase/alpine:3.9 as buildstage FROM lsiobase/alpine:3.8 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1" ARG TVH_VER="release/4.2"
ARG XMLTV_VER="0.5.69"
ARG TVHEADEND_COMMIT
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config" ENV HOME="/config"
# copy patches # copy patches
@@ -30,19 +31,16 @@ RUN \
gettext-dev \ gettext-dev \
git \ git \
gzip \ gzip \
jq \
libcurl \
libdvbcsa-dev \
libgcrypt-dev \ libgcrypt-dev \
libhdhomerun-dev \ libhdhomerun-dev \
libressl-dev \
libtool \ libtool \
libva-dev \
libvpx-dev \ libvpx-dev \
libxml2-dev \ libxml2-dev \
libxslt-dev \ libxslt-dev \
linux-headers \ linux-headers \
make \ make \
openssl-dev \ mercurial \
opus-dev \ opus-dev \
patch \ patch \
pcre2-dev \ pcre2-dev \
@@ -78,7 +76,6 @@ 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 \
@@ -110,7 +107,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -120,14 +117,18 @@ RUN \
RUN \ RUN \
echo "**** install perl modules for xmltv ****" && \ echo "**** install perl modules for xmltv ****" && \
curl -L https://cpanmin.us | perl - App::cpanminus && \ curl -L http://cpanmin.us | perl - App::cpanminus && \
cpanm --installdeps /tmp/patches cpanm --installdeps /tmp/patches
RUN \ RUN \
echo "**** compile XMLTV ****" && \ echo "**** compile XMLTV ****" && \
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ curl -o \
cd /tmp/xmltv && \ /tmp/xmtltv-src.tar.bz2 -L \
git checkout ${XMLTV_VER} && \ "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}" && \
echo "**** Perl 5.26 fixes for XMTLV ****" && \ 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_latex && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
@@ -137,54 +138,55 @@ 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 -j 2 && \ make && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
RUN \
echo "**** compile dvb-apps ****" && \
hg clone http://linuxtv.org/hg/dvb-apps /tmp/dvb-apps && \
cd /tmp/dvb-apps && \
make -C lib && \
make -C lib DESTDIR=/tmp/dvbapps-build install && \
cp -pr /tmp/dvbapps-build/usr/* /usr/
RUN \ RUN \
echo "**** compile tvheadend ****" && \ echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \ | jq -r '. | .sha'); \
fi && \ fi && \
curl -o \
/tmp/tvheadend.tar.gz -L \
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
mkdir -p \ mkdir -p \
/tmp/tvheadend && \ /tmp/tvheadend && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ tar xf \
/tmp/tvheadend.tar.gz -C \
/tmp/tvheadend/ --strip-components=1 && \
cd /tmp/tvheadend && \ cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
./configure \ ./configure \
`#Encoding` \ --disable-avahi \
--disable-bintray_cache \
--disable-dbus_1 \
--disable-ffmpeg_static \ --disable-ffmpeg_static \
--disable-hdhomerun_static \
--disable-libfdkaac_static \ --disable-libfdkaac_static \
--disable-libmfx_static \
--disable-libtheora_static \ --disable-libtheora_static \
--disable-libopus_static \
--disable-libvorbis_static \ --disable-libvorbis_static \
--disable-libvpx_static \ --disable-libvpx_static \
--disable-libx264_static \ --disable-libx264_static \
--disable-libx265_static \ --disable-libx265_static \
--disable-libfdkaac \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
\
`#Options` \
--disable-avahi \
--disable-dbus_1 \
--disable-bintray_cache \
--disable-hdhomerun_static \
--enable-hdhomerun_client \ --enable-hdhomerun_client \
--enable-libav \ --enable-libav \
--enable-pngquant \ --enable-pngquant \
--enable-trace \
--enable-vaapi \
--infodir=/usr/share/info \ --infodir=/usr/share/info \
--localstatedir=/var \ --localstatedir=/var \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make -j 2 && \ make && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -202,7 +204,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make -j 2 && \ make && \
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 ****" && \
@@ -216,11 +218,11 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make -j 2 && \ make && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine:3.9 FROM lsiobase/alpine:3.8
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -240,18 +242,15 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.1 \ libcrypto1.0 \
libcurl \ libcurl \
libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.1 \ libressl \
libva \ libssl1.0 \
libva-intel-driver \
libvpx \ libvpx \
libxml2 \ libxml2 \
libxslt \ libxslt \
linux-headers \ linux-headers \
openssl \
opus \ opus \
pcre2 \ pcre2 \
perl \ perl \
@@ -286,7 +285,6 @@ 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 \
@@ -315,23 +313,25 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons/picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# 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/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/ COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/dvbapps-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/ COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/ COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/ COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/ COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config /recordings

View File

@@ -1,13 +1,14 @@
FROM lsiobase/alpine:arm64v8-3.9 as buildstage FROM lsiobase/alpine.arm64:3.8 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1" ARG TVH_VER="release/4.2"
ARG XMLTV_VER="0.5.69"
ARG TVHEADEND_COMMIT
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config" ENV HOME="/config"
# copy patches # copy patches
@@ -30,18 +31,16 @@ RUN \
gettext-dev \ gettext-dev \
git \ git \
gzip \ gzip \
jq \
libcurl \
libdvbcsa-dev \
libgcrypt-dev \ libgcrypt-dev \
libhdhomerun-dev \ libhdhomerun-dev \
libressl-dev \
libtool \ libtool \
libvpx-dev \ libvpx-dev \
libxml2-dev \ libxml2-dev \
libxslt-dev \ libxslt-dev \
linux-headers \ linux-headers \
make \ make \
openssl-dev \ mercurial \
opus-dev \ opus-dev \
patch \ patch \
pcre2-dev \ pcre2-dev \
@@ -77,7 +76,6 @@ 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 +107,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -119,14 +117,18 @@ RUN \
RUN \ RUN \
echo "**** install perl modules for xmltv ****" && \ echo "**** install perl modules for xmltv ****" && \
curl -L https://cpanmin.us | perl - App::cpanminus && \ curl -L http://cpanmin.us | perl - App::cpanminus && \
cpanm --installdeps /tmp/patches cpanm --installdeps /tmp/patches
RUN \ RUN \
echo "**** compile XMLTV ****" && \ echo "**** compile XMLTV ****" && \
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ curl -o \
cd /tmp/xmltv && \ /tmp/xmtltv-src.tar.bz2 -L \
git checkout ${XMLTV_VER} && \ "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}" && \
echo "**** Perl 5.26 fixes for XMTLV ****" && \ 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_latex && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
@@ -136,53 +138,55 @@ 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 -j 2 && \ make && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
RUN \
echo "**** compile dvb-apps ****" && \
hg clone http://linuxtv.org/hg/dvb-apps /tmp/dvb-apps && \
cd /tmp/dvb-apps && \
make -C lib && \
make -C lib DESTDIR=/tmp/dvbapps-build install && \
cp -pr /tmp/dvbapps-build/usr/* /usr/
RUN \ RUN \
echo "**** compile tvheadend ****" && \ echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \ | jq -r '. | .sha'); \
fi && \ fi && \
curl -o \
/tmp/tvheadend.tar.gz -L \
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
mkdir -p \ mkdir -p \
/tmp/tvheadend && \ /tmp/tvheadend && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ tar xf \
/tmp/tvheadend.tar.gz -C \
/tmp/tvheadend/ --strip-components=1 && \
cd /tmp/tvheadend && \ cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
./configure \ ./configure \
`#Encoding` \ --disable-avahi \
--disable-bintray_cache \
--disable-dbus_1 \
--disable-ffmpeg_static \ --disable-ffmpeg_static \
--disable-hdhomerun_static \
--disable-libfdkaac_static \ --disable-libfdkaac_static \
--disable-libmfx_static \
--disable-libtheora_static \ --disable-libtheora_static \
--disable-libopus_static \
--disable-libvorbis_static \ --disable-libvorbis_static \
--disable-libvpx_static \ --disable-libvpx_static \
--disable-libx264_static \ --disable-libx264_static \
--disable-libx265_static \ --disable-libx265_static \
--disable-libfdkaac \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
\
`#Options` \
--disable-avahi \
--disable-dbus_1 \
--disable-bintray_cache \
--disable-hdhomerun_static \
--enable-hdhomerun_client \ --enable-hdhomerun_client \
--enable-libav \ --enable-libav \
--enable-pngquant \ --enable-pngquant \
--enable-trace \
--infodir=/usr/share/info \ --infodir=/usr/share/info \
--localstatedir=/var \ --localstatedir=/var \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make -j 2 && \ make && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -200,7 +204,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make -j 2 && \ make && \
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 ****" && \
@@ -214,11 +218,14 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make -j 2 && \ make && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine:arm64v8-3.9 FROM lsiobase/alpine.arm64:3.8
# 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
@@ -238,16 +245,15 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.1 \ libcrypto1.0 \
libcurl \ libcurl \
libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.1 \ libressl \
libssl1.0 \
libvpx \ libvpx \
libxml2 \ libxml2 \
libxslt \ libxslt \
linux-headers \ linux-headers \
openssl \
opus \ opus \
pcre2 \ pcre2 \
perl \ perl \
@@ -282,7 +288,6 @@ 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 \
@@ -311,23 +316,25 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons/picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# 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/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/ COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/dvbapps-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/ COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/ COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/ COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/ COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config /recordings

View File

@@ -1,13 +1,14 @@
FROM lsiobase/alpine:arm32v7-3.9 as buildstage FROM lsiobase/alpine.armhf:3.8 as buildstage
############## build stage ############## ############## build stage ##############
# package versions # package versions
ARG ARGTABLE_VER="2.13" ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1" ARG TVH_VER="release/4.2"
ARG XMLTV_VER="0.5.69"
ARG TVHEADEND_COMMIT
# environment settings # environment settings
ARG TZ="Europe/Oslo" ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config" ENV HOME="/config"
# copy patches # copy patches
@@ -30,18 +31,16 @@ RUN \
gettext-dev \ gettext-dev \
git \ git \
gzip \ gzip \
jq \
libcurl \
libdvbcsa-dev \
libgcrypt-dev \ libgcrypt-dev \
libhdhomerun-dev \ libhdhomerun-dev \
libressl-dev \
libtool \ libtool \
libvpx-dev \ libvpx-dev \
libxml2-dev \ libxml2-dev \
libxslt-dev \ libxslt-dev \
linux-headers \ linux-headers \
make \ make \
openssl-dev \ mercurial \
opus-dev \ opus-dev \
patch \ patch \
pcre2-dev \ pcre2-dev \
@@ -77,7 +76,6 @@ 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 +107,7 @@ RUN \
x265-dev \ x265-dev \
zlib-dev && \ zlib-dev && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv-dev gnu-libiconv-dev
RUN \ RUN \
@@ -119,14 +117,18 @@ RUN \
RUN \ RUN \
echo "**** install perl modules for xmltv ****" && \ echo "**** install perl modules for xmltv ****" && \
curl -L https://cpanmin.us | perl - App::cpanminus && \ curl -L http://cpanmin.us | perl - App::cpanminus && \
cpanm --installdeps /tmp/patches cpanm --installdeps /tmp/patches
RUN \ RUN \
echo "**** compile XMLTV ****" && \ echo "**** compile XMLTV ****" && \
git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ curl -o \
cd /tmp/xmltv && \ /tmp/xmtltv-src.tar.bz2 -L \
git checkout ${XMLTV_VER} && \ "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}" && \
echo "**** Perl 5.26 fixes for XMTLV ****" && \ 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_latex && \
sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \
@@ -136,53 +138,55 @@ 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 -j 2 && \ make && \
make test && \ make test && \
make DESTDIR=/tmp/xmltv-build install make DESTDIR=/tmp/xmltv-build install
RUN \
echo "**** compile dvb-apps ****" && \
hg clone http://linuxtv.org/hg/dvb-apps /tmp/dvb-apps && \
cd /tmp/dvb-apps && \
make -C lib && \
make -C lib DESTDIR=/tmp/dvbapps-build install && \
cp -pr /tmp/dvbapps-build/usr/* /usr/
RUN \ RUN \
echo "**** compile tvheadend ****" && \ echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \ | jq -r '. | .sha'); \
fi && \ fi && \
curl -o \
/tmp/tvheadend.tar.gz -L \
"https://github.com/tvheadend/tvheadend/archive/${TVHEADEND_COMMIT}.tar.gz" && \
mkdir -p \ mkdir -p \
/tmp/tvheadend && \ /tmp/tvheadend && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ tar xf \
/tmp/tvheadend.tar.gz -C \
/tmp/tvheadend/ --strip-components=1 && \
cd /tmp/tvheadend && \ cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
./configure \ ./configure \
`#Encoding` \ --disable-avahi \
--disable-bintray_cache \
--disable-dbus_1 \
--disable-ffmpeg_static \ --disable-ffmpeg_static \
--disable-hdhomerun_static \
--disable-libfdkaac_static \ --disable-libfdkaac_static \
--disable-libmfx_static \
--disable-libtheora_static \ --disable-libtheora_static \
--disable-libopus_static \
--disable-libvorbis_static \ --disable-libvorbis_static \
--disable-libvpx_static \ --disable-libvpx_static \
--disable-libx264_static \ --disable-libx264_static \
--disable-libx265_static \ --disable-libx265_static \
--disable-libfdkaac \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
\
`#Options` \
--disable-avahi \
--disable-dbus_1 \
--disable-bintray_cache \
--disable-hdhomerun_static \
--enable-hdhomerun_client \ --enable-hdhomerun_client \
--enable-libav \ --enable-libav \
--enable-pngquant \ --enable-pngquant \
--enable-trace \
--infodir=/usr/share/info \ --infodir=/usr/share/info \
--localstatedir=/var \ --localstatedir=/var \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/config && \ --sysconfdir=/config && \
make -j 2 && \ make && \
make DESTDIR=/tmp/tvheadend-build install make DESTDIR=/tmp/tvheadend-build install
RUN \ RUN \
@@ -200,7 +204,7 @@ RUN \
cd /tmp/argtable && \ cd /tmp/argtable && \
./configure \ ./configure \
--prefix=/usr && \ --prefix=/usr && \
make -j 2 && \ make && \
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 ****" && \
@@ -214,11 +218,14 @@ RUN \
./configure \ ./configure \
--bindir=/usr/bin \ --bindir=/usr/bin \
--sysconfdir=/config/comskip && \ --sysconfdir=/config/comskip && \
make -j 2 && \ make && \
make DESTDIR=/tmp/comskip-build install make DESTDIR=/tmp/comskip-build install
############## runtime stage ############## ############## runtime stage ##############
FROM lsiobase/alpine:arm32v7-3.9 FROM lsiobase/alpine.armhf:3.8
# 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
@@ -238,16 +245,15 @@ RUN \
ffmpeg \ ffmpeg \
ffmpeg-libs \ ffmpeg-libs \
gzip \ gzip \
libcrypto1.1 \ libcrypto1.0 \
libcurl \ libcurl \
libdvbcsa \
libhdhomerun-libs \ libhdhomerun-libs \
libssl1.1 \ libressl \
libssl1.0 \
libvpx \ libvpx \
libxml2 \ libxml2 \
libxslt \ libxslt \
linux-headers \ linux-headers \
openssl \
opus \ opus \
pcre2 \ pcre2 \
perl \ perl \
@@ -282,7 +288,6 @@ 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 \
@@ -311,23 +316,25 @@ RUN \
x265 \ x265 \
zlib && \ zlib && \
apk add --no-cache \ apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ --repository http://nl.alpinelinux.org/alpine/edge/testing \
gnu-libiconv && \ gnu-libiconv && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons/picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# 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/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/ COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/dvbapps-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/ COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/ COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/ COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/ COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config /recordings

184
Jenkinsfile vendored
View File

@@ -10,7 +10,7 @@ pipeline {
environment { environment {
BUILDS_DISCORD=credentials('build_webhook_url') BUILDS_DISCORD=credentials('build_webhook_url')
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
EXT_GIT_BRANCH = 'master' EXT_GIT_BRANCH = 'release/4.2'
EXT_USER = 'tvheadend' EXT_USER = 'tvheadend'
EXT_REPO = 'tvheadend' EXT_REPO = 'tvheadend'
BUILD_VERSION_ARG = 'TVHEADEND_COMMIT' BUILD_VERSION_ARG = 'TVHEADEND_COMMIT'
@@ -38,10 +38,10 @@ pipeline {
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
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' || : ''', script: '''curl -s https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases | jq -r 'first(.[] | select(.prerelease == true)) | .tag_name' ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''git log -1 --pretty=%B | 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' ''',
@@ -122,17 +122,17 @@ pipeline {
} }
} }
} }
// If this is a master build use live docker endpoints // If this is a release-4.2 build use live docker endpoints
stage("Set ENV live build"){ stage("Set ENV live build"){
when { when {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
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 + '|arm32v7-' + 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 + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -143,14 +143,14 @@ pipeline {
// If this is a dev build use dev docker endpoints // If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){ stage("Set ENV dev build"){
when { when {
not {branch "master"} not {branch "release-4.2"}
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
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 + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_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 + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v6-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
} else { } else {
env.CI_TAGS = env.EXT_RELEASE_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,39 +178,10 @@ 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 {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
expression { expression {
env.CONTAINER_NAME != null env.CONTAINER_NAME != null
@@ -221,13 +192,13 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull linuxserver/jenkins-builder:latest docker pull linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=release-4.2 -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker pull linuxserver/doc-builder:latest docker pull linuxserver/doc-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=release-4.2 -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || [ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ]; then if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || [ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f release-4.2
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
@@ -240,7 +211,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
@@ -258,7 +229,7 @@ pipeline {
// Exit the build if the Templated files were just updated // Exit the build if the Templated files were just updated
stage('Template-exit') { stage('Template-exit') {
when { when {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true' environment name: 'FILES_UPDATED', value: 'true'
expression { expression {
@@ -281,7 +252,7 @@ pipeline {
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
sh "docker build --no-cache --pull -t ${IMAGE}:${META_TAG} \ sh "docker build --no-cache -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} ."
} }
} }
@@ -294,7 +265,7 @@ pipeline {
parallel { parallel {
stage('Build X86') { stage('Build X86') {
steps { steps {
sh "docker build --no-cache --pull -t ${IMAGE}:amd64-${META_TAG} \ sh "docker build --no-cache -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} ."
} }
} }
@@ -315,13 +286,12 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
''' '''
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ 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} \
--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}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm32v6-${META_TAG} lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker push lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER}"
sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
} }
} }
} }
@@ -342,13 +312,12 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
''' '''
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \ 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} \
--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} || :'''
} }
} }
} }
@@ -357,7 +326,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison // Take the image we just built and dump package versions for comparison
stage('Update-packages') { stage('Update-packages') {
when { when {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@@ -372,20 +341,20 @@ 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 -v > /tmp/package_versions.txt && \ apk info > packages && \
sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \ apk info -v > versions && \
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 | sed "s#/.*now ##g" | cut -d" " -f1 > /tmp/package_versions.txt && \ apt list -qq --installed > /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 )
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f release-4.2
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/ cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/ cd ${TEMPDIR}/${LS_REPO}/
wait wait
@@ -409,7 +378,7 @@ pipeline {
// Exit the build if the package file was just updated // Exit the build if the package file was just updated
stage('PACKAGE-exit') { stage('PACKAGE-exit') {
when { when {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true' environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@@ -423,7 +392,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push // Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') { stage('PACKAGECHECK-exit') {
when { when {
branch "master" branch "release-4.2"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false' environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@@ -458,9 +427,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:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm32v6-${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:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${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 \
@@ -507,13 +476,9 @@ pipeline {
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
''' '''
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest" sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:release-4.2"
sh "docker push ${IMAGE}:latest" sh "docker push ${IMAGE}:release-4.2"
sh "docker push ${IMAGE}:${META_TAG}" sh "docker push ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:${META_TAG} \
${IMAGE}:latest || :'''
} }
} }
} }
@@ -537,68 +502,59 @@ pipeline {
''' '''
sh '''#! /bin/bash sh '''#! /bin/bash
if [ "${CI}" == "false" ]; then if [ "${CI}" == "false" ]; then
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull lsiodev/buildcache:arm32v6-${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:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag lsiodev/buildcache:arm32v6-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v6-${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-release-4.2"
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-latest" sh "docker tag ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm32v6-release-4.2"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-release-4.2"
sh "docker push ${IMAGE}:amd64-${META_TAG}" sh "docker push ${IMAGE}:amd64-${META_TAG}"
sh "docker push ${IMAGE}:arm32v7-${META_TAG}" sh "docker push ${IMAGE}:arm32v6-${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-release-4.2"
sh "docker push ${IMAGE}:arm32v7-latest" sh "docker push ${IMAGE}:arm32v6-release-4.2"
sh "docker push ${IMAGE}:arm64v8-latest" sh "docker push ${IMAGE}:arm64v8-release-4.2"
sh "docker manifest push --purge ${IMAGE}:latest || :" sh "docker manifest push --purge ${IMAGE}:release-4.2 || :"
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v7-latest ${IMAGE}:arm64v8-latest" sh "docker manifest create ${IMAGE}:release-4.2 ${IMAGE}:amd64-release-4.2 ${IMAGE}:arm32v6-release-4.2 ${IMAGE}:arm64v8-release-4.2"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v7-latest --os linux --arch arm" sh "docker manifest annotate ${IMAGE}:release-4.2 ${IMAGE}:arm32v6-release-4.2 --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8" sh "docker manifest annotate ${IMAGE}:release-4.2 ${IMAGE}:arm64v8-release-4.2 --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}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}" sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v6-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm" sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v6-${META_TAG} --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8" sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:latest" sh "docker manifest push --purge ${IMAGE}:release-4.2"
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} || :'''
} }
} }
} }
// If this is a public release tag it in the LS Github // If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') { stage('Github-Tag-Push-Release') {
when { when {
branch "master" branch "release-4.2"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-ls' + env.LS_TAG_NUMBER
} }
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
steps { steps {
echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}" echo "Pushing New tag for current commit ${EXT_RELEASE_CLEAN}-pkg-${PACKAGE_TAG}-ls${LS_TAG_NUMBER}"
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ -d '{"tag":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}' to release-4.2",\
"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}'-ls'${LS_TAG_NUMBER}'",\ echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "master",\ "target_commitish": "release-4.2",\
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ "name": "'${EXT_RELEASE_CLEAN}'-pkg-'${PACKAGE_TAG}'-ls'${LS_TAG_NUMBER}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json printf '","draft": false,"prerelease": true}' >> releasebody.json
paste -d'\\0' start releasebody.json > releasebody.json.done paste -d'\\0' start releasebody.json > releasebody.json.done
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
} }
@@ -630,18 +586,6 @@ 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
@@ -654,12 +598,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**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"}],\ "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"}],\
"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**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"}],\ "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"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
} }

View File

@@ -12,6 +12,13 @@ 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)
@@ -31,7 +38,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) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list).
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.
@@ -41,7 +48,7 @@ The architectures supported by this image are:
| :----: | --- | | :----: | --- |
| x86-64 | amd64-latest | | x86-64 | amd64-latest |
| arm64 | arm64v8-latest | | arm64 | arm64v8-latest |
| armhf | arm32v7-latest | | armhf | arm32v6-latest |
## Version Tags ## Version Tags
@@ -63,8 +70,8 @@ Here are some example snippets to help you get started creating a container.
``` ```
docker create \ docker create \
--name=tvheadend \ --name=tvheadend \
-e PUID=1000 \ -e PUID=1001 \
-e PGID=1000 \ -e PGID=1001 \
-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 \
@@ -94,8 +101,8 @@ services:
image: linuxserver/tvheadend image: linuxserver/tvheadend
container_name: tvheadend container_name: tvheadend
environment: environment:
- PUID=1000 - PUID=1001
- PGID=1000 - PGID=1001
- TZ=Europe/London - TZ=Europe/London
- RUN_OPTS=<run options here> #optional - RUN_OPTS=<run options here> #optional
volumes: volumes:
@@ -107,6 +114,7 @@ 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
``` ```
@@ -118,8 +126,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=1000` | for UserID - see below for explanation | | `-e PUID=1001` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1001` | 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. |
@@ -133,11 +141,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=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1001` and `PGID=1001`, to find yours use `id user` as below:
``` ```
$ id username $ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
``` ```
@@ -228,49 +236,12 @@ 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 all images: `docker-compose pull` * Update the image: `docker-compose pull linuxserver/tvheadend`
* or update a single image: `docker-compose pull tvheadend` * Let compose update containers as necessary: `docker-compose up -d`
* 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.
* **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.
* **12.09.18:** - Rebase to alpine 3.8 and use buildstage type build. * **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. * **21.04.18:** - Add JSON::XS Perl package for grab_tv_huro.

View File

@@ -3,11 +3,11 @@
# jenkins variables # jenkins variables
project_name: docker-tvheadend project_name: docker-tvheadend
external_type: github_commit external_type: github_commit
release_type: stable release_type: prerelease
release_tag: latest release_tag: release-4.2
ls_branch: master ls_branch: release-4.2
repo_vars: repo_vars:
- EXT_GIT_BRANCH = 'master' - EXT_GIT_BRANCH = 'release/4.2'
- EXT_USER = 'tvheadend' - EXT_USER = 'tvheadend'
- EXT_REPO = 'tvheadend' - EXT_REPO = 'tvheadend'
- BUILD_VERSION_ARG = 'TVHEADEND_COMMIT' - BUILD_VERSION_ARG = 'TVHEADEND_COMMIT'

View File

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

View File

@@ -1,7 +0,0 @@
{
"prefer_picon": true,
"chiconpath": "file:///picons/%C.png",
"piconpath": "file:///picons/",
"piconscheme": 0,
"chiconscheme": 2
}

View File

@@ -9,38 +9,8 @@ mkdir -p \
(mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0) (mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0)
[[ ! -e /config/comskip/comskip.ini ]] && \ [[ ! -e /config/comskip/comskip.ini ]] && \
cp /defaults/comskip.ini.org /config/comskip/comskip.ini cp /defaults/comskip.ini.org /config/comskip/comskip.ini
[[ ! -e /config/config ]] && \
(cp /defaults/config /config/config)
# extract picons on first run # permissions
[[ -f /picons.tar.bz2 ]] && \ chown -R abc:abc \
tar xf \ /config \
/picons.tar.bz2 -C \ /picons
/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

0
root/etc/services.d/tvheadend/run Executable file → Normal file
View File