当前位置: 首页 > news >正文

从本地到生产:迁移到 GitHub Actions 自动化 CI/CD,总结了这 5 个坑

一、为什么迁移到 GitHub Actions?

  • 无需额外服务器:GitHub 原生集成,免费额度充足(2000 分钟/月)
  • 矩阵构建:一次 push 测试多个 Node 版本、多个操作系统
  • 生态丰富:官方 marketplace 有上万 actions
  • 配置即代码.github/workflows/*.yml随仓库版本管理

迁移前:Jenkins + 自建服务器,维护成本高,构建不稳定。
迁移后:所有流程自动化,PR 自动跑测试,主干自动部署。

二、5 个踩过的坑与解决方案

坑 1:权限不足导致 actions 无法触发

现象pull_request事件中,从 fork 仓库提交的 PR 无法访问 secrets。
原因:GitHub 出于安全考虑,fork PR 默认不传递 secrets。
解决:使用pull_request_target事件(注意安全风险,需谨慎)。

on:pull_request_target:branches:[main]

坑 2:缓存失效,每次依赖安装 3 分钟

错误做法:每次跑npm ci都不缓存。
正确做法:使用actions/cache缓存node_modules

-name:Cache node_modulesuses:actions/cache@v4with:path:~/.npmkey:${{runner.os}}-node-${{hashFiles('package-lock.json')}}restore-keys:|${{ runner.os }}-node-

坑 3:矩阵策略导致重复构建

需求:需要在 Node 18、20、22 上分别测试,但每次 push 都跑 3 次,浪费时间。
解决:使用矩阵,但限定只在push到 main 或schedule时跑多版本,PR 只跑最新版。

strategy:matrix:node-version:[18.x,20.x,22.x]# 只在 main 分支跑全部exclude:-node-version:18.xif:github.ref!='refs/heads/main'

坑 4:环境变量在 composite action 中不生效

现象:自定义 action 里读取不到env上下文。
解决:通过with参数显式传递,或使用${{ env.MY_VAR }}语法。

坑 5:workflow 复用导致调试困难

问题:多个项目共用同一个 workflow,出错时难以定位。
解决:使用可复用 workflow (workflow_call),并增加workflow_dispatch手动触发调试。

on:workflow_call:inputs:environment:required:truetype:stringsecrets:DEPLOY_KEY:required:true

三、完整 workflow 模板(可直接复制)

示例:Node.js 项目 CI + 自动部署到 Vercel

name:CI/CDon:push:branches:[main,develop]pull_request:branches:[main]jobs:test:runs-on:ubuntu-lateststrategy:matrix:node-version:[18.x,20.x]steps:-uses:actions/checkout@v4-uses:actions/setup-node@v4with:node-version:${{matrix.node-version}}cache:'npm'-run:npm ci-run:npm testdeploy:needs:testif:github.ref == 'refs/heads/main'runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-name:Deploy to Verceluses:amondnet/vercel-action@v20with:vercel-token:${{secrets.VERCEL_TOKEN}}vercel-org-id:${{secrets.VERCEL_ORG_ID}}vercel-project-id:${{secrets.VERCEL_PROJECT_ID}}vercel-args:'--prod'

四、常用 actions 清单

用途Action
缓存依赖actions/cache@v4
设置 Nodeactions/setup-node@v4
设置 Pythonactions/setup-python@v5
上传 artifactactions/upload-artifact@v4
下载 artifactactions/download-artifact@v4
发送 Slack 通知slackapi/slack-github-action@v1
部署到云服务器easingthemes/ssh-deploy@main

五、总结

  • GitHub Actions 完全取代 Jenkins 等传统 CI,配置即代码,免费额度足够中小项目。
  • 重点注意:缓存策略权限处理矩阵优化workflow 复用
  • 文中的所有 workflow 代码均可直接复制使用,根据项目调整即可。

建议收藏本文,下次新项目搭建 CI 时直接抄配置。下一篇写“GitHub Actions 安全最佳实践”。

http://www.zskr.cn/news/1536354.html

相关文章:

  • 如何借助微信投票制作平台制作投票活动?2026最新免费教程|防刷+批量导入+图文视频全支持 - 微信投票小程序
  • FigmaCN终极指南:3分钟免费搞定Figma中文汉化
  • 设计师与开发者的对话:Marketch如何让Sketch设计稿自动“开口说话“?
  • 杭州索川科技:专业电摩控制器与电机测试台解决方案
  • LVI-SAM实战:从传感器标定到参数调优,跑通自定义数据全指南
  • 2026中小艺培校长亲测:培训机构管理系统避坑指南,搞定排课家校
  • 2026年6月青岛奢侈品回收分级测评!7家正规平台评级,最优口碑出炉 - 薛定谔的梨花猫
  • 藏饰盘活不踩坑|2026哈尔滨首饰回收实测排行与行情解析 - 名奢变现站
  • 开发者有必要长期用 ChatGPT Plus 吗?从 Debug、代码解释和数据安全说清楚
  • Java 三大修饰符
  • 单视频生成多样性内容的技术原理与边界
  • 2026年全国知名中空板厂家行业三大趋势解读 - 速递信息
  • 数据技能跃迁:从工具操作到业务建模的能力重构
  • 2026杭州二手奢侈品回收实测排行:拒绝套路,这5家店回收流程全透明 高价透明不压价 - 生活测评君
  • 如何设计让员工主动成长的内部竞争机制
  • 5分钟精通Notepad--多行编辑:国产跨平台编辑器的效率革命
  • 2026宁波回收黄金门店推荐,资质齐全称重精准不坑人 - 名奢变现站
  • 项目经理势能培养:四大可操作模块与实战路线图
  • GY001-WiFiBLE+4G转CAN总线或RS485中高速通信 - 4G通信CAN数据发送到MQTT, GPS上传数据, 1ms一帧测试
  • 2026年 东莞1688运营服务商/代运营公司推荐榜:专业爆款打造与店铺深度代运营精选 - 企业推荐官【官方】
  • 玩美数据正式发布全球市场研究服务网络,覆盖1300余家供应商,助力出海企业实现高效精准数据收集与市场洞察
  • 2026年郑州短视频代运营与GEO优化服务商深度横评|企业精准获客完整指南 - 精选优质企业推荐官
  • 2026常州装修公司口碑优选:五大维度锁定五家靠谱装企 - GrowthUME
  • 2026出海品牌曝光效果不佳?海外品牌营销推广公司与AI海外营销解决方案服务商打造全域曝光方案 - 品牌2026
  • 杭州卖黄金少亏上千!从业15年老炮私藏变现法则,避开隐形扣费全套套路 - 奢侈品回收评测
  • 2026年手机阅读器智能推荐功能大比拼,谁是你的最佳选择?
  • Nexior:基于Docker与Vercel的AI服务双轨交付骨架
  • 2026最新选型指南!全网封神的“投票管家”小程序,凭什么成为数字化评选天花板? - 亲测好用工具
  • 2026新:眉山专业甲醛检测治理公司横向测评,哪家专业靠谱?综合实测推荐成都肃醛环保科技有限公司 - 专注室内空气检测治理
  • 若依(RuoYi)后台管理系统部署后必做的5项安全加固检查(避坑指南)