雨云 CI/CD 自动部署实战:GitHub Actions 把代码一键推上云服务器

push 一下代码,雨云云服务器上的服务就自己更新了
发布于
4

手动部署太累了

前面我们把各种服务都部署到了雨云云服务器,但每次改代码都要手动 SSH 上去拉代码、装依赖、重启,既慢又容易漏步骤。CI/CD 就是把这套流程自动化:你只要把代码 push 到仓库,流水线自动帮你构建、传文件、重启服务。本文用最普及的 GitHub Actions 演示,把代码一键推上雨云。

一、准备与购买

你需要一台雨云云服务器跑服务(前面任何一篇的部署方式都行),以及托管代码的 GitHub 仓库。服务器建议 2 核 2G 起步。购买走 雨云专属入口 jiyueip.com/link/5617 填优惠码 admin01 五折;国内节点对外提供网页服务要先备案。

二、配置部署密钥

在服务器上生成一对 SSH 密钥,把公钥加进 ~/.ssh/authorized_keys,私钥放到 GitHub 仓库的 Secrets(Settings → Secrets → Actions),变量名比如 DEPLOY_KEY。GitHub Actions 用私钥连服务器就免密了。

三、写工作流文件

在仓库 .github/workflows/deploy.yml 写入:

name: deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: 部署到雨云
      uses: appleboy/ssh-action@v1
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USER }}
        key: ${{ secrets.DEPLOY_KEY }}
        script: |
          cd /home/ubuntu/myapp
          git pull
          source venv/bin/activate
          pip install -r requirements.txt
          sudo systemctl restart myapi

把服务器 IP、用户名也存成 Secrets(HOST、USER)。以后 push 到 main 分支,Actions 自动连上雨云机器执行拉代码、装依赖、重启。

四、进阶:先构建再上传

前端项目可以先在 runner 里 npm build,再用 scp 把 dist 传上去;或把构建产物打包,SSH 进去解压覆盖。复杂发布可以再加“测试通过才部署”的门槛,避免坏代码上线。

五、回滚思路

自动化部署也要能退。简单做法:部署前在服务器 git stash 或打 tag,出问题 git checkout 上一个 tag、重启即可;更稳的用蓝绿/多机切换。关键是每次发布都有可回退的版本记录

合规使用提醒

CI/CD 流水线仅用于你合法拥有代码与服务器的自动化部署,提升交付效率。部署密钥须妥善保管,不要写入代码或公开仓库;涉及用户个人信息的应用上线须遵守《个人信息保护法》,做好数据保护与访问审计。

常见问题(FAQ)

部署密钥怎么配才安全?
在服务器生成 SSH 密钥对,公钥放服务器 authorized_keys,私钥存进仓库 Secrets(如 DEPLOY_KEY)。工作流用私钥连服务器执行部署命令,全程免密且密钥不落代码。
什么时候触发部署?
push 到指定分支(如 main)时触发。可以改成打 tag 才部署,或加一个“手动 approve”门槛,更可控,避免每次提交都自动上线。
自动化部署怎么回滚?
部署前在服务器 git stash 或打 tag,出问题 git checkout 上一个 tag 再重启;规模大的用蓝绿部署,一套跑着一套切。核心是每次发版都有可回退记录。
一定要用 GitHub Actions 吗?
GitHub Actions 免费额度对个人够用;如果你用 GitLab 可配 GitLab Runner 跑在雨云机器上,代码不出内网更安全。思路一样,换工具而已。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600