Skip to content

Commit

Permalink
test azd from ci
Browse files Browse the repository at this point in the history
  • Loading branch information
smurawski committed Feb 7, 2024
1 parent 6c7b745 commit dff765a
Show file tree
Hide file tree
Showing 2 changed files with 161 additions and 8 deletions.
160 changes: 160 additions & 0 deletions .github/workflows/test-azd-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# composite workflow to test the azd deployment of the app
# uses a github federated identity
name: Test AZD Deployment

on:
push:
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@v3

- uses: actions/cache@v3
with:
path: |
.azure/
key: ${{ runner.os }}-azd-${{ hashFiles('infra/**') }}-${{ env.BUST_CACHE }}-${{ github.sha }}

- name: Install azd
uses: Azure/[email protected]

- name: Install Nodejs
uses: actions/setup-node@v3
with:
node-version: 18

- name: Login az
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: Set az account
uses: azure/CLI@v1
with:
inlineScript: |
az account set --subscription ${{vars.AZURE_SUBSCRIPTION_ID}}
- name: Log in with Azure
run: |
$info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable;
Write-Host "::add-mask::$($info.clientSecret)"
azd auth login `
--client-id "$($info.clientId)" `
--client-secret "$($info.clientSecret)" `
--tenant-id "$($info.tenantId)"
shell: pwsh
env:
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}

- 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 }}
ARM_TENANT_ID: ${{ vars.ARM_TENANT_ID }}
ARM_CLIENT_ID: ${{ vars.ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}

- 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: Get Store IPs
id: kubectl_get_service
run: |
eval $(azd env get-values)
az aks get-credentials --resource-group $AZURE_RESOURCEGROUP_NAME --name $AZURE_AKS_CLUSTER_NAME
storeAdminIp=$(kubectl get service store-admin -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
while [ -z "$storeAdminIp" ]; do
sleep 60
storeAdminIp=$(kubectl get service store-admin -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 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
while [ -z "$storeFrontIp" ]; do
sleep 60
storeFrontIp=$(kubectl get service store-front -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
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@v3

- uses: actions/cache@v3
with:
path: |
.azure/
key: ${{ runner.os }}-azd-${{ hashFiles('infra/**') }}-${{ env.BUST_CACHE }}-${{ github.sha }}

- name: Install azd
uses: Azure/[email protected]

- name: Install Nodejs
uses: actions/setup-node@v3
with:
node-version: 18

- name: Login az
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: Set az account
uses: azure/CLI@v1
with:
inlineScript: |
az account set --subscription ${{vars.AZURE_SUBSCRIPTION_ID}}
- name: Log in with Azure
run: |
$info = $Env:AZURE_CREDENTIALS | ConvertFrom-Json -AsHashtable;
Write-Host "::add-mask::$($info.clientSecret)"
azd auth login `
--client-id "$($info.clientId)" `
--client-secret "$($info.clientSecret)" `
--tenant-id "$($info.tenantId)"
shell: pwsh
env:
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}

- name: Azd down
run: azd down --no-prompt --force --purge
env:
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ vars.ARM_TENANT_ID }}
ARM_CLIENT_ID: ${{ vars.ARM_CLIENT_ID }}
ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@ name: Playwright Tests
on:
workflow_call:
inputs:
testName:
required: true
type: string
runPlaywrightTests:
required: true
type: boolean
storeAdminUrl:
required: true
type: string
Expand All @@ -17,7 +11,6 @@ on:

jobs:
playwright-tests:
if: inputs.runPlaywrightTests
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
Expand All @@ -42,6 +35,6 @@ jobs:
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report-${{ inputs.testName }}
name: playwright-report-store-admin
path: tests/playwright-report/
retention-days: 30

0 comments on commit dff765a

Please sign in to comment.