Aam-Digital/ndb-core

View on GitHub
.github/workflows/tagged-commit.yml

Summary

Maintainability
Test Coverage
name: New Tag
on:
  push:
    tags:
      - "*"

jobs:
  publish-image:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v2
      - name: Extract tag
        run: echo "TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
      - name: Build and push prod image
        uses: docker/build-push-action@v3
        with:
          context: ./
          file: ./build/Dockerfile
          builder: ${{ steps.buildx.outputs.name }}
          push: true
          tags: aamdigital/ndb-server:${{ env.TAG }}
          cache-from: type=gha
          cache-to: type=gha,mode=max
          build-args: |
            APP_VERSION=${{ env.TAG }}
            SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_TOKEN }}
            SENTRY_ORG=${{ secrets.SENTRY_ORG }}
            SENTRY_PROJECT=${{ secrets.SENTRY_PROJECT }}
      - name: If new release, delete pre-release tags from Docker Hub
        if: ${{ ! contains(env.TAG, '-master.') }}
        run: |
          token=$(curl -s -L 'https://hub.docker.com/v2/users/login' -H 'Content-Type: application/json' -d '{ "username": "${{ secrets.DOCKER_USERNAME }}", "password": "${{ secrets.DOCKER_PASSWORD }}"}')
          token=${token#*\"token\":\"}
          token=${token%%\"*}
          curl -s -L "https://hub.docker.com/v2/namespaces/aamdigital/repositories/ndb-server/tags?page_size=100" -H "Authorization: Bearer $token" | jq '.results[].name | select(test("-master.")?)' | xargs -n1 -I %TAG curl -s -L -X DELETE "https://hub.docker.com/v2/namespaces/aamdigital/repositories/ndb-server/tags/%TAG" -H "Authorization: Bearer $token"