全网最细,Jenkins配合GitLab分支自动合并/自动创建(超细整理)

这篇具有很好参考价值的文章主要介绍了全网最细,Jenkins配合GitLab分支自动合并/自动创建(超细整理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

GitFlow工作流简介

Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护。

贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支。

特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在hotfix分支上进行,这样也有效避免了不同类型的开发工作在代码层级的耦合和干扰。

GitFlow工作流优化

hotfix和release的结果都要合并到master和develop中,为什么?因为它们的修改结果将持续影响这后续的开发和维护,必须合并以保证代码的一致性。

当线上项目需要版本回退,或者需要简单记录迭代版本时,我们常在master分支上打上 Tag 标签,例如:

功能发布:release_20190101_当月版本数
BUG修复:hotfix_20190101_修复次数
本文基于GitFlow工作流,将利用Jenkins配合GitLab实现以下自动化任务:

master分支代码更新后,自动将代码合并到develop分支
master分支代码更新后,自动在master分支提交中打 tag

Jenkins自动任务Job的创建

Jenkins是一个用Java编写的开源的持续集成工具,可以与Git打通,监听Git的merge, push事件,触发执行Jenkins的指定任务(job),例如执行单元测试。

更多的是:当代码变更时可以触发打包部署、性能测试、接口测试、监控、日志分析等。

项目发布的任何一个环节都可自动完成,无需太多的人工干预,有利于减少重复过程以节省时间和工作量等。

如何创建Jenkins Job

下面列出自动任务Jenkins Job的创建过程,供参考。创建过程如下:

首先,创建一个任务,输入名称,选择“构建一个自由风格的软件项目” 确定即可。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

General:填写项目名称及描述;Label Expression 是在Jenkins admin 中配置的节点(container, node),一个Label Expression 是一组docker,当多个不同的Job同时执行的时候,可以实现并行。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

源码管理:在Repository URL中填写GitLab中的项目地址;

Branches to build此处的Branch Specifier是触发Jenkins Job时由Jenkins自动拉取的代码的分支,可以填写一个固定的指定分支,如master,也可以写正则表达式。

另外,也可以填写${gitlabSourceBranch}。如果填写${gitlabSourceBranch},表示从git读取Merge Request的源分支,使用该变量,则不能手工点击Job的“立即构建”执行job了,因为读取不到这个变量只能通过git push事件触发了。

具体可以根据应用场景选择。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

构建触发器:下面截图中指定的是:仅当产生 push 事件时且目标分支为master时触发此job。这里可以根据需求来具体配置。

Filter branches by name:仅当目标分支为 master 时触发Job。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

构建环境 & 构建:构建环境勾选第一项指在每次构建开始之前先清空工作空间;构建中的Execute shell Command 中就可以配置我们自动化脚本。

我们可以把这些脚本放到项目根目录当中,也可以放到一个GitLab仓库当中,来统一管理脚本(文末附脚本示例)。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

构建后操作(Editable Email Notification):用于配置邮件提醒。

Disable Extended Email Publisher:勾选后,邮件就不发送;
Project Recipient List:收件人地址;多个收件人邮件地址用逗号进行分割;
Project Reply-To List:允许回复人的地址;默认为$DEFAULT_REPLYTO
Content Type:邮件文档的类型,可以设置HTML等格式;
Default Subject:默认邮件标题;也可以使用$DEFAULT_SUBJECT
Default Content:默认邮件内容,这里可以写HTML文件,引用Jenkins内部的一些变量;也可以使用默认内容:$DEFAULT_CONTENT
Attach Build Log:发送的邮件是否包含日志。
Triggers 中的配置需要注意下,一般配置为Job执行失败的时候发送邮件

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

Jenkins Job 如何与 Git 关联

在GitLab项目的Settings中找到如下图的配置:勾选“Active”,指定在Git Push 或 mr 创建/更新/合并时触发指定的 Jenkins url,Project name 为Jenkins 中配置的Job名称,用户名、密码是jenkins的账号和密码。

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

整体步骤梳理

GitLab上准备一个项目工程;
安装Jenkins以及相关的GitLab插件;
Jenkins配置GitLab访问权限;
Jenkins上创建一个Job,对应步骤1中的项目工程;
GitLab项目中配置Jenkins;
修改项目工程的源码,并提交到GitLab上;
检查Jenkins的构建任务是否会触发配置的脚本。

脚本示例

以下为master分支代码更新后,自动在master分支提交中打 tag的脚本示例,仅供参考:
( Tag 标签命名规则: release_当前日期_当月版本_当季度版本_当年版本 )

#!/bin/sh
echo **********************************Start********************************
date
# 获取最近一次远程 master 提交的 commit id
sha1=`git rev-parse remotes/origin/master^{commit}`
# 获取姓名及邮箱,来配置git提交者信息
name=`git show --pretty=%an $sha1 | awk 'NR==1{print}'`
email=`git show --pretty=%ce $sha1 | awk 'NR==1{print}'`
echo '################# 当前提交人信息:'
echo $name 
echo $email 
git config --global user.name $name
git config --global user.email $email

# 获取 merge 的源分支前缀
function getOriginPrefix(){
  # 获取分支所属
  info_sha1=`git show $sha1 | grep 'Merge:' | cut -d' ' -f3`
  info_branch=`git branch -r --contains $info_sha1`
  # 判断是否 hotfix 分支
  isHotfix=`echo "${info_branch}" | grep 'origin/hotfix'`
  if [ -n "$isHotfix" ]; then 
    echo 'hotfix'
  else
    echo 'release'
  fi
}
originBra=$(getOriginPrefix)
echo '################# 获取的源分支前缀为:' $originBra

# 获取最近一次创建的标签
latestTag=`git for-each-ref --sort=-taggerdate --format "%(tag)" refs/tags | grep $originBra | head -n 1`
# 获取最近标签的年
latestYear=`echo "${latestTag}" | awk -F_ '{print substr($2,1,4)}'`
# 获取最近标签的月
latestMonth=`echo "${latestTag}" | awk -F_ '{print substr($2,5,2)}'`
# 获取最近标签的季度
latestQuarter=`echo "${latestMonth}" | awk '{print int(($0-1)/3)+1}'`

# 获取当年
currentYear=`date +%Y`
# 获取当月
currentMonth=`date +%m`
# 获取当日
currentDay=`date +%Y%m%d`
# 获取当前季度
currentQuarter=`echo $currentMonth | awk '{print int(($0-1)/3)+1}'`

# 计算当月版本号
if [ $latestMonth -eq $currentMonth ]; then 
  currentMonthVersion=`echo "${latestTag}" | awk -F_ '{print $3+1}'`
else
  currentMonthVersion='1'
fi

# 计算当季度版本号
if [ $latestQuarter -eq $currentQuarter ]; then 
  currentQuarterVersion=`echo "${latestTag}" | awk -F_ '{print $4+1}'`
else
  currentQuarterVersion='1'
fi

# 计算当年版本号
if [ $latestYear -eq $currentYear ]; then 
  currentVersion=`echo "${latestTag}" | awk -F_ '{print $5+1}'`
else
  currentVersion='1'
fi

# 获取最终标签名 
newVersion=$originBra'_'$currentDay'_'$currentMonthVersion'_'$currentQuarterVersion'_'$currentVersion

# 创建标签
git tag -a $newVersion -m '提交人: '$name
git push origin --tags
newTag=`git tag -l | grep $newVersion`
echo '################# 最近创建的标签为:' $latestTag
echo '################# 自动计算的标签为:' $newVersion
echo '################# 自动创建的标签为:' $newTag
echo **********************************End**********************************
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

二、接口自动化项目实战

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

三、Web自动化项目实战

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

四、App自动化项目实战

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

五、一线大厂简历

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

六、测试开发DevOps体系

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

七、常用自动化测试工具

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

八、JMeter性能测试

代码自动合并 gitlab,软件测试,自动化测试从入门到精通,jenkins,jenkins,gitlab,软件测试,软件测试工程师,自动化测试,Jenkins持续集成,Python自动化测试

九、总结(尾部小惊喜)

不要让失败的阴影遮蔽你的信心,每一次努力都是迈向成功的步伐。坚持奋斗,雷打不动,你将创造出属于自己的辉煌与荣耀。相信自己,胜利就在不远处!

奋斗是拨开迷雾的坚定灯塔,勇往直前是闯过困难的钥匙。努力不止,梦想才能照亮未来的路途。相信自己的力量,努力奋斗,你将创造出无限可能!

在困苦与挑战中,培养坚韧的心态;在风雨与压力下,磨砺坚强的意志。相信自己的能力,勇往直前,你将超越自我,开启辉煌的人生篇章!文章来源地址https://www.toymoban.com/news/detail-765838.html

到了这里,关于全网最细,Jenkins配合GitLab分支自动合并/自动创建(超细整理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gitlab 合并分支代码到主分支上

    一、在 gitlab 项目中点击Branches(查看分支) 二、这时看到有24个滞后的提交  三、点击 Merge request 按钮  四、填写合并请求表单,等待核审; 这里主要是 2 步 1、选择 管理员  , 2、源分支 和 目标分支 要搞清楚;   五、提交完成后,会在这里显示;也可以对提交的请求进

    2024年02月11日
    浏览(49)
  • gitlab合并分支(网页版)

    进入对应 Projects ,点击 Merge Requests 合并请求,在右边的页面中点击 New merge request 在弹出的页面中,左边 Source branch 为写的新代码,右边 Target branch 为旧的代码,选择好点击 Compare branches and continue 注意 :在提交合并的最下面有个 Merge options 选项, Delete source ... 会在合并完成

    2024年02月16日
    浏览(44)
  • gitlab请求合并分支

    直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口: 仓库控制台的这两个地方都有合并请求入口。 点击 新合并请求 源分支与合并分支: Sourc

    2024年02月04日
    浏览(42)
  • Gitlab保护分支与合并请求

    目录 引言 1、成员角色指定 1、保护分支设置  2、合并请求 熟悉了Git工作流之后,有几个重要的分支,如Master(改名为Main)、Develop、Release分支等,是禁止开发成员随意合并和提交的,在此分支上的提交和推送权限仅限项目负责人或维护人员。开发人员如果功能模块测试完善,

    2024年02月11日
    浏览(45)
  • 全网最细,Python接口自动化测试websocket接口实战,即学即用......

    在python中,发送http请求,比较有名的是requests这个库;webservice的接口可以使用suds-py3来请求。那么websocket怎么请求呢? 其实在python中也有很多第三方库可以用来发送websocket请求。比如websocket-client, 那么接下来我们先来看看websocket-client这个库的使用。 Python接口自动化测试:

    2024年02月12日
    浏览(40)
  • 2023年全网最全最细最流行的自动化测试工具有哪些?

    随着测试工程师技能和工资待遇的提升,甚至有一部分的开发人员开始转入测试岗位,跨入自动化领域的测试攻城狮越来越多。在自动化测试领域,自动化工具肯定占据了核心的位置。 本文总结了常用的测试自动化工具和框架,这些工具和框架有助于更好地定位自己,以跟上

    2024年02月08日
    浏览(51)
  • gitlab合并新项目和分支切换

    1、创建空白项目   2、先创建一个群组    3、编写群组信息  4、创建群组完成以后新建项目 1、初始化 2、关联gitlab地址 3、查看是否关联成功 4、添加文件 5、提交到本地仓库 6、进行推送(注意推送分支) 7、查看结果 记得选择对应的分支 1、修改默认分支, 将默认分支修改成

    2024年02月12日
    浏览(72)
  • 【极狐 GitLab】在 web 端合并分支

    数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 极狐GitLab是GitLab DevOps平台的中国发行版,一套完备的一站式DevOps平台,从根本上改变了开发、安全和运维团队协作和软件构建方式。极狐GitLab从构思到生产发布,帮助团队提高生产效率,将迭代周

    2024年02月05日
    浏览(56)
  • jenkins gitlab多分支构建发布

    这个是新手教程,普及概念为主 公司现在还使用单分支发布测试环境和生产,多人协同开发同一个项目导致测试环境占用等待等情况 测试环境占用等待问题 测试环境代码直接合并到 master,容易导致误发布到生产的情况 避免多版本同时发布测试不完善的情况出现 中间件配置部署

    2024年02月14日
    浏览(34)
  • 全网最细最全Appium自动化测试 iOS入门教程,App自动化测试教程,精细整理

    目录:导读 一、MAC电脑上 Appium 的安装流程 二、流程图 三、下载AppiumServerGui和AppiumInspector 四、开始测试       1、真机测试                 1.1 准备工作                 1.2 获取 开发包 .app 结尾                 1.3 WebDriverAgent使用                 1.4 配置 Appium Inspec

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包