Activa una acción de GitHub cuando otro repositorio crea una nueva versión

9

Estoy tratando de construir un flujo de trabajo de GitHub que se activará cuando otro repositorio cree una nueva versión.

En la documentación, está el párrafo: on.event_name.typesdónde event_nameestará release.

La pregunta es: ¿hay alguna forma de referirse al releaseevento de otro repositorio?

PierDipi
fuente
1
No lo creo Necesitaría acceso al repositorio que crea la versión.
osowskit

Respuestas:

7

¿Hay alguna forma de referirse al evento de lanzamiento de otro repositorio?

Bastante seguro de que esta característica no existe.

Si tiene acceso al repositorio que crea la versión, puede llamar a un evento webhook para activar un on: repository_dispatchflujo de trabajo para que se ejecute en otro repositorio. la acción de despacho de repositorio puede ayudar en este caso.

Si no tiene acceso al repositorio que crea la versión (que supongo que es el caso aquí), esta sería mi sugerencia. Primero, cree el siguiente flujo de trabajo que verifica periódicamente la etiqueta de la versión de lanzamiento del repositorio que desea rastrear. Si difiere de la versión de lanzamiento que ha guardado actualmente en su repositorio, se confirmará la nueva versión.

Tenga en cuenta que primero debe preparar el archivo de destino (p. Ej., Versiones de lanzamiento / swagger-ui-latest.txt) para que la verificación de los archivos modificados funcione. Además, debe usar un repotoken con ámbito en lugar del predeterminado GITHUB_TOKEN. Para obtener más detalles al respecto, 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

Luego, puede crear un segundo flujo de trabajo que solo se ejecuta cuando ve algún cambio en el directorio release-versions.

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

En este flujo de trabajo, puede usar la versión guardada para obtener los activos que necesita y realizar cualquier procesamiento que necesite.

peterevanos
fuente
1
Lamentablemente confirmaste mi corazonada. Además, gracias por compartir tu enfoque.
PierDipi