使用 Windows 客户端从网络设备复制数据

fpn*_*ick 5 windows network-shares credentials jenkins

我们正在使用 Jenkins 在 Windows 和 Linux 上测试我们的软件。我们的 Jenkins 服务器(没有安装任何数据驱动器)在我们的一台 Windows 机器上启动一个 Jenkins 从属作业,然后需要从需要使用不同用户凭据安装的网络驱动器获取数据。

所以,我需要类似的东西

net use \\server\share /u:username PASSWORD
copy data
Run Code Online (Sandbox Code Playgroud)

问题是我不想写PASSWORD在我的 Jenkins 执行脚本中。

在 Linux 上,我们为此使用 SSH 密钥文件和 scp,但在 Windows 上的等效项是什么?

小智 4

为此,您可以使用 Jenkins 内置的“Credentials”存储。只需创建一个新的“凭据”对象(类型:用户名和密码),然后 -

如果是管道作业:

withCredentials([usernamePassword(credentialsId: 'MyCredentialsObjectId', passwordVariable: 'CREDS_P', usernameVariable: 'CREDS_U')]) {
    bat """
        net use \\server\share /u:%CREDS_U% %CREDS_P%
        REM copy data...
    """
}
Run Code Online (Sandbox Code Playgroud)

如果它是自由式作业,请配置要在“构建环境”部分中使用的凭证对象 - 然后以相同的方式使用批处理步骤。

凭证将安全地保存在 Jenkins 内部,并且永远不会出现在代码中。此外,Jenkins 将通过用星号 (***) 替换用户名和密码来确保凭据不会泄露到控制台输出。