GitHub Actions 워크플로에서 워크플로 ID 사용
워크로드 ID를 만들고 Azure 환경에 액세스 권한을 할당한 후에는 GitHub Actions 워크플로에서 사용할 차례입니다. 이 단원에서는 워크플로 정의에 대해 수행해야 하는 두 가지 변경 사항에 대해 알아봅니다.
워크플로에서 토큰을 요청하도록 허용
배포 워크플로에서 토큰을 요청하도록 허용해야 합니다. 워크플로에서 permissions
속성을 추가합니다.
permissions:
id-token: write
contents: read
Azure에 로그인
배포 워크플로는 azure/login
사용하여 Azure에 로그인합니다. 워크로드 ID를 사용하는 경우 다음 세 가지 입력을 지정해야 합니다.
입력 | Description |
---|---|
client-id |
애플리케이션 등록에 대한 애플리케이션 ID. 개체 ID가 아닌 애플리케이션 ID를 사용해야 합니다. |
tenant-id |
Microsoft Entra 테넌트(디렉터리)의 고유 식별자입니다. |
subscription-id |
배포할 Azure 구독 ID. |
이러한 각 값은 GUID입니다.
값을 정의할 때 워크플로 정의 파일에서 직접 지정하도록 선택할 수 있습니다.
- uses: azure/login@v1
with:
client-id: 'A123b4567c-1234-1a2b-2b1a-1234abc12345'
tenant-id: 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
subscription-id: 'B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0'
그러나 일부 조직에서는 이러한 식별자를 비밀 데이터로 처리하거나 식별자가 Git 리포지토리에 커밋되는 것을 허용하지 않습니다. GitHub 비밀을 사용하여 값을 지정할 수도 있습니다.
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Bicep에 대한 학습 경로 전체에서 비밀을 사용하여 이러한 식별자를 저장하고 관리합니다. 조직에 가장 적합한 방법을 결정할 수 있습니다.
Azure에 배포
워크플로가 Azure에 로그인한 후 azure/arm-deploy
작업을 사용하여 Bicep 파일을 배포할 수 있습니다. 다음 워크플로 정의는 워크플로 ID를 사용하는 전체 Bicep 배포 워크플로를 보여줍니다.
name: MyWorkflow
on: [workflow_dispatch]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
resourceGroupName: ToyWebsite
template: ./deploy/main.bicep