Jenkins使用中的一些问题处理
如何获取凭据密码
因为需要部署一台新的服务器,有些项目需要迁移过来,但是在原服务器上配置的Jenkins凭据密码已经忘记了,也没找到记录,所以需要从原来的Jenkins里获取密码。
放狗搜到腾讯云文档的这篇《jenkins获取凭据密码的方法》,试了一下确实可以:
打开Jenkins的“系统管理”-“脚本命令行”,输入以下脚本:
com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{
it.properties.each{prop, val->println(prop+' = "'+ val+'"')};
println("-----------------------");
}
注意,上面的脚本较原文有所修改,因为凭据多的时候原脚本有bug,不会显示分隔线,导致分不清哪个密码是哪个账号的。这里修复了这个bug。
如何配置Gradle代理
因为需要在一台内网服务器上的Jenkins里用Gradle构建项目,但是在Jenkins里配置代理无效,Gradle仍然无法下载依赖包。
先是在Jenkins的系统管理>System
里配置了HTTP proxy config>setup
,指定代理的地址和端口,这个代理只对Jenkins本身有效,可以下载安装Gradle。
顺便说一下在Jenkins里下载安装Gradle的配置:
在Jenkins的系统管理>全局工具配置
里的Gradle安装>新增Gradle
,指定一个name例如为Gradle
,再指定自动安装>Gradle xxx
,其中xxx为版本号。
后来又搜到一个说法是需要配置环境变量,在系统管理>全局属性>环境变量
里新增一对键值:name为GRADLE_OPTS
,值为-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port>
,其中
但是仍然不行。
正确的配置应该是这样:
在项目的配置里找到Build steps>Invoke Gradle Script
,在高级配置里增加System properties
和Project properties
:
http.proxyHost=<host>
http.proxyPort=<port>
https.proxyHost=<host>
https.proxyPort=<port>
这样Gradle在构建的时候就可以通过代理下载了。
如何导出导入job
因为需要将一个Jenkins里的任务复制到另一个Jenkins里,但是又懒得手工重配。问了ChatGPT半天,在错误的道路上越走越远,最后还是老狗靠谱,给了一个SO的回答Export/import jobs in Jenkins解决了。
首先到Jenkins的“系统管理”-“Jenkins命令行接口”(在靠下面的“工具和动作”里),在页面的第一行可以找到jenkins-cli.jar
的下载链接,把它下载到本地,然后使用如下的命令行操作:
java -jar jenkins-cli.jar -s http://<your-jenkins-server-url> -auth "<user>:<password>" get-job <jobname> > <jobname>.xml
其中<your-jenkins-server-url>
是你的jenkins服务器地址,不过可能是因为安全原因,这个地址必须是本地地址,如果要操作远程服务器上的Jenkins,请用SSH tunnel映射到本地,否则会报错。<user>:<password>
是用户名密码,用双引号是防止密码里有特殊字符。<jobname>
是任务名。
这样就可以导出一个XML格式的任务配置文件。不过实际上这个文件可以直接在浏览器里下载:
http://<your-jenkins-server-url>/job/<jobname>/config.xml
导入就只能用命令行了:
java -jar jenkins-cli.jar -s http://<your-jenkins-server-url> -auth "<user>:<password>" create-job <jobname> < <jobname>.xml
注意导出导入XML文件前面的管道符号“>”和“<”。
推送到[go4pro.org]