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


9

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_namesera release.

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


1
Je ne le crois pas. Vous auriez besoin d'accéder au référentiel qui crée la version.
osowskit

Réponses:


7

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_dispatchworkflow à exécuter dans un autre référentiel. l' action de dépôt-répartition 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 repojeton de portée au lieu de la valeur par défaut GITHUB_TOKEN. Pour plus de détails à ce sujet, voir Pousser vers l'origine à partir de l'action GitHub

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 'your-email@users.noreply.github.com'
          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 ressources dont vous avez besoin et effectuer le traitement dont vous avez besoin.


1
Malheureusement, vous avez confirmé mon intuition. De plus, merci de partager votre approche.
PierDipi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.