# 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"