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

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

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

GitHub ActionsはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 GitHub Actionsは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 For more information, see "GitHub's products."

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

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.

GitHub Actions の支払いを管理する GitHubは、macOSランナーのホストにMacStadiumを使用しています。

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

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

ほとんどのワークフローコマンドは特定の形式で echo コマンドを使用しますが、他のワークフローコマンドはファイルへの書き込みによって呼び出されます。 詳しい情報については、「環境ファイル」を参照してください。

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

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

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

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

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

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

ワークフローで set-output コマンドを使用して、同じ値を設定できます。

      - name: Set selected color
        run: echo '::set-output name=SELECTED_COLOR::green'
        id: random-color-generator
      - name: Get color
        run: echo "The selected color is ${{ steps.random-color-generator.outputs.SELECTED_COLOR }}"

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

ツールキット関数等価なワークフローのコマンド
core.addPath
環境ファイル GITHUB_PATH を使用してアクセス可能
core.debugdebug
core.errorエラー
core.endGroupendgroup
core.exportVariable
環境ファイル GITHUB_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-output name={name}::{value}

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

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

サンプル

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

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

::debug::{message}

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

サンプル

echo "::debug::Set the Octocat variable"

警告メッセージの設定

::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);

環境ファイル

ワークフローの実行中に、ランナーは特定のアクションを実行する際に使用できる一時ファイルを生成します。 これらのファイルへのパスは、環境変数を介して公開されます。 コマンドを適切に処理するには、これらのファイルに書き込むときに UTF-8 エンコーディングを使用する必要があります。 複数のコマンドを、改行で区切って同じファイルに書き込むことができます。

警告: Powershell はデフォルト設定で UTF-8 を使用しません。 正しいエンコーディングを使用してファイルを書き込むようにしてください。 たとえば、パスを設定するときに UTF-8 エンコーディングを設定する必要があります。

steps:
  - run: echo "mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

環境変数の設定

echo "{name}={value}" >> $GITHUB_ENV

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

サンプル

echo "action_state=yellow" >> $GITHUB_ENV

将来のステップで $action_state を実行すると yellow が返されるようになりました

複数行の文字列

複数行の文字列の場合、次の構文で区切り文字を使用できます。

{name}<<{delimiter}
{value}
{delimiter}

サンプル

この例では、区切り文字として EOF を使用し、JSON_RESPONSE 環境変数を cURL レスポンスの値に設定します。

steps:
  - name: Set the value
    id: step_one
    run: |
        echo 'JSON_RESPONSE<<EOF' >> $GITHUB_ENV
        curl https://httpbin.org/json >> $GITHUB_ENV
        echo 'EOF' >> $GITHUB_ENV

システムパスの追加

echo "{path}" >> $GITHUB_PATH

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

サンプル

echo "/path/to/dir" >> $GITHUB_PATH

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.