Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

github `registry_package` event doesn’t trigger

I managed to create two actions on 1 private repository:

  • The first one builds the image and push the docker image to GitHub
    Container Registry
  • The second one needs to be triggered when newer
    image is published to the GitHub container registry and deploy the
    image

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:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading