我们使用 Jenkins 在 Windows 和 Linux 上测试我们的软件。我们的 Jenkins 服务器(未安装任何数据驱动器)在我们的一台 Windows 机器上启动 Jenkins 从属作业,然后该作业需要从需要使用不同用户凭据安装的网络驱动器获取数据。
所以我需要类似的东西
net use \\server\share /u:username PASSWORD
copy data
问题是我不想PASSWORD
在我的 Jenkins 执行脚本中写入。
在 Linux 上,我们使用 SSH 密钥文件和 scp 来实现这一点,但在 Windows 上,与之等效的是什么?
答案1
您可以使用 Jenkins 内置的“凭据”存储来实现这一点。只需创建一个新的“凭据”对象(类型:用户名和密码),然后 -
如果这是流水线作业:
withCredentials([usernamePassword(credentialsId: 'MyCredentialsObjectId', passwordVariable: 'CREDS_P', usernameVariable: 'CREDS_U')]) {
bat """
net use \\server\share /u:%CREDS_U% %CREDS_P%
REM copy data...
"""
}
如果这是一项自由式工作,请配置在“构建环境”部分中使用的凭证对象 - 然后以相同的方式使用批处理步骤。
凭证将在 Jenkins 内部安全保存,绝不会出现在代码中。此外,Jenkins 将通过将用户名和密码替换为星号 (***) 来确保凭证不会泄露到控制台输出中。