| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- name: Use OpenDevin to Resolve GitHub Issue
- on:
- issues:
- types: [labeled]
- permissions:
- contents: write
- pull-requests: write
- issues: write
- jobs:
- open-devin:
- if: github.event.label.name == 'dogfood-this'
- runs-on: ubuntu-latest
- environment: OpenAI
- steps:
- - name: Checkout Repository
- uses: actions/checkout@v4
- - name: Install poetry
- run: pipx install poetry
- - name: Set up Python
- uses: actions/setup-python@v5
- with:
- python-version: '3.12'
- cache: 'poetry'
-
- - name: Install Dependencies
- run: |
- make build
- - name: Write Task File
- env:
- ISSUE_TITLE: ${{ github.event.issue.title }}
- ISSUE_BODY: ${{ github.event.issue.body }}
- run: |
- echo "TITLE:" > task.txt
- echo "${ISSUE_TITLE}" >> task.txt
- echo "" >> task.txt
- echo "BODY:" >> task.txt
- echo "${ISSUE_BODY}" >> task.txt
- - name: Run OpenDevin
- env:
- ISSUE_TITLE: ${{ github.event.issue.title }}
- ISSUE_BODY: ${{ github.event.issue.body }}
- LLM_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- run: |
- poetry run python ./opendevin/main.py -d "./" -i 50 -f task.txt
- - name: Setup Git, Create Branch, and Commit Changes
- run: |
- # Setup Git configuration
- git config --global user.name 'OpenDevin'
- git config --global user.email 'OpenDevin@users.noreply.github.com'
- # Create a unique branch name with a timestamp
- BRANCH_NAME="fix/${{ github.event.issue.number }}-$(date +%Y%m%d%H%M%S)"
- # Checkout new branch
- git checkout -b $BRANCH_NAME
- # Add all changes to staging, except task.txt
- git add --all -- ':!task.txt'
- # Commit the changes, if any
- git commit -m "OpenDevin: Resolve Issue #${{ github.event.issue.number }}"
- if [ $? -ne 0 ]; then
- echo "No changes to commit."
- exit 0
- fi
- # Push changes
- git push --set-upstream origin $BRANCH_NAME
- - name: Install GitHub CLI
- run: |
- sudo apt-get install gh
- - name: Fetch Default Branch
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- # Fetch the default branch using gh cli
- DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq .defaultBranchRef.name)
- echo "Default branch is $DEFAULT_BRANCH"
- echo "DEFAULT_BRANCH=$DEFAULT_BRANCH" >> $GITHUB_ENV
- - name: Generate PR
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- # Create PR and capture URL
- PR_URL=$(gh pr create \
- --title "OpenDevin: Resolve Issue #2" \
- --body "This PR was generated by OpenDevin to resolve issue #2" \
- --repo "foragerr/OpenDevin" \
- --head "${{ github.head_ref }}" \
- --base "${{ env.DEFAULT_BRANCH }}" \
- | grep -o 'https://github.com/[^ ]*')
-
- # Extract PR number from URL
- PR_NUMBER=$(echo "$PR_URL" | grep -o '[0-9]\+$')
-
- # Set environment vars
- echo "PR_URL=$PR_URL" >> $GITHUB_ENV
- echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV
- - name: Post Comment
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- gh issue comment ${{ github.event.issue.number }} \
- -b "OpenDevin raised [PR #${{ env.PR_NUMBER }}](${{ env.PR_URL }}) to resolve this issue."
|