Введение
Вы можете написать действие, чтобы предоставить пользователям возможность доступа к вашим серверам через настроенную среду CLI в средствах выполнения GitHub Actions.
Действие должно отвечать следующим требованиям:
- позволять пользователям легко указывать версию интерфейса CLI для установки;
- поддерживать несколько операционных систем;
- эффективно выполняться для сведения к минимуму затрат времени и ресурсов;
- работать в размещенных в GitHub и локальных средствах выполнения;
- по возможности использовать инструменты сообщества.
В этой статье показано, как написать действие, которое получает определенную версию интерфейса CLI, устанавливает ее, добавляет ее по определенному пути и (необязательно) кэширует ее. Действия такого типа (которые устанавливают средство) часто называются setup-$TOOL
.
Необходимые компоненты
У вас должно быть представление о написании пользовательских действий. Дополнительные сведения см. в разделе "Сведения о настраиваемых действиях". Более подробное руководство по написанию пользовательского действия см. в разделе "Создание действия JavaScript".
Пример
В приведенном ниже скрипте показано, как получить указанную пользователем версию в качестве входных данных, скачать и извлечь эту версию интерфейса CLI, а затем добавить ее по пути.
GitHub предоставляет actions/toolkit
, набор пакетов, помогающих создавать действия. В этом примере используются пакеты actions/core
и 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
Чтобы использовать этот скрипт, замените getDownloadURL
на функцию, которая скачивает интерфейс CLI. Вам также потребуется создать файл метаданных действия (action.yml
), который принимает входной аргумент version
и запускает скрипт. Полные сведения о создании действия см. в разделе "Создание действия JavaScript".
Дополнительные материалы
Этот шаблон применяется в нескольких действиях. Дополнительные примеры: