Skip to content

Commit

Permalink
ci: started working on gptme CI bot (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikBjare committed Nov 2, 2023
1 parent eb42f18 commit 9113355
Showing 1 changed file with 125 additions and 0 deletions.
125 changes: 125 additions & 0 deletions .github/workflows/bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: gptme-bot

on:
issue_comment:
types: [created]

env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

jobs:
check-comment:
runs-on: ubuntu-latest

outputs:
gptme_command: ${{ steps.detect_command.outputs.gptme_command }}

steps:
- name: Detect gptme command
id: detect_command
run: |
COMMENT_BODY="${{ github.event.comment.body }}"
# Check if the comment starts with "@gptme"
if [[ $COMMENT_BODY == "@gptme "* ]]; then
# Extract the command
GPTME_COMMAND=${COMMENT_BODY#"@gptme "}
echo "gptme_command=${GPTME_COMMAND}" >> $GITHUB_OUTPUT
fi
- name: Fail if author not on whitelist
if: steps.detect_command.outputs.gptme_command
run: |
WHITELIST=("ErikBjare") # Add your allowed usernames here
COMMENT_AUTHOR="${{ github.event.comment.user.login }}"
if [[ ! " ${WHITELIST[@]} " =~ " ${COMMENT_AUTHOR} " ]]; then
echo "Error: Author ${COMMENT_AUTHOR} is not on the whitelist."
exit 1
else
echo "Author ${COMMENT_AUTHOR} is on the whitelist."
fi
execute-command:
needs: check-comment
if: needs.check-comment.outputs.gptme_command
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Install ctags
run: sudo apt install universal-ctags

- name: Install poetry
run: pipx install poetry

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
cache: 'poetry'

- name: Install dependencies
run: |
make build
poetry install -E datascience
- name: Run gptme
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
GPTME_COMMAND="${{ needs.check-comment.outputs.gptme_command }}"
# Run gptme with the extracted command
poetry run gptme --non-interactive "$GPTME_COMMAND"
- name: Commit, push, comment
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
GPTME_COMMAND="${{ needs.check-comment.outputs.gptme_command }}"
ISSUE_TYPE="${{ github.event.issue.pull_request && 'pull_request' || 'issue' }}"
ISSUE_NUMBER="${{ github.event.issue.number }}"
REPO_NAME="${{ github.event.repository.name }}"
USER_NAME="${{ github.event.repository.owner.login }}"
BRANCH_NAME="gptme-bot-changes-$(date +'%Y%m%d%H%M%S')"
BRANCH_BASE="master"
RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
COMMENT_URL="https://github.com/${{ github.repository }}/issues/${{ github.event.issue.number }}#issuecomment-${{ github.event.comment.id }}"
COMMIT_MSG="gptme '$GPTME_COMMAND'
Made in this run: $RUN_URL
Triggered by this comment: $COMMENT_URL"
git config user.name "gptme-bot"
git config user.email "[email protected]"
if [[ $ISSUE_TYPE == "pull_request" ]]; then
# Push changes to the PR branch
git add -A
git commit -m "$COMMIT_MSG"
git push
# Comment on the PR
echo "Changes have been pushed to this pull request." | gh pr comment $ISSUE_NUMBER -R $USER_NAME/$REPO_NAME --body-file=-
else
# Create a new branch and push changes
git checkout -b $BRANCH_NAME
git add -A
git commit -m "$COMMIT_MSG"
git push -u origin $BRANCH_NAME
# Some say this helps! https://github.com/cli/cli/issues/2691#issuecomment-1289521962
sleep 1
# Create a PR
PR_URL=$(gh pr create --title "Changes for issue #$ISSUE_NUMBER" --body "$COMMIT_MSG" --repo $USER_NAME/$REPO_NAME | grep -o 'https://github.com[^ ]*')
# These are redundant/implied: --base $BRANCH_BASE --head $USER_NAME:$BRANCH_NAME
# Comment on the issue with the PR link
echo "A pull request has been created for this issue: $PR_URL" | gh issue comment $ISSUE_NUMBER -R $USER_NAME/$REPO_NAME --body-file=-
fi

0 comments on commit 9113355

Please sign in to comment.