告别手动部署!GitHub Actions CI/CD流水线,我教你自动化“起飞”!
哈喽各位大佬,我是你们的老朋友ECCFY!今天咱们不聊别的,直接上硬核的!有没有人还在手动部署项目?每次提交代码都得SSH到服务器,敲半天命令?Oh my god!那简直是上个世纪的操作了!今天,我要带大家一起,把我们每天都用的GitHub,变成一个超级自动化部署神器——GitHub Actions CI/CD流水线!让你告别手动,代码一提交,项目就上线,效率直接拉满!废话不多说,Show time!
🚀 第一章:GitHub Actions,它到底是个啥?
OK so,很多小伙伴可能听过CI/CD,也知道GitHub Actions,但究竟怎么用起来,还是有点懵对不对?简单来说,GitHub Actions就是GitHub提供的一个自动化工作流服务。你可以用它来做各种事情,比如跑测试、构建项目、自动化部署到服务器等等。它就像一个超级智能的管家,你告诉它要做什么,它就自动帮你把这些事儿办了,完全不需要你插手!是不是很酷?
接下来,我带大家快速过一下核心概念。其实啊,GitHub Actions的工作原理特别简单。我们在项目的根目录下创建一个 `.github/workflows` 文件夹,然后在里面写一个YAML文件,这个YAML文件就是我们的自动化脚本。当某些事件(比如你往`main`分支`push`了代码)触发时,GitHub就会读取这个YAML文件,然后按照你写好的步骤,一步一步地执行。嗯,就这么简单!
🛠️ 第二章:CI/CD流水线实战:一个简单的部署示例
现在,是时候来点真材实料了!我会手把手带大家搭建一个超级简单的CI/CD流水线。假设我们有一个Node.js项目,目标是把代码部署到咱们的Linux服务器上。整个过程,从代码提交到服务器上线,我让你看清楚每一个细节!
2.1 准备工作:SSH密钥与GitHub Secrets
首先,我们需要让GitHub Actions能够安全地连接到你的服务器。最常用的方法就是SSH密钥。你需要在服务器上生成一对SSH密钥(公钥和私钥),然后把公钥添加到服务器的授权密钥列表中。私钥呢?千万不要直接写到YAML文件里! 那样太不安全了!我们要把它放到GitHub的Secrets里。OK,看我操作:
- 生成SSH密钥: 在你的服务器上执行 `ssh-keygen -t rsa -b 4096 -C "[email protected]"`。跟着提示一步步来,它会在 `~/.ssh/` 目录下生成 `id_rsa` (私钥) 和 `id_rsa.pub` (公钥)。
- 添加公钥到授权列表: `cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys`。确保 `authorized_keys` 文件的权限是 `600`。
- 获取私钥内容: `cat ~/.ssh/id_rsa`,把显示的内容复制下来。
- 配置GitHub Secrets: 打开你的GitHub项目页面,点击“Settings” -> “Secrets and variables” -> “Actions” -> “New repository secret”。将刚才复制的私钥内容粘贴进去,名称设置为 `SSH_PRIVATE_KEY`。同理,你需要服务器的IP地址或域名,也创建一个Secret,比如叫 `SSH_HOST`,用户名为 `SSH_USERNAME`。
嘿,小伙伴们,这一步非常关键哦!GitHub Actions教程里,安全永远是第一位的!
2.2 编写YAML工作流文件
接下来,就是核心的YAML文件了!在你的项目根目录下创建 `.github/workflows/deploy.yml` 文件。
name: Deploy Node.js App
on:
push:
branches:
- main # 当代码推送到main分支时触发
jobs:
deploy:
runs-on: ubuntu-latest # 在最新的Ubuntu虚拟机上运行
steps:
- name: Checkout code # 步骤1:拉取代码
uses: actions/checkout@v4
- name: Setup Node.js v18 # 步骤2:安装Node.js环境
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install dependencies # 步骤3:安装项目依赖
run: npm install
- name: Build project # 步骤4:构建项目(如果需要)
run: npm run build # 例如:npm run build
- name: Deploy to server # 步骤5:部署到远程服务器
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /path/to/your/app # 替换为你在服务器上的项目路径
git pull origin main # 拉取最新代码
npm install # 重新安装依赖
npm run build # 重新构建
pm2 restart your_app_name || pm2 start npm --name "your_app_name" -- start # 启动或重启应用
注意看啊!这个YAML文件里,我们定义了一个名为 `deploy` 的`job`,它会在`ubuntu-latest`上运行。`steps`里,我们一步步地完成了“拉取代码”、“安装Node.js”、“安装依赖”、“构建项目”和“部署”这些操作。特别是部署这一步,我们使用了 `appleboy/ssh-action` 这个GitHub Actions怎么用的社区插件,它能帮我们方便地通过SSH连接到服务器并执行命令。`script`里就写上你要在服务器上执行的命令,比如拉取最新代码、安装依赖、重启PM2管理的进程等等。
✨ 第三章:亲眼见证自动化部署的魔力!
好了!代码写完了,Secrets也配好了。现在,是见证奇迹的时刻!就像我平时做视频一样,我要给你们一个“Before/After”的震撼对比!
Before: 想象一下,你改了一行代码,然后打开终端,输入`ssh user@host`,再`cd /path/to/app`,`git pull`,`npm install`,`npm run build`,`pm2 restart`... 一顿操作猛如虎,花掉你宝贵的五分钟。是不是很崩溃?
After: 现在!你只需要在本地把代码`git push`到`main`分支!就这么简单!然后你打开GitHub项目页面的“Actions”标签,你就会看到一个正在运行的工作流!绿色的✅代表成功,红色的❌代表失败,一切尽在掌握!
Now watch this!我这里就随便改一点代码,比如 README 文件里加一行字,然后 `git add .`,`git commit -m "Test deploy with Actions"`,最后 `git push origin main`!
(屏幕画面切换到GitHub Actions页面,展示工作流运行状态,从Pending到Running,最终到Success,展示绿色对号。)
看到了吗?!仅仅几秒钟,我的工作流就跑完了!绿色对号闪耀着,这意味着我的代码已经成功部署到服务器上了!简直不要太爽啊!这就是GitHub Actions的魅力!它彻底解放了我们的生产力!你甚至可以用它来实现更多高级功能,比如多环境部署(开发环境、测试环境、生产环境),并行测试等等。
各位,学会了GitHub Actions,你的开发效率绝对会有一个质的飞跃!如果过程中遇到任何“免费VPN”类型的问题,或者需要帮助,别忘了在评论区给我留言!喜欢这期内容的,请务必点赞、关注、投币三连啊!下期见!