From b1a1b2aa8b93945745ff0e0cabf63389ed9fcbe2 Mon Sep 17 00:00:00 2001 From: crazy hugsy Date: Sun, 16 Apr 2023 09:14:09 -0700 Subject: [PATCH] [CI] Make coverage generate pull request comment instead of blocking validation (#938) * [ci] moved coverage to dedicated file * squashed test commits --- .github/workflows/coverage.yml | 50 +++++++++++++++++++++++++++++++++ .github/workflows/run-tests.yml | 12 -------- 2 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/coverage.yml diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 000000000..a5933c6cc --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,50 @@ +name: CI Coverage + +on: [pull_request] + +jobs: + coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Run test coverage + id: get_coverage + env: + ALLOWED_MARGIN: 0.01 + MIN_COVERAGE: 70 + run: | + sudo apt-get update + sudo apt-get install -y gdb-multiarch python3-dev python3-pip python3-wheel python3-setuptools git cmake gcc g++ pkg-config libglib2.0-dev gdbserver qemu-user + sudo python3 -m pip install --upgrade pip + echo PY_VER=`gdb -q -nx -ex "pi print('.'.join(map(str, sys.version_info[:2])))" -ex quit` >> $GITHUB_ENV + echo GEF_CI_NB_CPU=`grep -c ^processor /proc/cpuinfo` >> $GITHUB_ENV + echo GEF_CI_ARCH=`uname --processor` >> $GITHUB_ENV + python${{ env.PY_VER }} -m pip install --user --upgrade -r tests/requirements.txt + current_score=$(curl --silent https://hugsy.github.io/gef/coverage/gef_py.html | grep pc_cov | sed 's?.*\([^%]*\)%?\1?g') + bash scripts/generate-coverage-docs.sh + new_score=$(cat docs/coverage/gef_py.html | grep pc_cov | sed 's?.*\([^%]*\)%?\1?g') + diff_score=$(python -c "print(${new_score} - ${current_score})") + commit=$(git rev-parse HEAD) + echo "commit=${commit}" >> $GITHUB_OUTPUT + echo "new_coverage_score=${new_score}" >> $GITHUB_OUTPUT + echo "current_coverage_score=${current_score}" >> $GITHUB_OUTPUT + echo "diff_score=${diff_score}" >> $GITHUB_OUTPUT + + - uses: actions/github-script@v6 + env: + COMMIT: ${{ steps.get_coverage.outputs.commit }} + SCORE_OLD: ${{ steps.get_coverage.outputs.current_coverage_score }} + SCORE_NEW: ${{ steps.get_coverage.outputs.new_coverage_score }} + SCORE_DIFF: ${{ steps.get_coverage.outputs.diff_score }} + with: + script: | + const comment = `## 🤖 Coverage Update + + * Commit: ${process.env.COMMIT} + * Current Coverage: ${process.env.SCORE_OLD}% + * New Coverage: ${process.env.SCORE_NEW}% + * Diff: ${process.env.SCORE_DIFF} + `; + const { owner, repo, number } = context.issue; + await github.rest.issues.createComment({ owner, repo, issue_number: number, body: comment }); diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 3623db1f8..19cacfa43 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -74,15 +74,3 @@ jobs: run: | python${{ env.PY_VER }} -m pylint --rcfile=$(pwd)/.pylintrc gef.py tests/*/*.py - - name: Run test coverage - if: matrix.os == 'ubuntu-22.04' - env: - ALLOWED_MARGIN: 0.01 - MIN_COVERAGE: 70 - run: | - current_score=$(curl --silent https://hugsy.github.io/gef/coverage/gef_py.html | grep pc_cov | sed 's?.*\([^%]*\)%?\1?g') - bash scripts/generate-coverage-docs.sh - new_score=$(cat docs/coverage/gef_py.html | grep pc_cov | sed 's?.*\([^%]*\)%?\1?g') - echo "New coverage score: ${new_score}% (current ${current_score}%)" - python${{ env.PY_VER }} -c "( ${new_score} < ${{ env.MIN_COVERAGE}} ) and exit(1)" - python${{ env.PY_VER }} -c "(( abs( ${current_score}-${new_score}) / ${current_score} ) >= ${{ env.ALLOWED_MARGIN}}) and exit(2)"