Introducción: el cliente Octokit se puede utilizar para enviar requests a la API REST de GitHub y consultas a la API GraphQL de GitHub . El paquete octokit integra las tres bibliotecas principales de Octokit:
- Cliente API (requests API REST, consultas API GraphQL, autenticación)
- Cliente de la aplicación (aplicación GitHub e instalaciones, webhooks, OAuth)
- Cliente de acción (cliente API preautenticado para repositorio único).
Enfoque: Vamos a crear una secuencia de comandos utilizando el API Client octokit/rest.js de Github a través del cual comentaremos una solicitud de extracción tan pronto como se abra.
A continuación se muestra la implementación paso a paso del enfoque anterior.
Paso 1: inicializar un proyecto de Node
En primer lugar, cree una carpeta raíz denominada GFG:
mkdir GFG
Navegue a la carpeta GFG:
cd GFG
Inicialice esta carpeta como un repositorio de Nodes:
npm init
Después de esto, encontrará un archivo package.json en la raíz de su proyecto.
Paso 2: crea una nueva acción de Github
Cree un nuevo archivo denominado action.yml con el siguiente contenido:
name: 'GeeksForGeeks' description: 'Say "GeeksForGeeks" to new pull requests' author: '[GFG]' inputs: GITHUB_TOKEN: description: 'GitHub token' required: true runs: using: 'node12' main: 'dist/index.js'
Una acción se declara arriba con el nombre GeeksForGeeks tomando una entrada GITHUB_TOKEN que debería ejecutarse en la versión node12 y el punto de entrada principal se establece en ‘dist/index.js’ .
Paso 3: cree el archivo base para que se ejecute la aplicación
En primer lugar, instale dos dependencias para usar ocktokit y las cargas útiles de contexto de la solicitud de extracción.
npm install @actions/core @actions/github
Cree un directorio src. Luego cree un archivo action.js en el directorio src con el siguiente contenido:
Javascript
const core = require('@actions/core'); const github = require('@actions/github'); const { context } = require('@actions/github') const GITHUB_TOKEN = core.getInput('GITHUB_TOKEN'); const octokit = github.getOctokit(GITHUB_TOKEN); const { pull_request } = context.payload; async function run() { await octokit.rest.issues.createComment({ ...context.repo, issue_number: pull_request.number, body: 'Thank you for submitting a pull request! We will try to review this as soon as we can.' }); } run();
Lo que estamos haciendo arriba es:
- Una vez instaladas las dos dependencias, se importan al archivo.
const core = require('@actions/core'); const github = require('@actions/github');
- En cada función que requiera acceso a la API de github, use lo siguiente para crear octokit.
const GITHUB_TOKEN = core.getInput('GITHUB_TOKEN'); const octokit = github.getOctokit(GITHUB_TOKEN);
- Ahora que tenemos la instancia de octokit, ahora podemos crear comentarios usando el cliente ocktokit de la API de Github .
octokit.rest.issues.createComment({ owner, repo, issue_number, body, });
Paso 4: compilar src/action.js con ncc de Vercel
Si bien todavía no estamos haciendo nada dentro de nuestro src/action.js que requiera algo más que un Node para ejecutarse, vamos a configurar nuestra Acción para compilarla y compilarla en una carpeta dist, que es lo que usará nuestra Acción para en realidad ejecutar el código.
Si recuerda, configuramos el atributo principal dentro de action.yml en dist/index.js.
Para comenzar, primero podemos instalar ncc desde Vercel, que tomará nuestros scripts y dependencias y lo empaquetará todo en un solo archivo para nosotros.
En su terminal, instale el archivo con:
npm install @vercel/ncc
A continuación, dentro de nuestro archivo package.json, debajo del objeto scripts, agreguemos un nuevo script:
"scripts": { "build": "ncc build src/action.js -o dist" ..., },
Esto configura una nueva secuencia de comandos, por lo que cada vez que ejecutamos el comando de compilación, le indicará a ncc que cree nuestra secuencia de comandos de acción y la envíe a la carpeta dist.
Podemos probarlo ejecutando:
npm run build
Y una vez que haya terminado, ahora debería ver una carpeta dist en la raíz de su proyecto con un archivo index.js dentro. Si miras dentro, es posible que notes un montón de código de aspecto extraño. ncc usa webpack para compilar nuestro script para que pueda usarse como un módulo, permitiendo que diferentes procesos lo entiendan. La razón por la que estamos compilando nuestro script es cuando GitHub intenta usar nuestra Acción desde otro repositorio, no tiene todas las dependencias disponibles. Empaquetarlo en un solo archivo permite que nuestro script funcione solo con ese archivo.
Producción:
Publicación traducida automáticamente
Artículo escrito por shahbazalam75508 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA