name: Docker Build and Publish for caddy-cloudflare-ddns-crowdsec on: workflow_dispatch: push: branches: [ "main" ] paths: - caddy-cloudflare-ddns-crowdsec/Dockerfile env: DOCKERHUB_REPO: caddy-cloudflare-ddns-crowdsec jobs: build: strategy: matrix: config: - {arch: 'arm64'} - {arch: 'amd64'} runs-on: ${{ matrix.config.arch == 'arm64' && 'ubuntu-arm64' || 'ubuntu-amd64' }} steps: - name: Checkout uses: actions/checkout@v4 - name: Parse Caddy version id: version run: echo "VERSION=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' ${{ env.DOCKERHUB_REPO }}/Dockerfile | cut -d ':' -f2)" >> $GITHUB_ENV - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and Push Docker images for all Container Registries uses: docker/build-push-action@v6 with: tags: ryuupendragon/${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-${{matrix.config.arch}}, ryuupendragon/${{ env.DOCKERHUB_REPO }}:latest-${{matrix.config.arch}} file: ${{ env.DOCKERHUB_REPO }}/Dockerfile push: true merge-docker-manifest: runs-on: ubuntu-latest needs: build steps: - name: Checkout uses: actions/checkout@v4 - name: Parse Caddy version id: version run: echo "VERSION=$(grep -Eo 'caddy:[0-9]+\.[0-9]+\.[0-9]+$' ${{ env.DOCKERHUB_REPO }}/Dockerfile | cut -d ':' -f2)" >> $GITHUB_ENV - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Create and push manifest images for pinned uses: Noelware/docker-manifest-action@v1 with: inputs: ryuupendragon/${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-arm64,ryuupendragon/${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-amd64 tags: ryuupendragon/${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }} push: true - name: Create and push manifest images for latest uses: Noelware/docker-manifest-action@v1 with: inputs: ryuupendragon/${{ env.DOCKERHUB_REPO }}:latest-arm64,ryuupendragon/${{ env.DOCKERHUB_REPO }}:latest-amd64 tags: ryuupendragon/${{ env.DOCKERHUB_REPO }}:latest push: true