web-dev-qa-db-fra.com

Déclencher une action GitHub lorsqu'un autre référentiel crée une nouvelle version

J'essaie de créer un flux de travail GitHub qui sera déclenché lorsqu'un autre référentiel crée une nouvelle version.

Dans la documentation, il y a le paragraphe: on.event_name.typesevent_name sera release.

La question est: existe-t-il un moyen de faire référence à l'événement release d'un autre référentiel?

8
PierDipi

Existe-t-il un moyen de faire référence à l'événement de publication d'un autre référentiel?

Assez sûr que cette fonctionnalité n'existe pas.

Si vous avez accès au référentiel créant la version, vous pouvez appeler un événement de webhook pour déclencher un on: repository_dispatch workflow à exécuter dans un autre référentiel. repository-dispatch l'action peut aider dans ce cas.

Si vous n'avez pas accès au référentiel créant la version (ce qui, je suppose, est le cas ici), ce serait ma suggestion. Tout d'abord, créez le workflow suivant qui vérifie périodiquement la balise de version de sortie du référentiel que vous souhaitez suivre. Si elle diffère de la version finale que vous avez actuellement enregistrée dans votre référentiel, la nouvelle version sera validée.

Notez que vous devez d'abord préparer le fichier de destination (par exemple, release-versions/swagger-ui-latest.txt) pour que la vérification des fichiers modifiés fonctionne. De plus, vous devez utiliser un jeton de portée repo au lieu de la valeur par défaut GITHUB_TOKEN. Pour plus de détails à ce sujet, voir Push to Origin from GitHub action

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email '[email protected]'
          git commit -am "New release version"
          git Push

Vous pouvez ensuite créer un deuxième flux de travail qui ne s'exécute que lorsqu'il voit des modifications dans le répertoire release-versions.

on:
  Push:
    paths:
      - 'release-versions/*'

Dans ce flux de travail, vous pouvez utiliser la version enregistrée pour récupérer les actifs dont vous avez besoin et effectuer le traitement dont vous avez besoin.

6
peterevans