Introdução
Você pode escrever uma ação para fornecer uma maneira de os usuários acessarem seus servidores por meio de um ambiente de CLI configurado nos executores de GitHub Actions.
Sua ação deve:
- Ser simples para os usuários especificarem a versão da CLI a ser instalada
- Ser compatível com vários sistemas operacionais
- Executar, de forma eficiente, para minimizar tempo de execução e custos associados
- Trabalhar nos executores hospedados em GitHub e nos executores auto-hospedados
- Alavancar ferramentas da comunidade quando possível
Este artigo irá demonstrar como escrever uma ação que recupera uma versão específica da sua CLI, como instalá-la, adicioná-la ao caminho e (opcionalmente), armazená-la em cache. Em geral, esse tipo de ação (uma ação que configura uma ferramenta) é chamado setup-$TOOL
.
Pré-requisitos
Você deve ter um entendimento de como escrever uma ação personalizada. Para saber mais, confira Sobre ações personalizadas. Para obter um guia mais detalhado sobre como gravar uma ação personalizada, confira Criando uma ação de JavaScript.
Exemplo
O script a seguir demonstra como você pode obter uma versão especificada pelo usuário como entrada, fazer o download e extrair a versão específica da sua CLI e, em seguida, adicionar a CLI ao caminho.
O GitHub fornece actions/toolkit
, que é um conjunto de pacotes que ajuda você a criar ações. Este exemplo usa os pacotes actions/core
e 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 esse script, substitua getDownloadURL
por uma função que baixa a CLI. Você também precisará criar um arquivo de metadados de ações (action.yml
) que aceite uma entrada version
e que execute esse script. Para obter detalhes completos sobre como criar uma ação, confira Criando uma ação de JavaScript.
Leitura adicional
Este padrão é usado em várias ações. Para mais exemplos, consulte: