8-17

作者: 汪之涛 | 来源:发表于2017-08-18 09:36 被阅读0次

    上一篇提到:

    删除后面的用户验证部分,错误还是同样发生。说明还未进行用户验证,在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,所以文件映射后还是出现权限问题,接下的工作就是创建普通用户再走一遍。

    相关文章

      网友评论

          本文标题:8-17

          本文链接:https://www.haomeiwen.com/subject/ysmorxtx.html