연습 - 환경 설정
중요
이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
장난감 회사의 끌어오기 요청 워크플로를 설정하기 전에 환경을 구성해야 합니다.
이 단원에서는 이 모듈의 나머지 부분을 성공적으로 완료할 수 있도록 Azure 및 GitHub 환경이 설정되었는지 확인합니다.
목표를 달성하기 위해 다음을 수행합니다.
- 이 모듈에 대한 GitHub 리포지토리를 설정합니다.
- 컴퓨터에 리포지토리를 복제합니다.
- Microsoft Entra ID에서 워크로드 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을 붙여넣습니다.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 워크플로에 대한 워크로드 ID를 만듭니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.
az login
열리는 브라우저에서 Azure 계정에 로그인합니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다.
Connect-AzAccount
열리는 브라우저에서 Azure 계정에 로그인합니다.
워크로드 ID 만들기
이 Microsoft Learn 모듈의 뒷부분에서 끌어오기 요청 워크플로는 구독에 리소스 그룹 및 리소스를 만듭니다. 리소스를 배포하려면 워크로드 ID를 만들고 구독에 대해 참가자 역할을 부여해야 합니다.
경고
여기서 만드는 워크로드 ID는 Azure 구독에 대한 높은 수준의 액세스 권한을 가집니다. 우발적인 문제를 방지하려면 비프로덕션 구독을 사용합니다. 프로덕션 워크로드가 있는 환경에서는 이러한 단계를 실행하지 마세요.
사용자 자체 끌어오기 요청 유효성 검사 워크플로에서는 전용 Azure 구독을 사용하는 것이 좋습니다.
워크로드 ID를 만들기 위해 Azure CLI 명령은 jq
를 사용하여 JSON 출력의 데이터를 구문 분석합니다. jq
가 설치되지 않은 경우 Azure Cloud Shell에서 Bash를 사용하여 워크로드 ID, 리소스 그룹 및 역할 할당을 만들고, GitHub 비밀을 준비할 수 있습니다.
다음 코드를 실행하여 GitHub 사용자 이름 및 리포지토리 이름에 대한 변수를 정의합니다.
mygithubuser
를 이전 연습 단원에서 적어 둔 GitHub 사용자 이름으로 바꿔야 합니다. 또한 올바른 GitHub 리포지토리 이름을 지정했는지 확인합니다.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-auto-review'
배포 워크플로에 대한 워크로드 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\"]}"
다음 코드를 실행하여 GitHub 사용자 이름 및 리포지토리 이름에 대한 변수를 정의합니다.
mygithubuser
를 이전 연습 단원에서 적어 둔 GitHub 사용자 이름으로 바꿔야 합니다. 또한 올바른 GitHub 리포지토리 이름을 지정했는지 확인합니다.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-auto-review'
배포 워크플로에 대한 워크로드 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 액세스 권한 부여
다음으로 웹 사이트에 대한 리소스 그룹을 만듭니다. 또한 이 프로세스는 워크플로가 리소스 그룹에 배포할 수 있도록 워크로드 ID에 리소스 그룹에 대한 참가자 역할을 부여합니다.
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에 대한 애플리케이션 ID 값을 기록해 둡니다. 이 모듈을 마치면 리소스를 정리할 때 이 값을 사용할 수 있습니다.
GitHub 비밀 만들기
워크로드 ID를 만들고 구독에 배포할 수 있는 권한을 부여했습니다. 다음으로, GitHub Actions에서 비밀을 만듭니다.
브라우저에서 GitHub 리포지토리로 이동합니다.
설정>비밀 및 변수>작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
비밀의 이름을 AZURE_CLIENT_ID로 지정합니다.
값 필드에 터미널 출력의 첫 번째 줄의 GUID를 붙여넣습니다. 값에
AZURE_CLIENT_ID
, 콜론 또는 공백을 포함하지 마세요.비밀 추가를 선택합니다.
이 프로세스를 반복하여 터미널 출력의 해당 필드에서 값을 복사해 AZURE_TENANT_ID 및 AZURE_SUBSCRIPTION_ID에 대한 비밀을 만듭니다.
이제 비밀 목록에 세 비밀이 모두 표시되는지 확인합니다.