mirror of
https://github.com/All-Hands-AI/OpenHands.git
synced 2026-01-09 14:57:59 -05:00
Allows using the github-resolver without a PAT (#5278)
Co-authored-by: Rohit Malhotra <rohitvinodmalhotra@gmail.com>
This commit is contained in:
committed by
GitHub
parent
2b06e4e5d0
commit
c757d7c613
48
.github/workflows/openhands-resolver.yml
vendored
48
.github/workflows/openhands-resolver.yml
vendored
@@ -16,6 +16,10 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
default: "main"
|
default: "main"
|
||||||
description: "Target branch to pull and create PR against"
|
description: "Target branch to pull and create PR against"
|
||||||
|
LLM_MODEL:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: "anthropic/claude-3-5-sonnet-20241022"
|
||||||
base_container_image:
|
base_container_image:
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
@@ -23,15 +27,15 @@ on:
|
|||||||
description: "Custom sandbox env"
|
description: "Custom sandbox env"
|
||||||
secrets:
|
secrets:
|
||||||
LLM_MODEL:
|
LLM_MODEL:
|
||||||
required: true
|
required: false
|
||||||
LLM_API_KEY:
|
LLM_API_KEY:
|
||||||
required: true
|
required: true
|
||||||
LLM_BASE_URL:
|
LLM_BASE_URL:
|
||||||
required: false
|
required: false
|
||||||
PAT_TOKEN:
|
PAT_TOKEN:
|
||||||
required: true
|
required: false
|
||||||
PAT_USERNAME:
|
PAT_USERNAME:
|
||||||
required: true
|
required: false
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
types: [labeled]
|
types: [labeled]
|
||||||
@@ -106,13 +110,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Check required environment variables
|
- name: Check required environment variables
|
||||||
env:
|
env:
|
||||||
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
LLM_MODEL: ${{ secrets.LLM_MODEL || inputs.LLM_MODEL }}
|
||||||
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
||||||
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
||||||
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
|
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||||
PAT_USERNAME: ${{ secrets.PAT_USERNAME }}
|
PAT_USERNAME: ${{ secrets.PAT_USERNAME }}
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
run: |
|
run: |
|
||||||
required_vars=("LLM_MODEL" "LLM_API_KEY" "PAT_TOKEN" "PAT_USERNAME")
|
required_vars=("LLM_MODEL" "LLM_API_KEY")
|
||||||
for var in "${required_vars[@]}"; do
|
for var in "${required_vars[@]}"; do
|
||||||
if [ -z "${!var}" ]; then
|
if [ -z "${!var}" ]; then
|
||||||
echo "Error: Required environment variable $var is not set."
|
echo "Error: Required environment variable $var is not set."
|
||||||
@@ -120,6 +125,19 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Check optional variables and warn about fallbacks
|
||||||
|
if [ -z "$PAT_TOKEN" ]; then
|
||||||
|
echo "Warning: PAT_TOKEN is not set, falling back to GITHUB_TOKEN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$LLM_BASE_URL" ]; then
|
||||||
|
echo "Warning: LLM_BASE_URL is not set, will use default API endpoint"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PAT_USERNAME" ]; then
|
||||||
|
echo "Warning: PAT_USERNAME is not set, will use openhands-agent"
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Set environment variables
|
- name: Set environment variables
|
||||||
run: |
|
run: |
|
||||||
if [ -n "${{ github.event.review.body }}" ]; then
|
if [ -n "${{ github.event.review.body }}" ]; then
|
||||||
@@ -143,7 +161,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "MAX_ITERATIONS=${{ inputs.max_iterations || 50 }}" >> $GITHUB_ENV
|
echo "MAX_ITERATIONS=${{ inputs.max_iterations || 50 }}" >> $GITHUB_ENV
|
||||||
echo "SANDBOX_ENV_GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
|
echo "SANDBOX_ENV_GITHUB_TOKEN=${{ secrets.PAT_TOKEN || github.token }}" >> $GITHUB_ENV
|
||||||
echo "SANDBOX_ENV_BASE_CONTAINER_IMAGE=${{ inputs.base_container_image }}" >> $GITHUB_ENV
|
echo "SANDBOX_ENV_BASE_CONTAINER_IMAGE=${{ inputs.base_container_image }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Set branch variables
|
# Set branch variables
|
||||||
@@ -152,7 +170,7 @@ jobs:
|
|||||||
- name: Comment on issue with start message
|
- name: Comment on issue with start message
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
github-token: ${{ secrets.PAT_TOKEN || github.token }}
|
||||||
script: |
|
script: |
|
||||||
const issueType = process.env.ISSUE_TYPE;
|
const issueType = process.env.ISSUE_TYPE;
|
||||||
github.rest.issues.createComment({
|
github.rest.issues.createComment({
|
||||||
@@ -177,9 +195,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Attempt to resolve issue
|
- name: Attempt to resolve issue
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN || github.token }}
|
||||||
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME }}
|
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME || 'openhands-agent' }}
|
||||||
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
LLM_MODEL: ${{ secrets.LLM_MODEL || inputs.LLM_MODEL }}
|
||||||
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
||||||
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
||||||
PYTHONPATH: ""
|
PYTHONPATH: ""
|
||||||
@@ -189,7 +207,7 @@ jobs:
|
|||||||
--issue-number ${{ env.ISSUE_NUMBER }} \
|
--issue-number ${{ env.ISSUE_NUMBER }} \
|
||||||
--issue-type ${{ env.ISSUE_TYPE }} \
|
--issue-type ${{ env.ISSUE_TYPE }} \
|
||||||
--max-iterations ${{ env.MAX_ITERATIONS }} \
|
--max-iterations ${{ env.MAX_ITERATIONS }} \
|
||||||
--comment-id ${{ env.COMMENT_ID }} \
|
--comment-id ${{ env.COMMENT_ID }}
|
||||||
|
|
||||||
- name: Check resolution result
|
- name: Check resolution result
|
||||||
id: check_result
|
id: check_result
|
||||||
@@ -211,9 +229,9 @@ jobs:
|
|||||||
- name: Create draft PR or push branch
|
- name: Create draft PR or push branch
|
||||||
if: always() # Create PR or branch even if the previous steps fail
|
if: always() # Create PR or branch even if the previous steps fail
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN || github.token }}
|
||||||
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME }}
|
GITHUB_USERNAME: ${{ secrets.PAT_USERNAME || 'openhands-agent' }}
|
||||||
LLM_MODEL: ${{ secrets.LLM_MODEL }}
|
LLM_MODEL: ${{ secrets.LLM_MODEL || inputs.LLM_MODEL }}
|
||||||
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
|
||||||
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
|
||||||
PYTHONPATH: ""
|
PYTHONPATH: ""
|
||||||
@@ -235,7 +253,7 @@ jobs:
|
|||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
if: always() # Comment on issue even if the previous steps fail
|
if: always() # Comment on issue even if the previous steps fail
|
||||||
with:
|
with:
|
||||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
github-token: ${{ secrets.PAT_TOKEN || github.token }}
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const issueNumber = ${{ env.ISSUE_NUMBER }};
|
const issueNumber = ${{ env.ISSUE_NUMBER }};
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ Follow these steps to use this workflow in your own repository:
|
|||||||
|
|
||||||
5. Set up [GitHub secrets](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions):
|
5. Set up [GitHub secrets](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions):
|
||||||
- Required:
|
- Required:
|
||||||
|
- `LLM_API_KEY`: Your LLM API key
|
||||||
|
- Optional:
|
||||||
- `PAT_USERNAME`: GitHub username for the personal access token
|
- `PAT_USERNAME`: GitHub username for the personal access token
|
||||||
- `PAT_TOKEN`: The personal access token
|
- `PAT_TOKEN`: The personal access token
|
||||||
- `LLM_MODEL`: LLM model to use (e.g., "anthropic/claude-3-5-sonnet-20241022")
|
- `LLM_MODEL`: LLM model to use (defaults to "anthropic/claude-3-5-sonnet-20241022")
|
||||||
- `LLM_API_KEY`: Your LLM API key
|
|
||||||
- Optional:
|
|
||||||
- `LLM_BASE_URL`: Base URL for LLM API (only if using a proxy)
|
- `LLM_BASE_URL`: Base URL for LLM API (only if using a proxy)
|
||||||
|
|
||||||
Note: You can set these secrets at the organization level to use across multiple repositories.
|
Note: You can set these secrets at the organization level to use across multiple repositories.
|
||||||
|
|||||||
Reference in New Issue
Block a user