Skip to content

Merge pull request #15 from tarilen/bug/post-deploy-fix #31

Merge pull request #15 from tarilen/bug/post-deploy-fix

Merge pull request #15 from tarilen/bug/post-deploy-fix #31

Workflow file for this run

name: deploy
on:
push:
branches: [ main ]
paths-ignore:
- 'docs/**'
- '**/*.md'
- 'LICENSE'
workflow_dispatch:
permissions:
id-token: write
contents: read
env:
# Standard Azure envs for azure/login
ARM_USE_OIDC: "true"
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# TF_VAR_ prefixes map to OpenTofu/Terraform variables
TF_VAR_client_id: ${{ secrets.AZURE_CLIENT_ID }}
TF_VAR_tenant_id: ${{ secrets.AZURE_TENANT_ID }}
TF_VAR_subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
jobs:
provision-and-upload:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stamp Commit SHA
run: |
echo $GITHUB_SHA > site/version.txt
- name: Azure OIDC login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Install OpenTofu
uses: opentofu/setup-opentofu@v1
with:
tofu_version: "1.6.0"
- name: Init/Apply OpenTofu
working-directory: tofu
run: |
tofu init -upgrade
tofu apply -auto-approve -input=false
- name: Read outputs
id: tfout
working-directory: tofu
run: |
echo "web=$(tofu output -raw static_web_url)" >> "$GITHUB_OUTPUT"
TOKEN=$(tofu output -raw swa_api_token)
echo "::add-mask::$TOKEN"
echo "token=$TOKEN" >> "$GITHUB_OUTPUT"
- name: Deploy site to Static Web App
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ steps.tfout.outputs.token }}
action: upload
app_location: "site"
skip_app_build: true
- name: Post the site URL
run: |
echo "Site: ${{ steps.tfout.outputs.web }}"
- name: Post-deploy smoke test
env:
SITE: https://resume.theginger.dev
run: |
echo "Post deploy SHA verification"
for i in $(seq 1 6); do
isLive=$(curl -fsSL --max-time 10 "$SITE/version.txt?cb=$GITHUB_SHA" | tr -d '[:space:]' || true)
if [ "${isLive}" = "${GITHUB_SHA}" ]; then
body=$(curl -fsSL --max-time 10 "$SITE/?cb=$GITHUB_SHA" || true)
if [[ "${body}" == *"Damian Ortega"* ]]; then
echo "$GITHUB_SHA is live and content is intact"; exit 0
fi
fi
echo "attempt $i: not ready (live='$isLive'); waiting…"; sleep 10
done
echo "::error::smoke test failed — new version not live or content assertion failed"
exit 1