CoreValidation #89
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
# This workflow is triggered whenever "Caller CoreValidation" workflow is completed (which is called by PR). | |
# This workflow ideally should be triggered also by PR, but forked PR has limited permissions which does not | |
# allow to use `configure-aws-credentials` actions and using secrets. | |
# It will update its status back to the caller PR as "CoreValidation" check name | |
name: CoreValidation | |
on: | |
workflow_run: | |
workflows: | |
- Caller CoreValidation | |
types: | |
- completed | |
# The env variables relate to an ARM AWS account for CMSIS_5 | |
# If you are forking CMSIS_5 repo, please use your own info. | |
env: | |
AWS_ASSUME_ROLE: ${{ secrets.AWS_ASSUME_ROLE }} | |
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} | |
AWS_IAM_PROFILE: ${{ secrets.AWS_IAM_PROFILE }} | |
AWS_S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME }} | |
AWS_SECURITY_GROUP_ID: ${{ secrets.AWS_SECURITY_GROUP_ID }} | |
AWS_SUBNET_ID: ${{ secrets.AWS_SUBNET_ID }} | |
jobs: | |
set_pending_status_to_pr: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set a pending status to the PR | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
curl --request POST \ | |
--url https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.event.workflow_run.head_commit.id }} \ | |
--header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
--header 'content-type: application/json' \ | |
--data '{ | |
"state": "pending", | |
"context": "CoreValidation", | |
"target_url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
}' \ | |
--fail | |
ci_test: | |
runs-on: ubuntu-latest | |
needs: set_pending_status_to_pr | |
permissions: | |
id-token: write | |
contents: read | |
outputs: | |
avhresult: ${{ steps.avh.conclusion }} | |
testbadge: ${{ steps.avh.outputs.badge }} | |
steps: | |
- name: Download workflow artifact | |
uses: dawidd6/action-download-artifact@v2 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
workflow: caller-corevalidation.yml | |
run_id: ${{ github.event.workflow_run.id }} | |
- name: Read the pr_num file | |
id: pr_num_reader | |
uses: juliangruber/read-file-action@v1.1.6 | |
with: | |
path: ./pr_number/pr_number | |
trim: true | |
- name: Clone this repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Checkout PR | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
run: | | |
gh pr checkout ${{ steps.pr_num_reader.outputs.content }} | |
- name: Set up Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install AVH Client for Python | |
run: | | |
pip install git+https://github.com/ARM-software/avhclient.git@v0.1 | |
- uses: ammaraskar/gcc-problem-matcher@master | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
with: | |
role-to-assume: ${{ env.AWS_ASSUME_ROLE }} | |
aws-region: ${{ env.AWS_DEFAULT_REGION }} | |
- name: Run tests | |
id: avh | |
run: | | |
avhclient -b aws execute --specfile CMSIS/CoreValidation/Project/avh.yml | |
- name: Archive build results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: builds | |
path: CMSIS/CoreValidation/Project/Core_Validation-*.zip | |
retention-days: 1 | |
if-no-files-found: error | |
if: always() | |
- name: Archive test results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: tests | |
path: CMSIS/CoreValidation/Project/Core_Validation-*.junit | |
retention-days: 1 | |
if-no-files-found: error | |
if: always() | |
- name: Archive event file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: EventFile | |
path: ${{ github.event_path }} | |
set_success_status_to_pr: | |
runs-on: ubuntu-latest | |
needs: ci_test | |
if: ${{ success() }} | |
steps: | |
- name: Set success status to the PR | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
run: | | |
curl --request POST \ | |
--url https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.event.workflow_run.head_commit.id }} \ | |
--header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
--header 'content-type: application/json' \ | |
--data '{ | |
"state": "success", | |
"context": "CoreValidation", | |
"target_url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
}' \ | |
--fail | |
set_failure_status_to_pr: | |
runs-on: ubuntu-latest | |
needs: ci_test | |
if: ${{ failure() }} | |
steps: | |
- name: Set failure status to the PR | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
run: | | |
curl --request POST \ | |
--url https://api.github.com/repos/${{ github.repository }}/statuses/${{ github.event.workflow_run.head_commit.id }} \ | |
--header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | |
--header 'content-type: application/json' \ | |
--data '{ | |
"state": "failure", | |
"context": "CoreValidation", | |
"target_url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
}' \ | |
--fail |