name: Publish Docker on: push: branches: [master, beta, nightly] tags: [v*] jobs: build-docker: name: Build Docker Image runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v2 - name: Prepare id: prepare run: | if [[ $GITHUB_REF == refs/tags/* ]]; then echo ::set-output name=tag::${GITHUB_REF#refs/tags/} elif [[ $GITHUB_REF == refs/heads/master ]]; then echo ::set-output name=tag::latest else echo ::set-output name=tag::${GITHUB_REF#refs/heads/} fi if [[ $GITHUB_REF == refs/tags/* ]]; then echo ::set-output name=branch::master else echo ::set-output name=branch::${GITHUB_REF#refs/heads/} fi echo ::set-output name=commit::${GITHUB_SHA} echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') echo ::set-output name=docker_platforms::linux/amd64,linux/arm64/v8,linux/arm/v7,linux/arm/v6 echo ::set-output name=docker_image::${{ secrets.DOCKER_REPO }}/tautulli - name: Set up QEMU uses: docker/setup-qemu-action@v1 with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 with: version: latest - name: Cache Docker Layers uses: actions/cache@v2 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Login to DockerHub uses: docker/login-action@v1 if: success() with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v1 if: success() with: registry: ghcr.io username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.GHCR_TOKEN }} - name: Docker Build and Push uses: docker/build-push-action@v2 if: success() with: context: . file: ./Dockerfile push: true platforms: ${{ steps.prepare.outputs.docker_platforms }} build-args: | TAG=${{ steps.prepare.outputs.tag }} BRANCH=${{ steps.prepare.outputs.branch }} COMMIT=${{ steps.prepare.outputs.commit }} BUILD_DATE=${{ steps.prepare.outputs.build_date }} tags: | ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.tag }} ghcr.io/${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.tag }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Post Status to Discord uses: sarisia/actions-status-discord@v1 if: always() with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ job.status }} title: ${{ github.workflow }} nofail: true