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
- 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
.
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
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".
Información adicional
Este patrón se emplea en varias acciones. Para ver más ejemplos, consulta: