diff --git a/.drone.yml b/.drone.yml index 73316a1..1226f0a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,47 +4,52 @@ pipeline: commands: # Grab the current version, prevents race conditions - apk add --no-cache openssl jq - - wget -qO- https://adam-ant.co.uk/plex/pass-version.php | tee /dev/stderr | jq -r .release > .plex_version + - wget -qO- https://spritsail.io/plex/release.php?pass | tee .plex_release + - jq -r '.["url-deb"]' .plex_release > .plex_url + - jq -r '.["version"]' .plex_release > .plex_version + - jq -r '.["csum-deb"]' .plex_release > .plex_checksum + - jq -r '.["version"]' .plex_release | cut -d- -f1 > .plex_tag build: - image: docker - volumes: - - /var/run/docker.sock:/var/run/docker.sock - commands: - - docker build --no-cache --pull --build-arg PLEX_VER="$(cat .plex_version)" -t ppass-dev . + image: spritsail/docker-build + volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] + repo: ppass-dev + build_args: + - 'PLEX_URL=%file: .plex_url' + - 'PLEX_VER=%file: .plex_version' + - 'PLEX_SHA=%file: .plex_checksum' test: image: docker - volumes: - - /var/run/docker.sock:/var/run/docker.sock + volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] commands: - apk add --no-cache curl xmlstarlet grep - export CUR_VERSION="$(cat .plex_version)" - CON_NAME=$(docker run --rm -d ppass-dev) - - timeout -t 30 docker logs $$CON_NAME & - - sleep 25 # Wait for plex to start! - - curl -sSL $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $$CON_NAME):32400/identity + - timeout -t 15 docker logs $$CON_NAME & + - sleep 10 # Wait for plex to start! + - curl -sSL --retry-max-time 30 --max-time 5 --retry 10 --retry-delay 5 --retry-connrefused + $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $$CON_NAME):32400/identity | tee /dev/stderr | xmlstarlet sel -t -v "/MediaContainer/@version" | grep -qw $CUR_VERSION - docker kill $$CON_NAME publish: - image: docker - when: - branch: [ master, pass ] - event: [ push, tag, deployment ] - secrets: [ DOCKER_USER, DOCKER_PASS ] - volumes: - - /var/run/docker.sock:/var/run/docker.sock - commands: - # Grab just the version, not the hash. Used for tagging - - export CUR_VERSION=$(cat .plex_version | cut -d \- -f1 ) - - echo $CUR_VERSION - - echo $DOCKER_USER - - docker tag ppass-dev adamant/plexmediaserver:plexpass - - docker tag ppass-dev adamant/plexmediaserver:plexpass-$CUR_VERSION - - docker login -u $DOCKER_USER -p $DOCKER_PASS - - docker push adamant/plexmediaserver - - docker rmi adamant/plexmediaserver:plexpass adamant/plexmediaserver:plexpass-$CUR_VERSION ppass-dev - - echo "CONGRATS! SUCCESSFULLY BUILT PLEX VERSION $CUR_VERSION-PASS" + image: spritsail/docker-publish + volumes: [ '/var/run/docker.sock:/var/run/docker.sock' ] + secrets: [ docker_username, docker_password, microbadger_token ] + when: { branch: [ master, pass ], event: [ push, tag, deployment ] } + from: ppass-dev + repo: spritsail/plex-media-server + tags: + - 'plexpass' + - '%fileauto: %prefix: plexpass% .plex_tag' + + notify: + image: appleboy/drone-telegram + when: { status: [ success, failure ] } + secrets: [ telegram_token, telegram_to ] + message: | + *{{repo.owner}}/{{repo.name}} [{{commit.branch}}]*: Build #{{build.number}}: *{{uppercase build.status}}* + {{build.link}} diff --git a/Dockerfile b/Dockerfile index 2f0f5a8..f7a0bf2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,47 @@ -FROM adamant/busybox:libressl -MAINTAINER Adam Dodman +FROM spritsail/busybox:libressl + +ARG PLEX_VER=latest +ARG PLEX_URL +ARG PLEX_SHA +ARG LIBSTDCPP_VER=8-20180312-2 +ARG LIBGCC1_VER=8-20180312-2 + +LABEL maintainer="Spritsail " \ + org.label-schema.vendor="Spritsail" \ + org.label-schema.name="Plex Media Server" \ + org.label-schema.url="https://www.plex.tv/downloads/" \ + org.label-schema.description="Tiny Docker image for Plex Media Server, built on spritsail/busybox" \ + org.label-schema.version=$PLEX_VER ENV SUID=900 SGID=900 ADD start_pms /usr/sbin/start_pms WORKDIR /tmp -ARG PLEX_VER - -ARG LIBSTDCPP_VER=8-20180312-2 -ARG LIBGCC1_VER=8-20180312-2 - -RUN set -ax \ +RUN chmod +x /usr/sbin/start_pms \ && wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc++6_${LIBSTDCPP_VER}_amd64.deb \ && wget http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libgcc1_${LIBGCC1_VER}_amd64.deb \ && dpkg-deb -x libstdc++6*.deb . \ && dpkg-deb -x libgcc1*.deb . \ # We only need the lib files, everything else is debian junk. - && mv /tmp/usr/lib/x86_64-linux-gnu/* /lib \ - && mv /tmp/lib/x86_64-linux-gnu/* /lib \ - && if [ -z "$PLEX_VER" ]; then \ - export PLEX_VER=$(wget -qO- https://adam-ant.co.uk/plex/pass-version.php | sed -n 's/.*"release":\s*"\([^"]*\)".*/\1/p'); \ + && mv $PWD/usr/lib/x86_64-linux-gnu/* /lib \ + && mv $PWD/lib/x86_64-linux-gnu/* /lib \ + \ + && if [ "$PLEX_VER" == "latest" -o -z "$PLEX_URL" ]; then \ + export PLEX_VER="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=version)"; \ + export PLEX_URL="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=url-deb)"; \ + export PLEX_SHA="$(wget -qO- https://spritsail.io/plex/release.php?pass&raw=csum-deb)"; \ fi \ - && wget -O plexmediaserver.deb "https://downloads.plex.tv/plex-media-server/$PLEX_VER/plexmediaserver_"$PLEX_VER"_amd64.deb" \ + && echo "$PLEX_SHA plexmediaserver.deb" > sumfile \ + && wget -O plexmediaserver.deb "$PLEX_URL" \ + && sha1sum -c sumfile \ + \ && dpkg-deb -x plexmediaserver.deb . \ - # Move usr/lib/plexmediaserver. Everything else is useless && mv usr/lib/plexmediaserver /usr/lib \ - && chmod +x /usr/sbin/start_pms \ - && find /tmp -mindepth 1 -delete + && find $PWD -mindepth 1 -delete -HEALTHCHECK --interval=30s --timeout=12s CMD [ "wget", "-O", "/dev/null", "-T", "10", "-q", "localhost:32400/identity" ] +HEALTHCHECK --interval=10s --timeout=5s \ + CMD [ "wget", "-O", "/dev/null", "-T", "10", "-q", "localhost:32400/identity" ] WORKDIR /usr/lib/plexmediaserver diff --git a/README.md b/README.md index c9c3332..32b6ebb 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,19 @@ -[hub]: https://hub.docker.com/r/adamant/plexmediaserver +[hub]: https://hub.docker.com/r/spritsail/plex-media-server +[git]: https://github.com/spritsail/plex-media-server +[drone]: https://drone.spritsail.io/spritsail/plex-media-server -# [adamant/plexmediaserver][hub] +# [spritsail/plex-media-server][hub] -[![](https://images.microbadger.com/badges/image/adamant/plexmediaserver:plexpass.svg)](https://microbadger.com/images/adamant/plexmediaserver:plexpass) [![Docker Pulls](https://img.shields.io/docker/pulls/adamant/plexmediaserver.svg)][hub] [![Docker Stars](https://img.shields.io/docker/stars/adamant/plexmediaserver.svg)][hub] [![Build Status](https://drone.adam-ant.co.uk/api/badges/Adam-Ant/docker-plex-tiny/status.svg)](https://drone.adam-ant.co.uk/Adam-Ant/docker-plex-tiny) +[![](https://images.microbadger.com/badges/image/spritsail/plex-media-server:plexpass.svg)](https://microbadger.com/images/spritsail/plex-media-server:plexpass) +[![Latest Version](https://images.microbadger.com/badges/version/spritsail/plex-media-server:plexpass.svg)][hub] +[![Git Commit](https://images.microbadger.com/badges/commit/spritsail/plex-media-server:plexpass.svg)][git] +[![Docker Pulls](https://img.shields.io/docker/pulls/spritsail/plex-media-server.svg)][hub] +[![Docker Stars](https://img.shields.io/docker/stars/spritsail/plex-media-server.svg)][hub] +[![Build Status](https://drone.spritsail.io/api/badges/spritsail/plex-media-server/status.svg)][drone] -The smallest* Plex Media Server docker image, built on [busybox](https://hub.docker.com/_/busybox/) with glibc and packages from the debian repos. The container contains a bare minimum glibc dependency tree, with most of the crap removed. +The _smallest*_ Plex Media Server docker image, built on barebones [spritsail/busybox](https://hub.docker.com/spritsail/busybox/) with glibc and libraries from source. The container contains a bare minimum glibc dependency tree, with most of the useless crap removed, resulting in the smallest container possible whilst maintaining full functionality. -You can find out more about the [adamant/busybox](https://hub.docker.com/r/adamant/busybox) base image [here](https://github.com/Adam-Ant/docker-busybox-base), with the "package manager" scripts around dpkg +You can find out more about the [spritsail/busybox](https://hub.docker.com/r/spritsail/busybox) base image [here](https://github.com/spritsail/busybox) _*last we checked_