Jenkins中使用凭证执行docker login Artifactory失败原因排查
问题原因及解决办法
核心原因
从日志能直接定位两个关键问题:
- 你的Jenkins任务开启了「仅保留指定的环境变量」(Only Keep Specified Environment Variables)功能,这个规则会自动清理未加入白名单的环境变量,包括凭证绑定生成的
ARTIFACTORY_USER和ARTIFACTORY_PASSWD,导致shell命令里拿不到这两个凭证变量。 - 因为凭证变量缺失,
docker login命令没有获取到有效的用户名和密码,触发了交互式登录流程,但Jenkins的执行环境是非TTY设备,所以抛出「Cannot perform an interactive login from a non TTY device」错误。
解决步骤
- 要么关闭「仅保留指定的环境变量」选项,要么在该选项的白名单中添加
ARTIFACTORY_USER和ARTIFACTORY_PASSWD两个变量,确保凭证能正常传递到shell执行步骤中。 - 检查凭证绑定配置,确认任务中绑定的是"Docker_artifactory_creds",且变量名确实是
ARTIFACTORY_USER和ARTIFACTORY_PASSWD(避免拼写错误)。 - 调整
docker login命令为非交互式写法,更适配Jenkins的执行环境:echo "${ARTIFACTORY_PASSWD}" | docker login artifacts.some_custom.com -u "${ARTIFACTORY_USER}" --password-stdin
内容的提问来源于stack exchange,提问作者JaSON
相关产品推荐
相关产品推荐

