| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # Workflow that uses OpenHands to review a pull request. PR must be labeled 'review-this'
- name: Use OpenHands to Review Pull Request
- on:
- pull_request:
- types: [synchronize, labeled]
- permissions:
- contents: write
- pull-requests: write
- jobs:
- dogfood:
- if: contains(github.event.pull_request.labels.*.name, 'review-this')
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Set up Docker Buildx
- id: buildx
- uses: docker/setup-buildx-action@v3
- - name: Set up Python
- uses: actions/setup-python@v5
- with:
- python-version: '3.12'
- - name: install git, github cli
- run: |
- sudo apt-get install -y git gh
- git config --global --add safe.directory $PWD
- - name: Checkout Repository
- uses: actions/checkout@v4
- with:
- ref: ${{ github.event.pull_request.base.ref }} # check out the target branch
- - name: Download Diff
- run: |
- curl -O "${{ github.event.pull_request.diff_url }}" -L
- - name: Write Task File
- run: |
- echo "Your coworker wants to apply a pull request to this project." > task.txt
- echo "Read and review ${{ github.event.pull_request.number }}.diff file. Create a review-${{ github.event.pull_request.number }}.txt and write your concise comments and suggestions there." >> task.txt
- echo "Do not ask me for confirmation at any point." >> task.txt
- echo "" >> task.txt
- echo "Title" >> task.txt
- echo "${{ github.event.pull_request.title }}" >> task.txt
- echo "" >> task.txt
- echo "Description" >> task.txt
- echo "${{ github.event.pull_request.body }}" >> task.txt
- echo "" >> task.txt
- echo "Diff file is: ${{ github.event.pull_request.number }}.diff" >> task.txt
- - name: Set up environment
- run: |
- curl -sSL https://install.python-poetry.org | python3 -
- export PATH="/github/home/.local/bin:$PATH"
- poetry install --without evaluation,llama-index
- poetry run playwright install --with-deps chromium
- - name: Run OpenHands
- env:
- LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
- LLM_MODEL: ${{ vars.LLM_MODEL }}
- run: |
- # Append path to launch poetry
- export PATH="/github/home/.local/bin:$PATH"
- # Append path to correctly import package, note: must set pwd at first
- export PYTHONPATH=$(pwd):$PYTHONPATH
- export WORKSPACE_MOUNT_PATH=$GITHUB_WORKSPACE
- export WORKSPACE_BASE=$GITHUB_WORKSPACE
- echo -e "/exit\n" | poetry run python openhands/core/main.py -i 50 -f task.txt
- rm task.txt
- - name: Check if review file is non-empty
- id: check_file
- run: |
- ls -la
- if [[ -s review-${{ github.event.pull_request.number }}.txt ]]; then
- echo "non_empty=true" >> $GITHUB_OUTPUT
- fi
- shell: bash
- - name: Create PR review if file is non-empty
- env:
- GH_TOKEN: ${{ github.token }}
- if: steps.check_file.outputs.non_empty == 'true'
- run: |
- gh pr review ${{ github.event.pull_request.number }} --comment --body-file "review-${{ github.event.pull_request.number }}.txt"
|