- 主题:怀念过去jenkins一把梭时代的ci/cd
首先, 对于90%的Java项目, Jenkins依然很好用
其次, "好处是,从头到尾,你不需要任何一台本地服务器,也没有任何重复性劳动" 这个目标用jenkins一把梭完全没问题
我们在生产环境有一套专用的Jenkins, 上线时直接在生产环境拉代码构建部署, 不需要学习任何新语言.
【 在 oldwatch 的大作中提到: 】
: 美好旧时光的CI/CD:
: 内网装个jenkins,鼠标点点从git拉代码,调maven/npm/...构建
: 写段脚本把生成结果上传服务器
: ...................
--
FROM 60.253.242.*
这算是最佳实践了, 最近几年的项目我都是这样做的
年初给一个微软云的客户做方案也是用的这个
不知担心在何处?
【 在 sayinger 的大作中提到: 】
: 这个,生产环境重新拉代码构建,不太好吧...
:
--
FROM 223.72.71.*
从仓库里pull的代码被改动?全自动的构建加部署,还有这个可能性?
【 在 guestking 的大作中提到: 】
: 担心代码被改动
: 如果pull之后再checkout一个之前打过的tag,那风险就会小很多了
: 我们这里现在的做法就是uat打包,测完没问题之后就直接把uat的镜像包推到生产,这
: ...................
--
FROM 117.136.38.*
git有分支和标签, 这块的管理其实非常稳妥, gitlab和gerrit这些都带分支的protect功能. 简单的项目就是做专用的release分支, 生产环境按head发布, 不可能出现加入意外代码的情况.
【 在 guestking 的大作中提到: 】
: 测试完成之后 到 上线之前
: master分支被提交了新的代码
:
--
FROM 60.253.242.*
生产和测试用的nexus私服肯定是同一个, 依赖的一致性没问题
在生产环境构建, 解决的问题是两个:
1. 减小传输代价. 因为是远程发布, 几十上百M的文件传输会占发布时间的大头. 对于一个项目十几个模块的完整发布, 这个代价太大了, 如果有紧急修复, 根本等不起.
2. 生产隔离. 生产环境对研发和测试可以做到完全隔离. 那些在本地构建的, 你是可以把一部分参数配到脚本里, 但是你的jar包war包里面几乎是一定会带着生产配置. 用远程构建可以很好避免这个问题.
【 在 sayinger 的大作中提到: 】
: 那你得确保所有的依赖都是稳定的,不仅仅是你自己的代码。
: 其实既然在测试环境已经完成了构建,直接拷贝到生产环境不是更直接么
:
--
FROM 60.253.242.*
我觉得我们说的不是一件事, 我说的是java项目跟镜像一分钱关系没有,
另外紧急修改不重新build, 莫非是要登shell换class? 逗我玩么, 现在都是jar发布你拿什么去换?
【 在 sayinger 的大作中提到: 】
: 设计好镜像分层可以在很大程度上解决这个问题,否则你扩容的时候也会存在镜像传输过大的问题。
: 你说的这种配置,恐怕认为是代码更合适,无非写到哪里而已,否则只要修改就得重新build,岂不是更重,紧急调整的时候更等不起,或者是所谓“根本没打算改”的配置。没看出隔离了什么,传输源代码跟镜像的区别而已
--
FROM 60.253.242.*
这么说, 你们应该是在代码仓库里维护了各个环境的配置了, 生产环境换一个profile就可以用?
【 在 guestking 的大作中提到: 】
: 我知道,不过既然uat环境已经打包好了,最稳妥的办法还是直接用
: 没必要再打一次包
:
--
FROM 60.253.242.*
我的原则是代码仓库里不留配置
各个环境的访问权限是一把钥匙, 各个环境的服务配置是另一把钥匙, 拿到代码就等于拿到了后者
而员工总是会离职的, 离职了代码99%会留一份, 这个代码说不准什么时候手一抖就上github了
我倾向于不让他们有犯错误的机会
【 在 oldwatch 的大作中提到: 】
: 大部分都是这样干的吧
:
: 最多敏感信息拉到环境变量里
: ...................
--
FROM 60.253.242.*
各有各的好处
Gitlab CI我也用, 我拿它去构建不同发行版的deb, 但是我不会用它去搞java项目.
Jenkins是很老, 但是很好用, jenkins也有ci
【 在 sayinger 的大作中提到: 】
: 应该是在每个环境有单独的slave,不过话说gitlab ci就蛮好用的,jenkins太老了
:
--
FROM 60.253.242.*
本地构建都是有缓存的, 依赖没变就不会走传输
【 在 guestking 的大作中提到: 】
: 网络传输慢的确是个问题
: 但是你直接在成产环境上面build镜像,不是也一样要从网上下基础景象吗?
:
--
FROM 60.253.242.*