在Jenkins Job中使用ansible-galaxy的凭证和私人gitlab repo

Jul*_*oro 9 git credentials jenkins 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-openstack-subnet'
Run Code Online (Sandbox Code Playgroud)

在实际情况中,我有大约20个角色.

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

ansible-galaxy install -f -c -r galaxy.yml
Run Code Online (Sandbox Code Playgroud)

它要求我为每个角色提供用户/通行证,这有点令人烦恼

手动,我这样做:

git config --global credential.helper store
Run Code Online (Sandbox Code Playgroud)

我输入我的凭证一次,然后它会记住它

但是我应该怎样做詹金斯的工作呢?

我在这里看到有一种放置令牌的方法:

https://github.com/ansible/ansible/pull/34621

但它似乎没有用.

任何的想法 ?

Ste*_* E. 6

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

可以将凭据requirements.yml添加到.

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

通过查看您的个人资料并更新设置来创建 Gitlab 个人访问令牌: https://private.gitlab/profile/personal_access_tokens

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

在您的 Jenkins 脚本中用于sed更新requirements.yml之前ansible-galaxy install

sed -i "s#https://gitlab.private/#https://oauth2:$PAT_TOKEN@gitlab.private/#g requirements.yml
Run Code Online (Sandbox Code Playgroud)

如果您使用 Gitlab-ci 而不是 Jenkins,则可以使用现有的 ci 令牌:

sed -i "s#https://gitlab.private/#https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.private/#g requirements.yml
Run Code Online (Sandbox Code Playgroud)