| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- 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.`
- });
- }
|