環境変数とシークレット

Machine Learning のための CI/CD

Ravi Bhadauria

Machine Learning Engineer

コンテキスト

  • 定義済みの変数やデータに関する情報にアクセスできます
    • ワークフローの実行
    • 変数
    • ランナー環境
    • ジョブとステップ
  • 式構文 ${{ context.XXX }} を使ってコンテキストにアクセスします
  • このコースで使用するコンテキスト
    • github: ワークフロー実行に関する情報
    • env: ワークフローで設定された変数
    • secrets: ワークフローで利用可能な名前と値
    • job: 現在のジョブに関する情報
    • runner: マシンに関する情報
1 https://docs.github.com/en/actions/learn-github-actions/contexts
Machine Learning のための CI/CD

変数

  • 機密性のない情報をプレーンテキストで保存します
    • コンパイラフラグ、ユーザー名、ファイルパスなど
  • env キーの値として宣言します
  • グローバル/ローカルのスコープは定義された階層で決まります
  • env コンテキストから ${{ env.ENV_VAR }} としてアクセスします
name: Greeting on variable day
# Global env
env:
  Greeting: Hello

jobs: greeting_job: runs-on: ubuntu-latest # Local env: scoped to greeting_job env: First_Name: Ravi
steps: - run: | echo "${{ env.Greeting }} \ ${{ env.First_Name }}."
Machine Learning のための CI/CD

シークレット

  • 機密情報を暗号化して保存します
    • パスワード、API キーなど
  • secrets コンテキストから値にアクセスします
    • ${{ secrets.SuperSecret }}
  • 入力または環境変数として保存できます
steps:
  - name: Hello world action
    env: # Set the secret as an env var
      super_secret: ${{ secrets.SuperSecret }}

with: # Or as an input super_secret: ${{ secrets.SuperSecret }}
  • シークレットを表示する

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • 出力結果

シークレットの実際の値の代わりに *** が表示されるワークフローログの画像

Machine Learning のための CI/CD

シークレットの設定

リポジトリのランディングページにある設定タブを示す画像

  • Security > Secrets and Variables > Actions に移動します

シークレットタブの選択方法を示す画像

Machine Learning のための CI/CD

シークレットの設定

シークレットの名前と値の設定方法を示す画像

Machine Learning のための CI/CD

GITHUB_TOKEN シークレット

  • GitHub Actions が提供する組み込みシークレットです
  • ワークフローのアクション実行に使用します
    • リポジトリのクローンとコード取得
    • Issue と Pull Request のオープン・クローズ
    • Issue と Pull Request へのコメント
  • すべての GitHub Actions ワークフローで自動的に利用可能です
    • ${{ secrets.GITHUB_TOKEN }} でアクセスします
  • 権限は必要な範囲に調整できます
Machine Learning のための CI/CD

例: Pull Request へのコメント

  • PR にコメントを書き込む権限を付与します
permissions: 
  pull-requests: write
  • GITHUB_TOKEN を使って認証します
permissions: 
  pull-requests: write 
steps:
  - name: Comment PR
    uses: thollander/actions-comment-pull-request@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      message: |
        Hello world ! :wave:

github-actions ボットによる自動コメントを示す Pull Request ページの抜粋

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
Machine Learning のための CI/CD

練習しましょう!

Machine Learning のための CI/CD

Preparing Video For Download...