mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
109 lines
4.2 KiB
YAML
109 lines
4.2 KiB
YAML
name: Auto-Fix Tagged Issues with OpenHands
|
|
|
|
on:
|
|
issues:
|
|
types: [labeled]
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
jobs:
|
|
auto-fix:
|
|
if: github.event.label.name == 'fix-me'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
- name: Comment on issue with start message
|
|
uses: actions/github-script@v6
|
|
with:
|
|
github-token: ${{secrets.GITHUB_TOKEN}}
|
|
script: |
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: `OpenHands started fixing the issue! You can monitor the progress [here](https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}).`
|
|
});
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install openhands-resolver
|
|
|
|
- name: Attempt to resolve issue
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
|
run: |
|
|
python -m openhands_resolver.resolve_issues \
|
|
--repo ${{ github.repository }} \
|
|
--issue-numbers ${{ github.event.issue.number }}
|
|
|
|
- name: Check resolution result
|
|
id: check_result
|
|
run: |
|
|
if grep -q '"success":true' output/output.jsonl; then
|
|
echo "RESOLUTION_SUCCESS=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "RESOLUTION_SUCCESS=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Create draft PR or push branch
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
|
|
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME }}
|
|
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
|
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
|
run: |
|
|
if [ "${{ steps.check_result.outputs.RESOLUTION_SUCCESS }}" == "true" ]; then
|
|
python -m openhands_resolver.send_pull_request \
|
|
--issue-number ${{ github.event.issue.number }} \
|
|
--pr-type draft | tee pr_result.txt && \
|
|
grep "draft created" pr_result.txt | sed 's/.*\///g' > pr_number.txt
|
|
else
|
|
python -m openhands_resolver.send_pull_request \
|
|
--issue-number ${{ github.event.issue.number }} \
|
|
--pr-type branch \
|
|
--send-on-failure | tee branch_result.txt && \
|
|
grep "Branch" branch_result.txt | sed 's/.*\///g; s/.expand=1//g' > branch_name.txt
|
|
fi
|
|
|
|
- name: Comment on issue
|
|
uses: actions/github-script@v6
|
|
with:
|
|
github-token: ${{secrets.GITHUB_TOKEN}}
|
|
script: |
|
|
const fs = require('fs');
|
|
const issueNumber = context.issue.number;
|
|
const success = ${{ steps.check_result.outputs.RESOLUTION_SUCCESS }};
|
|
|
|
if (success) {
|
|
const prNumber = fs.readFileSync('pr_number.txt', 'utf8').trim();
|
|
github.rest.issues.createComment({
|
|
issue_number: issueNumber,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: `A potential fix has been generated and a draft PR #${prNumber} has been created. Please review the changes.`
|
|
});
|
|
} else {
|
|
const branchName = fs.readFileSync('branch_name.txt', 'utf8').trim();
|
|
github.rest.issues.createComment({
|
|
issue_number: issueNumber,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: `An attempt was made to automatically fix this issue, but it was unsuccessful. A branch named '${branchName}' has been created with the attempted changes. You can view the branch [here](https://github.com/${context.repo.owner}/${context.repo.repo}/tree/${branchName}). Manual intervention may be required.`
|
|
});
|
|
}
|