第4节、Jenkins使用问题常见

Jenkins

[TOC]

前言

天啊,没遇到问题之前,你永远不知道我下面要讲的这些点是多么多么的重要。你只要稍微不注意,就会导致你所有的正确操作都变成错误。

Jenkins管理员密码忘记的解决办法

首先明确,不管是初始密码,还是找回管理员密码都是从共享--Jenkins--Home中处理,目录结果如下:
jenkins_Home

admin密码更改忘记情况

1.删除Jenkins目录下config.xml文件中下面代码,并保存文件。

1
2
3
4
5
6
7
8
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>

2.重启Jenkins服务 http://localhost:8080/restart

附:重新加载配置信息 http://localhost:8080/reload

3.进入首页>“系统管理”>“Configure Global Security”;

4.勾选“启用安全”;

5.点选“Jenkins专有用户数据库”,并点击“保存”;

6.重新点击首页>“系统管理”,发现此时出现“管理用户”;

7.点击进入展示“用户列表”;

8.点击右侧进入修改密码页面,修改后即可重新登录。

参考:忘记Jenkins管理员密码的解决办法

一、文件路径问题

Jenkins脚本中,不能使用桌面路径:

本地cd目录注意:

1
2
3
4
5
# 错误cd
# cd /Users/lichaoqian/Desktop/TestScript # 不能使用桌面路径,执行构建时候Jenkins会提示 `cd: /Users/lichaoqian/Desktop/TestScript: Not a directory`

# 正确cd
cd /Users/lichaoqian/Project/Test/TestScript

二、权限问题

1、问题例子

将在终端中已验证通过的如下脚本,放到Jenkins上执行。

问题例子1:文件修改
1
2
cd /Users/lichaoqian/Project/Test/TestScript
chmod -R 777 ./0000.txt

执行后,Jenkins的log如下:

Jenkins权限问题log

很显然这是个权限问题。

问题例子2:钥匙串Keychain解锁

同理的当你执行钥匙串Keychain的时候也会有权限问题

1
security unlock-keychain -p "lichaoqian" "/Users/lichaoqian/Library/Keychains/login.keychain"

unlock-keychain_1_JenkinsScript

执行后,Jenkins的log如下:

unlock-keychain_1_JenkinsErrorLog.png

1
2
3
4
5
[TestScript] $ /bin/sh -xe /Users/Shared/Jenkins/tmp/jenkins2455609193418764900.sh
+ security unlock-keychain -p lichaoqian /Users/lichaoqian/Library/Keychains/login.keychain
security: SecKeychainUnlock /Users/lichaoqian/Library/Keychains/login.keychain: Write permissions error.
Build step '执行 shell' marked build as failure
Finished: FAILURE

很显然这也是个权限问题。

2、权限问题分析

参考文章:iOS开发-自动化打包Jenkins集成的文章开头就有讲到。

原因:Jenkins打开姿势不对!

如果你构建的工程,是在/Users/Shared/Jenkins工作目录下,那么就会有权限问题。

如果你构建的工程,是在/Users/[user name]/.jenkins工作目录下,才不会有权限问题。

  • 错误的:有权限问题的Jenkins workspace目录

有权限问题的Jenkins workspace目录

  • 正确的:无权限问题的Jenkins workspace目录

无权限问题的Jenkins workspace目录

  • 如何验证你当前项目点击构建后的工作目录是哪里呢?

    答:直接构建,然后去查看你的项目显示在哪里啊。

3、权限问题解决(正确的启动Jenkins姿势)

在使用正确的启动Jenkins之前,我们先来认识下下面的这个org.jenkins-ci.plist文件。它的位置 /Library/LaunchDaemons/org.jenkins-ci.plist 如下:

正确的启动Jenkins姿势

没有权限问题的Jenkins正确的启动方式如下(按下面方式打开,才不会出现权限问题):

1
2
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
$ java -jar /Applications/Jenkins/jenkins.war --httpPort=8080

当你执行完这两行命令的时候,你可以在浏览器上输入http://localhost:8080来访问Jenkins了。(如果你只执行了第一行,没执行第二行,会出现无法访问)

4、解决后的结果显示

  • 4.1、脚本内容

脚本内容

  • 4.2、脚本执行结果

脚本执行结果

至此,你的权限问题已完美解决。

休息一下

三、其他权限问题

  • Jenkins问题解决方案:

解决:进入mac 系统偏好设置 — 用户与群组 — 其他用户 — jenkins ,勾选允许用户管理这台电脑

unlock-keychain_Write permissions error

勾选选项。

unlock-keychain_3_JenkinsSolve

四、Jenkins权限问题其他解决方法(未实践)

  • 未实践方式1(都未实践):

Jenkins执行脚本提示没有权限的解决办法 未实践,因为已经通过上述正确的启动Jenkins来解决了。所以这里没去实践。不过看内容应该是可行的。后续有时间再补充。

  • 未实践方式2(看了应该无效):

提高Jenkins用户权限,详见《Terminal -> 终端命令使用.md》中的用户相关操作。应该无效