在Jenkinsfile中获取Jenkins CLI

90次阅读
没有评论

问题描述

在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参数和命令。

正文完