我讓代碼,學(xué)會(huì)了自動(dòng)評(píng)審!提高80%的交付質(zhì)量!
一、使用方法
本套組件是小傅哥基于 GitHub Actions + OpenAI(ChatGLM) + Git/GitHub + 公眾號(hào)模板消息 串聯(lián)出從代碼提交獲取通知,Git 檢出分支變化,在使用 OpenAI 進(jìn)行代碼和寫入日志,再發(fā)送消息通知完成整個(gè)鏈路。
好,那接下來,小傅哥就帶著你做下 OpenAI Code Review 的配置,整體配置如下圖;—— 下面????會(huì)告訴你在哪配置。
圖片
1. 申請(qǐng) ChatGLM
- CHATGLM_APIKEYSECRET:https://open.bigmodel.cn/usercenter/apikeys - 申請(qǐng)方便&還挺好用。也可以對(duì)接其他模型。
- CHATGLM_APIHOST:https://open.bigmodel.cn/api/paas/v4/chat/completions
2. 申請(qǐng) GitHub 倉庫
組件是基于 Github Actions 實(shí)現(xiàn)的,所以要提供一個(gè)你的 Github 工程庫和一個(gè)評(píng)審 Github 工程庫寫入日志的日志庫。如果你有其他代碼庫,也可以按照對(duì)應(yīng)代碼庫的 CI/CD 標(biāo)準(zhǔn)進(jìn)行實(shí)現(xiàn)。
- 工程庫:https://github.com/xfg-studio-project/openai-code-review-test - 你創(chuàng)建一個(gè)自己的,并提交代碼。
- 日志庫:https://github.com/xfg-studio-project/openai-code-review-log - 你創(chuàng)建一個(gè)自己的。
3. 申請(qǐng) GitHub Token
地址:https://github.com/settings/tokens
圖片
- 創(chuàng)建后,保存生成的 Token,用于配置到 GitHub Actions 參數(shù)中
4. 微信公眾號(hào)配置
- 申請(qǐng)地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actinotallow=showinfo&t=sandbox/index
圖片
- 這個(gè)測(cè)試公眾號(hào)等同于企業(yè)公眾號(hào),有對(duì)應(yīng)的模板消息。
- 申請(qǐng)后,你就會(huì)獲得 appID、appsecret、tourse - 就是誰關(guān)注了公眾號(hào),就會(huì)展示一個(gè)分配的微信號(hào),推送模板消息就是給這個(gè)用戶推送。
- 模板消息,自己新建一個(gè)。之后就獲得ID。消息格式如下;
項(xiàng)目:{{repo_name.DATA}} 分支:{{branch_name.DATA}} 作者:{{commit_author.DATA}} 說明:{{commit_message.DATA}}
5. GitHub Actions 配置
5.1 配置參數(shù)
地址:https://github.com/xfg-studio-project/openai-code-review-test/settings/secrets/actions - 換成你的項(xiàng)目工程,進(jìn)入到 Setting -> Secrets and variables -> Actions -> Repository secrets -> New repository secret
圖片
圖片
Name | Secret |
CHATGLM_APIHOST | |
CHATGLM_APIKEYSECRET |
|
CODE_REVIEW_LOG_URI | https://github.com/xfg-studio-project/openai-code-review-log - 使用你的 |
CODE_TOKEN |
|
WEIXIN_APPID |
|
WEIXIN_SECRET |
|
WEIXIN_TEMPLATE_ID |
|
WEIXIN_TOUSER |
|
5.2 配置腳本
圖片
name: OpenAiCodeReview
on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 2 # 檢出最后兩個(gè)提交,以便可以比較 HEAD~1 和 HEAD
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Create libs directory
run: mkdir -p ./libs
- name: Download openai-code-review-sdk JAR
run: wget -O ./libs/openai-code-review-sdk-1.1.jar https://github.com/xfg-studio-project/openai-code-review-log/releases/download/v1.1/openai-code-review-sdk-1.1.jar
- name: Get repository name
id: repo-name
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
- name: Get branch name
id: branch-name
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- name: Get commit author
id: commit-author
run: echo "COMMIT_AUTHOR=$(git log -1 --pretty=format:'%an <%ae>')" >> $GITHUB_ENV
- name: Get commit message
id: commit-message
run: echo "COMMIT_MESSAGE=$(git log -1 --pretty=format:'%s')" >> $GITHUB_ENV
- name: Print repository, branch name, commit author, and commit message
run: |
echo "Repository name is ${{ env.REPO_NAME }}"
echo "Branch name is ${{ env.BRANCH_NAME }}"
echo "Commit author is ${{ env.COMMIT_AUTHOR }}"
echo "Commit message is ${{ env.COMMIT_MESSAGE }}"
- name: Run Code Review
run: java -jar ./libs/openai-code-review-sdk-1.1.jar
env:
# Github 配置;GITHUB_REVIEW_LOG_URI「https://github.com/xfg-studio-project/openai-code-review-log」、GITHUB_TOKEN「https://github.com/settings/tokens」
GITHUB_REVIEW_LOG_URI: ${{ secrets.CODE_REVIEW_LOG_URI }}
GITHUB_TOKEN: ${{ secrets.CODE_TOKEN }}
COMMIT_PROJECT: ${{ env.REPO_NAME }}
COMMIT_BRANCH: ${{ env.BRANCH_NAME }}
COMMIT_AUTHOR: ${{ env.COMMIT_AUTHOR }}
COMMIT_MESSAGE: ${{ env.COMMIT_MESSAGE }}
# 微信配置 「https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actinotallow=showinfo&t=sandbox/index」
WEIXIN_APPID: ${{ secrets.WEIXIN_APPID }}
WEIXIN_SECRET: ${{ secrets.WEIXIN_SECRET }}
WEIXIN_TOUSER: ${{ secrets.WEIXIN_TOUSER }}
WEIXIN_TEMPLATE_ID: ${{ secrets.WEIXIN_TEMPLATE_ID }}
# OpenAi - ChatGLM 配置「https://open.bigmodel.cn/api/paas/v4/chat/completions」、「https://open.bigmodel.cn/usercenter/apikeys」
CHATGLM_APIHOST: ${{ secrets.CHATGLM_APIHOST }}
CHATGLM_APIKEYSECRET: ${{ secrets.CHATGLM_APIKEYSECRET }}
- 把以上腳本粘貼到你的 GitHub Actions 中,之后保存。
- 接下來你提交代碼就會(huì)自動(dòng)觸發(fā)代碼評(píng)審啦。?? 趕緊玩一下吧!看看智能的AI評(píng)審能力!
對(duì)于這里實(shí)現(xiàn)的內(nèi)容,小傅哥會(huì)通過代碼實(shí)踐課程,手把手的給你講解。從方案設(shè)計(jì)、代碼串聯(lián)、重構(gòu)編碼,一步步的帶著你全部搞懂!
二、能學(xué)到啥
公司里其實(shí)也總有人做一些這樣的創(chuàng)新組件,這些東西和業(yè)務(wù)沒關(guān)系,也不是個(gè)人的KPI壓力,但往往做這樣的東西的伙伴就有更多的晉升資格和加薪待遇。因?yàn)槲揖褪沁@個(gè)人 哈哈哈 死鬼!
這樣的組件項(xiàng)目,本身就是一種技術(shù)創(chuàng)新應(yīng)用來解決實(shí)際業(yè)務(wù)問題,提高交付質(zhì)量。而不是那種野蠻的一遍遍重寫RPC框架。所以學(xué)習(xí)一套這樣的東西是非常有用的。那么在這套東西你可以學(xué)習(xí)到;
- 一整套的設(shè)計(jì)方案分析和相應(yīng)的技術(shù)問題處理手段,這個(gè)思考方式很重要。
- GitHub Actions 的使用機(jī)制,它的一些超級(jí)強(qiáng)大的用途和使用方式。
- OpenAI ChatGLM 對(duì)接使用,用AI來做代碼評(píng)審。
- 微信公眾號(hào)的模板配置和API對(duì)接使用,運(yùn)用 API 完成消息觸達(dá)。
- 通過代碼完成 Git 命令使用,檢出代碼分支,在通過 OPenAI 完成代碼評(píng)審。整個(gè)過程先使用大家常用的流水賬方式開發(fā)代碼,再帶著大家重構(gòu)設(shè)計(jì),讓代碼變得更加清晰。
- 打包 Jar 包,并把相關(guān)的組件一起打包,之后讓 GitHub Actions 分別通過 Main 函數(shù)調(diào)用、mvn 構(gòu)建使用、Jar 下載使用,多種方式學(xué)習(xí)整個(gè)過程(而不是只最終的結(jié)果,過程非常重要)。