|
1 | | -name: Azure Template Validation |
| 1 | +name: Azure Dev Deploy |
2 | 2 | on: |
3 | 3 | workflow_dispatch: |
4 | 4 | push: |
5 | 5 | branches: |
6 | 6 | - main |
| 7 | + paths: |
| 8 | + - 'infra/**' |
| 9 | + - 'azure*.yaml' |
| 10 | + - '.github/workflows/azure-dev.yml' |
| 11 | + |
7 | 12 |
|
8 | 13 | permissions: |
9 | 14 | contents: read |
10 | 15 | id-token: write |
11 | | - pull-requests: write |
12 | 16 |
|
13 | 17 | jobs: |
14 | | - template_validation_job: |
| 18 | + deploy: |
15 | 19 | runs-on: ubuntu-latest |
| 20 | + name: azd deploy |
16 | 21 | environment: production |
17 | | - name: Template validation |
18 | | - |
| 22 | + env: |
| 23 | + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} |
| 24 | + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} |
| 25 | + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
| 26 | + AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }} |
| 27 | + AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }} |
| 28 | + AZURE_ENV_AI_SERVICE_LOCATION: ${{ secrets.AZURE_ENV_AI_SERVICE_LOCATION }} |
| 29 | + AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID: ${{ secrets.AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID }} |
| 30 | + AZURE_EXISTING_AIPROJECT_RESOURCE_ID: ${{ secrets.AZURE_EXISTING_AIPROJECT_RESOURCE_ID }} |
| 31 | + AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }} |
| 32 | + |
19 | 33 | steps: |
20 | | - # Step 1: Checkout the code from your repository |
21 | | - - name: Checkout code |
| 34 | + - name: Checkout Code |
22 | 35 | uses: actions/checkout@v4 |
23 | 36 |
|
24 | | - # Step 2: Pre-authenticate Azure for azd validation |
25 | | - - name: Login to Azure |
| 37 | + - name: Set timestamp and env name |
26 | 38 | shell: bash |
27 | 39 | run: | |
28 | | - az login --service-principal -u "${{ secrets.AZURE_CLIENT_ID }}" -p "${{ secrets.AZURE_CLIENT_SECRET }}" --tenant "${{ secrets.AZURE_TENANT_ID }}" |
29 | | - az account set --subscription "${{ secrets.AZURE_SUBSCRIPTION_ID }}" |
30 | | - |
31 | | - # Step 3: Validate the Azure template using microsoft/template-validation-action |
32 | | - - name: Validate Azure Template |
33 | | - uses: microsoft/template-validation-action@v0.4.3 |
| 40 | + HHMM=$(date -u +'%H%M') |
| 41 | + echo "AZURE_ENV_NAME=${AZURE_ENV_NAME}-${HHMM}" >> "$GITHUB_ENV" |
| 42 | +
|
| 43 | + - name: Install azd |
| 44 | + uses: Azure/setup-azd@v2 |
| 45 | + |
| 46 | + - name: Login to Azure |
| 47 | + uses: azure/login@v2 |
34 | 48 | with: |
35 | | - workingDirectory: . |
36 | | - validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }} |
37 | | - useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }} |
38 | | - validateTests: ${{ vars.TEMPLATE_VALIDATE_TESTS }} |
39 | | - id: validation |
40 | | - env: |
41 | | - AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} |
42 | | - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} |
43 | | - AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} |
44 | | - AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
45 | | - AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }} |
46 | | - AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }} |
47 | | - AZURE_ENV_OPENAI_LOCATION: ${{ secrets.AZURE_ENV_OPENAI_LOCATION }} |
48 | | - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
49 | | - |
50 | | - # Step 4: Print the result of the validation |
51 | | - - name: Print result |
52 | | - run: cat ${{ steps.validation.outputs.resultFile }} |
| 49 | + client-id: ${{ secrets.AZURE_CLIENT_ID }} |
| 50 | + tenant-id: ${{ secrets.AZURE_TENANT_ID }} |
| 51 | + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
| 52 | + |
| 53 | + - name: Login to AZD |
| 54 | + shell: bash |
| 55 | + run: | |
| 56 | + azd auth login \ |
| 57 | + --client-id "$AZURE_CLIENT_ID" \ |
| 58 | + --federated-credential-provider "github" \ |
| 59 | + --tenant-id "$AZURE_TENANT_ID" |
| 60 | +
|
| 61 | + - name: Provision and Deploy |
| 62 | + shell: bash |
| 63 | + run: | |
| 64 | + if ! azd env select "$AZURE_ENV_NAME"; then |
| 65 | + azd env new "$AZURE_ENV_NAME" --subscription "$AZURE_SUBSCRIPTION_ID" --location "$AZURE_LOCATION" --no-prompt |
| 66 | + fi |
| 67 | +
|
| 68 | + azd config set defaults.subscription "$AZURE_SUBSCRIPTION_ID" |
| 69 | + |
| 70 | +
|
| 71 | + if [[ -n "${AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID:-}" ]]; then |
| 72 | + azd env set AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID "$AZURE_ENV_EXISTING_LOG_ANALYTICS_WORKSPACE_RID" |
| 73 | + fi |
| 74 | +
|
| 75 | + if [[ -n "${AZURE_EXISTING_AIPROJECT_RESOURCE_ID:-}" ]]; then |
| 76 | + azd env set AZURE_EXISTING_AIPROJECT_RESOURCE_ID "$AZURE_EXISTING_AIPROJECT_RESOURCE_ID" |
| 77 | + fi |
| 78 | +
|
| 79 | + azd up --no-prompt |
| 80 | +
|
0 commit comments