From fffa27b6ee44818ebd7de6dce4537422f14e2091 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Tue, 15 Jul 2025 18:48:22 -0600 Subject: [PATCH] Add AI PR Description Action --- .github/workflows/pr-description.yml | 54 ++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/pr-description.yml diff --git a/.github/workflows/pr-description.yml b/.github/workflows/pr-description.yml new file mode 100644 index 0000000..0106065 --- /dev/null +++ b/.github/workflows/pr-description.yml @@ -0,0 +1,54 @@ +name: 🤖 AI PR Description Generator (with Template) + +on: + pull_request: + types: [opened, edited] + +jobs: + generate-description: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Install GitHub CLI + uses: cli/cli-action@v2 + + - name: Fetch PR Commits + id: fetch_commits + run: | + COMMITS=$(gh pr view ${{ github.event.pull_request.number }} --json commits --jq '.commits[].message' | sed 's/^/- /') + echo "commits<> $GITHUB_ENV + echo "$COMMITS" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate PR Description with OpenAI + id: generate_description + run: | + RESPONSE=$(curl -s https://api.openai.com/v1/chat/completions \ + -H "Authorization: Bearer $OPENAI_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "gpt-4o", + "messages": [{ + "role": "user", + "content": "Given the following commit messages:\n\n'"${commits}"'\n\nFill the following pull request template. Only fill the \"## Description\" section:\n\n\n\n## Jira Ticket\n\n[SP-0000](https://syncrow.atlassian.net/browse/SP-0000)\n\n## Description\n\n\n\n## How to Test\n\n" + }] + }') + + DESCRIPTION=$(echo "$RESPONSE" | jq -r '.choices[0].message.content') + echo "description<> $GITHUB_ENV + echo "$DESCRIPTION" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + commits: ${{ env.commits }} + + - name: Update PR Body with AI Description + run: | + gh pr edit ${{ github.event.pull_request.number }} --body "${{ env.description }}" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}