diff --git a/.circleci/config.yml b/.circleci/config.yml index 248289df6..ce58713d5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -13,7 +13,34 @@ workflows: build-docker-images: jobs: - build-with-buildx: + name: build-transmission-openvpn-images context: dockerhub + image-name: haugene/transmission-openvpn + build-context: "." + filters: + branches: + only: + - dev + - master + tags: + only: /^\d+\.\d+.*/ + - build-with-buildx: + name: build-reverse-proxy-images + context: dockerhub + image-name: haugene/transmission-openvpn-proxy + build-context: "proxy" + filters: + branches: + only: + - dev + - master + tags: + only: /^\d+\.\d+.*/ + - build-with-buildx: + name: build-rss-plugin-images + context: dockerhub + image-name: haugene/transmission-rss + build-context: "plugins/rss" filters: branches: only: @@ -25,6 +52,11 @@ workflows: # Job definitions, used by the workflows. jobs: build-with-buildx: + parameters: + image-name: + type: string + build-context: + type: string machine: image: ubuntu-2004:202010-01 steps: @@ -47,10 +79,10 @@ jobs: docker buildx use mybuilder docker run --rm --privileged multiarch/qemu-user-static --reset -p yes docker buildx ls - docker buildx build -t haugene/transmission-openvpn:$IMAGE_TAG --progress plain \ + docker buildx build -t << parameters.image-name >>:$IMAGE_TAG --progress plain \ --platform linux/arm,linux/arm64,linux/amd64 \ --build-arg REVISION=$CIRCLE_SHA1 \ - --push . + --push << parameters.build-context >> build-and-deploy-gh-pages: docker: diff --git a/plugins/rss/Dockerfile b/plugins/rss/Dockerfile index 56b7d85dc..ad7431a2a 100644 --- a/plugins/rss/Dockerfile +++ b/plugins/rss/Dockerfile @@ -1,17 +1,12 @@ -FROM ubuntu:16.04 -MAINTAINER Kristian Haugene - -# Update packages and install software -RUN apt-get update \ - && apt-get -y upgrade \ - && apt-get -y install curl gcc make ruby2.3-dev \ - && gem install transmission-rss \ - && curl -L https://github.com/jwilder/dockerize/releases/download/v0.5.0/dockerize-linux-amd64-v0.5.0.tar.gz | tar -C /usr/local/bin -xzv - -ADD . /etc/transmission-rss +FROM ruby:2-alpine +# Image caching, put "never changing" layers first +CMD ["/etc/transmission-rss/start.sh"] ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \ RSS_URL=**None** \ RSS_REGEXP= -CMD ["/etc/transmission-rss/start.sh"] +# Install build-base and transmission-rss gem +RUN apk add build-base && gem install transmission-rss + +ADD . /etc/transmission-rss diff --git a/plugins/rss/Dockerfile.armhf b/plugins/rss/Dockerfile.armhf deleted file mode 100644 index 41c07892b..000000000 --- a/plugins/rss/Dockerfile.armhf +++ /dev/null @@ -1,17 +0,0 @@ -FROM balenalib/raspberry-pi:stretch -MAINTAINER Kristian Haugene - -# Update packages and install software -RUN apt-get update \ - && apt-get -y upgrade \ - && apt-get -y install curl gcc make ruby2.3-dev libc6-dev \ - && gem install transmission-rss \ - && curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv - -ADD . /etc/transmission-rss - -ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \ - RSS_URL=**None** \ - RSS_REGEXP= - -CMD ["/etc/transmission-rss/start.sh"] diff --git a/plugins/rss/DockerfileCrossBuild.armhf b/plugins/rss/DockerfileCrossBuild.armhf deleted file mode 100644 index cc23b65d2..000000000 --- a/plugins/rss/DockerfileCrossBuild.armhf +++ /dev/null @@ -1,23 +0,0 @@ -# This Dockerfile is for building ARM images on x64 machine like Docker Hub - -FROM balenalib/raspberry-pi:stretch -MAINTAINER Kristian Haugene - -RUN [ "cross-build-start" ] - -# Update packages and install software -RUN apt-get update \ - && apt-get -y upgrade \ - && apt-get -y install curl gcc make ruby2.3-dev libc6-dev \ - && gem install transmission-rss \ - && curl -L https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-armhf-v0.2.0.tar.gz | tar -C /usr/local/bin -xzv - -ADD . /etc/transmission-rss - -ENV TRANSMISSION_DOWNLOAD_DIR=/data/completed \ - RSS_URL=**None** \ - RSS_REGEXP= - -CMD ["/etc/transmission-rss/start.sh"] - -RUN [ "cross-build-end" ] diff --git a/plugins/rss/environment-variables.tmpl b/plugins/rss/environment-variables.tmpl deleted file mode 100644 index 4eaa64201..000000000 --- a/plugins/rss/environment-variables.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/bash - -export TRANSMISSION_DOWNLOAD_DIR={{ .Env.TRANSMISSION_DOWNLOAD_DIR }} -export RSS_URL="{{ .Env.RSS_URL }}" -export RSS_REGEXP="{{ .Env.RSS_REGEXP }}" \ No newline at end of file diff --git a/plugins/rss/start.sh b/plugins/rss/start.sh index 7c8fc9754..3325ae4bc 100755 --- a/plugins/rss/start.sh +++ b/plugins/rss/start.sh @@ -1,16 +1,31 @@ #!/bin/sh -# Source our persisted env variables from container startup -dockerize -template /etc/transmission-rss/environment-variables.tmpl:/etc/transmission-rss/environment-variables.sh -. /etc/transmission-rss/environment-variables.sh +# +# This script tries to figure out how the container is configured. +# The user has two options: +# 1. Mount a custom config file to be used +# 2. Use the built in template that supports one feed with regex filter +# -if [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then - echo "NO RSS URL CONFIGURED, IGNORING" +if [ -f /etc/transmission-rss.conf ] ; then + echo "Found mounted /etc/transmission-rss.conf file" +elif [ -z "${RSS_URL}" ] || [ "${RSS_URL}" = "**None**" ] ; then + echo "Error: No config is mounted and RSS_URL is not defined." + echo "Have no config to start from. Exit with error code." + exit 1 else + # Configure plugin based on template. Use sed to insert + sed "s^url: placeholder^url: $RSS_URL^" < /etc/transmission-rss/transmission-rss.tmpl \ + | sed "s^download_path: placeholder^download_path: $TRANSMISSION_DOWNLOAD_DIR^" \ + > /etc/transmission-rss.conf + if [ -z "${RSS_REGEXP}" ] ; then - sed -i 's/regexp:*//g' /etc/transmission-rss/transmission-rss.tmpl + sed -i '/regexp/d' /etc/transmission-rss.conf + else + sed -i "s#regexp: placeholder#regexp: $RSS_REGEXP#" /etc/transmission-rss.conf fi - dockerize -template /etc/transmission-rss/transmission-rss.tmpl:/etc/transmission-rss.conf - echo "STARTING RSS PLUGIN" - transmission-rss fi + +echo "Starting RSS plugin" +cat /etc/transmission-rss.conf +transmission-rss diff --git a/plugins/rss/transmission-rss.tmpl b/plugins/rss/transmission-rss.tmpl index f419bb1ef..600216dfb 100644 --- a/plugins/rss/transmission-rss.tmpl +++ b/plugins/rss/transmission-rss.tmpl @@ -1,7 +1,7 @@ feeds: - - url: {{ .Env.RSS_URL }} - download_path: {{ .Env.TRANSMISSION_DOWNLOAD_DIR }} - regexp: {{ .Env.RSS_REGEXP }} + - url: placeholder + download_path: placeholder + regexp: placeholder server: host: transmission diff --git a/proxy/Dockerfile b/proxy/Dockerfile index 849d1c7a6..53b51e6a8 100644 --- a/proxy/Dockerfile +++ b/proxy/Dockerfile @@ -1,3 +1,3 @@ FROM nginx - -COPY nginx.conf /etc/nginx/nginx.conf \ No newline at end of file +EXPOSE 8080 +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/proxy/Dockerfile.armhf b/proxy/Dockerfile.armhf deleted file mode 100644 index 5956b0258..000000000 --- a/proxy/Dockerfile.armhf +++ /dev/null @@ -1,16 +0,0 @@ -FROM balenalib/raspberry-pi:stretch - -RUN apt-get update \ - && apt-get install -y \ - ca-certificates \ - nginx \ - && rm -rf /var/lib/apt/lists/* - -RUN ln -sf /dev/stdout /var/log/nginx/access.log \ - && ln -sf /dev/stderr /var/log/nginx/error.log - -EXPOSE 8080 - -COPY nginx.conf /etc/nginx/nginx.conf - -CMD ["nginx", "-g", "daemon off;"] diff --git a/proxy/DockerfileCrossBuild.armhf b/proxy/DockerfileCrossBuild.armhf deleted file mode 100644 index ec6ce57b8..000000000 --- a/proxy/DockerfileCrossBuild.armhf +++ /dev/null @@ -1,22 +0,0 @@ -# This Dockerfile is for building ARM images on x64 machine like Docker Hub - -FROM balenalib/raspberry-pi:stretch - -RUN [ "cross-build-start" ] - -RUN apt-get update \ - && apt-get install -y \ - ca-certificates \ - nginx \ - && rm -rf /var/lib/apt/lists/* - -RUN ln -sf /dev/stdout /var/log/nginx/access.log \ - && ln -sf /dev/stderr /var/log/nginx/error.log - -EXPOSE 8080 - -COPY nginx.conf /etc/nginx/nginx.conf - -CMD ["nginx", "-g", "daemon off;"] - -RUN [ "cross-build-end" ]