如何将Jenkins用户身份验证详细信息"传递"到使用Jenkins API创建作业的脚本?

Hen*_*kSN 63 api curl token jenkins

我有一个脚本,通过curl HTTP调用删除和重新创建作业,我想摆脱任何硬编码的"用户名:密码".例如curl -X POST $url --user username:password

注意事项:

  • Jenkins CLI(可能不是一个选项).一个应该能够实现与Jenkins API相同的CLI(创建作业等),但据我所知,Jenkins CLI不适合我,因为创建的作业只会在重启后出现在Jenkins中或"重新加载" "从磁盘配置",这将取消任何其他正在运行的作业.

  • API令牌.无法找到如何获取用户令牌,然后将其作为参数传递给脚本,但这可能是一个解决方案..

小智 78

试试这种方式:(例如删除作业)

curl --silent --show-error http://<username>:<api-token>@<jenkins-server>/job/<job-name>/doDelete
Run Code Online (Sandbox Code Playgroud)

api-token可以从中获得http://<jenkins-server>/user/<username>/configure.

  • 作为管理员,如何在不登录的情况下为我以外的用户获取API令牌?当我访问你引用的页面时,我看到的只是"令牌被隐藏". (6认同)

小智 26

这对我有用:

curl -u $username:$api_token -FSubmit=Build 'http://<jenkins-server>/job/<job-name>/buildWithParameters?environment='
Run Code Online (Sandbox Code Playgroud)

可以从Jenkins用户配置获取API令牌.

  • 作为管理员,如何在不登录的情况下为我以外的用户获取API令牌?当我访问Jenkins用户配置时,我看到的只是"令牌被隐藏". (4认同)
  • 我正在使用Active Directory进行身份验证,它似乎不允许我以本地用户身份登录以查看令牌. (2认同)

lin*_*fox 7

我需要在CURL命令中显式添加POST:

curl -X POST http://<user>:<token>@<server>/safeRestart
Run Code Online (Sandbox Code Playgroud)

我也安装了SafeRestart插件,以防万一.


mal*_*cot 6

  • 使用Jenkins CLI,您不必重新加载所有内容 - 您只需加载作业(update-job命令).您不能使用CLI,AFAIK的令牌 - 您必须使用密码或密码文件.

  • 用户的令牌名称可以通过http://<jenkins-server>/user/<username>/configure- 按下"显示API令牌"按钮获得.

  • 这是一个关于如何使用API​​令牌的链接(它使用wget,但curl非常相似).

  • 作为管理员,如何在不登录的情况下为我以外的用户获取API令牌?当我访问你引用的页面时,我看到的只是"令牌被隐藏". (2认同)