変数・Secret
変数とSecretに触れてこの章を終わりにしたいと思います。
ワークフロー内では環境変数等の変数を利用することができます。ワークフロー内でenvキーを利用して指定したり、Organizationやリポジトリ、環境[2]の設定として、キーと値のペアを登録できます。それぞれ、参照できる範囲が異なり、ワークフロー内で定義した場合はそのワークフローからのみ参照できますが、リポジトリの設定として登録すればそのリポジトリ内の複数のワークフローから参照できます。
また、CI/CDでシークレットキーなどのなんらかの機密情報を扱いたいという場合があります。GitHub Actionsでは機密情報を格納するための特別な変数である Secret が用意されています。Secretに設定したものはワークフロー内でsecretsコンテキストを通じて参照できます。Secretは、organization、リポジトリ、環境、に設定できます。
GitHub Actionsは、ワークフローログに出力されるSecretの内容を自動的にマスキングします。よって、万が一Secretをそのままログ出力してしまったとしてもログに出力されません。ただし、なんらかの加工を入れると簡単に表示できてしまいます。
以下は、最初にSecretの値をそのまま表示し、次に最初の1文字を大文字にして表示するサンプルコードの一部抜粋です。リポジトリの設定としてSecretにKEYという名前でsecret-valueという値を登録しています。
jobs:
print-info:
runs-on: ubuntu-latest
env:
SECRET_KEY: ${{ secrets.KEY }}
steps:
- run: |
echo "Original: ${SECRET_KEY}"
echo "Capitalize the first letter: ${SECRET_KEY^}"
実行結果は以下のようになります(echo部分のみ抜粋です)。
Original: *** Capitalize the first letter: Secret-value
機密情報はSecretに保存することを徹底しましょう。マスキング機能はありますが万能ではありません。必要最低限の情報のみ登録する、(登録値が権限管理ができるものであれば)用途に合わせた最小限の権限を付与する、不要な情報をログ出力しない、といったことを徹底しましょう。
ワークフローテンプレート
GitHub Actionsでは、ワークフローのテンプレートが用意されています。テンプレートは、GitHub上でワークフローを作成する際に選択できます。GitHub上から作成する場合は、リポジトリを表示し、Actionsタブで表示される作成ボタンから作成できます。
2025年4月時点で約90種類のテンプレートを確認できました。さまざまな言語やツールを使ったテンプレートが用意されています。
テンプレートを出発地点として使うことで、構築にかかる時間を短縮することもできますし、どのような処理の流れにするかの参考にもなると思います。「やりたいことはあるが具体的なワークフローの流れが思いつかない」という場合に参考にしてみてください。
まとめ
今回は以下の内容を取り上げました。
- GitHub Actionsの構文
- ワークフローテンプレート
次回は独自のアクションを作ってみましょう。
-
[2]リポジトリに
productionやdevelopmentといった環境を設定することができ、環境ごとに環境変数等を設定することができます。※本連載では割愛します。
