Scheduled UW IdP Test Matrix #536
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Scheduled UW IdP Test Matrix | |
on: | |
push: | |
branches: | |
# You can test this workflow by pushing to this branch | |
- run-scheduled-idp-web-tests | |
schedule: | |
# The cron string must be quoted! | |
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#schedule | |
# Do not change this without also changing stop-test-service-providers.yml | |
- cron: '0 10 * * *' # 3am PDT, 2am PST | |
jobs: | |
run-web-tests: | |
strategy: | |
matrix: | |
include: | |
- idp_env: eval | |
- idp_env: prod | |
fail-fast: false # Don't cancel prod tests if eval fails and vice versa | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
actions: write | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.ACTIONS_SLACK_BOT_TOKEN }} | |
ARTIFACT_BUCKET: ${{ secrets.IDENTITY_ARTIFACT_BUCKET }} | |
steps: | |
- uses: actions/checkout@v3 | |
- id: config | |
run: | | |
set -x | |
timestamp=$(date "+%Y.%d.%m-%H.%m.%S") | |
storyboard_path="idp/schedule/${{ matrix.idp_env }}/${timestamp}" | |
report_dir="web-tests/${storyboard_path}" | |
echo timestamp=${timestamp} >> $GITHUB_OUTPUT | |
echo storyboard_path=${storyboard_path} >> $GITHUB_OUTPUT | |
echo report_dir=${report_dir} >> $GITHUB_OUTPUT | |
echo storyboard_link=${storyboard_url}/${report_dir}/index.html >> $GITHUB_OUTPUT | |
echo workflow_link=${{ env.workflow_link }} >> $GITHUB_OUTPUT | |
env: | |
storyboard_url: https://identity-artifact.iamdev.s.uw.edu/ | |
workflow_link: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
- uses: UWIT-IAM/actions/[email protected] | |
with: | |
gcloud-token: ${{ secrets.TEST_RUNNER_GOOGLE_TOKEN }} | |
- name: Initialize slack workflow canvas | |
env: | |
IDP_ENV: ${{ steps.configure.outputs.idp-env }} | |
with: | |
json: > | |
{ | |
"channel": "#iam-bots", | |
"status": "in progress", | |
"description": "Scheduled ${{ matrix.idp_env }} IdP Web Tests", | |
"steps": [ | |
{ | |
"description": "Run tests", | |
"stepId": "run-tests", | |
"status": "in progress" | |
}, | |
{ | |
"description": "Upload test artifacts", | |
"stepId": "upload-artifacts" | |
} | |
] | |
} | |
uses: UWIT-IAM/actions/[email protected] | |
id: slack | |
- if: steps.slack.outputs.canvas-id | |
name: Add workflow link to slack notification | |
uses: UWIT-IAM/actions/[email protected] | |
with: | |
command: add-artifact | |
description: "<${{ env.workflow_link }} | View Workflow>" | |
env: | |
workflow_link: ${{ steps.config.outputs.workflow_link }} | |
- name: Run tests | |
run: ./scripts/run-tests.sh -- --env ${{ matrix.idp_env }} | |
id: run | |
- name: Determine post-test actions | |
if: always() | |
run: | | |
if test -f webdriver-report/index.html | |
then | |
mkdir -pv ${{ steps.config.outputs.report_dir }} | |
cp -r webdriver-report/* ${{ steps.config.outputs.report_dir }} | |
echo upload_storyboards='true' >> $GITHUB_OUTPUT | |
fi | |
id: post-run | |
- if: always() && steps.slack.outputs.canvas-id | |
env: | |
run_status: ${{ steps.run.outcome == 'success' && 'succeeded' || 'failed' }} | |
upload_status: ${{ steps.post-run.outputs.upload_storyboards == 'true' && 'in progress' || 'failed'}} | |
uses: UWIT-IAM/actions/[email protected] | |
with: | |
step-id: run-tests, upload-artifacts | |
step-status: ${{ env.run_status }}, ${{ env.upload_status }} | |
command: update-workflow | |
- if: always() && steps.post-run.outputs.upload_storyboards == 'true' | |
name: Upload storyboards to identity-artifact | |
id: upload-storyboards | |
uses: google-github-actions/upload-cloud-storage@v2 | |
with: | |
path: 'web-tests' | |
destination: ${{ secrets.IDENTITY_ARTIFACT_BUCKET }} | |
- if: > | |
always() | |
&& steps.post-run.outputs.upload_storyboards =='true' | |
&& steps.upload-storyboards.outcome == 'success' | |
&& steps.slack.outputs.canvas-id | |
name: Add storyboard link to slack notification | |
id: add-storyboard-link-to-slack | |
uses: UWIT-IAM/actions/[email protected] | |
with: | |
command: add-artifact | |
description: "<${{ steps.config.outputs.storyboard_link }} | View Storyboards>" | |
- if: > | |
always() | |
&& steps.post-run.outputs.upload_storyboards =='true' | |
&& steps.upload-storyboards.outcome == 'success' | |
name: Set notices on workflow | |
env: | |
storyboard_link: ${{ steps.config.outputs.storyboard_link }} | |
run: echo "::notice::Storyboards located at ${{ env.storyboard_link }}" | |
- if: > | |
always() | |
&& steps.post-run.outputs.upload_storyboards == 'true' | |
uses: UWIT-IAM/actions/[email protected] | |
env: | |
step_status: ${{ steps.upload-storyboards.outcome == 'success' && 'succeeded' || 'failed' }} | |
with: | |
command: update-workflow | |
step-id: upload-artifacts | |
step-status: ${{ env.step_status }} | |
- if: always() && steps.slack.outputs.canvas-id | |
uses: UWIT-IAM/actions/[email protected] | |
with: | |
workflow-status: ${{ job.status == 'success' && 'succeeded' || 'failed' }} |