GitHub Actions 工作流怎麼寫提示詞(CI 測試、依賴緩存、矩陣構建、密鑰管理、按路徑觸發)

想給 GitHub 倉庫加自動化測試、構建、發佈流程,或者現有工作流太慢、經常出錯時用:描述項目和需求,得到結構清晰的工作流 YAML,帶依賴緩存、並發取消、最小權限、密鑰安全使用,並解釋每一段的作用和常見報錯。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名熟悉 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

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~