Skip to content

Azure Terraform Provision and Deploy #8

Azure Terraform Provision and Deploy

Azure Terraform Provision and Deploy #8

name: Azure Terraform Provision and Deploy
on: workflow_dispatch
env:
RESOURCE_GROUP_NAME: helloworld-services
STATIC_WEB_APP_NAME: azure-static-web-apps-001
jobs:
#====== Provision and Deploy ======#
provision_and_deploy:
name: "Provision and Deploy"
runs-on: ubuntu-latest
steps:
# Checkout repository
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: true
# Login to Azure
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Set up Terraform
- name: Set up Terraform
uses: hashicorp/setup-terraform@v3
# Initialize Terraform
- name: Terraform Init
run: terraform init
working-directory: ./infra
# Import existing resources
- name: Import Static Web App
run: terraform import -var="resource_group_name=${{ env.RESOURCE_GROUP_NAME }}" azurerm_static_web_app.example /subscriptions/${{ secrets.AZURE_SUBSCRIPTION_ID }}/resourceGroups/${{ env.RESOURCE_GROUP_NAME }}/providers/Microsoft.Web/staticSites/${{ env.STATIC_WEB_APP_NAME }}
working-directory: ./infra
# Apply Terraform
- name: Terraform Apply
run: terraform apply -auto-approve -var "staticSites_name=${{ env.STATIC_WEB_APP_NAME }}" -var "resource_group_name=${{ env.RESOURCE_GROUP_NAME }}"
working-directory: ./infra
# Get Azure Static Web App deployment token
- name: Get Azure Static Web App deployment token
id: get-token
run: |
TOKEN=$(az staticwebapp secrets list --name ${{ env.STATIC_WEB_APP_NAME }} --resource-group ${{ env.RESOURCE_GROUP_NAME }} --query "properties.apiKey" -o tsv)
echo "STATIC_WEB_APP_TOKEN=$TOKEN" >> $GITHUB_ENV
# Logout of Azure
- name: Logout of Azure
run: az logout
# Deploy to Azure Static Web Apps
- name: Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ env.STATIC_WEB_APP_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: 'upload'
app_location: '/src/AspNet.Core.Blazor.WebAssembly'
output_location: 'wwwroot'