name: Docker release build

on:
  release:
    types: [published]

jobs:
    build:
        if: github.repository == 'rclone/rclone'
        runs-on: ubuntu-latest
        name: Build image job
        steps:
            - name: Free some space
              shell: bash
              run: |
                df -h .
                # Remove android SDK
                sudo rm -rf /usr/local/lib/android || true
                # Remove .net runtime
                sudo rm -rf /usr/share/dotnet || true
                df -h .
            - name: Checkout master
              uses: actions/checkout@v4
              with:
                fetch-depth: 0
            - name: Get actual patch version
              id: actual_patch_version
              run: echo ::set-output name=ACTUAL_PATCH_VERSION::$(echo $GITHUB_REF | cut -d / -f 3 | sed 's/v//g')
            - name: Get actual minor version
              id: actual_minor_version
              run: echo ::set-output name=ACTUAL_MINOR_VERSION::$(echo $GITHUB_REF | cut -d / -f 3 | sed 's/v//g' | cut -d "." -f 1,2)
            - name: Get actual major version
              id: actual_major_version
              run: echo ::set-output name=ACTUAL_MAJOR_VERSION::$(echo $GITHUB_REF | cut -d / -f 3 | sed 's/v//g' | cut -d "." -f 1)
            - name: Set up QEMU
              uses: docker/setup-qemu-action@v3
            - name: Set up Docker Buildx
              uses: docker/setup-buildx-action@v3
            - name: Login to Docker Hub
              uses: docker/login-action@v3
              with:
                username: ${{ secrets.DOCKER_HUB_USER }}
                password: ${{ secrets.DOCKER_HUB_PASSWORD }}
            - name: Build and publish image
              uses: docker/build-push-action@v6
              with:
                file: Dockerfile
                context: .
                platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6
                push: true
                tags: |
                  rclone/rclone:latest
                  rclone/rclone:${{ steps.actual_patch_version.outputs.ACTUAL_PATCH_VERSION }}
                  rclone/rclone:${{ steps.actual_minor_version.outputs.ACTUAL_MINOR_VERSION }}
                  rclone/rclone:${{ steps.actual_major_version.outputs.ACTUAL_MAJOR_VERSION }}

    build_docker_volume_plugin:
        if: github.repository == 'rclone/rclone'
        needs: build
        runs-on: ubuntu-latest
        name: Build docker plugin job
        steps:
            - name: Free some space
              shell: bash
              run: |
                df -h .
                # Remove android SDK
                sudo rm -rf /usr/local/lib/android || true
                # Remove .net runtime
                sudo rm -rf /usr/share/dotnet || true
                df -h .
            - name: Checkout master
              uses: actions/checkout@v4
              with:
                fetch-depth: 0
            - name: Build and publish docker plugin
              shell: bash
              run: |
                VER=${GITHUB_REF#refs/tags/}
                PLUGIN_USER=rclone
                docker login --username ${{ secrets.DOCKER_HUB_USER }} \
                             --password-stdin <<< "${{ secrets.DOCKER_HUB_PASSWORD }}"
                for PLUGIN_ARCH in amd64 arm64 arm/v7 arm/v6 ;do
                    export PLUGIN_USER PLUGIN_ARCH
                    make docker-plugin PLUGIN_TAG=${PLUGIN_ARCH/\//-}
                    make docker-plugin PLUGIN_TAG=${PLUGIN_ARCH/\//-}-${VER#v}
                done
                make docker-plugin PLUGIN_ARCH=amd64 PLUGIN_TAG=latest
                make docker-plugin PLUGIN_ARCH=amd64 PLUGIN_TAG=${VER#v}