在軟體持續交付(Continuous Delivery)的過程中,CI/CD 管線是確保程式碼品質與穩定度的關鍵防線。然而,傳統的 Code Review 往往面臨人工審查耗時、標準不一,以及靜態掃描工具(如 SonarQube)容易產生大量雜訊的問題。
本篇將探討如何將生成式 AI Agent 與大語言模型(LLM)整合進 GitHub Actions 或 GitLab CI 管線,實行自動化 PR 審查、靜態分析優化與安全風險監控。
PR 變更摘要(PR Summarization):自動讀取 git diff 並生成結構化的變更說明與影響範圍。
程式碼異味與安全性檢測(Code Smell & Security):自動標記潛在 SQL Injection、記憶體洩漏、未處理的 Exception 或硬編碼密鑰(Hardcoded Secrets)。
架構規範檢查(Linter Plus):針對團隊的 Design Pattern 或 Coding Style 進行語意級別的規範驗證。
.github/workflows/ai-code-review.yml
YAML
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get PR Diff
id: get_diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > diff.txt
- name: Run AI Code Reviewer
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python .github/scripts/ai_reviewer.py diff.txt
Python 審查腳本邏輯(概念範例)
Python
import os
import sys
import openai
def analyze_diff(diff_content):
prompt = f"""
你是一位資深的 DevSecOps 工程師,請針對以下 git diff 進行 Code Review:
1. 指出潛在的安全漏洞或效能瓶頸。
2. 提供具體的重構建議(包含程式碼範例)。
3. 若無重大問題,給予簡短正面評語。
Git Diff:
{diff_content[:3000]} # 限制 Token 長度
"""
response = openai.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
監控面向 傳統作法 導入 AI 後的突破
Log 異常診斷 設定固定 Threshold,傳送大量 Alert 造成警報疲勞。 AI 自動辨識 Log 中的 Context,判斷是否為新型態 Error 並分類優先級。
Rollback 決策 依賴人工比對部署前後的 Metrics。 AI 透過流量與 Error Rate 變化,自動建議或執行 Canary 自動退回。
修復建議 手動搜尋錯誤 Stack Trace。 Sentry / Datadog 結合 AI 直接產生 Root Cause 分析與 PR 修正建議。
今日小結
將 AI 整合至 CI/CD 管線,能大幅縮短 PR 的等待反饋時間(Feedback Loop),讓工程師專注於高價值的商業邏輯與架構設計,而將重複性高的規範驗證與基礎資安稽核交由 AI 自動處理。
明天預告:Day 21 - AI 輔助架構設計:利用 Prompt 設計系統架構圖與 API 規格