7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

nektos/actのgithubコンテキストの確認

Last updated at Posted at 2021-10-08

概要

nektos/act でGithub Actionsワークフローをローカル環境で実行した際に、githubコンテキストに格納される値を確認する方法

背景

CI/CDツールとして、Github Actionsが広く親しまれるようになったが、Github Actionsは一定以上の使用について有料である 1
そこで、ワークフローの検証・デバッグ・非課金での実行のために、nektos/actを用いてローカル環境でワークフローを実行するケースがある。
このとき、ワークフローにGithub依存のコンテキスト変数(例えば、githubコンテキスト)があった場合に、どんな値が格納されるかを知っておく必要がある。

方法

コンテキスト変数をechoするだけのワークフローを実行することで確認できる。
下記にgithubコンテキストの値を確認するためのワークフロー例を示す。

name: Verify Github Contexts

on:
  push:
    branches:
      - develop

jobs:
  verify_github_contexts:
    name: verify github contexts
    runs-on: ubuntu-latest
    env:
      TZ: "Asia/Tokyo"

    steps:
      - name: Verify Github Contexts
        run: |
          echo "github.action ${{github.action}}" # string	現在実行中のアクションの名前。 GitHubは、現在のステップがスクリプトを実行する際に、特殊なキャラクターを削除するか、runという名前を使います。 同じジョブの中で同じアクションを複数回使う場合、名前には順番に番号が加えられます。 たとえば、実行する最初のスクリプトの名前はrun1で、2番目のスクリプトの名前はrun2というようになります。 同様に、actions/checkoutの2回目の呼び出しはactionscheckout2となります。
          echo "github.action_path ${{github.action_path}}" # string	アクションが置かれているパス。 このパスを使用して、アクションと同じリポジトリにあるファイルに簡単にアクセスできます。 This attribute is only supported in composite actions.
          echo "github.actor ${{github.actor}}" # string	ワークフローの実行を開始したユーザのログイン。
          echo "github.base_ref ${{github.base_ref}}" # string	ワークフローの実行における base_ref またはPull Requestのターゲットブランチ。 このプロパティは、ワークフローの実行をトリガーするイベントが pull_request または pull_request_target のいずれかである場合にのみ使用できます。
          echo "github.event ${{github.event}}" # オブジェクト	webhook ペイロードの完全なイベント。 詳しい情報については、「ワークフローをトリガーするイベント」を参照してください。 このコンテキストを使用して、イベントの個々のプロパティにアクセスできます。
          echo "github.event_name ${{github.event_name}}" # string	ワークフローの実行をトリガーしたイベントの名前。
          echo "github.event_path ${{github.event_path}}" # string	ランナー上の完全なイベントwebhookペイロードへのパス。
          echo "github.head_ref ${{github.head_ref}}" # string	ワークフローの実行における head_ref またはPull Requestのソースブランチ。 このプロパティは、ワークフローの実行をトリガーするイベントが pull_request または pull_request_target のいずれかである場合にのみ使用できます。
          echo "github.job ${{github.job}}" # string	現在のジョブのjob_id。
          echo "github.ref ${{github.ref}}" # string	ワークフローの実行をトリガーしたブランチまたはタグ ref。 For branches this is the format refs/heads/<branch_name>, and for tags it is refs/tags/<tag_name>.
          echo "github.repository ${{github.repository}}" # string	所有者およびリポジトリの名前。 Codertocat/Hello-Worldなどです。
          echo "github.repository_owner ${{github.repository_owner}}" # string	リポジトリのオーナーの名前。 たとえばCodertocat。
          echo "github.run_id ${{github.run_id}}" # string	リポジトリ内でユニークな各実行に対する番号。 この番号は、ワークフローの実行をやり直しても変化しません、
          echo "github.run_number ${{github.run_number}}" # string	リポジトリ内の特定のワークフローの各実行に対するユニークな番号。 この番号は、ワークフローの最初の実行時に1で始まり、新たな実行ごとにインクリメントされます。 この番号は、ワークフローの実行をやり直しても変化しません、
          echo "github.sha ${{github.sha}}" # string	ワークフローの実行をトリガーしたコミット SHA。
          echo "github.token ${{github.token}}" # string	リポジトリにインストールされたGitHub Appの代わりに認証するためのトークン。 これは機能的にGITHUB_TOKENシークレットに等価です。 詳しい情報については「GITHUB_TOKENでの認証」を参照してください。
          echo "github.workflow ${{github.workflow}}" # string	ワークフローの名前。 ワークフローファイルで name を指定していない場合、このプロパティの値は、リポジトリ内にあるワークフローファイルのフルパスになります。
          echo "github.workspace ${{github.workspace}}" # string	checkoutアクションを使う際の、ステップにとってのデフォルトのワーキングディレクトリであり、リポジトリのデフォルトの場所です。

結果

$ act -j verify_github_contextsの実行結果を示す。

image.png
github.event はオブジェクトを返すため、[object Object]と表示されている

  1. https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions

7
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?