.github: improve coverage run (#6238)

Add support to detect and kick UI builds and run quality
build and report coverage for the PR.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Rohit Yadav 2022-04-14 17:51:36 +05:30 committed by GitHub
parent 05c907b3a8
commit cd24cf2daa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 14 deletions

View File

@ -17,7 +17,7 @@
name: PR Quality Check name: PR Quality Check
on: [pull_request] on: [pull_request_target]
jobs: jobs:
build: build:
@ -26,27 +26,55 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Changed Java Files
id: java-changes
uses: tj-actions/changed-files@a59f800cbb60ed483623848e31be67659a2940f8
with:
files: |
**/*.java
- name: Changed UI Files
id: ui-changes
uses: tj-actions/changed-files@a59f800cbb60ed483623848e31be67659a2940f8
with:
files: |
ui/*
- name: Kick UI Build
if: steps.ui-changes.outputs.any_changed == 'true'
run: |
curl -s -H "Authorization: token ${{ secrets.ACS_ROBOT_TOKEN }}" \
-X POST -d '{"body": "UI changes found, kicking a new QA UI build\n@blueorangutan ui"}' \
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments"
- name: Set up JDK11 - name: Set up JDK11
uses: actions/setup-java@v3 uses: actions/setup-java@v3
if: steps.java-changes.outputs.any_changed == 'true'
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: '11' java-version: '11'
cache: 'maven' cache: 'maven'
- name: Install nonoss jar dependencies - name: Run Build and Tests with Coverage
id: coverage
if: steps.java-changes.outputs.any_changed == 'true'
run: | run: |
git clone https://github.com/shapeblue/cloudstack-nonoss.git nonoss git clone https://github.com/shapeblue/cloudstack-nonoss.git nonoss
cd nonoss && bash -x install-non-oss.sh && cd .. cd nonoss && bash -x install-non-oss.sh && cd ..
mvn -P quality -Dsimulator -Dnoredist clean install
- name: Run Build and Tests with Coverage echo "COVERAGE<<EOF" >> $GITHUB_ENV
run: mvn -P quality -Dsimulator -Dnoredist clean install for file in ${{ steps.java-changes.outputs.all_changed_files }}; do
name=$(basename $file | sed 's/.java//g')
coverage=$(grep ,$name, client/target/site/jacoco-aggregate/jacoco.csv | cut -f3-9 -d"," | sed 's/,/|/g')
echo $coverage
echo "|$coverage|" >> $GITHUB_ENV
done
echo "EOF" >> $GITHUB_ENV
- name: Generate JaCoCo Report - name: Comment PR Coverage Report
uses: Madrapps/jacoco-report@fd4800e8a81e21bdf373438e5918b975df041d15 if: steps.java-changes.outputs.any_changed == 'true'
with: run: |
paths: ${{ github.workspace }}/client/target/site/jacoco-aggregate/jacoco.xml curl -s -H "Authorization: token ${{ secrets.ACS_ROBOT_TOKEN }}" \
token: ${{ secrets.GITHUB_TOKEN }} -X POST -d '{"body": "PR Coverage Report\n|**CLASS**|**INSTRUCTION MISSED**|**INSTRUCTION COVERED**|**BRANCH MISSED**|**BRANCH COVERED**|**LINE MISSED**|**LINE COVERED**|\n|-----|-----|-----|-----|-----|-----|-----|\n${{ env.COVERAGE }}"}' \
min-coverage-overall: 10 "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments"
min-coverage-changed-files: 80
title: PR Code Coverage
debug-mode: false

View File

@ -28,7 +28,7 @@ jobs:
- name: Conflict Check - name: Conflict Check
uses: eps1lon/actions-label-merge-conflict@v2.0.0 uses: eps1lon/actions-label-merge-conflict@v2.0.0
with: with:
repoToken: "${{ secrets.GITHUB_TOKEN }}" repoToken: "${{ secrets.GITHUB_TOKEN }}"
dirtyLabel: "status:has-conflicts" dirtyLabel: "status:has-conflicts"
removeOnDirtyLabel: "status:ready-for-review" removeOnDirtyLabel: "status:ready-for-review"
continueOnMissingPermissions: true continueOnMissingPermissions: true