场景 | 针对 Jenkinsfile 约定
避免过度封装 | 我们选择将 Shell 命令放在 Jenkinsfile 中而非封装到共享库中,以便于阅读、审查、修改、调参等等。
遵照事实需求 | 根据现实应用需求来设计 Jenkinsfile 文件,避免过度设计而加入不必要的功能及代码。
放弃完美主义 | 至少在 Jenkinsfile 开发这件事情上,我们必须放弃完美主义(很难优雅),以实现功能为主。
常规流程
环境配置
单元测试
源码编译
制品创建
应用部署
场景 | 分离部署与发布
问题
经常有开发反馈: Jenkins 构建成功了,通过“发现”代码不是最新的。
抛开研发“发现”方法的质疑,我们是否可以引入一些方法来确保最新代码已发布?
分析
我们将通过分析 CI 的流程,来找到潜在的问题:
- 在 CI 中,我们仅实现 Helm Chart 部署,但是并未检测服务是否启动成功。
- …
方案
[WIP] 在 Jenkins Pipeline 中,尝试分离部署与发布