Skip to content

ci: 接入 GitHub Actions(CI + 自动部署) - #1

Merged
webxiongda merged 3 commits into
mainfrom
cicd-setup
Oct 3, 2026
Merged

webxiongda merged 3 commits into
mainfrom
cicd-setup

Conversation

@webxiongda

Copy link
Copy Markdown
Owner

内容

  • .github/workflows/ci.yml:CI(前端构建 + 后端测试/产物校验)
  • .github/workflows/deploy.yml:push main 后自动部署到 ECS
  • deploy/deploy-*.sh:幂等部署脚本,含前置校验、备份回滚点、部署后契约验证
  • deploy/ca_result.py:解析 Cloud Assistant 返回(避免内联多行 Python 顶断 YAML 缩进)

部署通道

不走 SSH,走阿里云 Cloud Assistant(aliyun ecs RunCommand)。

原因:GitHub Actions runner 与开发机同属境外出口,直连 47.93.15.207:22 会被阿里云上游静默丢包(已实测 nc 超时),安全组规则在该层之下,加了也不生效。Cloud Assistant 走 HTTPS API,已用最小权限 RAM 子账号实测可正常下发执行。

凭据

  • RAM 子账号 ecs-deploy-ci + 自定义策略 ecs-deploy-minimal,仅授予 ecs:RunCommand / ecs:DescribeInvocationResults / ecs:DescribeInstances
  • 已实测越权:子账号无法修改安全组规则
  • 密钥存于仓库 Secrets(ALIYUN_AK / ALIYUN_SK),明文不入库

合并后行为

deploy workflow 监听 main,合并即自动部署:java(systemd)、python(PM2)、node(静态 + nginx)。每次约 30 秒重启,脚本幂等且带备份回滚点。

本 PR 合并前不会触碰线上。

- ci.yml:生成静态站点并校验产物(页面数 >300、章节数与源目录一致、关键文件存在),
  产物作为 artifact 上传
- deploy.yml:push main 自动部署静态站到 ECS 8087,走 Cloud Assistant
- deploy/deploy-node.sh:幂等部署脚本,vhost 缺失才创建,防火墙端口幂等放行
内联多行 python3 -c 顶格会顶断 run: | 块缩进,改为抽到 deploy/ca_result.py。
node-study 原本没有 package.json,CI 里 setup-node 的 cache: npm 找不到
lock 文件直接失败(Dependencies lock file is not found)。

- 新增 package.json,把 marked / highlight.js 声明为 devDependencies,
  并提供 npm run build
- 新增 package-lock.json
- ci.yml 与 deploy-node.sh 改用 npm ci + npm run build,与 lock 保持一致
@webxiongda
webxiongda merged commit c52a9a0 into main Oct 3, 2026
1 check passed
@webxiongda
webxiongda deleted the cicd-setup branch October 3, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants