branch build & push #190
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: branch build & push | |
| on: | |
| push: | |
| paths-ignore: | |
| - 'README.md' | |
| tags: [ 'v*.*.*' ] | |
| workflow_dispatch: | |
| env: | |
| REGISTRY: docker.io | |
| IMAGE_NAME: ${{ secrets.DOCKERHUB_IMAGE_NAME }} | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Setup Docker buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Cache Docker layers | |
| uses: actions/cache@v4 | |
| with: | |
| path: /tmp/.buildx-cache | |
| key: ${{ runner.os }}-buildx-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-buildx- | |
| # ------------------------------------------ | |
| # Login to Docker Hub | |
| # ------------------------------------------ | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: docker.io | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| # ------------------------------------------ | |
| # Login to GitHub Container Registry (GHCR) | |
| # ------------------------------------------ | |
| - name: Login to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| # ------------------------------------------------------ | |
| # Build for MAIN → latest (Docker Hub + GHCR) | |
| # ------------------------------------------------------ | |
| - name: Production Build and push | |
| if: ${{ github.ref == 'refs/heads/main' }} | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 | |
| tags: | | |
| ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest | |
| ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest | |
| cache-from: type=local,src=/tmp/.buildx-cache | |
| cache-to: type=local,dest=/tmp/.buildx-cache-new | |
| # ------------------------------------------------------ | |
| # Build for TAGS → versioned tags (Docker Hub + GHCR) | |
| # ------------------------------------------------------ | |
| - name: Production Get Tag Name | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| uses: little-core-labs/[email protected] | |
| id: tagName | |
| - name: Production Tag Build and push | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 | |
| tags: | | |
| ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:${{ steps.tagName.outputs.tag }} | |
| ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:${{ steps.tagName.outputs.tag }} | |
| cache-from: type=local,src=/tmp/.buildx-cache | |
| cache-to: type=local,dest=/tmp/.buildx-cache-new | |
| # ------------------------------------------------------ | |
| # Build for DEVELOP → develop tag (Docker Hub + GHCR) | |
| # ------------------------------------------------------ | |
| - name: Development Build and push | |
| if: ${{ github.ref == 'refs/heads/develop' }} | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: true | |
| platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 | |
| tags: | | |
| ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:develop | |
| ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:develop | |
| cache-from: type=local,src=/tmp/.buildx-cache | |
| cache-to: type=local,dest=/tmp/.buildx-cache-new | |
| # ------------------------------------------ | |
| # Move build cache | |
| # ------------------------------------------ | |
| - name: Move cache | |
| run: | | |
| rm -rf /tmp/.buildx-cache | |
| mv /tmp/.buildx-cache-new /tmp/.buildx-cache |