要把持续集成(CI)直接推演到持续部署(CD),光有工具链是不够的;必须把代码、测试、制品、环境以及监控全部链入同一条可追溯的流水线,才能在提交瞬间把价值送到用户手中。
在代码进入主干之前,流水线必须完成三件事:编译、单元测试、制品存储。缺一不可,否则后续的部署环节会出现不可预期的回滚。
mvn -B clean package 完成全量编译,生成唯一 SHA 标识的 JAR 包。${GIT_COMMIT},确保每一次部署都能回滚到该版本。从制品到生产环境的迁移,需要把部署、验证、监控闭环化。典型做法是把预生产环境当作“防火墙”,在这里完成金丝雀发布、健康检查以及回滚策略的演练。
deployment.yaml,自动同步到预生产集群。// 简化版 Jenkinsfile
pipeline {
agent any
stages {
stage('Build') { steps { sh 'mvn -B clean package' } }
stage('Test') { steps { sh 'mvn test' } }
stage('Publish') { steps { sh 'curl -u $NEXUS_USER:$NEXUS_PASS -T target/app.jar http://nexus/repo/$GIT_COMMIT.jar' } }
stage('Deploy') { steps { sh 'argocd app sync my-app --revision $GIT_COMMIT' } }
}
}
真正的全链路自动化不是把“手动点一下”换成“脚本点一下”,而是让每一次提交都自带回滚、监控和安全审计。
参与讨论
这个流程跑通一次真省心,我们上次发布终于没翻车了👍
要是测试环境和生产环境配置不一致,这整套不就白搭了?
金丝雀发布那段写得蛮清楚的,感觉可以照着抄作业。
我们公司还卡在手动部署,看到这都馋哭了
ArgoCD 的自动同步会不会把有问题的配置也推上去啊?