-
Notifications
You must be signed in to change notification settings - Fork 43
97 lines (90 loc) · 3.27 KB
/
auto-fix-issues.yml
File metadata and controls
97 lines (90 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
name: Auto Fix Issues
on:
schedule:
- cron: '*/10 * * * *'
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number (empty = pick oldest)'
required: false
permissions:
contents: write
pull-requests: write
issues: write
jobs:
check:
runs-on: ubuntu-latest
outputs:
issue: ${{ steps.pick.outputs.issue }}
steps:
- id: pick
env:
GH_TOKEN: ${{ secrets.GH_PAT }}
ISSUE_NUMBER: ${{ inputs.issue_number || '' }}
run: |
REPO="${{ github.repository }}"
if [ -n "$ISSUE_NUMBER" ]; then
ISSUE=$(gh issue view "$ISSUE_NUMBER" --repo "$REPO" --json number,title,body -q '.')
else
ISSUE=$(gh issue list --repo "$REPO" --label auto-fix --state open --limit 1 --json number,title,body -q '.[0] // empty')
fi
if [ -z "$ISSUE" ]; then
echo "No auto-fix issues"
echo "issue=" >> "$GITHUB_OUTPUT"
else
NUM=$(echo "$ISSUE" | jq -r '.number')
gh issue edit "$NUM" --repo "$REPO" --add-label auto-fix-in-progress --remove-label auto-fix
echo "issue=$(echo "$ISSUE" | jq -c .)" >> "$GITHUB_OUTPUT"
fi
fix:
needs: check
if: needs.check.outputs.issue != ''
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout databend source
uses: actions/checkout@v4
with:
repository: databendlabs/databend
path: _databend
sparse-checkout: src
fetch-depth: 1
- name: Install evot
env:
GH_TOKEN: ${{ secrets.GH_PAT }}
run: |
for TAG in $(gh release list --repo evotai/evot --limit 10 --json tagName --jq '.[].tagName'); do
if gh release download "$TAG" --repo evotai/evot --pattern "evot-*-x86_64-unknown-linux-gnu.tar.gz" 2>/dev/null; then
echo "Downloaded evot from $TAG"
break
fi
done
tar -xzf evot-*.tar.gz && chmod +x bin/evot
mkdir -p ~/.evotai/lib
cp lib/*.node ~/.evotai/lib/
echo "$PWD/bin" >> "$GITHUB_PATH"
- name: Write evot.env
run: |
mkdir -p ~/.evotai
cat > ~/.evotai/evot.env << ENVEOF
EVOT_LLM_PROVIDER=anthropic
EVOT_LLM_ANTHROPIC_BASE_URL=${{ secrets.EVOT_LLM_ANTHROPIC_BASE_URL }}
EVOT_LLM_ANTHROPIC_API_KEY=${{ secrets.EVOT_LLM_ANTHROPIC_API_KEY }}
EVOT_LLM_ANTHROPIC_MODEL=${{ secrets.EVOT_LLM_ANTHROPIC_MODEL }}
EVOT_LLM_OPENAI_BASE_URL=${{ secrets.EVOT_LLM_OPENAI_BASE_URL }}
EVOT_LLM_OPENAI_API_KEY=${{ secrets.EVOT_LLM_OPENAI_API_KEY }}
EVOT_LLM_OPENAI_MODEL=${{ secrets.EVOT_LLM_OPENAI_MODEL }}
ENVEOF
sed -i 's/^[[:space:]]*//' ~/.evotai/evot.env
- name: Run
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
bash .github/scripts/auto-fix.sh
env:
REPO: ${{ github.repository }}
ISSUE_JSON: ${{ needs.check.outputs.issue }}
GENERATOR_MODEL: ''
REVIEWER_MODEL: gpt-5.4
EVOT_ID: auto-fix-ci
GH_TOKEN: ${{ secrets.GH_PAT }}