コンテンツにスキップ

GitHub Actions で secrets を使う

secrets とは

公式より

シークレットは、Organization、リポジトリ、またはリポジトリ環境内に作成する、暗号化された環境変数です。 作成したシークレットは、GitHub Actions ワークフローで利用できます。

GitHub Actions で secrets を使う

GitHub Actions で secrets を使うには、次のように記述する。

1
2
3
4
5
6
steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

env で使うことで、環境変数として使うことができる。Python だとos.environ.get["super_secret"]で取得できる。

注意

if: 条件でシークレットを直接参照することはできません。 代わりに、シークレットをジョブ レベルの環境変数として設定し、ジョブのステップを条件付きで実行するために環境変数を参照することを検討してください。 詳しくは、「コンテキスト」と jobs.<job_id>.steps[*].if をご覧ください。

シークレットが設定されていない場合、シークレットを参照する式の戻り値 (例では ${{ secrets.SuperSecret }} など) は空の文字列になります。

可能であれば、コマンドラインからプロセス間でシークレットを渡すのは避けてください。 コマンドライン プロセスは、他のユーザーに表示される (ps コマンドを使用)、またはセキュリティ監査イベントによってキャプチャされる可能性もあります。 シークレットの保護のために、環境変数、STDIN、またはターゲットのプロセスがサポートしている他のメカニズムの利用を検討してください。

コマンドラインからシークレットを渡さなければならない場合は、それらを適切なルールでクオート内に収めてください。 シークレットは、意図せずシェルに影響するかもしれない特殊なキャラクターをしばしば含みます。 それらの特殊なキャラクターをエスケープするには、環境変数をクオートで囲ってください。 次に例を示します。

Bash の利用例

1
2
3
4
5
6
steps:
  - shell: bash
    env:
      SUPER_SECRET: ${{ secrets.SuperSecret }}
    run: |
      example-command "$SUPER_SECRET"

参考