Skip to content

AKS store demo 2.0

AKS store demo 2.0 #2

Workflow file for this run

# composite workflow to test the azd deployment of the app
# uses a github federated identity
name: Test AZD Deployment
on:
pull_request:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
deploy:
outputs:
storeAdminIp: ${{ steps.kubectl_get_service.outputs.STORE_ADMIN_IP }}
storeFrontIp: ${{ steps.kubectl_get_service.outputs.STORE_FRONT_IP }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3
- name: Install azd
uses: Azure/setup-azd@ae0f8b5482eeac61e940f447327d84c73beb8b1e # v2.1.0
- name: Install kubelogin
uses: azure/use-kubelogin@76597ae0fcbaace21b05e13a2cbf8daee2c6e820 # v1
with:
kubelogin-version: "v0.2.8"
- name: Azure CLI login
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Azure Developer CLI login
run: |
azd auth login \
--client-id ${{ secrets.AZURE_CLIENT_ID }} \
--federated-credential-provider "github" \
--tenant-id ${{ secrets.AZURE_TENANT_ID }}
- name: Turn on Helm support for azd
run: azd config set alpha.aks.helm on
- name: Provision and deploy
id: provision_deploy
continue-on-error: true
run: |
azd env new ${{ vars.AZURE_ENV_NAME }}
azd env set AKS_NODE_POOL_VM_SIZE Standard_D2_v4
azd env set BUILD_CONTAINERS true
azd env set DEPLOY_AZURE_CONTAINER_REGISTRY true
azd env set DEPLOY_AZURE_OPENAI true
azd env set AZURE_OPENAI_LOCATION ${{ vars.AZURE_LOCATION }}
azd env set DEPLOY_AZURE_OPENAI_DALL_E_MODEL false
azd env set DEPLOY_AZURE_SERVICE_BUS true
azd env set DEPLOY_AZURE_COSMOSDB true
azd env set AZURE_COSMOSDB_ACCOUNT_KIND MongoDB
azd env set DEPLOY_OBSERVABILITY_TOOLS true
azd up --no-prompt
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Save azd cache
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4
if: always()
with:
path: |
.azure/
key: ${{ runner.os }}-azd-${{ github.run_id }}-${{ github.sha }}
- name: Check provision and deploy result
if: steps.provision_deploy.outcome == 'failure'
run: |
echo "Provision and deploy failed"
exit 1
- name: Get Store IPs
id: kubectl_get_service
if: steps.provision_deploy.outcome == 'success'
run: |
eval $(azd env get-values)
storeAdminIp=$(kubectl get service store-admin -n $AZURE_AKS_NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
while [ -z "$storeAdminIp" ]; do
sleep 60
storeAdminIp=$(kubectl get service store-admin -n $AZURE_AKS_NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
done
echo "STORE_ADMIN_IP=${storeAdminIp}"
echo "STORE_ADMIN_IP=${storeAdminIp}" >> "$GITHUB_OUTPUT"
storeFrontIp=$(kubectl get service store-front -n $AZURE_AKS_NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
while [ -z "$storeFrontIp" ]; do
sleep 60
storeFrontIp=$(kubectl get service store-front -n $AZURE_AKS_NAMESPACE -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
done
echo "STORE_FRONT_IP=${storeFrontIp}"
echo "STORE_FRONT_IP=${storeFrontIp}" >> "$GITHUB_OUTPUT"
playwright-tests:
needs: deploy
uses: ./.github/workflows/test-playwright.yaml
secrets: inherit
with:
storeAdminUrl: "http://${{ needs.deploy.outputs.storeAdminIp }}"
storeFrontUrl: "http://${{ needs.deploy.outputs.storeFrontIp }}"
teardown:
if: always()
needs: playwright-tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3
- name: Install azd
uses: Azure/setup-azd@ae0f8b5482eeac61e940f447327d84c73beb8b1e # v2.1.0
- name: Restore azd cache
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: |
.azure/
key: ${{ runner.os }}-azd-${{ github.run_id }}-${{ github.sha }}
- name: Azure CLI login
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Azure Developer CLI login
run: |
azd auth login \
--client-id ${{ secrets.AZURE_CLIENT_ID }} \
--federated-credential-provider "github" \
--tenant-id ${{ secrets.AZURE_TENANT_ID }}
- name: Destroy environment
run: azd down --force --purge
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Remove azd folder
run: rm -rf .azure