Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Developing a third party CLI action

Learn how to develop an action to set up a CLI on GitHub Actions runners.

Введение

Вы можете написать действие, чтобы предоставить пользователям возможность доступа к вашим серверам через настроенную среду CLI в средствах выполнения GitHub Actions.

Действие должно отвечать следующим требованиям:

  • позволять пользователям легко указывать версию интерфейса CLI для установки;
  • поддерживать несколько операционных систем;
  • эффективно выполняться для сведения к минимуму затрат времени и ресурсов;
  • работать в размещенных в GitHub и локальных средствах выполнения;
  • по возможности использовать инструменты сообщества.

В этой статье показано, как написать действие, которое получает определенную версию интерфейса CLI, устанавливает ее, добавляет ее по определенному пути и (необязательно) кэширует ее. Действия такого типа (которые устанавливают средство) часто называются setup-$TOOL.

Предварительные требования

У вас должно быть представление о написании пользовательских действий. Дополнительные сведения см. в разделе About custom actions. Более подробное руководство по написанию настраиваемого действия см. в разделе Creating a JavaScript action.

Пример

В приведенном ниже скрипте показано, как получить указанную пользователем версию в качестве входных данных, скачать и извлечь эту версию интерфейса CLI, а затем добавить ее по пути.

GitHub предоставляет actions/toolkit, набор пакетов, помогающих создавать действия. В этом примере используются пакеты actions/core и 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

Чтобы использовать этот скрипт, замените getDownloadURL на функцию, которая скачивает интерфейс CLI. Вам также потребуется создать файл метаданных действия (action.yml), который принимает входной аргумент version и запускает скрипт. Полные сведения о создании действия см. в разделе Creating a JavaScript action.

Полный пример настройки этого действия см. в example-setup-gh.

Дополнительные материалы

Этот шаблон применяется в нескольких действиях. Дополнительные примеры: