Uruchom akcję GitHub, gdy inne repozytorium utworzy nową wersję

9

Próbuję zbudować przepływ pracy GitHub, który zostanie uruchomiony, gdy nowe repozytorium utworzy nowe wydanie.

W dokumentacji znajduje się akapit: on.event_name.typesgdzie event_namebędzierelease .

Pytanie brzmi: czy jest jakiś sposób na odniesienie do releasezdarzenia innego repozytorium?

PierDipi
źródło
1
Nie wierzę w to. Potrzebujesz dostępu do repozytorium, które tworzy wydanie.
osowskit,

Odpowiedzi:

7

Czy istnieje sposób odwoływania się do zdarzenia wydania innego repozytorium?

Dość pewna, że ​​ta funkcja nie istnieje.

Jeśli masz dostęp do repozytorium tworzącego wydanie, możesz wywołać zdarzenie webhook, aby uruchomić on: repository_dispatchprzepływ pracy w innym repozytorium. w tym przypadku pomocne może być działanie repozytorium-dyspozytorskie .

Jeśli nie masz dostępu do repozytorium tworzącego wydanie (co, jak zakładam, ma miejsce tutaj), to byłaby moja sugestia. Najpierw utwórz następujący przepływ pracy, który okresowo sprawdza znacznik wersji wydania repozytorium, które chcesz śledzić. Jeśli różni się od wersji, którą aktualnie zapisałeś w swoim repozytorium, nowa wersja zostanie zatwierdzona.

Pamiętaj, że musisz najpierw przygotować plik docelowy (np. Release-version / swagger-ui-latest.txt), aby zmodyfikowane pliki sprawdzały, czy działają. Ponadto należy użyć repotokena o zasięgu zamiast domyślnego GITHUB_TOKEN. Aby uzyskać więcej informacji na ten temat, zobacz 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

Następnie możesz utworzyć drugi przepływ pracy, który będzie działał tylko wtedy, gdy zobaczy zmiany w katalogu release-versions.

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

W tym przepływie pracy możesz użyć zapisanej wersji, aby pobrać potrzebne zasoby i wykonać dowolne potrzebne przetwarzanie.

peterevans
źródło
1
Niestety potwierdziłeś moje przeczucie. Poza tym dziękuję za podzielenie się swoim podejściem.
PierDipi