name: Build and Publish Docker Image on: push: branches: [main] tag_push: paths: - '*/' # Include all tags in any directory jobs: build-and-publish: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup Docker Buildx uses: docker-actions/setup-buildx-action@v1 with: context: ${{ github.workspace }} - name: Login to Docker Hub uses: actions/docker/login@v2 with: registry: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build image id: build uses: docker-buildx-action@v1 with: context: ${{ github.workspace }} push: false dockerfile: Dockerfile - name: Tag and publish image (main branch) if: github.ref == 'refs/heads/main' uses: docker-actions/push-image@v2 with: context: ${{ github.workspace }} registry: ${{ secrets.DOCKERHUB_USERNAME }} tag: latest - name: Tag and publish image (git tags) if: startsWith(github.event.ref, 'refs/tags/') uses: docker-actions/tag-image@v1 with: context: ${{ github.workspace }} registry: ${{ secrets.DOCKERHUB_USERNAME }} image: ${{ steps.build.outputs.image }} tag: ${{ github.event.ref.replace('refs/tags/', '') }} - name: Publish tagged image uses: docker-actions/push-image@v2 with: context: ${{ github.workspace }} registry: ${{ secrets.DOCKERHUB_USERNAME }} tag: ${{ github.event.ref.replace('refs/tags/', '') }} - name: Set output image name uses: actions/set-output@v1 with: name: image_name value: ${{ steps.build.outputs.image }} - name: Save image to GitHub Container Registry (optional) if: github.event.action == 'push' && github.ref == 'refs/heads/main' uses: actions/create-github-container-registry-image@v1 with: name: sami/brudi-rclone image: ${{ steps.build.outputs.image }}