githubgithub-actionsghcrgithub-container-registry

github `registry_package` event doesn’t trigger


I managed to create two actions on 1 private repository:

The issue is that the second one it doesn't get triggered and doesn't run. I use GitHub Repo Token, and I found this that says triggering new workflows should be done using a personal access token. Is this the real issue or there is some workaround? Personally I don't want to put my github token there.

As reference here is the yml code for the fist github action:

name: Build Docker Image

    on:
      push:
        branches:
        - feature/ver-64/service-template
      workflow_dispatch:
    
    env:
      REGISTRY: ghcr.io
      IMAGE_NAME: ${{ github.repository }}
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          -
            name: Checkout
            uses: actions/checkout@v2
          -
            name: Docker meta
            id: meta
            uses: docker/metadata-action@v3
            with:
              images: |
                ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
              tags: |
                type=ref,event=branch
                type=ref,event=pr
                type=semver,pattern={{version}}
                type=sha
          -
            name: Set up Docker Buildx
            uses: docker/setup-buildx-action@v1
          -
            name: Login to Github Container Repository
            if: github.event_name != 'pull_request'
            uses: docker/login-action@v1 
            with:
              registry: ${{ env.REGISTRY }}
              username: ${{ github.actor }}
              password: ${{ secrets.GITHUB_TOKEN  }}
          -
            name: Build and push
            uses: docker/build-push-action@v2
            with:
              context: .
              push: ${{ github.event_name != 'pull_request' }}
              tags: ${{ steps.meta.outputs.tags }}
              labels: ${{ steps.meta.outputs.labels }}

And this is the yml for the second one that needs to be trigered once the first one publish new image to the registry:

name: Deploy to Azure

    on:
      registry_package:
        types: [ published, updated ]
    
    
    jobs:
      debug:
        runs-on: ubuntu-latest
        steps:
        - uses: hmarr/debug-action@v2

Solution

  • GitHub actions prevents triggering more actions. Sort of to protect against infinite loops. Hence why the token used by GitHub Actions has a special flag on it which causes the 2nd workflow not to trigger.

    You have a few options:

    1. Use a PAT to push to GitHub Container Registry. (as per the docs)
    2. Have a 2nd stage that depends on the first one in your existing workflow to perform the deployment.
    3. A variation on 2, use a template to extract the deploy logic to a single template, use the same template action in both the workflow that pushes the image as well as the workflow that triggers when an image is pushed