Attiva un'azione GitHub quando un altro repository crea una nuova versione


9

Sto cercando di creare un flusso di lavoro GitHub che verrà attivato quando un altro repository crea una nuova versione.

Nella documentazione, c'è il paragrafo: on.event_name.typesdove event_namesarà release.

La domanda è: esiste un modo per fare riferimento releaseall'evento di un altro repository?


1
Io non ci credo. Avresti bisogno di accedere al repository che crea il rilascio.
Osowskit,

Risposte:


7

C'è un modo per fare riferimento all'evento di rilascio di un altro repository?

Abbastanza sicuro che questa funzione non esiste.

Se si ha accesso al repository che crea la versione, è possibile chiamare un evento webhook per attivare l' on: repository_dispatchesecuzione di un flusso di lavoro in un altro repository. l' azione repository-dispatch può aiutare in questo caso.

Se non si ha accesso al repository che crea la versione (che presumo sia il caso qui), questo sarebbe il mio suggerimento. Innanzitutto, creare il seguente flusso di lavoro che controlla periodicamente il tag della versione di rilascio del repository che si desidera tenere traccia. Se differisce dalla versione di rilascio attualmente salvata nel repository, verrà impegnata la nuova versione.

Nota che devi prima preparare il file di destinazione (es. Release-version / swagger-ui-latest.txt) affinché il controllo dei file modificati funzioni. Inoltre, è necessario utilizzare un repotoken con ambito anziché quello predefinito GITHUB_TOKEN. Per maggiori dettagli a riguardo vedi Push sull'origine dall'azione 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

Quindi è possibile creare un secondo flusso di lavoro che viene eseguito solo quando rileva eventuali modifiche alla directory release-versions.

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

In questo flusso di lavoro è possibile utilizzare la versione salvata per recuperare le risorse necessarie e eseguire qualsiasi elaborazione sia necessaria.


1
Purtroppo hai confermato il mio sospetto. Inoltre, grazie per aver condiviso il tuo approccio.
PierDipi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.