Skip to content

Merge pull request #80 from Azure-Samples/pamelafox-patch-1 #43

Merge pull request #80 from Azure-Samples/pamelafox-patch-1

Merge pull request #80 from Azure-Samples/pamelafox-patch-1 #43

Workflow file for this run

name: Deploy to Azure
on:
workflow_dispatch:
push:
# Run when commits are pushed to mainline branch
branches:
- main
# GitHub Actions workflow to deploy to Azure using azd
# To configure required secrets for connecting to Azure, simply run `azd pipeline config`
# Set up permissions for deploying with secretless Azure federated credentials
# https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure?tabs=azure-portal%2Clinux#set-up-azure-login-with-openid-connect-authentication
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
outputs:
uri: ${{ steps.output.outputs.uri }}
env:
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
# Project-specific variables
AZURE_SEARCH_SERVICE_LOCATION: ${{ vars.AZURE_SEARCH_SERVICE_LOCATION }}
AZURE_SEARCH_SERVICE: ${{ vars.AZURE_SEARCH_SERVICE }}
AZURE_SEARCH_INDEX: ${{ vars.AZURE_SEARCH_INDEX }}
AZURE_SEARCH_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_SEARCH_SERVICE_RESOURCE_GROUP }}
AZURE_SEARCH_SERVICE_SKU: ${{ vars.AZURE_SEARCH_SERVICE_SKU }}
AZURE_SEARCH_SEMANTIC_SEARCH_SKU: ${{ vars.AZURE_SEARCH_SEMANTIC_SEARCH_SKU }}
AZURE_STORAGE_ACCOUNT_LOCATION: ${{ vars.AZURE_STORAGE_ACCOUNT_LOCATION }}
AZURE_STORAGE_ACCOUNT_RESOURCE_GROUP: ${{ vars.AZURE_STORAGE_ACCOUNT_RESOURCE_GROUP }}
AZURE_STORAGE_ACCOUNT: ${{ vars.AZURE_STORAGE_ACCOUNT }}
AZURE_API_SERVICE_LOCATION: ${{ vars.AZURE_API_SERVICE_LOCATION }}
AZURE_API_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_API_SERVICE_RESOURCE_GROUP }}
AZURE_LOG_ANALYTICS: ${{ vars.AZURE_LOG_ANALYTICS }}
AZURE_APPINSIGHTS: ${{ vars.AZURE_APPINSIGHTS }}
AZURE_COMPUTER_VISION_ACCOUNT: ${{ vars.AZURE_COMPUTER_VISION_ACCOUNT }}
AZURE_COMPUTER_VISION_RESOURCE_GROUP: ${{ vars.AZURE_COMPUTER_VISION_RESOURCE_GROUP }}
AZURE_COMPUTER_VISION_LOCATION: ${{ vars.AZURE_COMPUTER_VISION_LOCATION }}
AZURE_COMPUTER_VISION_SKU_NAME: ${{ vars.AZURE_COMPUTER_VISION_SKU_NAME }}
SERVICE_ACA_RESOURCE_EXISTS: ${{ vars.SERVICE_ACA_RESOURCE_EXISTS }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Install azd
uses: Azure/[email protected]
- name: Log in with Azure (Federated Credentials)
run: |
azd auth login `
--client-id "$Env:AZURE_CLIENT_ID" `
--federated-credential-provider "github" `
--tenant-id "$Env:AZURE_TENANT_ID"
shell: pwsh
# Workaround for https://github.com/Azure/azure-dev/issues/3920
- name: Create azd env
run: azd env new $AZURE_ENV_NAME
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
- name: Prepackage Frontend
run: |
azd hooks run prepackage --no-prompt
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
- name: Provision Infrastructure
run: |
azd provision --no-prompt
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Deploy Application
run: azd deploy --no-prompt
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Output Deployment URI
id: output
run: |
azd env get-values > .env
source .env
echo "uri=$SERVICE_ACA_URI" >> "$GITHUB_OUTPUT"
smoketests:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Python (for Playwright test)
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install Playwright (Python) and Browsers
run: |
pip install --no-cache-dir playwright
python -m playwright install --with-deps chromium
- name: End-to-End UI Test (Playwright)
shell: bash
env:
URI: ${{needs.build.outputs.uri}}
run: |
python scripts/smoke_test.py "$URI"