持续集成高级篇之Jenkins cli与Jenkins ssh (2)

我们可以看到,使用token的方式登陆会导致命令行非常长,严重影响命令可读性,其实我们可以把auth信息保存到一个文件文件里.我在Jenkins安装目录/war/WEB-INF目录下创建了一个名为password.txt的文本文件,内容如下

tylerzhou:11f52cef1324556a41d966083ffcf0ac1b

也即上面auth里输入的用户名:apitoken

这时我们在-auth选项里 通过指定@文件名方式指定包含用户名(密码或token)的文件来实现登陆.

代码如下

java -jar jenkins-cli.jar -s :8080 -auth @password.txt

以上@后面的password.txt即为我们创建的密码文件

SSH方式登陆Jenkins执行cli

使用SSH方式登陆Jenkins需要进行配置,默认情况下jenkins SSHD port使用的是一个随机端口号,这样显然不利于ssh登陆,使用ssh登陆我们需要显式知道端口号是多少.我们打开Manage jenkins>Configure Global Security找到SSH Server栏,把默认random选项切为fixed然后输入一个同用端口号,我使用的是16022配置完成后点击保存.端口配置好了,我们还需要添加公钥到当前用户配置项,请参照上面使用api token登陆一节,进入到当前用户设置界面,这次我们不配置apitoken,而是往下拉找到SSH Public Keys选项,把我们生成的ssh公钥复制到这里.关于生成ssh key请参阅其它资料或者前面章节,这里不再赘述.

完成以后,我们就可以通过ssh方式执行命令了.

输入以下命令

ssh -l tylerzhou -p 16022 localhost help

其中-l指定的用户为我们登陆jenkins时的账户.
如果配置成功,以上命令就会列出所有的Jenkins 命令和简短介绍.

ssh执行的命令和上面通过jenkins-cli.jar执行的命令是一样,可以互相参照.

对jenkins cli进行简单封装 使用bat简单封装

可以看到,以上执行cli不论是通过工具还是ssh,每次都需要带上一些固定的登陆信息,非常烦,我们可以进行一下简单的封装,这样每次只需要输入命令,不再需要每次重复输入固定内容

我们把它封装成个bat命令,命令如下

@echo off cls :start set /p arg="请输入您的命令: " java -jar jenkins-cli.jar -s :8080 -auth @password.txt %arg% goto start

以上命令产首先创建一个start标签,然后提示用户输入命令,输入以后传到的jenkins cli工具里,然后执行goto语句跳到start标签.以上命令会重复执行,想要终止需要按下ctrl+c来终止

使用powershell脚本进行封装

由于笔者对bat不是很熟练,因此写起复杂脚本感觉比较费劲,这里使用powershell进行一下封装,支持清屏,查看执行状态和退出选项,脚本内容如下

[System.Console]::ForegroundColor=[System.ConsoleColor]::Green $writeout= " 退出请按1或者输入exit 清屏请按2或者输入cls或者clear 查看执行状态请按3 查看帮助请输入help 查看提示信息请按4" Write-Host $writeout [System.Console]::ForegroundColor=[System.ConsoleColor]::White while ($true) { $myvar=Read-Host "请输入命令 " if(($myvar -eq 1)-or($myvar -eq "exit")){break} elseif (($myval -eq 2) -or ($myvar -eq "cls") -or($myvar -eq "clear")) { Clear-Host } elseif ($myvar -eq 3) { if($LASTEXITCODE -eq 0){ Write-Host "执行成功" }else{ [System.Console]::ForegroundColor=[System.ConsoleColor]::Red Write-Host "执行失败" [System.Console]::ForegroundColor=[System.ConsoleColor]::White } } elseif($myvar -eq 4){ [System.Console]::ForegroundColor=[System.ConsoleColor]::Green Write-Host $writeout [System.Console]::ForegroundColor=[System.ConsoleColor]::White } else { java -jar jenkins-cli.jar -s :8080 -ssh -user tylerzhou $myvar.split(" ") } }

大家创建一个ps1文件,把以上内容复制进去然后按提示操作,便可以执行脚本了.

windows 没有ssh客户端的问题

有些童鞋在跟着做上面的ssh方式登陆时,可能在命令行输入ssh会提示找不到命令,这是因为只有最新版本的windows 10(不是所有的版本都有).幸运的是,Jenkins-cli.jar也提供了ssh登陆方式.我们输入以下命令

java -jar jenkins-cli.jar -s :8080 -ssh -user tylerzhou help

通过以上方式指定ssh方式登陆,并指定-user,不需要指定端口,便可以使用ssh方式连接了.我们可以使用上面讲到的封闭方法简单的封闭一下,这样就不用每次都输入重复的,固定的内容了.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxszd.html