Skip to main content

Desarrollar una acción del CLI de terceros

Aprende cómo desarrollar una acción para configurar un CLI en los ejecutores de GitHub Actions.

Introducción

Puedes escribir una acción para proporcionarles a los usuarios una forma de acceder a tus servidores a través de un ambiente configurado de CLI en los ejecutores de GitHub Actions.

Tu cuenta debería:

  • Facilitar que los usuarios especifiquen la versión del CLI a instalar
  • Ser compatible con sistemas operativos múltiples
  • Ejecutarse de forma eficiente para minimizar los costos de tiempo de ejecución y asociados
  • Funcionar a lo largo de los ejecutores auto-hospedados y hospedados en GitHub Enterprise Cloud
  • Apoyar las herramientas de la comunidad en medida de lo posible

Este artículo te demostrará cómo escribir una acción que recupere una versión específica de tu CLI, la instale, la agregue a la ruta y la guarde en caché (opcionalmente). Este tipo de acción (una acción que configura una herramienta) a menudo se denomina setup-$TOOL.

Prerrequisitos

Deberás de entender cómo escribir una acción personalizada. Para más información, consulta "Acercad e las acciones personalizadas". Para obtener una guía más detallada sobre cómo escribir una acción personalizada, consulta "Creación de una acción de JavaScript".

Ejemplo

El siguiente script demuestra cómo puedes obtener una versión especificada por un usuario como entrada, descargar y extraer esta versión específica de tu CLI y luego agregar el CLI a la ruta.

GitHub proporciona actions/toolkit, que es un conjunto de paquetes que le ayuda a crear acciones. En este ejemplo se usan los paquetes actions/core y actions/tool-cache.

JavaScript
const core = require('@actions/core');
const tc = require('@actions/tool-cache');

async function setup() {
  // Get version of tool to be installed
  const version = core.getInput('version');

  // Download the specific version of the tool, e.g. as a tarball
  const pathToTarball = await tc.downloadTool(getDownloadURL());

  // Extract the tarball onto the runner
  const pathToCLI = await tc.extractTar(pathToTarball);

  // Expose the tool by adding it to the PATH
  core.addPath(pathToCLI)
}

module.exports = setup

Para usar este script, reemplace getDownloadURL por una función que descargue la CLI. También tendrá que crear un archivo de metadatos de acciones (action.yml) que acepte una entrada version y que ejecute este script. Para obtener información completa sobre cómo crear una acción, consulta "Creación de una acción de JavaScript".

Para obtener un ejemplo completo de cómo configurar esta acción, vea example-setup-gh.

Información adicional

Este patrón se emplea en varias acciones. Para ver más ejemplos, consulta: