Testing-Add You will never wake up if you do not fall a sleep at the end of README #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Auto-Fix Tagged Issues with OpenHands | |
on: | |
workflow_call: | |
inputs: | |
issue_number: | |
required: true | |
type: number | |
secrets: | |
LLM_MODELS: | |
required: true | |
LLM_API_KEY: | |
required: true | |
LLM_BASE_URL: | |
required: false | |
PAT_TOKEN: | |
required: true | |
PAT_USERNAME: | |
required: true | |
issues: | |
types: [labeled] | |
permissions: | |
contents: write | |
pull-requests: write | |
issues: write | |
jobs: | |
auto-fix: | |
if: github.event_name == 'workflow_call' || github.event.label.name == 'commit-url-test' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Check required environment variables | |
env: | |
LLM_MODELS: ${{ secrets.LLM_MODELS }} | |
LLM_API_KEY: ${{ secrets.LLM_API_KEY }} | |
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }} | |
PAT_TOKEN: ${{ secrets.PAT_TOKEN }} | |
PAT_USERNAME: ${{ secrets.PAT_USERNAME }} | |
run: | | |
required_vars=("LLM_MODELS" "LLM_API_KEY" "PAT_TOKEN" "PAT_USERNAME") | |
for var in "${required_vars[@]}"; do | |
if [ -z "${!var}" ]; then | |
echo "Error: Required environment variable $var is not set." | |
exit 1 | |
fi | |
done | |
- name: Set issue number | |
run: echo "ISSUE_NUMBER=${{ github.event.issue.number || inputs.issue_number }}" >> $GITHUB_ENV | |
- name: Comment on issue with start message | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: ${{ env.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 git+https://github.com/JiseungHong/openhands-resolver.git | |
pip install firebase-admin | |
- name: Attempt to resolve issues and Send the Resolver Output to firebase. | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
LLM_MODELS: ${{ secrets.LLM_MODELS }} | |
LLM_API_KEY: ${{ secrets.LLM_API_KEY }} | |
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }} | |
PYTHONPATH: "" | |
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CONFIG }} | |
run: | | |
cd /tmp && python -m openhands_resolver.resolve_issues \ | |
--repo ${{ github.repository }} \ | |
--issue-numbers ${{ env.ISSUE_NUMBER }} | |
- name: Retrieve Last Commit Hash and Store in Firebase | |
env: | |
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CONFIG }} | |
run: | | |
LAST_COMMIT_HASH=$(git log -1 --pretty=format:'%H') | |
echo "Last Commit Hash: $LAST_COMMIT_HASH" | |
echo "::set-output name=last_commit_hash::$LAST_COMMIT_HASH" | |
COMMIT_URL="https://github.com/${{ github.repository }}/commit/$LAST_COMMIT_HASH" | |
echo "Commit URL: $COMMIT_URL" | |
python3 - <<EOF | |
import firebase_admin | |
from firebase_admin import credentials, db | |
# Initialize Firebase | |
cred = credentials.Certificate("${{ env.FIREBASE_CONFIG }}") | |
firebase_admin.initialize_app(cred, { | |
'databaseURL': 'https://your-database-name.firebaseio.com/' | |
}) | |
# Store commit URL | |
ref = db.reference('commit_urls') | |
ref.push({ | |
'commit_url': "$COMMIT_URL" | |
}) | |
EOF | |
- name: Check resolution results | |
id: check_results | |
run: | | |
if cd /tmp && grep -q '"success":true' output/output1.jsonl; then | |
echo "MODEL1_RESOLUTION_SUCCESS=true" >> $GITHUB_ENV | |
else | |
echo "MODEL1_RESOLUTION_SUCCESS=false" >> $GITHUB_ENV | |
fi | |
if cd /tmp && grep -q '"success":true' output/output2.jsonl; then | |
echo "MODEL2_RESOLUTION_SUCCESS=true" >> $GITHUB_ENV | |
else | |
echo "MODEL2_RESOLUTION_SUCCESS=false" >> $GITHUB_ENV | |
fi | |
- name: Post webpage link to GitHub issue comment | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const issueNumber = ${{ env.ISSUE_NUMBER }}; | |
const repo = context.repo.repo | |
const owner = context.repo.owner | |
const firebaseWebpageURL = `https://pr-arena.web.app/${owner}-${repo}-${issueNumber}`; | |
github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issueNumber, | |
body: `⚔️PR-Arena is now open⚔️! You can view the proposed fixes and make a decision at [this link](${firebaseWebpageURL}).` | |
}); | |
- name: Wait for user's decision and save it to the GitHub environment | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
LLM_MODELS: ${{ secrets.LLM_MODELS }} | |
LLM_API_KEY: ${{ secrets.LLM_API_KEY }} | |
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }} | |
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME }} | |
PYTHONPATH: "" | |
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CONFIG }} | |
run: | | |
cd /tmp && python -m openhands_resolver.listen_for_decision \ | |
--repo ${{ github.repository }} \ | |
--issue-number ${{ env.ISSUE_NUMBER }} | |
- name: Create Pull Request for the selected branch | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} | |
LLM_MODELS: ${{ secrets.LLM_MODELS }} | |
LLM_API_KEY: ${{ secrets.LLM_API_KEY }} | |
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }} | |
PYTHONPATH: "" | |
SELECTED_MODEL: ${{ env.SELECTED }} | |
run: | | |
cd /tmp && python -m openhands_resolver.send_pull_request \ | |
--issue-number ${{ env.ISSUE_NUMBER }} \ | |
--model-number $SELECTED_MODEL \ | |
--pr-type draft | tee pr_result${SELECTED_MODEL}.txt && \ | |
grep "draft created" pr_result${SELECTED_MODEL}.txt | sed 's/.*\///g' > pr_number.txt | |
- name: Comment on issue | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const fs = require('fs'); | |
const issueNumber = ${{ env.ISSUE_NUMBER }}; | |
let prNumber = ''; | |
let branchName = ''; | |
try { | |
prNumber = fs.readFileSync('/tmp/pr_number.txt', 'utf8').trim(); | |
} catch (error) { | |
console.error('Error reading file:', error); | |
} | |
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.` | |
}); |