はじめに
GitHub Actions ランナーの構成済み CLI 環境経由でサーバーにアクセスする方法をユーザーに与えるアクションを記述できます。
アクションに求められること:
- インストールする CLI のバージョンをユーザーが簡単に指定できるようにする
- 複数のオペレーティング システムをサポートする
- 効率的な方法で実行され、ランタイムと関連コストを最小限に抑える
- GitHub Enterprise Cloud ホスト型ランナーとセルフホスト型ランナーで動作する
- 可能であればコミュニティ ツールを活用する
この記事では、CLI の特定のバージョンを取得し、それをインストールし、それをパスに追加し、(任意で) それをキャッシュするアクションを記述する方法がわかります。 この種類のアクション (ツールをセットアップするアクション) の名前は多くの場合、setup-$TOOL
です。
前提条件
カスタム アクションを記述する方法を理解している必要があります。 詳しくは、「カスタム アクションについて」をご覧ください。 カスタム アクションを記述する方法の詳細なガイドについては、「JavaScript アクションを作成する」を参照してください。
例
次のスクリプトからは、ユーザー指定のバージョンを入力として取得し、特定のバージョンの CLI をダウンロードして抽出し、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 をダウンロードする関数に置き換えます。 version
入力を受け取り、このスクリプトを実行するアクション メタデータ ファイル (action.yml
) を作成する必要もあります。 アクションの作成方法の詳細については、「JavaScript アクションを作成する」を参照してください。
参考資料
このパターンはいくつかのアクションで使用されます。 他の例が必要であれば、次をご覧ください。