8-17

上一篇提到:

删除后面的用户验证部分,错误还是同样发生。说明还未进行用户验证,在http://localhost:8089/cli这个端口访问时出问题,现在还在排查。

命令是这样的:

java -jar jenkins-cli.jar -s http://localhost:8080/ --username XXX --password XXX

接下来,猜想未验证用户的原因可能是jar包本身没有--username和--password参数,导致后面的部分被忽略,于是更新jar包,果然在新jar包在java7下无法运行,然后升级java7->java8,成功。

排查问题的关键在于删除username参数同样得到403错误,说明后面部分未被验证。


这个问题解决,接下来需要使用非UI形式创建jenkins-job,考虑最简单的配置文件方法,即写好需要的config.xml文件,然后复制到对应的jenkins_home文件夹下,jenkins启动后会自行读取生成job。

docker cp指令拷贝文件到container,但是发现拷贝进入container的文件所有者和群组变成了root:root,google后发现jenkins2确实会将拷入文件所有者和群组默认更改,那么在保证安全,不转root用户的条件下,无法使用docker cp完成工作。

咨询林老师后我们采用curl请求的方式发送config文件:

curl -X POST http://192.168.99.100:8088/createItem?name\=TestCreate --user twars:twars --data-binary "@config.xml" -H "Content-Type:text/xml"

发现jenkins2下权限不足,google后发现:

Jenkins by default has CSRF Protection enabled which prevents one-click attacks.you need to obtain the crumb from/crumbIssuer/api/xml,using your credentials and include it into your request.

需要先得到crumb token然后进行请求,但是所有请求都是如此,所以无法先用请求的方式获取crumb token,于是此路不通。

最后还是采用volume映射的方式,pair成功,但是在我自己的云上,因为默认使用root权限创建docker,所以文件映射后还是出现权限问题,接下的工作就是创建普通用户再走一遍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容