¿Qué es Script de GitHub?
Aquí se explicará cómo Script de GitHub 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 autenticado de octokit y permite escribir JavaScript directamente en un archivo de flujo de trabajo. Se ejecuta en Node.js, así que cuenta con la eficacia de esa plataforma a la hora de escribir scripts.
Qué es octokit
octokit es la colección oficial de clientes de la API de GitHub. Uno de estos clientes, rest.js, proporciona acceso de JavaScript a la interfaz de 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. No solo tiene acceso a confirmaciones, solicitudes de incorporación de cambios y problemas, sino que 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 integra GitHub, lo más probable es que encuentre 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 cuanto al uso es que Script de GitHub proporciona un cliente de octokit/rest.js previamente autenticado denominado github
.
Así que en lugar de:
octokit.issues.createComment({
Usaría:
github.issues.createComment({
Además de la variable github
, también se proporcionan las siguientes variables:
context
es un objeto que contiene el contexto de la ejecución del flujo de trabajo.core
es una referencia al paquete @actions/core.io
es una referencia al paquete @actions/io.
Compilació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 combinarlas con flujos de trabajo existentes, como los que puede que ya haya configurado para CI/CD. Para demostrar su comodidad, se va a crear un flujo de trabajo completo que usa Script de GitHub para publicar automáticamente un comentario en todos los problemas recién creados.
Se empezará por name
y una cláusula on
que especifica que este flujo de trabajo se ejecuta cuando se abren problemas.
name: Learning GitHub Script
on:
issues:
types: [opened]
Luego definiremos 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 agradecerle que le haya avisado, pero esta sencilla tarea puede llegar a ser abrumadora a medida que el repositorio atrae a más visitantes. Al automatizar un comentario sobre un problema, podría automatizar el proceso de dar las gracias a los visitantes cada vez.
Uso de actions/github-script@0.8.0
La acción actions/github-script@0.8.0
, también conocida como Script de GitHub, hace todo el trabajo pesado de 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 ha ejecutado para su revisión en la pestaña Acciones.
Ejecución desde un archivo independiente
A veces puede ser necesario usar una gran cantidad de código para atender 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 hace lo siguiente:
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.