GitHub Actions で環境変数を追加する

GitBeginner
オンラインで実践に進む

はじめに

GitHub Actions において、環境変数 (environment variables) は、ワークフロー内のステップで利用可能なキーと値のペアです。環境変数は、ワークフロー全体、特定のジョブ、または特定のステップに対して定義できます。

この実験 (Lab) では、以下の方法を学習します。

  1. GitHub Actions ワークフローファイルを作成する。
  2. ワークフローレベルで環境変数を定義する。
  3. ステップ内で環境変数にアクセスし、使用する。
  4. 変数を更新し、ワークフローを再度トリガーする。

この実験 (Lab) は、以前の実験 (Lab) で作成したリポジトリを基盤とします。github-actions-demo リポジトリをクローンし、環境変数を使用するワークフローを作成します。

'Hello' に設定された変数 GREETING を持つ env セクションを追加する

このステップでは、リポジトリをクローンし、グローバルな環境変数を持つ新しい GitHub Actions ワークフローファイルを作成します。

  1. github-actions-demo の GitHub リポジトリページで、緑色の Code ボタンをクリックします。
  2. HTTPS タブが選択されていることを確認し、URL をコピーします。URL は https://github.com/your-username/github-actions-demo.git のような形式になります。
  3. LabEx 環境でターミナルを開きます。デフォルトのパスは ~/project です。
  4. git clone コマンドを使用してリポジトリをダウンロードします。your-username は実際の GitHub ユーザー名に置き換えてください。
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
  1. クローンしたリポジトリに移動します。
cd ~/project/github-actions-demo
  1. .github/workflows ディレクトリ内に env-demo.yml という名前の新しいファイルを作成します。
touch .github/workflows/env-demo.yml
  1. WebIDE で .github/workflows/env-demo.yml を開き、以下のコンテンツを追加します。これはワークフロー名、トリガーイベント (push)、および GREETING という名前の変数を定義する env セクションを定義します。
name: Environment Variable Demo

on: [push]

env:
  GREETING: "Hello"
  • name: ワークフローの名前です。
  • on: push イベントが発生したときにこのワークフローが実行されることを指定します。
  • env: ワークフロー内のすべてのジョブおよびステップで利用可能な環境変数のマップを定義します。ここでは、GREETING を文字列 'Hello' に設定しています。

run echo "${{ env.GREETING }}, World!" で変数をエコーするステップを追加する

このステップでは、作成した環境変数を使用するジョブとステップを定義します。ワークフローファイル内で環境変数にアクセスするには、${{ env.VARIABLE_NAME }} 構文を使用します。

WebIDE で .github/workflows/env-demo.yml を開き、ファイル末尾に以下の内容を追加してください。

jobs:
  print-greeting:
    runs-on: ubuntu-latest
    steps:
      - name: Print Greeting
        run: echo "${{ env.GREETING }}, World!"

完成したファイルは以下のようになります。

name: Environment Variable Demo

on: [push]

env:
  GREETING: "Hello"

jobs:
  print-greeting:
    runs-on: ubuntu-latest
    steps:
      - name: Print Greeting
        run: echo "${{ env.GREETING }}, World!"
  • jobs: ワークフローが実行するジョブを定義します。
  • print-greeting: ジョブの ID です。
  • runs-on: ジョブを実行するマシンタイプ(ランナー)を設定します。
  • steps: ジョブ内で実行されるすべてのステップをグループ化します。
  • run: ランナーのシェルでコマンドを実行します。ここでは echo を使用して GREETING の値の後に , World! を出力します。

env を含む更新されたワークフローをコミットしてプッシュする

このステップでは、新しいワークフローファイルをコミットし、GitHub にプッシュします。このファイルをプッシュすると、ワークフローが GitHub Actions に登録され、最初の実行がトリガーされます。

  1. リポジトリディレクトリにいることを確認します。
cd ~/project/github-actions-demo
  1. ワークフローファイルをステージングします。
git add .github/workflows/env-demo.yml
  1. 変更をコミットします。
git commit -m "Add workflow with environment variable"
  1. 変更を GitHub 上のリモートリポジトリにプッシュします。
git push

認証に関する注意:
git pushを実行すると、WebIDE は自動的に認証を求めます。以下の詳細な手順に従ってください。

  1. "The extension 'GitHub' wants to sign in using GitHub." というメッセージのポップアップが表示されます。「Allow」をクリックします。
  2. 新しい通知が表示されます。「Copy&Continue to GitHub」をクリックし、次のプロンプトで「Open」をクリックします。
  3. 開いたブラウザウィンドウで GitHub アカウントにログインし、コピーされた認証コードを入力します。認証を確認した後、ページは自動的に閉じます。
  4. 数秒待つと、ターミナルでプッシュ操作が正常に完了したことが確認できます。

プライバシーに関する注意:
WebIDE は認証のために GitHub アカウントへのフルアクセスを要求します。プライバシーに関する懸念は不要です。現在の実験(Lab)が完了すると、LabEx VM は直ちに破棄され、資格情報や認証情報は保持されません。

変更をプッシュしてワークフローをトリガーする

このワークフローは push イベントで実行されるように設定されています。直前のプッシュですでにワークフローがトリガーされていますが、環境変数を更新して再度トリガーするのがいかに簡単かを見てみましょう。

  1. WebIDE で .github/workflows/env-demo.yml を開きます。
  2. GREETING の値を "Hello" から "Hi" に変更します。
env:
  GREETING: "Hi"
  1. この変更をコミットしてプッシュします。
git add .github/workflows/env-demo.yml
git commit -m "Update greeting variable"
git push

認証に関する注意:
最近認証を行っていない場合、git push を実行すると WebIDE が自動的に認証を求めます。認証については、前のステップで説明したのと同じ手順に従ってください。

プライバシーに関する注意: WebIDE は認証目的で GitHub アカウントへのフルアクセスを要求します。プライバシーに関する懸念は不要です。現在の実験(Lab)が完了すると、LabEx VM は直ちに破棄され、認証情報や認可情報は保持されません。

このプッシュにより、更新された変数を持つ新しいワークフローの実行がトリガーされます。

GitHub 上の実行ログで環境変数出力の検証

コードをプッシュした後、ワークフローは GitHub 上で自動的にトリガーされます。ワークフローの実行ログを確認することで、環境変数が正しく使用されていることを検証できます。

  1. ウェブブラウザで GitHub 上のリポジトリにアクセスします:https://github.com/your-username/github-actions-demo
  2. リポジトリページの最上部にある Actions タブをクリックします。
  3. 新しくワークフローの実行がリストに表示されているはずで、おそらく名前は "Update greeting variable" です。

注意: コードをプッシュした際、リポジトリ内に複数のワークフローファイルがある場合、複数の Actions がトリガーされることがあります。左側のサイドバーでワークフロー名を確認するか、右側のワークフロー実行リストを使用して、正しいワークフロー実行を特定してください。

  1. 実行タイトルをクリックし、次に print-greeting ジョブをクリックします。
  2. Print Greeting ステップを展開して出力を確認します。

コマンドの実行結果が表示されるはずです:

Run echo "Hi, World!"
  echo "Hi, World!"
  shell: /usr/bin/bash -e {0}
Hi, World!

${{ env.GREETING }} が新しい値 Hi に置き換えられていることに注目してください。

GitHub Actions logs

まとめ

この実験では、環境変数を使用する GitHub Actions ワークフローを正常に作成しました。以下の点を学習しました。

  1. ワークフローレベルで env キーワードを使用して環境変数を定義する方法。
  2. ステップ内で ${{ env.VARIABLE_NAME }} 構文を使用してこれらの変数にアクセスする方法。
  3. 変数を更新し、変更をプッシュすることでワークフローを再度トリガーする方法。

環境変数は、ハードコードされたコマンドロジックを変更することなく、環境や実行間で変更される可能性のある設定値を管理するために不可欠です。