7
6

More than 1 year has passed since last update.

GitHub Actions のシークレット情報と変数の設定方法

Last updated at Posted at 2023-06-05

はじめに

このシリーズは GitHub Actions を触ってみたいけど、ざっくり理解したい方向けの記事です。

  1. GitHub Actions ざっくりワークフローを理解
  2. GitHub Actions のシークレット情報と変数の設定方法(←当記事)
  3. GitHub Actions ワークフローを再利用する(共通化)

前回はGitHub Actionsのワークフローの概要を説明しました。

今回はAmazon ECSにデプロイするGitHub Actionsを通して、シークレット情報と変数の設定方法をご紹介します。

テンプレートからワークフローを作成

まずは、前回 説明した通り、ワークフローをテンプレートから作成します。
image.png

Configureボタンをクリックしてテンプレートを選択したら、YAMLファイル名を変更して、Commit changesボタンをクリックしてください。
image.png

テンプレートのワークフローはそのままでは動かないことが多いです。というのも、サービス固有のシークレット情報や変数を定義する必要があるからです。

それでは、それらを設定する方法を確認していきます。

シークレット情報の設定

今回のワークフローでいくと、シークレット情報はAWSのクレデンシャル情報が該当します。

secrets
    - 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ボタンをクリックすると、入力ページに遷移します。
image.png
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYのシークレット情報を設定してみましょう。
image.png

すると、このようにシークレット情報が設定できます。一度設定したシークレット情報の値は参照することができないので、忘れてしまった場合は再発行してください。
image.png

変数の設定方法

envに関してはワークフローに値を直接設定しても動きますが、サービスごとのワークフローの記述を共通化することも視野にいれ、GitHub Actionsの変数を使って設定します。変数の参照方法は${{ vars.変数名 }}です。

変数を使ってenvを設定するように書き換える
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のタブがあるので、そこから設定します。
image.png

シークレットと変数の違い

シークレットと変数の違いは、大きくは設定した値を画面やログから参照できるか、できないかになります。下図は実際のデプロイワークフローの実行結果ですが、シークレット情報が***と表示されているのに対して、変数は値が表示されていることが分かります。
image.png

おわりに

今回はシークレット情報と変数の設定方法をご紹介しました。
実際には、開発環境、ステージング環境、本番環境など別々の設定値やワークフローがあるので、次回はそれらの設定方法をご紹介いたします↓

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6