| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- # 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
|