ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

GitHub Actionsのワークフローコマンド

ワークフロー内あるいはアクションのコード内でシェルコマンドを実行する際には、ワークフローコマンドを利用できます。

GitHub ActionsはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actionsは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 詳しい情報については「GitHubの製品」を参照してください。

ここには以下の内容があります:

ワークフローコマンドについて

アクションは、 環境変数を設定する、他のアクションに利用される値を出力する、デバッグメッセージを出力ログに追加するなどのタスクを行うため、ランナーマシンとやりとりできます。

ワークフローコマンドは、特定のフォーマットで echo コマンドを使います。

echo "::workflow-command parameter1={data},parameter2={data}::{command value}"

ノート: ワークフローコマンドおよびパラメータ名では、大文字と小文字は区別されません。

警告: コマンドプロンプトを使っているなら、ワークフローコマンドを使う際にダブルクォート文字(")は省いてください。

ワークフローコマンドを使ったツールキット関数へのアクセス

actions/toolkitには、ワークフローコマンドとして実行できる多くの関数があります。 ::構文を使って、YAMLファイル内でワークフローコマンドを実行してください。それらのコマンドはstdoutを通じてランナーに送信されます。 たとえば、環境変数を設定するのにコードを使う代わりに、以下のようにできます。

core.exportVariable('SELECTED_COLOR', 'green');

同じ値を設定するのに、ワークフロー中でset-envコマンドが使えます。

      - name: Set selected color
        run: echo '::set-env name=SELECTED_COLOR::green'
      - name: Get color
        run: echo 'The selected color is' $SELECTED_COLOR

以下の表は、ワークフロー内で使えるツールキット関数を示しています。

ツールキット関数等価なワークフローのコマンド
core.addPathadd-path
core.debugdebug
core.errorerror
core.endGroupendgroup
core.exportVariableset-env
core.getInput環境変数のINPUT_{NAME}を使ってアクセス可能
core.getState環境変数のSTATE_{NAME}を使ってアクセス可能
core.isDebug環境変数のRUNNER_DEBUGを使ってアクセス可能
core.saveStatesave-state
core.setFailed::error及びexit 1のショートカットとして使われる
core.setOutputset-output
core.setSecretadd-mask
core.startGroupgroup
core.warningwarning file

環境変数の設定

::set-env name={name}::{value}

ジョブの中で次に実行される任意のアクションの環境変数を作成または更新します。 環境変数を作成または更新するアクションは、新しい値にアクセスできませんが、ジョブの中でそれ以降に続くすべてのアクションは、その新しい値にアクセスできます。 環境変数では、大文字と小文字が区別され、句読点を含めることができます。

サンプル

echo "::set-env name=action_state::yellow"

出力パラメータの設定

::set-output name={name}::{value}

アクションの出力パラメータを設定します。

あるいは、出力パラメータをアクションのメタデータファイル中で宣言することもできます。 詳しい情報については、「GitHub Actions のメタデータ構文」を参照してください。

echo "::set-output name=action_fruit::strawberry"

システムパスの追加

::add-path::{path}

現在のジョブ内にある、続くすべてのアクションにおいて、システム PATH 変数の前に、ディレクトリを付加します。 現在実行中のアクションは、新しいパス変数にアクセスできません。

サンプル

echo "::add-path::/path/to/dir"

デバッグメッセージの設定

::debug::{message}

デバッグメッセージをログに出力します。 ログでこのコマンドにより設定されたデバッグメッセージを表示するには、ACTIONS_STEP_DEBUG という名前のシークレットを作成し、値を true に設定する必要があります。 シークレットの作成およびステップにおける利用に関する詳しい情報については、「暗号化されたシークレットの作成と利用」を参照してください。

サンプル

echo "::debug file=app.js,line=1::Entered octocatAddition method"

警告メッセージの設定

::warning file={name},line={line},col={col}::{message}

警告メッセージを作成し、ログにそのメッセージを出力します。 警告が発生する場所を、ファイル名 (file)、行番号 (line)、および列 (col) 番号で指定することもできます。

echo "::warning file=app.js,line=1,col=5::Missing semicolon"

エラーメッセージの設定

::error file={name},line={line},col={col}::{message}

エラーメッセージを作成し、ログにそのメッセージを出力します。 警告が発生する場所を、ファイル名 (file)、行番号 (line)、および列 (col) 番号で指定することもできます。

echo "::error file=app.js,line=10,col=15::Something went wrong"

ログ中での値のマスク

::add-mask::{value}

値をマスクすることにより、文字列または値がログに出力されることを防ぎます。 空白で分離された、マスクされた各語は "*" という文字で置き換えられます。 マスクの value には、環境変数または文字列を持ちいることができます。

文字列をマスクするサンプル

ログに "Mona The Octocat" を出力すると、"***" が表示されます。

echo "::add-mask::Mona The Octocat"

環境変数をマスクするサンプル

変数 MY_NAME または値 "Mona The Octocat" をログに出力すると。"Mona The Octocat" の代わりに "***" が表示されます。

MY_NAME="Mona The Octocat"
echo "::add-mask::$MY_NAME"

ワークフローコマンドの停止と開始

::stop-commands::{endtoken}

ワークフローコマンドの処理を停止します。 この特殊コマンドを使うと、意図せずワークフローコマンドを実行することなくいかなるログも取れます。 たとえば、コメントがあるスクリプト全体を出力するためにログ取得を停止できます。

ワークフローコマンドの停止の例

echo "::stop-commands::pause-logging"

ワークフローコマンドを開始するには、ワークフローコマンドを停止するのに使ったトークンを渡します。

::{endtoken}::

ワークフローコマンドの開始の例

echo "::pause-logging::"

pre及びpostアクションへの値の送信

save-stateコマンドを使って、ワークフローのpre:あるいはpost:アクションと共有するための環境変数を作成できます。 たとえば、pre:アクションでファイルを作成し、そのファイルの場所をmain:アクションに渡し、post:アクションを使ってそのファイルを削除できます。 あるいは、ファイルをmain:アクションで作成し、そのファイルの場所をpost:アクションに渡し、post:アクションを使ってそのファイルを削除することもできます。

複数のpre:あるいはpost:アクションがある場合、保存された値にアクセスできるのはsave-stateが使われたアクションの中でのみです。 post:アクションに関する詳しい情報については「GitHub Actionsのためのメタデータ構文」を参照してください。

save-stateコマンドはアクション内でしか実行できず、YAMLファイルでは利用できません。 保存された値は、STATE_プレフィックス付きで環境変数として保存されます。

以下の例はJavaScriptを使ってsave-stateコマンドを実行します。 結果の環境変数はSTATE_processIDという名前になり、12345という値を持ちます。

console.log('::save-state name=processID::12345')

そして、STATE_processID変数はmainアクションの下で実行されるクリーンアップスクリプトからのみ利用できます。 以下の例はmainを実行し、JavaScriptを使って環境変数STATE_processIDに割り当てられた値を表示します。

console.log("The running PID from the main action is: " +  process.env.STATE_processID);

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください