GitHub Actions 工作流怎麼寫提示詞(CI 測試、依賴緩存、矩陣構建、密鑰管理、按路徑觸發)
想給 GitHub 倉庫加自動化測試、構建、發佈流程,或者現有工作流太慢、經常出錯時用:描述項目和需求,得到結構清晰的工作流 YAML,帶依賴緩存、並發取消、最小權限、密鑰安全使用,並解釋每一段的作用和常見報錯。
通用大模型 對話模型通用
你是一名熟悉 GitHub Actions 的 DevOps 工程師。請幫我編寫或優化工作流。 - 項目技術棧:[技術棧](例:Node.js 22 + pnpm 的 monorepo) - 需要的流程:[流程](例:PR 時跑 lint 和測試,合併到 main 後構建鏡像) - 運行環境需求:[運行環境](例:測試需要 PostgreSQL) - 需要的密鑰或外部服務:[密鑰](例:鏡像倉庫憑證) - 現有工作流(如果要優化): [粘貼現有 YAML,沒有就寫無] 要求: 1. 觸發條件:區分推送和拉取請求;需要時按路徑過濾(只改文檔時不跑測試);說明來自復刻倉庫的拉取請求預設無法使用倉庫密鑰。 2. 權限:在工作流或任務級別聲明最小權限,預設只讀,需要寫入時單獨授予。 3. 依賴緩存:使用官方 setup 動作自帶的緩存功能或緩存動作,緩存鍵基於鎖文件的哈希。 4. 並發:同一分支上新的提交觸發時,取消仍在運行的舊任務。 5. 矩陣:需要多版本測試時使用矩陣,並說明失敗時是否立即取消其他組合。 6. 服務容器:測試需要的數據庫用服務容器提供,並等待其健康檢查通過。 7. 密鑰:只通過密鑰上下文引用,不打印到日誌;部署類任務使用環境並配合審批(如果需要)。 8. 第三方動作:說明固定版本的方式(標籤與提交哈希的取捨)。 9. 拆分任務與依賴關係,讓互不相關的任務並行運行;必要時複用工作流或組合動作,避免重複。 輸出:完整的 YAML(每段帶中文註釋)、需要在倉庫設定中配置的內容(密鑰、環境、分支保護)、常見報錯與排查方法。動作的版本號寫當前主版本,並註明「以動作倉庫的最新說明為準」。
高亮處換成你自己的內容:[技術棧]、[流程]、[運行環境]、[密鑰]、[粘貼現有 YAML,沒有就寫無]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[需要的流程] 按「什麼時候觸發、做什麼」寫,例如「拉取請求時跑檢查和測試;合併到 main 後構建並推送鏡像;打標籤時發佈」。[現有工作流] 貼上後,AI 會指出慢在哪裏、哪些寫法有安全隱患。
常見坑:
- 不聲明權限,工作流使用的令牌可能擁有不必要的寫權限;如果某個第三方動作被篡改,風險更大。
- 緩存鍵寫死或不包含鎖文件哈希,依賴更新後還在用舊緩存,或者緩存永遠不命中。
- 把密鑰直接拼進命令行參數並開啟調試輸出,可能泄露到日誌中。
追問技巧:追問「把這幾個倉庫共用的步驟抽成可複用工作流」,或「工作流跑一次要 15 分鐘,幫我分析哪幾步可以並行或緩存」。
示例輸出
示例,僅供參考(節選)
yaml
name: CI
on:
pull_request:
paths-ignore: ['docs/**', '**.md']
push:
branches: [main]
permissions:
contents: read # 預設只讀
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true # 同一分支有新提交時取消舊任務
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
ports: ['5432:5432']
options: >-
--health-cmd "pg_isready" --health-interval 5s --health-retries 10
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm # 基於 pnpm-lock.yaml 的緩存
- run: pnpm install --frozen-lockfile
- run: pnpm test
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~