本篇文章主要讲述调试流水线的过程中遇到的问题和解决方法,相信值得每一位调试过流水线的伙伴都看下。经验丰富的同学我们再复习一遍,刚开始学习的同学你更得要看了,这可是防踩坑指南哇。哈哈!
来说说今天很多同学在做流水线的时候遇到的一些问题,我把问题整理下来分享给更多的人。能少踩坑就少踩一点点。
遇到的问题一
+
同学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.*
@NonCPS
def GetJson(text){
def prettyJson = JsonOutput.prettyPrint(text)
new JsonSlurperClassic().parseText(prettyJson)
}
遇到的问题六
+
同学F:http request插件的返回结果是状态码,怎么拿到文本信息?
答:使用 response.content 获取的是文本信息,response.status获取返回的状态码。
遇到的问题七
+
同学G:声明式流水线具有从指定阶段重新运行功能,jenkins的api有提供这个功能么?
答:我很好奇,之前也有想法使用这个接口,但是后来不知道因为什么问题都忘记了。直接在浏览器中查看了下抓包数据,发现了接口的使用方式,还是比较简单的。直接发送一个Post请求和要运行的阶段名称就可以了。
遇到的问题八
+
同学H:choice选项,这个Abort可以自定义字符串吗?
答:没有参数可以修改。
遇到的问题九
+
同学I:是否遇到过类似的问题呢?Jenkins项目前几天触发的一直在构建,点❌还关闭不了[泪奔]。
答:告诉大家一个小技巧,不用重启。按照下面的操作试试:点击构建id,弹出当前构建的页面。然后在url后面加个kill 回车。强制关闭构建。
遇到的问题十
+
同学J:如何分割git地址中的仓库项目名称?
答:可以使用split进行分割然后通过索引获取数据。例如:
repoUrl = "http://gitlab.com/demo/demo-test-service.git"
projectName = repoUrl.split("/")[-1] - ".git"