BioErrorLog Tech Blog

試行錯誤の記録

GitHub Actionsでデフォルトの作業ディレクトリを絶対パスで取得する

GitHub Actionsでデフォルトの作業ディレクトリを絶対パスで取得する方法の備忘録です。

はじめに

こんにちは、@bioerrorlogです。

GitHub Actionsでスタート時点の作業ディレクトリの絶対パスを取得したいことがあります。

その取得方法で少し戸惑ったことがあったので、やり方の備忘録を残します。


※ 動作検証に使ったソースコードはこちらに置いています:

github.com

デフォルト作業ディレクトリの絶対パスを取得する

${{ env.GITHUB_WORKSPACE }} では取得できない

ドキュメントを眺めてみると、丁度よさそうな環境変数が定義されていました。

GITHUB_WORKSPACE

The default working directory on the runner for steps, and the default location of your repository when using the checkout action. For example, /home/runner/work/my-repo-name/my-repo-name.

まずはこの値をenv contextから${{ env.GITHUB_WORKSPACE }}と参照してみると、どうもこのやり方では上手く取得できません。

      - run: |
          echo ${{ env.GITHUB_WORKSPACE }}
# 何も出力されない

env contextにはGITHUB_WORKSPACEはセットされていないようです。

$GITHUB_WORKSPACE で取得できる

この値は、$GITHUB_WORKSPACE${GITHUB_WORKSPACE}で直接環境変数を参照することで取得できます。

      - run: |
          echo $GITHUB_WORKSPACE
# 出力例
# /home/runner/work/actions-tests/actions-tests

${{ github.workspace }} でも取得できる

また、github contextworkspaceからも同じ値を取得することができます。

github.workspace

The default working directory on the runner for steps, and the default location of your repository when using the checkout action.

      - run: |
          echo ${{ github.workspace }}
# 出力例
# /home/runner/work/actions-tests/actions-tests

おわりに

GitHub Actionsでデフォルトの作業ディレクトリを絶対パスで取得する方法を整理しました。

GitHub Actionsにおける環境変数とenv contextをふんわりと捉えていた節があるので、良い頭の整理にもなりました。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考

Environment Variables - GitHub Actions

env context - GitHub Actions

github context - GitHub Actions

Environment variable GITHUB_WORKSPACE unusuable when setting environment variables - GitHub Actions - GitHub Community

Copy files to GitHub Workspace - Stack Overflow