Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/pr-evaluation-run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,38 @@ jobs:
BASE_SHA: ${{ inputs.base_sha }}
PR_CHECKOUT_REF: ${{ format('refs/pull/{0}/head', inputs.pr_number) }}
steps:
- name: Fetch PR head SHA
id: prmeta
uses: actions/github-script@v7
with:
script: |
const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: Number('${{ env.PR_NUMBER }}')
});
core.setOutput('head_sha', pr.data.head.sha);

- name: Create in-progress PR check
id: checkrun
uses: actions/github-script@v7
with:
script: |
const result = await github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: 'Router Submission Evaluation (/evaluate)',
head_sha: '${{ steps.prmeta.outputs.head_sha }}',
status: 'in_progress',
started_at: new Date().toISOString(),
details_url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`,
output: {
title: 'Evaluation started',
summary: 'Router evaluation is running.'
}
});
core.setOutput('id', String(result.data.id));

- name: Checkout base repository (for evaluation scripts)
uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -223,3 +255,38 @@ jobs:
body: comment
});
console.log('Successfully posted evaluation results as PR comment');

- name: Complete PR check
if: ${{ always() && steps.checkrun.outputs.id != '' }}
uses: actions/github-script@v7
env:
DETECTED_ROUTER: ${{ steps.detect.outputs.router }}
DETECT_OUTCOME: ${{ steps.detect.outcome }}
EVALUATE_OUTCOME: ${{ steps.evaluate.outcome }}
with:
script: |
let conclusion = 'success';
let title = 'Evaluation completed';
let summary = 'Router evaluation finished successfully.';

if (!process.env.DETECTED_ROUTER) {
conclusion = process.env.DETECT_OUTCOME === 'success' ? 'neutral' : 'failure';
title = process.env.DETECT_OUTCOME === 'success' ? 'No router file detected' : 'Evaluation setup failed';
summary = process.env.DETECT_OUTCOME === 'success'
? 'No changed prediction file was detected for this PR, so evaluation was skipped.'
: 'Failed while detecting prediction files for this PR.';
} else if (process.env.EVALUATE_OUTCOME !== 'success') {
conclusion = 'failure';
title = 'Evaluation failed';
summary = 'The evaluation step failed. Check this workflow run logs for details.';
}

await github.rest.checks.update({
owner: context.repo.owner,
repo: context.repo.repo,
check_run_id: Number('${{ steps.checkrun.outputs.id }}'),
status: 'completed',
conclusion,
completed_at: new Date().toISOString(),
output: { title, summary }
});