「JENKINS-PIPELINE」- 实践经验

场景 | 针对 Jenkinsfile 约定

避免过度封装 | 我们选择将 Shell 命令放在 Jenkinsfile 中而非封装到共享库中,以便于阅读、审查、修改、调参等等。

遵照事实需求 | 根据现实应用需求来设计 Jenkinsfile 文件,避免过度设计而加入不必要的功能及代码。

放弃完美主义 | 至少在 Jenkinsfile 开发这件事情上,我们必须放弃完美主义(很难优雅),以实现功能为主。

常规流程

环境配置
单元测试
源码编译
制品创建
应用部署

场景 | 分离部署与发布

问题

经常有开发反馈: Jenkins 构建成功了,通过“发现”代码不是最新的。

抛开研发“发现”方法的质疑,我们是否可以引入一些方法来确保最新代码已发布?

分析

我们将通过分析 CI 的流程,来找到潜在的问题:

  • 在 CI 中,我们仅实现 Helm Chart 部署,但是并未检测服务是否启动成功。

方案

[WIP] 在 Jenkins Pipeline 中,尝试分离部署与发布