はじめに
このシリーズは GitHub Actions を触ってみたいけど、ざっくり理解したい方向けの記事です。
- GitHub Actions ざっくりワークフローを理解
- GitHub Actions のシークレット情報と変数の設定方法(←当記事)
- GitHub Actions ワークフローを再利用する(共通化)
前回はGitHub Actionsのワークフローの概要を説明しました。
今回はAmazon ECSにデプロイするGitHub Actionsを通して、シークレット情報と変数の設定方法をご紹介します。
テンプレートからワークフローを作成
まずは、前回 説明した通り、ワークフローをテンプレートから作成します。
Configure
ボタンをクリックしてテンプレートを選択したら、YAMLファイル名を変更して、Commit changes
ボタンをクリックしてください。
テンプレートのワークフローはそのままでは動かないことが多いです。というのも、サービス固有のシークレット情報や変数を定義する必要があるからです。
それでは、それらを設定する方法を確認していきます。
シークレット情報の設定
今回のワークフローでいくと、シークレット情報はAWSのクレデンシャル情報が該当します。
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
このように${{ secrets.シークレット名 }}
で設定したシークレット値を参照することができます。
シークレット情報はSettingsタブのサイドバーからSecrets and variablesのアコーディオン内のActionsから設定できます。
New repository secret
ボタンをクリックすると、入力ページに遷移します。
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
のシークレット情報を設定してみましょう。
すると、このようにシークレット情報が設定できます。一度設定したシークレット情報の値は参照することができないので、忘れてしまった場合は再発行してください。
変数の設定方法
env
に関してはワークフローに値を直接設定しても動きますが、サービスごとのワークフローの記述を共通化することも視野にいれ、GitHub Actionsの変数を使って設定します。変数の参照方法は${{ vars.変数名 }}
です。
env:
- AWS_REGION: MY_AWS_REGION
- ECR_REPOSITORY: MY_ECR_REPOSITORY
- ECS_SERVICE: MY_ECS_SERVICE
- ECS_CLUSTER: MY_ECS_CLUSTER
- ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION
-
- CONTAINER_NAME: MY_CONTAINER_NAME
+ AWS_REGION: ${{ vars.MY_AWS_REGION }}
+ ECR_REPOSITORY: ${{ vars.MY_ECR_REPOSITORY }}
+ ECS_SERVICE: ${{ vars.MY_ECS_SERVICE }}
+ ECS_CLUSTER: ${{ vars.MY_ECS_CLUSTER }}
+ ECS_TASK_DEFINITION: ${{ vars.MY_ECS_TASK_DEFINITION }}
+
+ CONTAINER_NAME: ${{ vars.MY_CONTAINER_NAME }}
こちらもシークレット情報の設定と同じページにVariablesのタブがあるので、そこから設定します。
シークレットと変数の違い
シークレットと変数の違いは、大きくは設定した値を画面やログから参照できるか、できないかになります。下図は実際のデプロイワークフローの実行結果ですが、シークレット情報が***
と表示されているのに対して、変数は値が表示されていることが分かります。
おわりに
今回はシークレット情報と変数の設定方法をご紹介しました。
実際には、開発環境、ステージング環境、本番環境など別々の設定値やワークフローがあるので、次回はそれらの設定方法をご紹介いたします↓