本篇要解決的問題
上次寫了一篇〈CodiumAI PR-Agent,在 GitLab 上用 AI 來 Code Review〉,原本在最後說下一篇會寫的是自己做一個用 AI 來 Code Review 的文章。
但這週下班後,在幫朋友寫一些東西時,發現常用的還是 GitHub 平台,而且加了 AI Code Review,真的是很有幫助,所以就決定先寫這篇 GitHub 使用的筆記文。
因為大部份的工跟 GitLab 那篇幾乎相同,所以這篇就是速速的寫。
本篇主要是用 GitHub Action 的方式,參考資源:
準備好必要東西:GitHub 帳號、OpenAI API Key
GitHub 帳號,應該大部份的工程師大大們都有了,這邊就跳過。
OpenAI API Key,上一篇的段落已經寫過,就不再重寫,請看:OpenAI API Key。
GitHub 專案,設定 secret 變數
OpenAI API Key 不能外露,因此需要像 .env
檔一樣,將其設定為隱藏變數。
在 GitHub 建立好專案後,點擊:Settings > Secrets and variables > Actions > New repository secret:
在建立 secrect 時,要填寫二個欄位。
Name:填上 OPENAI_KEY
。
Secret:填寫「OpenAI API Key」的那一串。
填寫之後,點擊「Add secret」,就新增成功。
提交必要檔案
接著,我們把官方提供的程式碼,提交到 GitHub 專案上,就可以使用 AI Code Review 了。
1 .pr_agent.toml
先推送 .pr_agent.toml
檔案的原因,在 GitLab 那篇有完整的說明,簡單來說,就是要省 $$。
專案根目錄下,新增名為「.pr_agent.toml」的檔案,檔案內容如下:
[config] model = "gpt-4o-mini-2024-07-18" model_turbo = "gpt-4o-mini-2024-07-18" fallback_models = ["gpt-4o-mini-2024-07-18", "gpt-4o-mini"]
這個檔案建立了以後,先提交到 GitHub 上。
pr_agent.yml
這個檔名跟前一個相同,只是副檔名不同,是要觸發 GitHub Action 用的。
我們專案的根目錄,建立 GitHub Action 用的資料夾跟檔案:
.github/workflows/pr_agent.yml
pr_agent.yml 的檔案內容如下:
on: pull_request: types: [opened, reopened, ready_for_review] issue_comment: jobs: pr_agent_job: if: ${{ github.event.sender.type != 'Bot' }} runs-on: ubuntu-latest permissions: issues: write pull-requests: write contents: write name: Run pr agent on every pull request, respond to user comments steps: - name: PR Agent action step id: pragent uses: Codium-ai/pr-agent@main env: OPENAI_KEY: ${{ secrets.OPENAI_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
這段程式碼的最後,有看到 secrets 除了 OPENAI_KEY
之外,其實還需要另一個 GITHUB_TOKEN
,這一點官方文件上說,GitHub 會自行生成,所以我們不用擔心。
檔案建立完成後,可以立即提交,也可以等到開發完成某個階段後再提交。
這個檔案一提交上去,之後只要有合併請求,就會自動觸發 AI Code Review。
測試一下威力
跟在 GitLab 時一樣,我們也來看一下 GitHub 上的 AI Code Review。
提交程式碼後,點擊 Pull Request,其實 AI 回應的東西蠻多的,上一篇 GitLab 只截圖了其中一小塊,這次就把收到的所有內容都一次截圖下來:
再小結一次
自從加進了 AI Code Review,在寫程式上真的覺得有幫助,最簡單的比方拼錯字,都會被指出來。
AI 也會另外提供一些沒意料到的 Bug,有幾次真的是看到 AI 的回饋,才想到漏寫、漏想了什麼。
GitHub 安裝方式因為不用再手動建立 GitHub Token,所以比 GitLab 又少了一個步驟,要安裝很容易。
最近一直在想,該怎麼樣把更多的 AI 打進工作流裡,減少人力的負擔,把工作心力可以釋放到其他區塊上。
有把 AI 大量應用在工作、生活上的棒油們,歡迎留言提供你的作法~