GitHub Actions
生成 CI/CD 工作流配置:勾选触发条件(push / PR / tag / 定时 / 手动)、Node、Python、Go 或 Java 环境、依赖缓存与多版本多系统矩阵,直接得到可提交的 .github/workflows/*.yml。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
工作流设置
.github/workflows/ci.yml
把内容保存为 .github/workflows/ci.yml 即可运行;YAML 由 js-yaml 生成,可直接被 GitHub 解析。
name: CI
'on':
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Test
run: npm test
- name: Build
run: npm run build
统计
6120这个工具能做什么
- 给一个新项目补 CI:勾上 push 与 pull_request,选 Node 20,勾 lint / test / build,直接得到能提交的 ci.yml,不用再翻官方文档抄语法。
- 多版本兼容性验证:版本填 18, 20, 22,系统同时选 ubuntu 和 windows,生成矩阵构建,一次跑完所有组合。
- 定时任务或手动发布:加 schedule 触发(如每周一 3:00)或 workflow_dispatch,用来跑夜间构建、定时抓取或手动发布制品。
- 从 npm 换成 pnpm 或 yarn:改包管理器后 install 步骤与缓存参数会跟着变,不用手改 setup-node 的 cache 值。
示例
输入
工作流名称 CI;触发条件 push + pull_request,分支 main;环境 Node、版本 20;步骤 checkout + install + test;开启缓存
输出
name: CI
'on':
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Test
run: npm testYAML 由 js-yaml 序列化,`on` 会自动加引号,避免被 YAML 1.1 解析器当成布尔值 true。
常见问题
生成的 yml 放在哪里?
放到仓库的 .github/workflows/ 目录下,文件名随意,例如 ci.yml。GitHub 只读取该目录下的 YAML 文件,提交后下一次触发条件命中就会执行。
为什么版本填多个就变成矩阵了?
版本或运行系统超过一个时,工具会把它们写成 strategy.matrix,并把 setup 步骤的版本参数改成 ${{ matrix.node-version }}、运行器改成 ${{ matrix.os }}。矩阵最多展开 12 台机器,超过会提示,避免一个工作流开出上百个 job。
缓存是怎么开启的?
开启缓存会给 setup-node / setup-python / setup-go / setup-java 加上 cache 参数(Node 用你选的包管理器,Python 用 pip,Java 用 maven)。缓存只影响安装依赖的速度,不影响构建结果。
定时触发的 cron 怎么写?
用 5 个字段:分 时 日 月 周,例如 0 3 * * 1 表示每周一 UTC 3:00。注意 GitHub 用的是 UTC 时间,且最短间隔 5 分钟,写错字段数会直接提示错误。
tag 触发会匹配哪些标签?
勾选 tag 后生成 push.tags: [v*],也就是匹配 v1.0.0 这类以 v 开头的标签。如果同时勾了 push,两者会合并进同一个 push 触发器(branches + tags 并存),这是 GitHub Actions 的语法要求。
关键词:github actionsci cdworkflow ymlpipelinebuild matrixgithub 工作流持续集成持续部署自动化构建矩阵构建