在Jenkins工作中使用ansible galaxy与私有gitlab repo的凭据

在Jenkins工作中使用ansible galaxy与私有gitlab repo的凭据,git,jenkins,credentials,ansible-galaxy,Git,Jenkins,Credentials,Ansible Galaxy,我需要在ansible galaxy中安装一组角色 - src: 'https://gitlab.private/role-openstack-net.git' scm: 'git' version: '1.0.0' name: 'role-openstack-net' - src: 'https://gitlab.private/role-openstack-subnet.git' scm: 'git' version: '1.0.0' name: 'role-ope

我需要在ansible galaxy中安装一组角色

- src: 'https://gitlab.private/role-openstack-net.git'
  scm: 'git'
  version: '1.0.0'
  name: 'role-openstack-net'

- src: 'https://gitlab.private/role-openstack-subnet.git'
  scm: 'git'
  version: '1.0.0'
  name: 'role-openstack-subnet'
实际上,我有大约20个角色

所有角色都是私有的,因此当我运行时:

ansible-galaxy install -f -c -r galaxy.yml
它要求我提供每个角色的用户/通行证,这有点麻烦

我手动执行以下操作:

git config --global credential.helper store
我输入一次我的凭证,然后它就会记住它

但是詹金斯的工作我该怎么做呢

我看到这里有一种放置代币的方式:

但这似乎不是工作


有什么想法吗?

目前不支持在运行时将凭证参数传递到ansible galaxy

可以将凭据添加到
requirements.yml
中,但一般来说,将凭据添加到代码中并不理想,因为有一天其他人可能会利用它们

解决方案是在运行时更新
requirements.yml

通过查看您的配置文件并更新设置来创建Gitlab个人访问令牌:

使用您选择的机密管理器在运行时使用令牌设置变量PAT_令牌

在Jenkins脚本中,在ansible galaxy安装之前,使用
sed
更新
requirements.yml

sed -i "s#https://gitlab.private/#https://oauth2:$PAT_TOKEN@gitlab.private/#g requirements.yml
如果您使用的是Gitlab ci而不是Jenkins,则可以使用现有ci令牌:

sed -i "s#https://gitlab.private/#https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.private/#g requirements.yml