GitHub ActionsでEnvironment Secretsを使う方法

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時のログ

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました