Qué es Script de GitHub

Completado

En esta unidad, aprenderá cómo GitHub Script le permite automatizar procesos comunes de GitHub mediante flujos de trabajo de Acciones de GitHub.

Qué es Script de GitHub

Script de GitHub es una acción que proporciona un cliente Octokit autenticado y permite que JavaScript se escriba directamente en un archivo de flujo de trabajo. Se ejecuta en Node.js, por lo que tiene la eficacia de esa plataforma disponible al escribir scripts.

¿Qué es Octokit?

Octokit es la colección oficial de clientes para la API de GitHub. Uno de estos clientes, rest.js, proporciona acceso de JavaScript a la interfaz REST de GitHub.

Siempre se ha podido automatizar la API de GitHub mediante octokit/rest.js, aunque podía ser un fastidio configurarla y mantenerla adecuadamente. Una de las grandes ventajas de Script de GitHub es que controla toda esta sobrecarga para que pueda empezar a usar la API inmediatamente. No es necesario preocuparse por las dependencias, la configuración ni siquiera la autenticación.

Qué puede hacer octokit/rest.js

La respuesta breve es que puede hacer prácticamente cualquier cosa con respecto a la automatización de GitHub. Además de tener acceso a confirmaciones, solicitudes de incorporación de cambios y problemas, también tiene acceso a usuarios, proyectos y organizaciones. Puede recuperar listas de archivos usados con frecuencia, como licencias populares o archivos .gitignore. Incluso puede representar Markdown.

Si va a crear algo que integre GitHub, las probabilidades son buenas que encontrará lo que está buscando en la documentación completa de octokit/rest.js.

En qué difiere el uso de Script de GitHub de octokit/rest.js

La principal diferencia en el uso es que el script de GitHub proporciona un cliente octokit/rest.js autenticado previamente denominado github.

Así que en lugar de

octokit.issues.createComment({

se usa

github.issues.createComment({.

Además de la variable github, también se proporcionan las siguientes variables:

Creación de un flujo de trabajo que usa script de GitHub

Las acciones de Script de GitHub encajan en un flujo de trabajo como cualquier otra acción. Como resultado, incluso puede mezclarlos con flujos de trabajo existentes, como los que ya ha configurado para CI/CD. Para ilustrar la comodidad del script de GitHub, ahora creará un flujo de trabajo completo que lo usa para publicar automáticamente un comentario en todos los problemas recién creados.

Comenzará con una name cláusula y que on especifica que el flujo de trabajo se ejecuta cuando se abran problemas:

name: Learning GitHub Script

on:
  issues:
    types: [opened]

A continuación, definirá un trabajo denominado comment que se ejecuta en Linux con una serie de pasos:

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:

En este caso, solo hay un paso: la acción Script de GitHub.

      - uses: actions/github-script@0.8.0
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: "🎉 You've created this issue comment using GitHub Script!!!"
            })

El uso de Acciones de GitHub puede ayudar a automatizar los eventos que tienen lugar en los repositorios. Imagine que un visitante del repositorio abrió un nuevo problema que contiene información sobre un error crítico. Es posible que quiera agradecerles por llamar la atención del error, pero esta tarea sencilla puede ser abrumadora, ya que el repositorio atrae a más visitantes. Al automatizar un comentario de problema, puede automatizar el proceso de agradecimiento a los visitantes cada vez.

Uso de actions/github-script@0.8.0

La actions/github-script@0.8.0 acción, también conocida como Script de GitHub, realiza todo el trabajo difícil para la integración con la API de GitHub.

Esta acción requiere un github-token que se proporciona en tiempo de ejecución para que se autentiquen las solicitudes. Esto se hace automáticamente, así que puede usar ese código tal cual.

El parámetro script puede ser prácticamente cualquier JavaScript que use el cliente octokit/rest/js almacenado en github. En este caso, se trata de una sola línea (dividida en varias líneas para facilitar la lectura) que crea un comentario codificado de forma rígida.

Una vez ejecutado el flujo de trabajo, script de GitHub registra el código que ejecutó para su revisión en la pestaña Acciones :

Captura de pantalla de un flujo de trabajo de script de GitHub completado.

Ejecución desde un archivo independiente

A veces, es posible que tenga que usar una cantidad significativa de código para satisfacer el escenario de script de GitHub. Cuando sucede eso, se puede mantener el script en un archivo independiente y hacer referencia a él desde el flujo de trabajo en lugar de colocar todo el script insertado.

Este es un ejemplo de un flujo de trabajo sencillo que usa esa técnica:

on: push

jobs:
  echo-input:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/github-script@v2
        with:
          script: |
            const path = require('path')
            const scriptPath = path.resolve('./path/to/script.js')
            console.log(require(scriptPath)({context}))

Vea más ejemplos de Script de GitHub.