GitHub Actions 自动化 CI/CD 全流程指南(含部署)

一、CI/CD 让发布不再痛苦

每次手动打包、上传、重启,既慢又容易出错。用 GitHub Actions 把这套流程自动化,push 代码即触发构建部署,本文给一套可直接抄的模板。

二、核心概念

  • Workflow:一个自动化流程,存放在 .github/workflows/。
  • Job:一组步骤,可并行或依赖。
  • Step:具体执行命令。
  • Runner:执行环境(GitHub 托管或自托管)。

三、一个 Java 项目 CI 模板

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with: { java-version: '17', distribution: 'temurin' }
      - run: mvn -B package
      - uses: actions/upload-artifact@v4
        with: { name: app, path: target/*.jar }

四、加个 CD:自动部署到服务器

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4
        with: { name: app }
      - name: scp to server
        uses: appleboy/scp-action@v1
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          key: ${{ secrets.KEY }}
          source: "*.jar"
          target: "/opt/app/"
      - name: restart
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          key: ${{ secrets.KEY }}
          script: systemctl restart myapp

五、常用技巧

  • 缓存依赖:actions/cache 缓存 Maven/~/.m2,构建提速明显。
  • 矩阵构建:matrix: { java: [17, 21] } 多版本验证。
  • 条件触发:on: { push: { branches: [main] } } 只跑主分支。

六、踩坑提示

  • 密钥放 Settings → Secrets,别硬编码。
  • 自托管 Runner 注意安全,别让公开仓库跑特权脚本。
  • 超时默认 6 小时,长构建设 timeout-minutes。

结语

CI/CD 的价值不在酷,在于”稳定可重复”。先把构建自动化,再逐步加部署,循序渐进。

上一篇 宝塔面板 vs Docker:哪种部署方式更适合你?
下一篇 AI 前沿:2026 大模型技术趋势与开发者应对
最新评论
Docker 网络模式详解:bridge/host 生产选型 - FSData
Docker 网络模式详解:bridge/host 生产选型 - FSData
8月20日
[…] 注意最后那条:把端口绑定到 127.0.0.1,再由宿主机上的 Nginx 反代进来,比直接 -p 80:80 暴露安全得多,也方便统一做
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
8月20日
[…] Pinia 的工程化用法,可以参考我们之前的实战文章 《Vue3 组合式 API + Pinia:状态管理从入门到实战》,那里覆盖了 Sto
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
8月19日
[…] 状态,点一下就能起停容器,配合我们讲过的 Docker Compose 编排 […]
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
8月19日
[…] 缓存三大坑的本质都是”缓存失效导致请求穿透到数据库”。记住口诀:穿透用布隆、击穿用锁、雪崩用错峰。配合合理的过期策略
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
8月19日
[…] Docker 镜像部署。结合我们之前写的 Docker Compose 一键编排实战,可以在 CI […]