練習 - 設定環境
重要
您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
設定玩具公司的提取要求工作流程之前,您需要設定環境。
在本單元中,確保已設定好 Azure 和 GitHub 環境,讓您可以成功完成本課程模組的其餘部分。
為了達成這些目標,您可以:
- 設定適用於此課程模組的 GitHub 存放庫。
- 將該存放庫複製到您的電腦。
- 在 Microsoft Entra ID 中建立工作負載身分識別。
- 在 GitHub 中建立祕密。
取得 GitHub 存放庫
在本節中,您會設定您的 GitHub 存放庫,以根據範本存放庫來建立新的存放庫,來完成本模組的其餘部分。 範本存放庫包含您在本課程模組開始時所需的檔案。
此學習路徑中的課程模組有難度分級。 基於學習目的,每個課程模組都有相關聯的 GitHub 範本存放庫。
提示
即使您已在學習路徑中完成上一個課程模組,仍請遵循這些指示來建立新的存放庫,並為其提供新名稱。
從範本存放庫開始進行
執行可設定您的 GitHub 存放庫的範本。
在 GitHub 網站上,執行下列步驟,從範本建立存放庫:
選取 [使用此範本]>[建立新的存放庫]。
記下您 GitHub 使用者名稱或組織的名稱。 在範例中,GitHub 使用者名稱是 mygithubuser。 您很快就會需要此名稱。
輸入新專案的名稱,例如 toy-website-auto-review。
選取 [公開] 選項。
建立自己的存放庫時,建議您將其設為私人。 在本課程模組中,您將使用僅與公開存放庫和 GitHub Enterprise 帳戶一同運作的一些 GitHub 功能。
選取 [建立存放庫]。
複製存放庫
現在,您已在自己的帳戶中擁有範本存放庫的複本。 將此存放庫複製到本地,讓您可以開始在其中工作。
選取程式碼,然後選取複製圖示。
打開 Visual Studio Code。
透過選取 [終端機]>[新增終端機],開啟一個 Visual Studio Code 終端機視窗。 該視窗通常會在畫面底部開啟。
在終端中,前往要在本機電腦上複製 GitHub 存放庫的目錄。 舉例來說,若要將存放庫複製到 toy-website-auto-review 資料夾,請執行下列命令:
cd toy-website-auto-review
輸入
git clone
並貼上您稍早複製的 URL,該 URL 看起來像這樣:git clone https://github.com/mygithubuser/toy-website-auto-review.git
在 Visual Studio Code 終端機中執行下列命令,以在存放庫資料夾中重新開啟 Visual Studio Code:
code -r toy-website-auto-review
登入 Azure
既然您已將存放庫複製至本機電腦,您就會登入 Azure 環境。 您將使用 Azure 帳戶來建立工作負載身分識別,以供 GitHub Actions 工作流程使用。
在 Visual Studio Code 終端機中,執行下列命令以登入 Azure:
az login
在開啟的瀏覽器中,登入您的 Azure 帳戶。
在 Visual Studio Code 終端中,執行下列命令以登入 Azure:
Connect-AzAccount
在開啟的瀏覽器中,登入您的 Azure 帳戶。
建立工作負載身分識別
稍後在本 Microsoft Learn 課程模組中,您的提取要求工作流程將會在您的訂用帳戶中建立資源群組和資源。 若要部署資源,您必須建立工作負載身分識別,並將訂用帳戶上的參與者角色授與此身分識別。
警告
您在這裡建立的工作負載身分識別具有 Azure 訂用帳戶的高階存取權。 若要避免任何意外的問題,請使用非生產訂用帳戶。 請不要在保留任何生產工作負載的環境中執行這些步驟。
在您自己的提取要求驗證工作流程中,建議您使用專用的 Azure 訂用帳戶。
若要建立工作負載識別,Azure CLI 命令會使用 jq
來從 JSON 輸出剖析資料。 如果您未安裝 jq
,則可以在 Azure Cloud Shell 中使用 Bash 來建立工作負載身分識別、資源群組和角色指派,並準備 GitHub 祕密。
執行下列程式碼以定義 GitHub 使用者名稱及存放庫名稱的變數。 確定您以稍早在此練習中記下的 GitHub 使用者名稱來取代
mygithubuser
。 也請確定您指定正確的 GitHub 存放庫名稱。githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-auto-review'
為部署工作流程建立工作負載身分識別。
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\"]}"
執行下列的程式碼,來定義 GitHub 使用者名稱和存放庫名稱的變數。 確定您以稍早在此練習中記下的 GitHub 使用者名稱來取代
mygithubuser
。 也請確定您指定正確的 GitHub 存放庫名稱。$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-auto-review'
為部署工作流程建立工作負載身分識別。
$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"
將工作負載身分識別存取權授與訂用帳戶
接下來,為網站建立一個資源群組。 此程序也會在資源群組上為工作負載身分識別授與參與者角色,讓您的工作流程能夠部署至資源群組。
在 Visual Studio Code 終端中,執行下列 Azure CLI 命令:
az ad sp create --id $applicationRegistrationObjectId az role assignment create \ --assignee $applicationRegistrationAppId \ --role Contributor
在 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 的應用程式識別碼值。 當您完成本課程模組時,您可以在清除資源時使用該值。
建立 GitHub 祕密
您已建立工作負載身分識別,並授與其部署至訂用帳戶的權限。 接下來,在 GitHub Actions 中建立祕密。
在瀏覽器中,瀏覽至您的 GitHub 存放庫。
選取[設定]>[秘密和變數]>[動作]。
選取 [新增存放庫祕密]。
將祕密命名為 AZURE_CLIENT_ID。
在 [Value] \(值\) 欄位中,貼上來自終端輸出第一行的 GUID。 請勿在值中包含
AZURE_CLIENT_ID
、冒號或任何空格。選取 [新增祕密]。
重複此程序,以建立 AZURE_TENANT_ID 和 AZURE_SUBSCRIPTION_ID 的祕密,並從終端輸出的對應欄位中複製值。
確認祕密清單現在會顯示這三個祕密。