162 lines
5.3 KiB
YAML
162 lines
5.3 KiB
YAML
# 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
|