GitHub ActionsでEnvironment Secretsを使う方法
GitHub Actionsで機密情報を扱う場合、機密情報はGitHub SecretsもしくはEnvironment Secretsに格納するのがベストプラクティスです。
※スコープは、全てのブランチから参照可能ですが、特定ブランチに絞り込みも可能(Deployment branches and tags指定により)
.github/workflows/xxx.ymlファイルに機密情報のべた書きは絶対NGです。
前提
ブランチ・・・production,testの2つ
productionブランチで使用するシークレットがprod,testブランチで使用するシークレットがqaとする。
Environment Secretsに機密情報設定
環境設定
Environment Secretsに機密情報設定する手順です。まず環境の設定を行います。
「Settings」をクリックします。
「Environments」ー「New environment」をクリックします。
「qa」と入力し「Configure environment」をクリックします。
再度、「Environments」ー「New environment」をクリックします。
「prod」と入力し「Configure environment」をクリックします。
これで環境設定ができました。
環境ごとに機密情報設定
次に環境ごとに機密情報設定しますが、Nameはどちらの環境も同じ名前にします。ここでは「APIKEY」としています。
qa
「qa」をクリックし、「Add environment secret」をクリックします。
NameとValueを設定して「Add secret」をクリックします。
prod
次に、prodに機密情報設定します。
「prod」をクリックし、「Add environment secret」をクリックします。
NameとValueを設定して「Add secret」をクリックします。
workflowファイル作成(.yml,.yaml)
Secretの値で分岐し、echoして値が変わっていることを確認するworkflowファイル作成します。
productionブランチ、または、testブランチにpushする事をトリガーにします。
name: Simple API Key Check
on:
push:
branches:
- production
- test
jobs:
check-secret:
runs-on: ubuntu-latest
# ここで「どの環境のSecretを使うか」を指定します
# productionブランチならprod、それ以外(testブランチ)ならqaを選択
environment: ${{ github.ref_name == 'production' && 'prod' || 'qa' }}
steps:
- name: Environment Variable Echo Test
env:
API_TOKEN: ${{ secrets.APIKEY }} # Environment Secretsに登録した「APIKEY」を環境変数にセット
run: |
echo "GitHub Actionsが起動しました。"
if [ "$API_TOKEN" = "hoge" ]; then
echo "ブランチはtestです。"
elif [ "$API_TOKEN" = "fuga" ]; then
echo "ブランチはproductionです。"
else
echo "それ以外の値、またはSecretが空です。"
fi
testブランチpush時のログ
productionブランチpush時のログ

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^












