我有一个使用stable Jenkins Helm chart和BlueOcean插件的CI系统。
在我的SCM系统(BitBucket服务器)中,我有一个配置了SSH密钥的Jenkins构建用户。
我想做的是使用SSH密钥引导Jenkins安装,以便在配置BlueOcean管道时,身份验证可以无缝处理。实际上,我必须进入要构建的存储库,并添加对BlueOcean生成的SSH密钥的访问权限。这显然是不理想的,因为它为要配置的每个 构建管道增加了一个额外的手动步骤。
Jenkins Helm图表文档在Agent.volumes
中指定了一个values.yaml
值,该值可用于装入(例如)包含SSH密钥的Kubernetes机密。但是,这是 agent 配置,因此大概可以允许来自构建代理(例如,来自Jenkinsfile)的SCM身份验证。我要做的是将密钥引导到Jenkins master 中。
我看到有一个Master.CredentialsXmlSecret
,它允许包含凭证XML文件的Kubernetes机密,但是有关此文档的文档很少(或不存在)。
有人用这种SSH配置在Kubernetes / Helm上设置Jenkins吗?
* Edit:因此,通过登录到Jenkins并手动设置SSH密钥,然后复制生成的credentials.xml
文件,并通过{{1 }}编码,将其添加为Kubernetes机密,然后将其绑定到Jenkins Helm图表的credentials.xml
中的base64
。之后,我的Jenkins实例加载了Master.CredentialsXmlSecret
文件(values.yaml
)。凭据似乎没有正确加载到Jenkins UI中,但我认为我走在正确的轨道上。
答案 0 :(得分:1)
您可能可以通过对bitbucket的API调用来进行设置,以设置SSH密钥。 API 1.0就是这样
$ curl --user <USER>:<PASSWORD> -X POST \
https://bitbucket.org/api/1.0/users/<USER>/ssh-keys \
--data-urlencode "key=<PUBLIC_KEY>" \
--data-urlencode "label=<LABEL>"
文档here或API 2.0:
$ curl -X POST -H "Content-Type: application/json" \
-d '{"key": "ssh-ed25519 ...."}' \
https://api.bitbucket.org/2.0/users/<USER</ssh-keys
记录here
不确定您要查找哪种类型的权限,但您可能需要a repo SSH key pair获得Jenkins Blue Ocean管道。
无论哪种情况,您都必须使用entrypoint脚本构建您的自定义docker映像,该脚本将拾取生成的ssh密钥并将其发布到您要发布的任何位置。