Acionar uma ação do GitHub quando outro repositório criar uma nova versão

9

Estou tentando criar um fluxo de trabalho do GitHub que será acionado quando outro repositório criar uma nova versão.

Na documentação, há o parágrafo: on.event_name.typesonde event_nameestará release.

A pergunta é: existe alguma maneira de se referir ao releaseevento de outro repositório?

PierDipi
fonte
11
Eu não acredito nisso. Você precisaria acessar o repositório que cria a liberação.
osowskit 19/10/19

Respostas:

7

Existe alguma maneira de se referir ao evento de lançamento de outro repositório?

Certamente, esse recurso não existe.

Se você tiver acesso ao repositório criando a liberação, poderá chamar um evento webhook para acionar um on: repository_dispatchfluxo de trabalho para execução em outro repositório. A ação de envio de repositório pode ajudar nesse caso.

Se você não tiver acesso ao repositório criando a versão (que eu assumo é o caso aqui), essa seria minha sugestão. Primeiro, crie o seguinte fluxo de trabalho que verifica periodicamente a tag da versão do repositório que você deseja rastrear. Se for diferente da versão que você salvou no seu repositório, a nova versão será confirmada.

Observe que você deve preparar o arquivo de destino primeiro (por exemplo, release-versions / swagger-ui-latest.txt) para que os arquivos modificados funcionem. Além disso, você deve usar um repotoken com escopo definido em vez do padrão GITHUB_TOKEN. Para obter mais detalhes sobre isso, consulte 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

Em seguida, você pode criar um segundo fluxo de trabalho que só será executado quando houver alterações no diretório release-versions.

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

Nesse fluxo de trabalho, você pode usar a versão salva para buscar os ativos necessários e fazer o processamento necessário.

peterevans
fonte
11
Infelizmente você confirmou meu palpite. Além disso, obrigado por compartilhar sua abordagem.
PierDipi