首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >必备: 流水线中常用的DSL方法

必备: 流水线中常用的DSL方法

作者头像
DevOps云学堂
发布2019-12-24 16:36:05
发布2019-12-24 16:36:05
1.4K0
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成

1 readJSON 处理Json数据

若要使用readJSON方法需要安装Pipeline插件,很方便解析Json数据。可以读取文件或文本。具体的用法:

代码语言:javascript
复制
def response = readJSON text: "${response.content}"
println(response[0]['name'])

还可以使用原生的Groovy方法,注意添加@NonCPS。(否则出现Json序列化问题)

代码语言:javascript
复制
//原生方法
import groovy.json.*

@NonCPS
def GetJson(text){    
def prettyJson = JsonOutput.prettyPrint(text)     
new JsonSlurperClassic().parseText(prettyJson)
}

2 withCredentials

可通过凭据ID读取Jenkins系统中配置的凭据,当在流水线的执行过程中需要用到敏感信息都可以先使用凭据存储,再使用此插件以变量的方式使用。

下面演示读取一个token:

代码语言:javascript
复制
withCredentials([string(credentialsId: "xxxxx", variable: "sonarToken")]) {    
println(sonarToken)
}

3 checkout

使用checkout检出代码。

代码语言:javascript
复制
//Git
//需要传递分支、凭据、仓库地址
checkout([$class: 'GitSCM', branches: [[name: "brnachName"]],             
doGenerateSubmoduleConfigurations: false,             
extensions: [], submoduleCfg: [],             
userRemoteConfigs: [[credentialsId: "${credentialsId}",             
url: "${srcUrl}"]]])

检出SVN代码

代码语言:javascript
复制
//Svn
//需要传递分支、凭据、仓库地址
checkout([$class: 'SubversionSCM', additionalCredentials: [],             
filterChangelog: false, ignoreDirPropChanges: false,             
locations: [[credentialsId: "${credentialsId}",             
depthOption: 'infinity', ignoreExternalsOption: true,             
remote: "${svnUrl}"]], workspaceUpdater: [$class: 'CheckoutUpdater']])

4 publishHTML

使用此插件可以展示html报告,例如单元测试报告、自动化测试报告。

代码语言:javascript
复制
publishHTML([allowMissing: false,         
alwaysLinkToLastBuild: false,         
keepAll: true,         
reportDir: './report/',         
reportFiles: "a.html, b.html",         
reportName: 'InterfaceTestReport',         
reportTitles: 'HTML'])

5 input

input可以以交互的方式控制流水线。例如用过交互的方式让用户选择是否要进行部署?

其参数可以是选项参数、多项选择参数、字符参数等。

代码语言:javascript
复制
def result = input  message: '选择xxxxx',                     
ok: '提交',                    
parameters: [extendedChoice( description: 'xxxxx',                                                 
descriptionPropertyValue: '',                                                 
multiSelectDelimiter: ',',                                                 
name: 'failePositiveCases',                                                 
quoteValue: false,                                                 
saveJSONParameterToFile: false,                                                 
type: 'PT_CHECKBOX',                                                 
value: "1,2,3",                                                 
visibleItemCount: 99)]   
println(result)

6 BuildUser

使用此方法可以获取当前构建用户的信息。

代码语言:javascript
复制
wrap([$class: 'BuildUser']){            
echo "full name is $BUILD_USER"            
echo "user id is $BUILD_USER_ID"            
echo "user email is $BUILD_USER_EMAIL"
}

7 httpRequest

在调用其他系统的接口时必备的工具。

代码语言:javascript
复制
ApiUrl = "http://xxxxxx/api/project_branches/list?project=${projectName}"
Result = httpRequest authentication: 'xxxxxxxxx',                         
quiet: true,                          
contentType: 'APPLICATION_JSON' ,                           
url: "${ApiUrl}"

往期内容推荐

PPT:基于Jenkins实现需求与代码基线关联

新生:编写Jenkinsfile常用的Groovy语法

新生:Jenkins Pipeline基础语法篇(PPT)

新生:Jenkins入门基础篇(PPT)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 readJSON 处理Json数据
  • 2 withCredentials
  • 3 checkout
  • 4 publishHTML
  • 5 input
  • 6 BuildUser
  • 7 httpRequest
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档