jenkins持续集成从0入门到实战【七】分支构建和Webhook自动化构建

简介: 本篇给大家分享企业中比较实用的分支构建和自动化构建

按分支发布

在实际开发过程中,一般会使用Git Flow流程开发,多个迭代伴随着多个分支,比如develop、release、master等分支,所以存在发布同分支代码的情况。

image.png

选择指定分支发布,需要借助Git Parameter插件,也就是参数化构建中可选Git参数,插件安装如下:

image.png

image.png

image.png

image.png

保存后,点击构建,此时可以看到目前我们的代码只有一个master分支,就算你配置的默认值是develop,也不会显示出来。

image.png

image-20210213150614439.png

image.png

image.png

分支新建完成后,再次构建

image.png

修改test分支的返回代码,develop分支的不做改动,我们来看2个分支发布后的不同效果

image.png

image.png

先构建test分支,再构建develop分支,并在浏览器地址访问,查看不同分支的构建效果是否成功

image.png

image.png

上面我们介绍了按照分支发布,但是分支发布具有一定的局限性,是属于一个粗粒度较大的发布方式,所以在企业中更多的会选择Tag(标签)进行发布,Tag更具备追溯性,回滚控制会更加简单。

Tag一般用来做里程碑式的存档,比如阿里开源的Nacos框架,其中就有v1.1.0、v1.2.0

2种创建tag的方式(命令行、Git托管平台界面)

# 创建tag,并推送
$ git tag dev_20210221_01
$ git push origin --tags

image.png

image.png

注意:Tag不跟随分支,是独立在分支之外的,你在master打了一个名为A的tag,在develop分支打了一个名为B的tag,都叫tag,是存了当前代码的一份快照,但tag并不是挂靠在某一个分支。

image.png

image.png

Gitee中的标签列表

image.png

image.png

参数构建过程继续选择Git参数,并命名,参数类型选择标签

image.png

源码管理中指定参数名称

image.png

点击构建查看效果

image.png

构建后分别访问浏览器查看构建后效果

扩展:

  1. Git按照tag构建时企业中使用非常广泛的构建方式,同时由于Git天生具备快照功能,就算git打错,发布出错了也可以即时发布上一个Tag达到回滚的效果,这招非常强大,在以往我们使用SVN时,并未使用Tag的功能,而是将每个文件打好标签放在backup中,回滚时使用shell脚本将历史存档的jar包取回重启,这个操作虽然也能实现回滚,但很显然没有Git的标签功能强大。
  2. 参数化构建的配置页,高级选项也是非常不错的,如下图:

    image.png

    image.png

  3. have a good time

webhook自动构建

背景:在企业中,我们非常频繁的将代码推送到Git服务器上,如果要看到最新代码生效,需要手动去点击jenkins构建,这样的操作非常繁琐,但是jenkins提供了webhook自动构建的能力。

webhook:是指HTTP回调,GitHub、GitLab、Gitee、Codeup、Coding等各个平台都有提供有相应的回调机制,比如我push代码后,触发某一个回调,我merge代码后触发某一个回调。

各大平台的webhook如下:

image.png

image.png

image.png

  1. jenkins安装gitee插件,其他平台略有差异,但原理一样

    image.png

  2. 配置码云webhook对应push事件执行jenkins构建

    去除参数化构建,同时设置为构建指定分支

    image.png

    image.png

    由于触发构建需要外网回调支持,我们在本地演示没有公网IP或域名,此时需要借助内网穿透工具来实现,为了快速演示效果,这里我推荐使用钉钉穿透工具,使用步骤如下

    • 在安装jenkins的机器上下载工具

      # clone下载
      $ git clone --depth=1 https://github.com/open-dingtalk/pierced.git
      
      # 必须在外层目录授权
      $ chmod -R 777 pierced

      image.png

      # 运行如下命令 ,jungejenkins是你的二级域名前缀,越复杂越好
      ./ding -config=./ding.cfg -subdomain=jungejenkins 8777

      image.png

    • 如果你的jenkins部署在windows机器上,则使用CMD命令行进入目录运行即可

      # 使用cmd的方式进入该目录
      $ cd F:\install\pierced\windows_64
      
      # 运行如下命令 ,jungejenkins是你的二级域名前缀,越复杂越好
      ding -config=ding.cfg -subdomain=jungejenkins 8777

      image.png

    • 在浏览器上访问域名:http://jungejenkins.vaiwan.com,根据你的二级域名前缀来哦

      image.png

  3. 配置码云

    image.png

  4. 测试构建,3秒后你会看到jenkins已经触发了自动构建,但此时构建会出现失败的错误,如下:

    image.png

    该错误主要是由于gitee模拟的push测试参数问题导致,接下来我们手动进行修改代码推送测试

  5. 手动修改代码,并进行提交推送操作

    $ git clone http:xxx
    # 切换到develop分支,修改指定代码
    $ git add .
    $ git commit -m "push自动构建测试"
    $ git push
  6. 观察jenkins已经自动触发构建,并且构建成功,在浏览器访问查看效果,到此webhook自动构建完成

总结

本篇所讲的分支构建和自动化构建是企业中较为常见的构建方式,能覆盖大部分的发布常见

目录
相关文章
|
16天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
48 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
15天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
39 2
|
3天前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
6天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
27 4
|
16天前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
44 4
|
15天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
31 2
|
16天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
27 2
|
24天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
1月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
30天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
48 0