From ac60a7ca51c30fa6fe1dc2d0412340d1ad151e46 Mon Sep 17 00:00:00 2001 From: Tarun Khandelwal Date: Wed, 25 Sep 2024 09:47:06 +0530 Subject: [PATCH] Publish container images to ghcr --- .github/workflows/push.yml | 73 ++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 3d2d007..dc9484a 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -7,41 +7,44 @@ on: tags: - v* +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + jobs: - build: + build-and-push-image: runs-on: ubuntu-latest + permissions: + contents: read + packages: write + attestations: write + id-token: write steps: - - uses: actions/checkout@v3 - - - name: Get all git tags - run: git fetch --prune --unshallow --tags - - - uses: actions/setup-go@v3 - with: - go-version: '>=1.17.0' - - - name: Run tests - run: make test - - - uses: sonarsource/sonarqube-scan-action@master - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} - - - uses: sonarsource/sonarqube-quality-gate-action@master - timeout-minutes: 5 - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - - name: Build image - run: make image - - - name: Sign in to Docker Hub - run: echo -n ${{secrets.DOCKER_HUB_PASSWORD}} | docker login -u ${{secrets.DOCKER_HUB_USERNAME}} --password-stdin - - - name: Push image to registry - run: make publish - - - name: Sign out from Docker Hub - if: always() - run: docker logout + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + id: push + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true