# 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