Lewis John McGibbney created NUTCH-3208:
-------------------------------------------
Summary: GitHub Actions JUnit and Yetus workflows do not reliably
post PR comments
Key: NUTCH-3208
URL: https://issues.apache.org/jira/browse/NUTCH-3208
Project: Nutch
Issue Type: Task
Components: ci/cd
Affects Versions: 1.23
Reporter: Lewis John McGibbney
Assignee: Lewis John McGibbney
Fix For: 1.24
h3. Problem
The JUnit report workflow never posts a comment on the GitHub PR. The Apache
Yetus workflow only comments sometimes (same-repo PRs such as Dependabot). Fork
PRs usually get no Yetus comment.
Intended behavior (NUTCH-3126 and the Yetus workflow) is a report on the PR
thread.
h3. Evidence
* Yetus comment present (same-repo / Dependabot):
https://github.com/apache/nutch/pull/961#issuecomment-5405632841
* Matching junit-report run succeeded with no PR comment:
https://github.com/apache/nutch/actions/runs/32812407266
h3. Causes
*JUnit* (\{{.github/workflows/junit-report.yml}}):
* \{{skip_success_summary: true}} — mikepenz/action-junit-report builds empty
tables when all tests pass, then skips \{{attachComment}}. Green PRs get no
comment.
* Job \{{if: github.event.workflow_run.conclusion == 'success'}} — if tests
fail, parent CI is \{{failure}} and the reporter is skipped even though XML was
uploaded (\{{if: always()}}).
* Path-filtered PRs upload no XML — stay silent (no fallback comment). That is
acceptable.
*Yetus* (\{{.github/workflows/yetus.yml}}):
* Comment is posted from the \{{pull_request}} job with \{{GITHUB_TOKEN}}. Fork
PRs get HTTP 403.
* \{{continue-on-error: true}} hides those failures.
* A repo PAT is not a fork fix: secrets are not available to fork
\{{pull_request}} runs. Do not use \{{pull_request_target}}.
h3. Fix (two GitHub PRs)
# *JUnit:* \{{skip_success_summary: false}}; keep compact totals
(\{{include_passed: false}}); run reporter when parent is success *or* failure
and the event is \{{pull_request}}; sticky \{{updateComment}}; skip publish if
no XML; resolve PR number only for \{{apache/nutch}} (do not trust a fork's
\{{pull_requests[0]}}).
# *Yetus:* generate the markdown report on \{{pull_request}} and upload it;
post/update one sticky comment from a new \{{workflow_run}} companion
(base-repo token, no checkout of PR head). Remove in-workflow peter-evans
comment and \{{continue-on-error}}.
h3. Acceptance
* Green PR that ran tests: sticky JUnit totals comment; later pushes update it.
* Failing tests (parent \{{failure}}): JUnit comment still appears.
* Path-filter / no XML: no JUnit comment.
* Same-repo and fork PRs: one sticky Yetus comment that updates on push.
h3. Out of scope
* \{{pull_request_target}} that checks out or runs PR code
* Commenting from \{{master-build.yml}}
* Path-filter test selection
--
This message was sent by Atlassian Jira
(v8.20.10#820010)