1- name : Deploy to Azure
1+ name : Azure Dev Deploy
22
33on :
44 workflow_dispatch :
5- # push:
6- # branches:
7- # - main
85
9- # Set up permissions for deploying with secretless Azure federated credentials
10- # https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure?tabs=azure-portal%2Clinux#set-up-azure-login-with-openid-connect-authentication
116permissions :
12- id-token : write
137 contents : read
8+ id-token : write
149
1510jobs :
16- build :
11+ deploy :
1712 runs-on : ubuntu-latest
1813 environment : production
1914 env :
20- AZURE_CLIENT_ID : ${{ vars.AZURE_CLIENT_ID }}
21- AZURE_TENANT_ID : ${{ vars.AZURE_TENANT_ID }}
22- AZURE_SUBSCRIPTION_ID : ${{ vars.AZURE_SUBSCRIPTION_ID }}
23- AZURE_ENV_NAME : ${{ vars.AZURE_ENV_NAME }}
15+ AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
16+ AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
17+ AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
2418 AZURE_LOCATION : ${{ vars.AZURE_LOCATION }}
25- AZURE_ENV_OPENAI_LOCATION : ${{ vars.AZURE_ENV_OPENAI_LOCATION || 'eastus2' }}
26- AZURE_ENV_USE_CASE : ${{ vars.AZURE_ENV_USE_CASE || 'telecom' }}
19+ AZURE_ENV_AI_SERVICE_LOCATION : ${{ vars.AZURE_ENV_AI_SERVICE_LOCATION || 'eastus2' }}
20+ USE_CASE : ${{ vars.USE_CASE || 'telecom' }}
2721 AZURE_DEV_COLLECT_TELEMETRY : ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
2822 steps :
29- - name : Checkout
30- uses : actions/checkout@v6
23+ - name : Checkout Code
24+ uses : actions/checkout@v4
25+
26+ - name : Set timestamp and env name
27+ run : |
28+ HHMM=$(date -u +'%H%M')
29+ echo "AZURE_ENV_NAME=azd-${{ vars.AZURE_ENV_NAME }}-${HHMM}" >> $GITHUB_ENV
3130
3231 - name : Install azd
33- uses : Azure/setup-azd@v2.0.0
32+ uses : Azure/setup-azd@v2
33+
34+ - name : Login to Azure
35+ uses : azure/login@v2
36+ with :
37+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
38+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
39+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
40+
41+ - name : Login to AZD
42+ shell : bash
43+ run : |
44+ azd auth login \
45+ --client-id "$AZURE_CLIENT_ID" \
46+ --federated-credential-provider "github" \
47+ --tenant-id "$AZURE_TENANT_ID"
3448
35- - name : Log in with Azure (Federated Credentials)
49+ - name : Provision and Deploy
50+ shell : bash
3651 run : |
37- azd auth login `
38- --client-id "$Env:AZURE_CLIENT_ID" `
39- --federated-credential-provider "github" `
40- --tenant-id "$Env:AZURE_TENANT_ID"
41- shell : pwsh
42-
43- - name : Provision Infrastructure
44- run : azd provision --no-prompt
45- env :
46- AZD_INITIAL_ENVIRONMENT_CONFIG : ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}
47-
48- - name : Deploy Application
49- run : azd deploy --no-prompt
52+ if ! azd env select "$AZURE_ENV_NAME"; then
53+ azd env new "$AZURE_ENV_NAME" --subscription "$AZURE_SUBSCRIPTION_ID" --location "$AZURE_LOCATION" --no-prompt
54+ fi
55+ azd config set defaults.subscription "$AZURE_SUBSCRIPTION_ID"
56+ azd env set AZURE_ENV_AI_SERVICE_LOCATION="$AZURE_ENV_AI_SERVICE_LOCATION"
57+ azd env set USE_CASE="$USE_CASE"
58+ azd up --no-prompt
0 commit comments