Jenkins 流水线 获取git 分支列表_交个朋友-献给流水线开发者的一份FAQ文档

11c1152c9b4f09182dc25baede6e709a.png

本篇文章主要讲述调试流水线的过程中遇到的问题和解决方法,相信值得每一位调试过流水线的伙伴都开看下。经验丰富的同学我们再复习一遍,刚开始学习的同学你更得要看了,这可能防踩坑指南哇。哈哈!

来说说今天很多同学在做流水线的时候遇到的一些问题,我把问题整理下来分享给更多的人。能少踩坑就少踩一点点。

遇到的问题一

同学A:之前通过Git参数获取分支信息,后面用python的gitlab库完成分支获取。

答:这位同学做的非常好,通过自己的研究完成了自己想要的结果。(估计很Happy)其实使用python在流水线中还是有些重的,为什么说有点重呢? 如果用python的库默认自带的还好些,现在linux都有python开发环境。而不是默认自带的库,需要手动安装更新维护成本的。 而HTTP方式会更轻一些。这里推荐使用httpRequest插件来完成HTTP接口调用。

遇到的问题二

同学B:想要使用凭据的明文内容进行操作,调试过程中屡次出现问题。通过credentials 无法获取凭据的明文信息。信息知道如何获取了,但是又出现了无法解析变量的问题。

答:这位同学真的很努力,在经过屡次失败后依然在不断调试。推荐一种在流水线中使用凭据的明文数据的方法。我经常这样使用。withCredentials {}语句块可以帮助我们实现,核心是通过凭据ID定位凭据,然后获取其原始的明文信息。这在流水线中经常用到,尤其是在自己写sharelibrary的过程中。例如:发送Http请求需要认证token。最后无法解析变量是因为单引号和双引号导致的,切记变量要用双引号。

遇到的问题三

同学C: jenkins sonar 扫描 vue项目代码,是不是只能用sonar-scanner的方式?

答: 是的,sonar官方提供了一些与第三方工具集成的插件,但其本身还是使用的sonar-scanner。 例如: 与maven集成的插件、JenkinsSonar插件等等。

遇到的问题四

同学D: Git Parameter参数无法获取分支信息。您现在拉取代码用的是什么参数哈?

答: 这个问题我之前也是遇到过,只是后来因为改变了项目的创建模式就不在研究了。这个插件参数实现的是获取Git仓库的分支和标签信息。默认你在项目中定义了SCM信息和Jenkinsfile的SCM信息,会出现最后获取的Jenkinsfile的代码库的分支信息。很明显我们要获取的项目的代码库中的分支信息。 所以这种情况下可以在参数的高级设置中指定代码库。 说说为什么我现在不用了,不是插件问题。而是在企业如果有了第三方的平台能够实现与此插件相同的功能,更稳定更简单些。还有一个主要的原因是我们配置的提交触发构建,需求变更触发构建可以将分支参数动态的传递给了项目,就不需要被动的获取了。

遇到的问题五

同学E:我在调试Harbor接口,字符串如何转换成json?

答: 可以使用readJSON 格式化数据,需要安装插件"Pipeline Utility Step "。 这个插件的使用方法可以在片段生成器中查看。非常好用,如果你介意安装插件那可以使用原生的解决方法。

//原生方法import groovy.json.*​@NonCPSdef GetJson(text){    def prettyJson = JsonOutput.prettyPrint(text)     new JsonSlurperClassic().parseText(prettyJson)}

遇到的问题六

同学F: http request插件的返回结果是状态码,怎么拿到文本信息?

答: 使用 response.content 获取的是文本信息,response.status获取返回的状态码。

遇到的问题七

同学G:声明式流水线具有从指定阶段重新运行功能,jenkins的api有提供这个功能么?

答: 我很好奇,之前也有想法使用这个接口,但是后来不知道因为什么问题都忘记了。直接在浏览器中查看了下抓包数据,发现了接口的使用方式,还是比较简单的。 直接发送一个Post请求和要运行的阶段名称就可以了。

遇到的问题八

同学E: choice选项,这个Abort可以自定义字符串吗?

答: 不可以的。

遇到的问题九

同学F:是否遇到过类似的问题呢? Jenkins项目前几天触发的一直在构建,点❌还关闭不了[泪奔]。

答:告诉大家一个小技巧,不用重启。按照下面的操作试试: 点击构建id,弹出当前构建的页面。然后在url后面加个kill 回车。强制关闭构建。

遇到的问题十

同学G: 如何分割git地址中的仓库项目名称?

答:可以使用split进行分割然后通过索引获取数据。例如:

repoUrl  = "http://gitlab.com/demo/demo-test-service.git"​projectName = repoUrl.split("/")[-1] - ".git"​

送给大家的话

今年上线的《DevOps流水线实践教程》已经销量突破300+,首先感谢各位伙伴的支持!希望大家通过《DevOps流水线实践教程》学习,活学活用,主要学习的是思路和实践的经验。多么希望每一位学员通过学习这门课程能够将把经验变成自己的,主要把经验拿下涨薪都是小问题。

点击扩展链接获取课程,交个朋友。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值