Lösen Sie eine GitHub-Aktion aus, wenn ein anderes Repository eine neue Version erstellt

9

Ich versuche, einen GitHub-Workflow zu erstellen, der ausgelöst wird, wenn ein anderes Repository eine neue Version erstellt.

In der Dokumentation gibt es den Absatz: on.event_name.typesWo event_namewird sein release.

Die Frage ist: Gibt es eine Möglichkeit, auf das releaseEreignis eines anderen Repositorys zu verweisen ?

PierDipi
quelle
1
Ich glaube nicht. Sie benötigen Zugriff auf das Repo, mit dem die Veröffentlichung erstellt wird.
Osowskit

Antworten:

7

Gibt es eine Möglichkeit, auf das Release-Ereignis eines anderen Repositorys zu verweisen?

Ziemlich sicher, dass diese Funktion nicht vorhanden ist.

Wenn Sie Zugriff auf das Repository haben, das die Version erstellt, können Sie ein Webhook-Ereignis aufrufen, um einen on: repository_dispatchWorkflow für die Ausführung in einem anderen Repository auszulösen . In diesem Fall kann eine Repository-Versandaktion hilfreich sein.

Wenn Sie keinen Zugriff auf das Repository haben, das die Version erstellt (was hier vermutlich der Fall ist), ist dies mein Vorschlag. Erstellen Sie zunächst den folgenden Workflow, der regelmäßig das Release-Versions-Tag des Repositorys überprüft, das Sie verfolgen möchten. Wenn es von der Release-Version abweicht, die Sie derzeit in Ihrem Repository gespeichert haben, wird die neue Version festgeschrieben.

Beachten Sie, dass Sie zuerst die Zieldatei vorbereiten müssen (z. B. release-version / swagger-ui-latest.txt), damit die Prüfung der geänderten Dateien funktioniert. Außerdem müssen Sie repoanstelle des Standardtokens ein Token mit Gültigkeitsbereich verwenden GITHUB_TOKEN. Weitere Informationen hierzu finden Sie unter Push to origin from GitHub-Aktion

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

Anschließend können Sie einen zweiten Workflow erstellen, der nur ausgeführt wird, wenn Änderungen am Verzeichnis festgestellt werden release-versions.

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

In diesem Workflow können Sie die gespeicherte Version verwenden, um die benötigten Assets abzurufen und die erforderliche Verarbeitung durchzuführen.

Peterevans
quelle
1
Leider hast du meine Vermutung bestätigt. Außerdem vielen Dank, dass Sie Ihren Ansatz geteilt haben.
PierDipi