🔄

ローカルーGitHub Actions 間で環境変数を自動変更する方法

2024/07/22に公開

やりたいこと

GitHub Actions 上での実行を想定しているpythonスクリプトについて、環境変数の設定を push 時に自動で切り替えたいです。
調べても情報があまり出てこなかったので備忘録的に残しておきます。

これまでの運用

テスト実行はローカルで行なっています。
テスト環境と Actions 環境で環境変数の設定(参照先など)が異なります。
スクリプト冒頭で以下の通り定数を定義し、実行環境に合わせてコメントイン/アウトしていました。
要するに push する時は1行目をコメントアウト、2行目をコメントインする運用です。

# push 時は下をコメントイン
ACTION_ENV = "Local"
# ACTION_ENV = "GitHub Actions”

この方法だとプッシュ時にコメントイン/アウトを忘れるとエラーになります。
(逆も然り)
フックでコメントイン/アウトが逆の時は push を行えないようにすることも考えましたが、理想としては手動でコメントアウト/インせずに実行環境に合わせて自動で切り替わるようにしたいと思いました。

結論

これでいけました。

if 'GITHUB_ACTIONS' in os.environ:
    ACTION_ENV = "GitHub Actions"
else:
    ACTION_ENV = "Local"

ChatGPT-4o くんに聞いたらあっさり解決しました。
今までの煩わしさはなんだったのか。

こちらでうまくいく理由ですが、

GitHub Actionsでは、ワークフローが実行される際にいくつかのデフォルトの環境変数が自動的に設定されます。その一つがGITHUB_ACTIONSという変数です。この変数は、GitHub Actionsのランナーでスクリプトが実行されている場合にtrueとして設定されます。

とのことでした。

公式ドキュメントで該当する内容を見つけられなかったのですが、とにかく期待する動作になったのでヨシとします。
記載箇所をご存知の方がいたらご教示いただきたいです。

Discussion