GitHub Actions CI/CD 超神教学:自动化部署到起飞,再也不用手动“搬砖”!
嗨,各位酷炫的Geek小伙伴们,周末愉快呀!
我大Eccfy又来啦!是不是跟我一样,每天都在思考怎么让开发变得更轻松、更高效?手动部署?哦不!那简直是上个世纪的活儿!今天,咱们就来聊一个能让大家彻底告别“手动搬砖”烦恼的神器:GitHub Actions CI/CD流水线!没错,就是那个能让你的代码一提交,就自动测试、构建、部署到服务器的魔法!激动不激动?!
第一章:CI/CD是啥?GitHub Actions有啥用?(废话不多说,直接看效果!)
OK,so,很多刚接触的小伙伴可能会问,CI/CD到底是个啥?简单来说,CI就是持续集成(Continuous Integration),CD就是持续交付/部署(Continuous Delivery/Deployment)。它就像一个“流水线”,当你的代码一提交到GitHub仓库,这个流水线就会自动跑起来,帮你完成一系列任务:比如跑测试,看看你有没有写出bug,把代码打包,再给你扔到服务器上。想象一下,你只需git push,然后就可以去喝咖啡了,剩下的脏活累活GitHub Actions就全帮你搞定!是不是跟白嫖一个高级助理一样爽?!
怎么用GitHub Actions? 它原生集成在GitHub里,你不需要安装任何额外的软件,只需要在你的项目根目录新建一个 .github/workflows 文件夹,然后在里面写一个YAML文件,就搞定了!今天,我就带大家“手把手”配置一个最基础但超实用的CI/CD流水线!
第二章:实战配置!你的第一个自动化部署流水线!
接下来,咱们直接上干货!各位看官,请把你的眼睛瞪大一点,屏幕前的你,跟着我一起操作起来!这个教程保准比你看那些“油管怎么看”的卡顿视频要流畅多了!
第一步:创建工作流文件。
在你的项目根目录,创建一个路径:.github/workflows/deploy.yml。就命名为`deploy.yml`,简单明了!
第二步:编写YAML配置。
现在,把下面这段代码粘贴进去。我这里演示一个简单的Node.js项目自动部署到服务器的例子。别担心,我会逐行解释!
name: Node.js CI/CD to Server
on:
push:
branches: [ "main" ] # 当代码推送到main分支时触发
jobs:
build_and_deploy:
runs-on: ubuntu-latest # 在最新的Ubuntu系统上运行
steps:
- name: Checkout code
uses: actions/checkout@v4 # 检出你的代码
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18' # 使用Node.js 18版本
- name: Install dependencies
run: npm install # 安装项目依赖
- name: Run tests (optional but highly recommended!)
run: npm test # 运行你的单元测试
- name: Build project (if applicable)
run: npm run build # 构建项目,例如React/Vue的前端项目
- name: Deploy to Server via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }} # 你的服务器IP
username: ${{ secrets.SSH_USERNAME }} # SSH用户名
password: ${{ secrets.SSH_PASSWORD }} # SSH密码,或用key代替更安全
script: |
cd /var/www/your-app # 进入你的项目目录
git pull origin main # 更新最新的代码
npm install # 重新安装依赖
pm2 restart your-app # 重启你的应用 (如果你用pm2管理进程)
# 或者:systemctl restart your-app.service # 或者其他重启服务的命令
几点核心解释:
- `on: push: branches: ["main"]`:这表示当有人往`main`分支提交代码时,这个工作流就会被触发。
- `runs-on: ubuntu-latest`:在GitHub提供的最新Ubuntu虚拟机上执行这些任务。
- `steps`:这就是你的CI/CD流水线里的一个个“环节”或者“任务”。
- `actions/checkout@v4`:这是一个官方Action,用来把你的仓库代码拉取到GitHub Actions的环境里。
- `actions/setup-node@v4`:设置Node.js环境。
- `appleboy/ssh-action@master`:这是个第三方Actions,巨好用!它能通过SSH连接到你的服务器执行命令。
- `secrets.SSH_HOST`等:划重点!敲黑板!这些是你的敏感信息,千万不要直接写在YAML文件里!要去GitHub仓库的 `Settings -> Secrets -> Actions` 里添加!这个“GitHub Actions CI/CD流水线配置教程”里,安全是第一位的!
第三步:添加GitHub Secrets。
在你的GitHub仓库页面,点击 “Settings” -> “Secrets and variables” -> “Actions” -> “New repository secret”。
你需要添加以下三个 Secret:
- `SSH_HOST`:你的服务器IP地址。
- `SSH_USERNAME`:你的SSH登录用户名。
- `SSH_PASSWORD`:你的SSH登录密码 (或者使用 `SSH_PRIVATE_KEY` )。
第四步:提交代码,见证奇迹!
现在,把你的 `deploy.yml` 文件提交到 `main` 分支。`git add .` -> `git commit -m "Add GitHub Actions CI/CD"` -> `git push origin main`。
然后,回到你的GitHub仓库,点击 “Actions” 标签页,你会看到你的工作流已经在运行了!它会一步步执行你定义的任务。如果一切顺利,你的应用就自动部署到服务器上了!是不是超酷!
第三章:更多玩法与注意事项
OK,so,这是一个最基础的示例。GitHub Actions的功能非常强大,你可以自定义各种工作流:
- 多环境部署: 可以设置推送到`dev`分支部署到开发环境,推送到`main`分支部署到生产环境。
- 集成Docker: 构建Docker镜像,推送到Docker Registry,然后在服务器上拉取并运行。
- 发送通知: 部署成功或失败后,自动发送邮件、Slack或钉钉通知。
- 定时任务: 可以设置每天凌晨运行某个脚本进行数据备份。
注意事项:
- 安全性: 务必使用Secrets来存储敏感信息,不要明文写在YAML里。
- 幂等性: 确保你的部署脚本是幂等的,即重复运行多次也能得到相同的结果,不会造成副作用。
- 日志: 仔细查看Actions的运行日志,这是排查问题最重要的工具。
- 学习资源: GitHub Actions的官方文档非常详细,遇到问题多查阅。也可以搜索“GitHub Actions怎么用”来获取更多实战案例。
最后,我再次强调,自动化部署是现代开发不可或缺的一环!学会配置GitHub Actions,能大大提升你的开发效率和项目质量。赶紧去试试看吧!如果你在配置过程中遇到任何问题,欢迎在评论区留言,我们Eccfy社区的小伙伴们都会热心帮你!
好了,今天的分享就到这里!别忘了点赞、关注、收藏!咱们下期再见!Peace out!