Skip to content

QA Visualisation Workflow #51

QA Visualisation Workflow

QA Visualisation Workflow #51

Workflow file for this run

name: QA Visualisation Workflow
on:
workflow_dispatch:
inputs:
environment:
description: Environment to run the visualisation for
required: true
type: choice
options: [ 'Dev', 'Tst', 'Staging', 'Production' ]
workflow_call:
inputs:
environment:
type: string
required: true
jobs:
generate_images:
runs-on: ubuntu-latest
env:
az_keyvault_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}-kv
az_resource_group_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}
az_sql_database_server_name: ${{ secrets.AZ_ENVIRONMENT }}${{ secrets.DFE_PROJECT_NAME }}
az_keyvault_plantech_api_key_name: api--authentication--keyvalue
SQL_IP_NAME: qa-viz
environment: ${{ inputs.environment || 'Staging' }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Login with AZ
uses: ./.github/actions/azure-login
with:
az_tenant_id: ${{ secrets.AZ_TENANT_ID }}
az_subscription_id: ${{ secrets.AZ_SUBSCRIPTION_ID }}
az_client_id: ${{ secrets.AZ_CLIENT_ID }}
az_client_secret: ${{ secrets.AZ_CLIENT_SECRET }}
- name: Get workflow IP address
id: whats-my-ip
uses: ./.github/actions/whats-my-ip-address
- name: Add Azure firewall rules
uses: ./.github/actions/azure-ip-whitelist
with:
ip_address: ${{ steps.whats-my-ip.outputs.ip }}
verb: "add"
az_keyvault_name: ${{ env.az_keyvault_name }}
az_ip_name: ${{ env.SQL_IP_NAME }}
az_resource_group: ${{ env.az_resource_group_name}}
az_sql_database_server_name: ${{ env.az_sql_database_server_name }}
- name: Get api key
id: get-plantech-api-key
uses: ./.github/actions/azure-get-keyvault-secret
with:
az_keyvault_name: ${{ env.az_keyvault_name }}
az_keyvault_secret_name: ${{ env.az_keyvault_plantech_api_key_name }}
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Set up Python
working-directory: ./qa-visualiser
run: uv python install
- name: Install requirements
working-directory: ./qa-visualiser
run: uv sync
- name: Run visualisation script
working-directory: ./qa-visualiser
run: uv run main.py
env:
PLAN_TECH_API_URL: https://localhost:8081
PLAN_TECH_API_KEY: ${{ steps.get-plantech-api-key.outputs.secret_value }}
- name: Remove Azure firewall rules
uses: ./.github/actions/azure-ip-whitelist
with:
ip_address: ${{ steps.whats-my-ip.outputs.ip }}
verb: "remove"
az_keyvault_name: ${{ env.az_keyvault_name }}
az_ip_name: ${{ env.SQL_IP_NAME }}
az_resource_group: ${{ env.az_resource_group_name}}
az_sql_database_server_name: ${{ env.az_sql_database_server_name }}
- name: Upload image
id: artifact-upload-step
uses: actions/upload-artifact@v4
with:
name: qa-visualisations
path: ./visualisations
- name: Call Teams Webhook
run: |
curl -X POST -H 'Content-Type: application/json' -d '{"text": "New Visualisations Available for ${{ inputs.environment }} : https://github.com/DFE-Digital/plan-technology-for-your-school/actions/runs/${{ github.run_id }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }}"}' ${{ secrets.PLANTECH_TEAMS_WEBHOOK }}