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 条评论

登录 后参与评论

还没有评论,来抢沙发~