diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 11a2210f0..a4bc2eb2f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,6 +1,10 @@ name: CI Coverage for PR on: + pull_request_target: + types: + - opened + - synchronize pull_request: types: - opened @@ -32,71 +36,27 @@ jobs: 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=${{ github.event.pull_request.head.sha }} - include_tests=$((git diff ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} --compact-summary | egrep --count '^ tests/') || echo 0) - include_docs=$((git diff ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} --compact-summary | egrep --count '^ docs/') || echo 0) - 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 - echo "include_tests=${include_tests}" >> $GITHUB_OUTPUT - echo "include_docs=${include_docs}" >> $GITHUB_OUTPUT - WORDS=("pycharm" "debugpy" "ptvsd" "breakpoint" "pdb") - WORDS_FOUND="" - for word in "${WORDS[@]}"; do - if git diff ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} -- "gef.py" | grep "^+" | grep -q "$word"; then - WORDS_FOUND+="'$word' " - fi - done - echo "words_found=${WORDS_FOUND}" >> $GITHUB_OUTPUT + score_diff=$(python -c "print(f'{${new_score} - ${current_score}:.04f}')") + echo "new_score=${new_score}" >> $GITHUB_OUTPUT + echo "current_score=${current_score}" >> $GITHUB_OUTPUT + echo "score_diff=${score_diff}" >> $GITHUB_OUTPUT - name: Post comment uses: actions/github-script@v7 - 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 }} - WORDS_FOUND: ${{ steps.get_coverage.outputs.words_found }} with: script: | - const diff_score = ${{ steps.get_coverage.outputs.diff_score }}; - const tests_changes = ${{ steps.get_coverage.outputs.include_tests }}; - const docs_changes = ${{ steps.get_coverage.outputs.include_docs }}; - const forbiddenWordsString = process.env.WORDS_FOUND || ''; - const forbidden_words = forbiddenWordsString.split(" ").filter(word => word.trim() !== ''); - const comment = `## 🤖 Coverage update for ${process.env.COMMIT} - - * Diff Commit: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} - * Current vs New Coverage Score: ${process.env.SCORE_OLD}% / ${process.env.SCORE_NEW}% - * Difference: ${process.env.SCORE_DIFF} ${(diff_score >= 0) ? "🟢" : "🔴"} - - To this point, this PR: - * ${(tests_changes > 0) ? "includes" : "**does not** include" } changes to tests - * ${(docs_changes > 0) ? "includes" : "**does not** include" } changes to documentation - * ${(forbidden_words.length === 0 || forbidden_words[0] === '') ? "**does not** include forbidden words" : "includes the forbidden words:" + forbidden_words.join(", ")} + const old_score = ${{ steps.get_coverage.outputs.current_score }}; + const new_score = ${{ steps.get_coverage.outputs.new_score }}; + const score_diff = ${{ steps.get_coverage.outputs.score_diff }}; + const comment = `## 🤖 Coverage update for ${{ github.event.pull_request.head.sha }} ${(score_diff >= 0) ? "🟢" : "🔴"} + + | | Old | New | + |--------|-----|-----| + | Commit | ${{ github.event.pull_request.base.sha }} | ${{ github.event.pull_request.head.sha }} | + | Score | ${old_score}% | ${new_score}% (${score_diff}) | `; try { const { owner, repo, number } = context.issue; await github.rest.issues.createComment({ owner, repo, issue_number: number, body: comment }); - - if(docs_changes > 0) { - await github.rest.issues.addLabels({ - owner: owner, - repo: repo, - issue_number: number, - labels: ['documentation'] - }); - } - - if(tests_changes > 0) { - await github.rest.issues.addLabels({ - owner: owner, - repo: repo, - issue_number: number, - labels: ['automation/ci'] - }); - } } catch (err) { console.log(err); } diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index fac11a895..77ffc457f 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -11,9 +11,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v5.0.0 with: - python-version: "3.11" + python-version: "3.8" - uses: pre-commit/action@v3.0.0 docs_link_check: @@ -23,9 +23,9 @@ jobs: contents: read steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check links - uses: lycheeverse/lychee-action@v1.4.1 + uses: lycheeverse/lychee-action@v1.9.1 env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: