Skip to content

Commit 74d876d

Browse files
Merge pull request #388 from microsoft/psl-weeklyschedule-codmod
chore: Add AZD Template Validation Workflow (Scheduled & On-Demand) and Refactor Azure Deployment Pipeline
2 parents 75e0523 + 5e5b2da commit 74d876d

2 files changed

Lines changed: 110 additions & 36 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: AZD Template Validation
2+
3+
on:
4+
schedule:
5+
- cron: '30 1 * * 4' # Every Thursday at 7:00 AM IST (1:30 AM UTC)
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
id-token: write
11+
pull-requests: write
12+
13+
jobs:
14+
template_validation:
15+
runs-on: ubuntu-latest
16+
name: azd template validation
17+
environment: production
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v6
21+
22+
- name: Set timestamp
23+
run: echo "HHMM=$(date -u +'%H%M')" >> $GITHUB_ENV
24+
25+
- name: Validate Azure Template
26+
id: validation
27+
uses: microsoft/template-validation-action@v0.4.3
28+
with:
29+
validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }}
30+
validateTests: ${{ vars.TEMPLATE_VALIDATE_TESTS }}
31+
useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }}
32+
33+
env:
34+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
35+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
36+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
37+
AZURE_ENV_NAME: azd-${{ secrets.AZURE_ENV_NAME }}-${{ env.HHMM }}
38+
AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }}
39+
AZURE_ENV_AI_SERVICE_LOCATION: ${{ secrets.AZURE_AI_DEPLOYMENT_LOCATION || secrets.AZURE_LOCATION }}
40+
AZURE_ENV_MODEL_CAPACITY: 1
41+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
43+
44+
- name: Print result
45+
shell: bash
46+
run: cat "${{ steps.validation.outputs.resultFile }}"

.github/workflows/azure-dev.yml

Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,65 @@
1-
name: Azure Template Validation
2-
on:
3-
workflow_dispatch:
4-
5-
permissions:
6-
contents: read
7-
id-token: write
8-
pull-requests: write
9-
jobs:
10-
template_validation_job:
11-
runs-on: ubuntu-latest
1+
name: Azure Dev Deploy
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: read
8+
id-token: write
9+
10+
jobs:
11+
deploy:
12+
runs-on: ubuntu-latest
1213
environment: production
13-
name: Template validation
14-
steps:
15-
# Step 1: Checkout the code from your repository
16-
- name: Checkout code
17-
uses: actions/checkout@v6
18-
# Step 2: Validate the Azure template using microsoft/template-validation-action
19-
- name: Validate Azure Template
20-
uses: microsoft/template-validation-action@v0.4.3
21-
with:
22-
validateAzd: true
23-
useDevContainer: false
24-
id: validation
25-
env:
26-
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
27-
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
28-
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
29-
AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }}
30-
AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }}
31-
AZURE_AI_DEPLOYMENT_LOCATION : ${{ secrets.AZURE_AI_DEPLOYMENT_LOCATION }}
32-
AZURE_ENV_MODEL_CAPACITY : 1
33-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34-
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
35-
# Step 3: Print the result of the validation
36-
- name: Print result
37-
run: cat ${{ steps.validation.outputs.resultFile }}
14+
env:
15+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
16+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
17+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
18+
AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }}
19+
AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }}
20+
AZURE_AI_DEPLOYMENT_LOCATION: ${{ secrets.AZURE_AI_DEPLOYMENT_LOCATION || secrets.AZURE_LOCATION }}
21+
AZURE_ENV_MODEL_CAPACITY: 1
22+
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v6
26+
27+
- name: Set timestamp and env name
28+
run: |
29+
HHMM=$(date -u +'%H%M')
30+
echo "AZURE_ENV_NAME=azd-${{ vars.AZURE_ENV_NAME }}-${HHMM}" >> $GITHUB_ENV
31+
32+
- name: Install azd
33+
uses: Azure/setup-azd@v2
34+
35+
- name: Login to Azure
36+
uses: azure/login@v2
37+
with:
38+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
39+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
40+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
41+
42+
- name: Login to AZD
43+
shell: bash
44+
run: |
45+
azd auth login \
46+
--client-id "$AZURE_CLIENT_ID" \
47+
--federated-credential-provider "github" \
48+
--tenant-id "$AZURE_TENANT_ID"
49+
50+
- name: Provision and deploy
51+
shell: bash
52+
run: |
53+
set -e
54+
55+
if ! azd env select "$AZURE_ENV_NAME"; then
56+
azd env new "$AZURE_ENV_NAME" --subscription "$AZURE_SUBSCRIPTION_ID" --location "$AZURE_LOCATION" --no-prompt
57+
fi
58+
59+
azd config set defaults.subscription "$AZURE_SUBSCRIPTION_ID"
60+
azd env set AZURE_SUBSCRIPTION_ID "$AZURE_SUBSCRIPTION_ID"
61+
azd env set AZURE_LOCATION "$AZURE_LOCATION"
62+
azd env set AZURE_ENV_AI_SERVICE_LOCATION "${AZURE_AI_DEPLOYMENT_LOCATION:-$AZURE_LOCATION}"
63+
azd env set AZURE_ENV_MODEL_CAPACITY "$AZURE_ENV_MODEL_CAPACITY"
64+
65+
azd up --no-prompt

0 commit comments

Comments
 (0)