ノート: GitHubホストランナーは、現在GitHub Enterprise Serverでサポートされていません。 GitHubパブリックロードマップで、計画されている将来のサポートに関する詳しい情� �を見ることができます。
ワークフローコマンドについて
アクションは、 環境変数を設定する、他のアクションに利用される値を出力する、デバッグメッセージを出力ログに追� するなどのタスクを行うため、ランナーマシンとやりとりできます。
ほとんどのワークフローコマンドは特定の形式で echo
コマンドを使用しますが、他のワークフローコマンドはファイルへの書き込みによって呼び出されます。 詳しい情� �については、「環境ファイル」を参照してく� さい。
サンプル
echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"
ノート: ワークフローコマンドおよびパラメータ名では、大文字と小文字は区別されません。
警告: コマンドプロンプトを使っているなら、ワークフローコマンドを使う際にダブルクォート文字("
)は省いてく� さい。
ワークフローコマンドを使ったツールキット関数へのアクセス
actions/toolkitには、ワークフローコマンドとして実行できる多くの関数があります。 ::
構文を使って、YAMLファイル内でワークフローコマンドを実行してく� さい。それらのコマンドはstdout
を通じてランナーに送信されます。 たとえば、コードを使用して出力を設定する代わりに、以下のようにします。
core.setOutput('SELECTED_COLOR', 'green');
Example: Setting a value
ワークフローで 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 }}"
- name: Set selected color
run: Write-Output "::set-output name=SELECTED_COLOR::green"
id: random-color-generator
- name: Get color
run: Write-Output "The selected color is ${{ steps.random-color-generator.outputs.SELECTED_COLOR }}"
以下の表は、ワークフロー内で使えるツールキット関数を示しています。
ツールキット関数 | 等価なワークフローのコマンド |
---|---|
core.addPath | Accessible using environment file GITHUB_PATH |
core.debug | debug |
core.error | error |
core.endGroup | endgroup |
core.exportVariable | Accessible using environment file GITHUB_ENV |
core.getInput | 環境変数のINPUT_{NAME} を使ってアクセス可能 |
core.getState | 環境変数のSTATE_{NAME} を使ってアクセス可能 |
core.isDebug | 環境変数のRUNNER_DEBUG を使ってアクセス可能 |
core.saveState | save-state |
出力パラメータの設定
アクションの出力パラメータを設定します。
::set-output name={name}::{value}
あるいは、出力パラメータをアクションのメタデータファイル中で宣言することもできます。 詳しい情� �については、「GitHub Actions のメタデータ構文」を参照してく� さい。
Example: Setting an output parameter
echo "::set-output name=action_fruit::strawberry"
Write-Output "::set-output name=action_fruit::strawberry"
デバッグメッセージの設定
デバッグメッセージをログに出力します。 ログでこのコマンドにより設定されたデバッグメッセージを表示するには、ACTIONS_STEP_DEBUG
という名前のシークレットを作成し、値を true
に設定する必要があります。 詳しい情� �については、「デバッグログの有効化」を参照してく� さい。
::debug::{message}
Example: Setting a debug message
echo "::debug::Set the Octocat variable"
Write-Output "::debug::Set the Octocat variable"
警告メッセージの設定
警告メッセージを作成し、ログにそのメッセージを出力します。 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.
::warning file={name},line={line},endLine={endLine},title={title}::{message}
| Parameter | Value | | :- | :- | | file
| Filename | | col
| Column number, starting at 1 | | line
| Line number, starting at 1 |
Example: Setting a warning message
echo "::warning file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
Write-Output "::warning file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
エラーメッセージの設定
エラーメッセージを作成し、ログにそのメッセージを出力します。 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.
::error file={name},line={line},endLine={endLine},title={title}::{message}
| Parameter | Value | | :- | :- | | file
| Filename | | col
| Column number, starting at 1 | | line
| Line number, starting at 1 |
Example: Setting an error message
echo "::error file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
Write-Output "::error file=app.js,line=1,col=5,endColumn=7::Missing semicolon"
ログの行のグループ化
展開可能なグループをログ中に作成します。 グループを作成するには、group
コマンドを使ってtitle
を指定してく� さい。 group
とendgroup
コマンド間でログに出力したすべての内容は、ログ中の展開可能なエントリ内にネストされます。
::group::{title}
::endgroup::
Example: Grouping log lines
jobs:
bash-example:
runs-on: ubuntu-latest
steps:
- name: Group of log lines
run: |
echo "::group::My title"
echo "Inside group"
echo "::endgroup::"
jobs:
powershell-example:
runs-on: windows-latest
steps:
- name: Group of log lines
run: |
Write-Output "::group::My title"
Write-Output "Inside group"
Write-Output "::endgroup::"
ログ中での値のマスク
::add-mask::{value}
値をマスクすることにより、文字列または値がログに出力されることを防ぎます。 空白で分離された、マスクされた各語は "*
" という文字で置き換えられます。 マスクの value
には、環境変数または文字列を持ちいることができます。 When you mask a value, it is treated as a secret and will be redacted on the runner. For example, after you mask a value, you won't be able to set that value as an output.
Example: Masking a string
ログに "Mona The Octocat"
を出力すると、"***"
が表示されます。
echo "::add-mask::Mona The Octocat"
Write-Output "::add-mask::Mona The Octocat"
Example: Masking an environment variable
変数 MY_NAME
または値 "Mona The Octocat"
をログに出力すると。"Mona The Octocat"
の代わりに "***"
が表示されます。
jobs:
bash-example:
runs-on: ubuntu-latest
env:
MY_NAME: "Mona The Octocat"
steps:
- name: bash-version
run: echo "::add-mask::$MY_NAME"
jobs:
powershell-example:
runs-on: windows-latest
env:
MY_NAME: "Mona The Octocat"
steps:
- name: powershell-version
run: Write-Output "::add-mask::$env: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.
::{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 message, to demonstrate that commands are being processed.'
stopMarker=$(uuidgen)
echo "::stop-commands::$stopMarker"
echo '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
echo "::$stopMarker::"
echo '::warning:: This is a warning again, because stop-commands has been turned off.'
jobs:
workflow-command-job:
runs-on: windows-latest
steps:
- name: Disable workflow commands
run: |
Write-Output '::warning:: This is a warning message, to demonstrate that commands are being processed.'
$stopMarker = New-Guid
Write-Output "::stop-commands::$stopMarker"
Write-Output '::warning:: This will NOT be rendered as a warning, because stop-commands has been invoked.'
Write-Output "::$stopMarker::"
Write-Output '::warning:: This is a warning again, because stop-commands has been turned off.'
Echoing command outputs
Enables or disables echoing of workflow commands. For example, if you use the set-output
command in a workflow, it sets an output parameter but the workflow run's log does not show the command itself. If you enable command echoing, then the log shows the command, such as ::set-output name={name}::{value}
.
::echo::on
::echo::off
Command echoing is disabled by default. However, a workflow command is echoed if there are any errors processing the command.
The add-mask
, debug
, warning
, and error
commands do not support echoing because their outputs are already echoed to the log.
You can also enable command echoing globally by turning on step debug logging using the ACTIONS_STEP_DEBUG
secret. For more information, see "Enabling debug logging". In contrast, the echo
workflow command lets you enable command echoing at a more granular level, rather than enabling it for every workflow in a repository.
Example: Toggling command echoing
jobs:
workflow-command-job:
runs-on: ubuntu-latest
steps:
- name: toggle workflow command echoing
run: |
echo '::set-output name=action_echo::disabled'
echo '::echo::on'
echo '::set-output name=action_echo::enabled'
echo '::echo::off'
echo '::set-output name=action_echo::disabled'
jobs:
workflow-command-job:
runs-on: windows-latest
steps:
- name: toggle workflow command echoing
run: |
write-output "::set-output name=action_echo::disabled"
write-output "::echo::on"
write-output "::set-output name=action_echo::enabled"
write-output "::echo::off"
write-output "::set-output name=action_echo::disabled"
The example above prints the following lines to the log:
::set-output name=action_echo::enabled
::echo::off
Only the second set-output
and echo
workflow commands are included in the log because command echoing was only enabled when they were run. Even though it is not always echoed, the output parameter is set in all cases.
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);
Environment files
ワークフローの実行中に、ランナーは特定のアクションを実行する際に使用できる一時ファイルを生成します。 これらのファイルへのパスは、環境変数を介して公開されます。 コマンドを適切に処理するには、これらのファイルに書き込むときに UTF-8 エンコーディングを使用する必要があります。 複数のコマンドを、改行で区切って同じファイルに書き込むことができます。
Note: PowerShell versions 5.1 and below (shell: powershell
) do not use UTF-8 by default, so you must specify the UTF-8 encoding. 例:
jobs:
legacy-powershell-example:
runs-on: windows-latest
steps:
- shell: powershell
run: |
"mypath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
PowerShell Core versions 6 and higher (shell: pwsh
) use UTF-8 by default. 例:
jobs:
powershell-core-example:
runs-on: windows-latest
steps:
- shell: pwsh
run: |
"mypath" >> $env:GITHUB_PATH
環境変数の設定
echo "{environment_variable_name}={value}" >> $GITHUB_ENV
-
Using PowerShell version 6 and higher:
pwsh "{environment_variable_name}={value}" >> $env:GITHUB_ENV
-
Using PowerShell version 5.1 and below:
powershell "{environment_variable_name}={value}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
You can make an environment variable available to any subsequent steps in a workflow job by defining or updating the environment variable and writing this to the GITHUB_ENV
environment file. 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. The names of environment variables are case-sensitive, and you can include punctuation. 詳しい情� �については、「環境変数」を参照してく� さい。
サンプル
steps:
- name: Set the value
id: step_one
run: |
echo "action_state=yellow" >> $GITHUB_ENV
- name: Use the value
id: step_two
run: |
echo "${{ env.action_state }}" # This will output 'yellow'
steps:
- name: Set the value
id: step_one
run: |
"action_state=yellow" >> $env:GITHUB_ENV
- name: Use the value
id: step_two
run: |
Write-Output "${{ env.action_state }}" # This will output 'yellow'
複数行の文字列
複数行の文字列の� �合、次の構文で区切り文字を使用できます。
{name}<<{delimiter}
{value}
{delimiter}
サンプル
This example uses EOF
as a delimiter, and sets the JSON_RESPONSE
environment variable to the value of the curl
response.
steps:
- name: Set the value in bash
id: step_one
run: |
echo 'JSON_RESPONSE<<EOF' >> $GITHUB_ENV
curl https://example.lab >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
steps:
- name: Set the value in pwsh
id: step_one
run: |
"JSON_RESPONSE<<EOF" >> $env:GITHUB_ENV
(Invoke-WebRequest -Uri "https://example.lab").Content >> $env:GITHUB_ENV
"EOF" >> $env:GITHUB_ENV
shell: pwsh
システ� パスの追�
Prepends a directory to the system PATH
variable and automatically makes it available to all subsequent actions in the current job; the currently running action cannot access the updated path variable. ジョブに現在定義されているパスを見るには、ステップもしくはアクション中でecho "$PATH"
を使うことができます。
echo "{path}" >> $GITHUB_PATH
"{path}" >> $env:GITHUB_PATH
サンプル
この例は、ユーザの$HOME/.local/bin
ディレクトリをPATH
に追� する方法を示しています。
echo "$HOME/.local/bin" >> $GITHUB_PATH
This example demonstrates how to add the user $env:HOMEPATH/.local/bin
directory to PATH
:
"$env:HOMEPATH/.local/bin" >> $env:GITHUB_PATH