元数据卡
- 前置知识:全链路基本概念(上一页)
- 预计时间:8 分钟
- 完成标志:能理解 CI/CD 的基本概念,能看懂一个 GitHub Actions workflow 文件
你的进度
你手动走完了全链路。但第二天你又改了一行代码——你重复了五步操作:git push、mvn clean package、docker build、docker push、ssh server、docker pull、docker restart……
"我能不能写一个脚本,让我推完代码它就全自动走完?"你问。"我不想再手敲这七条命令了——我总会漏掉一条的。"
问题:手动操作总会出错
你手动推送了一次,成功了。但第二天你又改了一行代码——然后重复了六步操作。第三天,你忘了一步。线上挂了。
"手动做第二次就是错的。"工坊主人说。"你要让机器替你走这些路。"
CI/CD 是什么
CI(Continuous Integration,持续集成):每次你推送代码,自动编译、测试、打包。
CD(Continuous Deployment,持续部署):在 CI 的基础上,自动部署到服务器。
GitHub Actions 是最流行的 CI/CD 工具之一。你在项目里加一个配置文件,每次 git push,GitHub 会自动运行你定义好的步骤。
在项目根目录创建 .github/workflows/deploy.yml:
name: Deploy
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Build Docker image
run: docker build -t hello-atlas:${{ github.sha }} .
- name: Log in to GHCR
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Push image
run: |
docker tag hello-atlas:${{ github.sha }} ghcr.io/${{ github.repository }}:latest
docker push ghcr.io/${{ github.repository }}:latest每次你 git push 到 main 分支,GitHub 就会自动:
- 拉取你的代码
- 安装 JDK 17
- 用 Maven 编译打包
- 构建 Docker 镜像
- 登录到 GitHub Container Registry
- 推送镜像
你可以去 GitHub 仓库页面的 Actions 标签页,看到每次构建的实时日志。
常见陷阱
GitHub Actions 构建失败,但本地能跑?
检查 GitHub Actions 的 Ubuntu runner 环境是否和你本地一致。常见的坑:GITHUB_TOKEN 权限不足——需要在 repo Settings → Actions → General 里启用读写权限。检查 .github/workflows/ 目录名拼写正确(是 workflows 不是 workflow)。
旅人笔记
CI/CD 就是让机器替你做完"编译→测试→打包→部署"的重复劳动。每次 git push,你的代码自动完成从编辑器到可运行服务的全过程。
→ 下一步:部署到服务器
把代码推送到仓库只是中间一站。最终目标是让用户能访问到它。