このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2021-09-23. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

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

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

ノート: GitHub Actionsは、GitHub Enterprise Server 2.22で限定ベータとして利用可能でした。 ベータは終了しました。 GitHub Actionsは、GitHub Enterprise Server 3.0以降で一般に利用可能になりました。 詳しい情報については、GitHub Enterprise Server 3.0 のリリースノートを参照してください。


ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情報を見ることができます。

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

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

ワークフローコマンドは、特定のフォーマットで 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
add-path
core.debugdebug
core.errorerror
core.endGroupendgroup
core.exportVariable
set-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.warning警告

環境変数の設定

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

Creates or updates an environment variable for any steps running next in a job. The step that creates or updates the environment variable does not have access to the new value, but all subsequent steps in a job will have access. 環境変数では、大文字と小文字が区別され、句読点を含めることができます。

サンプル

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::Set the Octocat variable"

警告メッセージの設定

::warning file={name},line={line},endLine={endLine},title={title}::{message}

警告メッセージを作成し、ログにそのメッセージを出力します。 This message will create an annotation, which can associate the message with a particular file in your repository. Optionally, your message can specify a position within the file.

| Parameter | Value | | :- | :- | | file | Filename | | col | Column number, starting at 1 | | line | Line number, starting at 1 |

サンプル

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

エラーメッセージの設定

::error file={name},line={line},endLine={endLine},title={title}::{message}

エラーメッセージを作成し、ログにそのメッセージを出力します。 This message will create an annotation, which can associate the message with a particular file in your repository. Optionally, your message can specify a position within the file.

| Parameter | Value | | :- | :- | | file | Filename | | col | Column number, starting at 1 | | line | Line number, starting at 1 |

サンプル

echo "::error file=app.js,line=1,col=5,endColumn=7::Missing semicolon"

ログの行のグループ化

::group::{title}
::endgroup::

展開可能なグループをログ中に作成します。 グループを作成するには、groupコマンドを使ってtitleを指定してください。 groupendgroupコマンド間でログに出力したすべての内容は、ログ中の展開可能なエントリ内にネストされます。

サンプル

echo "::group::My title"
echo "Inside group"
echo "::endgroup::"

ワークフローの実行ログ中の折りたたみ可能なグループ

ログ中での値のマスク

::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}

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

To stop the processing of workflow commands, pass a unique token to stop-commands. To resume processing workflow commands, pass the same token that you used to stop workflow commands.

Warning: Make sure the token you're using is randomly generated and unique for each run. As demonstrated in the example below, you can generate a unique hash of your github.token for each run.

::{endtoken}::

Example stopping and starting workflow commands

jobs:
  workflow-command-job:
    runs-on: ubuntu-latest
    steps:
      - name: disable workflow commands
        run: |
          echo '::warning:: this is a warning'
          echo "::stop-commands::`echo -n ${{ github.token }} | sha256sum | head -c 64`"
          echo '::warning:: this will NOT be a warning'
          echo "::`echo -n ${{ github.token }} | sha256sum | head -c 64`::"
          echo '::warning:: this is a warning again'

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

問題がまだ解決していませんか?