[GitHub]Actionsの動作確認時は忘れずにACTIONS_RUNNER_DEBUGとACTIONS_STEP_DEBUGを設定しよう

GitHub ActionsのWorkflow検証にて、一切のログがない状態で頭を抱えることを防ぐためにも必須なオプションについて、設定前後含めて触れてみました。
2020.03.31

はじめに

Actionsの動作確認をしている時に「あまりにもログに情報がでなさすぎる」と思う人がいるかもしれません。

その通りで、初期設定だとほぼ出ません。詳細な情報を出したい場合には少し設定が要りますが、要るということに辿り着くのも結構かかりました。

設定前後でどのくらいの情報量の違いがあるのかを含めてまとめました。

必要な設定

各設定の詳細は以下の通り。

ACTIONS_RUNNER_DEBUG
Runnerの実行ログ
ACTIONS_STEP_DEBUG
Step毎の実行ログ

要は、初期状態では実行ログが出ません。夫々リポジトリ毎に追加する必要があります。

  1. SettingsタブのSecretsを開きます。
  2. 「Add a new secret」を選択します。
  3. NameにACTIONS_RUNNER_DEBUG、Valueにtrueを入れ、「Add secret」をクリックします。
  4. 「Add a new secret」を選択します。
  5. NameにACTIONS_STEP_DEBUG、Valueにtrueを入れ、「Add secret」をクリックします。

Actionsでの出力

実際の出力例を設定前後で記載すると、以下のようになります。

設定前

with:
    github-token: ***
    script: latest_comment = github.git.getCommit({
    owner: context.repo.owner,
    repo: context.repo.repo,
    commit_sha: context.sha,
  });
  if (context.issue.number) {
    github.issues.createComment({
      issue_number: context.issue.number,
      owner: context.repo.owner,
      repo: context.repo.repo,
      body: '![test_result](' + https://github.com/haoyayoi/XXXXX + '/test_result/badge.svg)'
    }); 
  }

設定後

##[debug]Evaluating condition for step: 'Run actions/github-script@0.9.0'
##[debug]Parsing expression: \<success()>
##[debug]Evaluating: success()
##[debug]Evaluating success:
##[debug]=> true
##[debug]Result: true
##[debug]Starting: Run actions/github-script@0.9.0
##[debug]Loading inputs
##[debug]Evaluating: secrets.GITHUB_TOKEN
##[debug]Evaluating Index:
##[debug]..Evaluating secrets:
##[debug]..=> Object
##[debug]..Evaluating String:
##[debug]..=> 'GITHUB_TOKEN'
##[debug]=> '***'
##[debug]Result: '***'
##[debug]Evaluating: format('latest_comment = github.git.getCommit({{
##[debug]  owner: context.repo.owner,
##[debug]  repo: context.repo.repo,
##[debug]  commit_sha: context.sha
##[debug]}});
##[debug]if (context.issue.number) {{
##[debug]  github.issues.createComment({{
##[debug]    issue_number: context.issue.number,
##[debug]    owner: context.repo.owner,
##[debug]    repo: context.repo.repo,
##[debug]    body: ''![test_result]('' + {0} + ''/test_result/badge.svg)''
##[debug]  }});
##[debug]}}
##[debug]', github.event.repository.html_url)
##[debug]Evaluating format:
##[debug]..Evaluating String:
##[debug]..=> 'latest_comment = github.git.getCommit({{
##[debug]  owner: context.repo.owner,
##[debug]  repo: context.repo.repo,
##[debug]  commit_sha: context.sha
##[debug]}});
##[debug]if (context.issue.number) {{
##[debug]  github.issues.createComment({{
##[debug]    issue_number: context.issue.number,
##[debug]    owner: context.repo.owner,
##[debug]    repo: context.repo.repo,
##[debug]    body: ''![test_result]('' + {0} + ''/test_result/badge.svg)''
##[debug]  }});
##[debug]}}
##[debug]'
##[debug]..Evaluating Index:
##[debug]....Evaluating Index:
##[debug]......Evaluating Index:
##[debug]........Evaluating github:
##[debug]........=> Object
##[debug]........Evaluating String:
##[debug]........=> 'event'
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'repository'
##[debug]....=> Object
##[debug]....Evaluating String:
##[debug]....=> 'html_url'
##[debug]..=> 'https://github.com/haoyayoi/XXXXX'
##[debug]=> 'latest_comment = github.git.getCommit({
##[debug]  owner: context.repo.owner,
##[debug]  repo: context.repo.repo,
##[debug]  commit_sha: context.sha
##[debug]});
##[debug]if (context.issue.number) {
##[debug]  github.issues.createComment({
##[debug]    issue_number: context.issue.number,
##[debug]    owner: context.repo.owner,
##[debug]    repo: context.repo.repo,
##[debug]    body: ''![test_result]('' + https://github.com/haoyayoi/XXXXX + ''/test_result/badge.svg)''
##[debug]  });
##[debug]}
##[debug]'
##[debug]Result: 'latest_comment = github.git.getCommit({
##[debug]  owner: context.repo.owner,
##[debug]  repo: context.repo.repo,
##[debug]  commit_sha: context.sha
##[debug]});
##[debug]if (context.issue.number) {
##[debug]  github.issues.createComment({
##[debug]    issue_number: context.issue.number,
##[debug]    owner: context.repo.owner,
##[debug]    repo: context.repo.repo,
##[debug]    body: ''![test_result]('' + https://github.com/haoyayoi/XXXXX + ''/test_result/badge.svg)''
##[debug]  });
##[debug]}
##[debug]'
##[debug]Loading env
<p>

確認に使ったコードはおいておくとして、どのくらい情報量に違いがあるのか一目瞭然だと思われます。

あとがき

今回の設定については公式ドキュメントにも掲載されていますが、存在を知るまでに時間を必要としました。

Managing a workflow run - GitHub Help

Actionsを使ったWorkflow作成を試している際に、困ったらとりあえず有効にする、といった感じでも悪くはないオプションだと思います。