持续交付 36 讲
王潇俊
携程系统研发部总监
39203 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
开篇词 (1讲)
结束语 (1讲)
持续交付 36 讲
15
15
1.0x
00:00/00:00
登录|注册

36 | 快速构建持续交付系统(三):Jenkins 解决集成打包问题

在上一篇文章中, 我和你一起利用开源代码平台 GitLab 和代码静态检查平台 SonarQube 实现了代码管理平台的需求。那么,我今天这篇文章的目的,就是和你一起动手基于 Jenkins 搭建集成与编译相关的系统。

Jenkins 的安装与配置

Jenkins 这个开源项目,提供的是一种易于使用的持续集成系统,将开发者从繁杂的集成工作中解脱了出来,使得他们可以专注于更重要的业务逻辑实现。同时,Jenkins 还能实时监控集成环境中存在的错误,提供详细的日志文件和提醒功能,并以图表的形式形象地展示项目构建的趋势和稳定性。
因此,在携程,我们选择 Jenkins 作为了代码构建平台。而为了用户体验的一致性,以及交付的标准化,携程针对 Java、.net 等用到的主要语言,为开发人员封装了对于 Jenkins 的所有操作,并在自研的持续交付平台中实现了整个持续交付的工作流。
而如果是第一次搭建持续交付系统,我建议你不用像携程这样进行二次开发,因为 Jenkins 本身就可以在持续交付的构建、测试、发布流程中发挥很大的作用,完全可以满足你的搭建需求。而且,它提供的 Pipeline 功能,也可以很好地驱动整个交付过程。
所以,在这篇文章中,我就以 Jenkins 为载体,和你分享如何搭建集成与编译系统。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《持续交付 36 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • knightray
    请教一个问题。在Jenkins Pipeline的实践中,每次Merge Request都会触发一次构建,开发团队在bug修改中会频繁提交代码,比如一个20多个开发团队一天可能要提交50多次代码。如果每次提交都会触发自动构建,是否意味着每次都会自动部署到测试环境,那这样过于频繁的自动部署不是会干扰到测试同学的测试吗?请指教,谢谢。

    作者回复: 这个问题还是要回到本源的代码分支上来说,master是用来合并发布测试的,feature分支是功能开发和测试的,完全可以先功能发布测试,再master集成测试.这样master的部署就减少了,也稳定.也是为什么会有fat和uat两套环境的原因

    4
  • Mr.Difference
    这才是干活。可惜结束了。

    作者回复: 其实我倒不这么认为,绝大部分内容在官方文档都有,而且更详细。搭建系统应该说是最不困难的事 反而是完成搭建基本工具后,真正去深入了,就会碰到之前文章的内容,届时,希望你能再往前翻翻,寻找合适的答案:)

    3
    4
  • 骨汤鸡蛋面
    老师,我们这边使用jenkins pipeline 串联了拉代码、maven编译、制作镜像、触发k8s调度等,但带来的问题是,发布高峰期jenkins 拥堵,若是采用容器化的方式将jenkins 容器化,又会带来拉取maven缓存、及缓存不一致的问题。所以一直有冲动使用google jib 等方式,将代码到镜像一步到位,您怎么看?

    作者回复: 可以参考专栏里,构建加速那篇,有讲到这个问题的

    2
  • 铭熙
    Jenkins master的ha,走sharding的话用什么策略呢?按部门?按应用类型?求详细的方案,谢谢。

    作者回复: 都可以的,注意避免热点就可以了

    1
  • 铭熙
    Jenkins高可用有什么好的方案?

    作者回复: Jenkins本身就是master slave架构,只要保证master的ha就可以了,比较简单,sharding,热备都可以,携程是docker+sharding,master可以有多个,slave是按需拉起实例

    1
  • 帅气小黑
    统一版本号这块有啥好的方案啊?

    作者回复: 我们是在平台上产生的版本号,由平台控制

    2
  • 戴斌
    我们现在通过kubernetes插件把jenkins的主从都放到k8s中了,性能提高了很多。在考虑jenkins master多节点的场景,Master之间有共享存储,但是其他的状态怎么同步了?
    1
  • 长歌
    老师,merge request事件checkout源分支是怎么做到的,基于branchName配置不是只能指定规则内的分支么,build时会构建所有符合规则的分支,而不是提交merge request请求的分支?
    1
  • 追风筝的文鱼
    请教一个问题。 用gitlab runner和用Jenkins做cicd,各自有什么优缺点呢?如何取舍?
    归属地:安徽
  • woods
    请问Android和IOS的打包,除了用Mac机器还有其他方式吗? 需要打包的项目有很多,而打包机只有一个。
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部