演習 - 環境を設定する

完了

重要

この演習を行うには、独自の Azure サブスクリプションが必要です。また、料金が発生することがあります。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

おもちゃ会社の pull request ワークフローを設定する前に、自分の環境を構成する必要があります。

このユニットでは、このモジュールの残りの部分を正常に完了するために Azure と GitHub 環境が設定されていることを確認します。

これらの目的を達成するには、次の作業を行います。

  • このモジュール向けに GitHub リポジトリを設定します。
  • リポジトリをコンピューターに複製します。
  • Microsoft Entra ID でワークロード ID を作成します。
  • GitHub にシークレットを作成します。

GitHub リポジトリを取得する

このセクションでは、テンプレート リポジトリに基づいて新しいリポジトリを作成して、このモジュールの残りの部分を完了するために GitHub リポジトリを設定します。 テンプレート リポジトリには、このモジュールを開始するために必要なファイルが含まれています。

このラーニング パスのモジュールは、段階的に進めるラーニング パスの一部となっています。 各モジュールには、学習のための、関連する GitHub テンプレート リポジトリがあります。

ヒント

ラーニング パスで前のモジュールを既に完了した場合でも、これらの手順に従って新しいリポジトリを作成し、新しい名前を付けてください。

テンプレート リポジトリから開始する

GitHub リポジトリを設定するテンプレートを実行します。

GitHub サイトで、次の手順を実行して、テンプレートからリポジトリを作成します。

  1. [このテンプレートを使用]>[新しいリポジトリの作成] の順に選択します。

    強調表示されている [このテンプレートを使用] ボタンのあるテンプレート リポジトリが示されている GitHub インターフェイスのスクリーンショット。

  2. GitHub のユーザー名または組織の名前をメモしておきます。 この例の GitHub ユーザー名は、mygithubuser です。 この名前はこの後すぐに必要になります。

  3. 新しいプロジェクトに名前 (toy-website-auto-review など) を入力します。

  4. [Public](パブリック) オプションを選択します

    独自のリポジトリを作成するときに、プライベートにしたい場合もあります。 このモジュールでは、パブリック リポジトリと GitHub Enterprise アカウントでのみ動作する GitHub 機能を使用して作業します。

  5. [Create repository] (リポジトリの作成) を選択します。

    リポジトリ作成ページが表示されている GitHub インターフェイスのスクリーンショット。

リポジトリの複製

これで、独自のアカウントでテンプレート リポジトリのコピーが作成されました。 このリポジトリをローカルにクローンし、その中で作業を開始できるようにします。

  1. [Code](コード) を選択し、コピー アイコンを選択します。

    GitHub インターフェイスのスクリーンショット。新しいリポジトリが表示され、リポジトリの URL のコピー ボタンが強調表示されています。

  2. Visual Studio Code を開きます。

  3. [ターミナル]>[新しいターミナル] を選択して、Visual Studio Code ターミナル ウィンドウを開きます。 このウィンドウは通常、画面の下部に表示されます。

  4. ターミナルで、ローカル コンピューター上に GitHub リポジトリをクローンしたいディレクトリに移動します。 たとえば、toy-website-auto-review フォルダーにリポジトリをクローンするには、次のコマンドを実行します。

    cd toy-website-auto-review
    
  5. git clone」と入力し、先ほどコピーした URL を貼り付けると、次のようになります。

    git clone https://github.com/mygithubuser/toy-website-auto-review.git
    
  6. Visual Studio Code ターミナルで次のコマンドを実行して、リポジトリ フォルダー内の Visual Studio Code を再度開きます。

    code -r toy-website-auto-review
    

Azure へのサインイン

これで、リポジトリがコンピューターのローカルにクローンされたので、Azure 環境にサインインします。 Azure アカウントを使用して、GitHub Actions ワークフローによって使用されるワークロード ID を作成します。

  1. Visual Studio Code のターミナルで次のコマンドを実行して、Azure にサインインします。

    az login
    
  2. 開いたブラウザーで、Azure アカウントにサインインします。

  1. Visual Studio Code ターミナルで、次のコマンドを実行して Azure にサインインします。

    Connect-AzAccount
    
  2. 開いたブラウザーで、Azure アカウントにサインインします。

ワークロード ID を作成する

この Microsoft Learn モジュールの後半で、pull request ワークフローによって、サブスクリプションにリソース グループとリソースが作成されます。 リソースをデプロイするには、ワークロード ID を作成し、それにサブスクリプションの共同作成者ロールを付与する必要があります。

警告

ここで作成するワークロード ID には、Azure サブスクリプションへの高レベルのアクセス権があります。 偶発的な問題を回避するには、非運用サブスクリプションを使用します。 実稼働ワークロードのいずれかを保持する環境では、これらの手順を行わないでください。

独自の pull request 検証ワークフローでは、専用の Azure サブスクリプションを使用することをお勧めします。

ワークロード ID を作成するため、Azure CLI コマンドでは jq を使って JSON 出力からのデータが解析されます。 jq をインストールしていない場合は、Azure Cloud Shell で Bash を使って、ワークロード ID、リソース グループ、ロールの割り当てを作成し、GitHub シークレットを準備できます。

  1. 次のコードを実行して、GitHub ユーザー名とリポジトリ名の変数を定義します。 mygithubuser は必ず、この演習で前にメモした GitHub ユーザー名に置き換えてください。 また、正しい GitHub リポジトリ名を指定するようにしてください。

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-auto-review'
    
  2. デプロイ ワークフロー用のワークロード ID を作成します。

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-website-auto-review')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-auto-review\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:pull_request\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. 次のコードを実行して、GitHub ユーザー名とリポジトリ名の変数を定義します。 mygithubuser は必ず、この演習で前にメモした GitHub ユーザー名に置き換えてください。 また、正しい GitHub リポジトリ名を指定するようにしてください。

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-auto-review'
    
  2. デプロイ ワークフロー用のワークロード ID を作成します。

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-website-auto-review'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-auto-review' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):pull_request"
    

ワークロード ID にサブスクリプションへのアクセス権を付与する

次に、Web サイト用のリソース グループを作成します。 また、このプロセスでは、ワークロード ID にリソース グループの共同作成者ロールを付与し、ワークフローでリソース グループにデプロイできるようにします。

  1. Visual Studio Code ターミナルで、次の Azure CLI コマンドを実行します。

    az ad sp create --id $applicationRegistrationObjectId
    az role assignment create \
       --assignee $applicationRegistrationAppId \
       --role Contributor
    
  1. Visual Studio Code ターミナルで、次の Azure PowerShell コマンドを実行します。

    New-AzADServicePrincipal -AppId $applicationRegistration.AppId
    New-AzRoleAssignment `
       -ApplicationId $applicationRegistration.AppId `
       -RoleDefinitionName Contributor
    

GitHub シークレットを準備する

次のコードを実行して、GitHub シークレットとして作成する必要がある各値を表示します。

echo "AZURE_CLIENT_ID: $applicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID: $($applicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

AZURE_CLIENT_ID のアプリケーション ID 値をメモしておきます。 この値は、このモジュールの終了時にリソースをクリーン アップするときに使用できます。

GitHub シークレットを作成する

ワークロード ID を作成し、それにサブスクリプションにデプロイするためのアクセス許可を付与しました。 次に、GitHub Actions でシークレットを作成します。

  1. ブラウザーで GitHub リポジトリに移動します。

  2. [設定]>[シークレットと変数]>[アクション] の順に選択します。

  3. [New repository secret](新しいリポジトリ シークレット) を選択します。

    GitHub インターフェイスの [Secrets]\(シークレット\) ページのスクリーンショット。[Create repository secret]\(リポジトリ シークレットの作成\) ボタンが強調表示されています。

  4. シークレットに AZURE_CLIENT_ID という名前を付けます。

  5. [値] フィールドに、ターミナル出力の最初の行の GUID を貼り付けます。 値には、AZURE_CLIENT_ID、コロン、スペースを含めないでください。

  6. [Add secret](シークレットの追加) を選択します。

    [New Secret]\(新しいシークレット\) ページが表示されている GitHub インターフェイスのスクリーンショット。名前と値が入力され、[Add Secret]\(シークレットの追加\) ボタンが強調表示されています。

  7. このプロセスを繰り返して AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID のシークレットを作成します。値は、ターミナル出力の対応するフィールドからコピーします。

  8. シークレットの一覧に現在 3 つのシークレットが表示されていることを確認します。

    シークレットの一覧を示す GitHub インターフェイスのスクリーンショット。