问题描述
在Jenkinsfile中想要调用Jenkins CLI。他考虑使用shell指令并通过客户端JAR文件来调用CLI。不过,他不确定如何获取客户端JAR文件,除了使用wget进行下载之外,是否有更好的方法。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
用户希望在Jenkinsfile中调用Jenkins CLI。不过,他可以通过其他方法来实现这一目标,而不是使用shell指令和客户端JAR文件。用户可以在Declarative Jenkinsfile的script
块(或在Scripted Jenkinsfile的任何地方)中访问整个Jenkins Java API,因此不需要通过shell指令调用客户端JAR文件。
以下是在Jenkinsfile中调用Jenkins CLI命令的示例:
pipeline {
agent any
stages {
stage('Call Jenkins CLI') {
steps {
script {
def cli = new CliBuilder(
usage: 'jenkins-cli',
header: 'Jenkins CLI',
footer: '',
width: 80,
ansi: false
)
cli.with {
h(longOpt: 'help', 'Show help')
u(longOpt: 'url', args: 1, 'Jenkins server URL')
p(longOpt: 'port', args: 1, 'Jenkins server port')
auth(longOpt: 'auth', args: 2, 'Jenkins username and password')
if (parse(args)) {
if (options.help) {
usage()
return
}
if (options.url && options.port && options.auth) {
// Call Jenkins CLI command here
sh "java -jar /path/to/jenkins-cli.jar -s ${options.url}:${options.port} -auth ${options.auth[0]}:${options.auth[1]} <cli-command>"
} else {
println "Usage: jenkins-cli -u <Jenkins URL> -p <Jenkins port> -auth <username>:<password> <cli-command>"
}
}
}
}
}
}
}
}
在这个示例中,我们创建了一个Jenkins流水线,其中有一个阶段(stage)用于调用Jenkins CLI。在script
块中,我们使用CliBuilder
来定义CLI参数,然后解析这些参数,并根据参数值调用相应的Jenkins CLI命令。
请注意,用户需要替换示例中的<Jenkins URL>
、<Jenkins port>
、<username>
、<password>
和<cli-command>
为实际的Jenkins服务器URL、端口、用户名、密码和要调用的CLI命令。
以上方法能够在Jenkinsfile中直接调用Jenkins CLI命令,而不需要使用客户端JAR文件。用户可以根据自己的需要自定义CLI参数和命令。
正文完