-
Notifications
You must be signed in to change notification settings - Fork 12
Migrate PR review workflow to use extensions action #347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
cd2910d
de57c07
72c54e0
4096314
07e27d5
5fb5263
171af7c
6939dfa
e92ad81
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| --- | ||
| name: PR Review Evaluation | ||
|
|
||
| # This workflow evaluates how well PR review comments were addressed. | ||
| # It runs when a PR is closed to assess review effectiveness. | ||
| # | ||
| # Security note: pull_request_target is safe here because: | ||
| # 1. Only triggers on PR close (not on code changes) | ||
| # 2. Does not checkout PR code - only downloads artifacts from trusted workflow runs | ||
| # 3. Runs evaluation scripts from the extensions repo, not from the PR | ||
|
|
||
| on: | ||
| pull_request_target: | ||
| types: [closed] | ||
|
|
||
| permissions: | ||
| contents: read | ||
| pull-requests: read | ||
|
|
||
| jobs: | ||
| evaluate: | ||
| runs-on: ubuntu-24.04 | ||
| env: | ||
| PR_NUMBER: ${{ github.event.pull_request.number }} | ||
| REPO_NAME: ${{ github.repository }} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Suggestion - Unused Variable: If you want to evaluate all closed PRs regardless of merge status, this is fine and you can ignore this comment. But if evaluation is only meaningful for merged PRs, add a condition. |
||
| PR_MERGED: ${{ github.event.pull_request.merged }} | ||
|
|
||
| steps: | ||
| - name: Download review trace artifact | ||
| id: download-trace | ||
| uses: dawidd6/action-download-artifact@v6 | ||
| continue-on-error: true | ||
| with: | ||
| workflow: pr-review-by-openhands.yml | ||
| name: pr-review-trace-${{ github.event.pull_request.number }} | ||
| path: trace-info | ||
| search_artifacts: true | ||
| if_no_artifact_found: warn | ||
|
|
||
| - name: Check if trace file exists | ||
| id: check-trace | ||
| run: | | ||
| if [ -f "trace-info/laminar_trace_info.json" ]; then | ||
| echo "trace_exists=true" >> $GITHUB_OUTPUT | ||
| echo "Found trace file for PR #$PR_NUMBER" | ||
| else | ||
| echo "trace_exists=false" >> $GITHUB_OUTPUT | ||
| echo "No trace file found for PR #$PR_NUMBER - skipping evaluation" | ||
| fi | ||
| # Always checkout main branch for security - cannot test script changes in PRs | ||
| - name: Checkout extensions repository | ||
| if: steps.check-trace.outputs.trace_exists == 'true' | ||
| uses: actions/checkout@v5 | ||
| with: | ||
| repository: OpenHands/extensions | ||
neubig marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| path: extensions | ||
|
|
||
| - name: Set up Python | ||
| if: steps.check-trace.outputs.trace_exists == 'true' | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: '3.12' | ||
|
|
||
| - name: Install dependencies | ||
| if: steps.check-trace.outputs.trace_exists == 'true' | ||
neubig marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| run: pip install lmnr | ||
|
|
||
| - name: Run evaluation | ||
| if: steps.check-trace.outputs.trace_exists == 'true' | ||
| env: | ||
| # Script expects LMNR_PROJECT_API_KEY; org secret is named LMNR_SKILLS_API_KEY | ||
| LMNR_PROJECT_API_KEY: ${{ secrets.LMNR_SKILLS_API_KEY }} | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| run: | | ||
| python extensions/plugins/pr-review/scripts/evaluate_review.py \ | ||
neubig marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| --trace-file trace-info/laminar_trace_info.json | ||
| - name: Upload evaluation logs | ||
| uses: actions/upload-artifact@v5 | ||
| if: always() && steps.check-trace.outputs.trace_exists == 'true' | ||
| with: | ||
| name: pr-review-evaluation-${{ github.event.pull_request.number }} | ||
| path: '*.log' | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Suggestion - Implicit Contract: The Consider either:
|
||
| retention-days: 30 | ||