返回列表

GitHub Actions + ECS:从零搭建 CI/CD 流水线

本文记录了如何使用 GitHub Actions 实现最基础的自动化 CI/CD,将私有仓库自动部署到 ECS 服务器。

CI/CDGitHub Actions自动化

CI

ci 比较简单,就是在 push 后附加一次自动检查 直接让 ai 写 ci 文件到 项目/.github/workflows/ci.yml 即可 push 后 github 会自动在自己的服务器上执行 ci.yml 文件的步骤 进行 lint / 类型检查 / build 等 成功与否会显示在 github 仓库的 Actions 里

CD

cd 权限配置比较麻烦

第一步:GitHub Actions 连接 ECS

本地 Bash 执行命令

ssh-keygen -t ed25519 -C "注释" -f C:\Users\用户名\.ssh\秘钥名称

一路回车生成一对密钥

本地 Bash 执行命令

ssh-keyscan -H -t ed25519 服务器ip

获取服务器公开主机指纹

github 仓库 -> Settings -> Secrets and variables -> Actions 添加四个条目:

  1. ECS_HOST:服务器 IP 地址
  2. ECS_USER:服务器用户名(如 root)
  3. ECS_SSH_PRIVATE_KEY:刚才的私钥
  4. ECS_SSH_KNOWN_HOSTS:服务器指纹

登录到服务器上,在 root 用户的 ~/.ssh 目录下,输入指令保存公钥

echo "你复制的公钥内容" >> ~/.ssh/authorized_keys

然后配置一下权限,输入指令

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

第二步:ECS 连接私有 GitHub 仓库

ECS Bash执行命令

ssh-keygen -t ed25519 -C "注释" -f /root/.ssh/秘钥名称

依旧一路回车生成一对秘钥

github 仓库 -> Settings -> Deploy keys 添加条目: Title: xxx read-only Key:刚才的公钥 Allow write access:不勾选

ECS Bash 执行命令,让仓库使用新密钥

cat >> /root/.ssh/config <<'EOF'
Host SSH别名
  HostName github.com
  User git
  IdentityFile /root/.ssh/私钥
  IdentitiesOnly yes
EOF

chmod 600 /root/.ssh/config

测试身份

ssh -T git@SSH别名

看到类似“successfully authenticated, but GitHub does not provide shell access”就是成功

ECS Bash 执行命令

cd 项目仓库
git remote set-url origin git@SSH别名:github用户名/项目名.git
git remote -v

把项目远程地址改为 SSH

第三步:编写 CD 文件

最后在本地让 ai 写 cd 文件到 项目/.github/workflows/deploy.yml 记得告诉他刚才 Actions 里的四个条目的名称(ECS_HOST ...)否则读不到 以后 ci 成功后即可自动 cd