如何在Jenkins作业执行中包含域用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Jenkins作业执行中包含域用户相关的知识,希望对你有一定的参考价值。

我正在自动化构建过程。该过程需要将应用程序部署到服务器,部署后必须执行一些脚本以共享和提供服务器的权限。当我通过powershell通过域用户登录时脚本运行。我正在使用Jenkins进行CI / CD过程。我想包含我的域凭据以在服务器上运行脚本。我也使用了活动目录插件,可以使用我的域凭据登录,但仍然无法与服务器建立远程连接。

我的剧本是

Enter-PSSession -ComputerName ATKT-WS-20
Invoke-Expression -Command .FolderSharingScript.ps1 

Enter-PSSession:连接到远程服务器ATKT-WS-20失败,并显示以下错误消息:WinRM无法处理请求。使用Kerberos身份验证时出现以下错误,错误代码为0x8009030e:指定的登录会话不存在。它可能已经被终止了。 可能的原因是: - 指定的用户名或密码无效。 -Kerberos在没有指定身份验证方法和用户名时使用。 -Kerberos接受域用户名,但不接受本地用户名。 - 远程计算机名称和端口的服务主体名称(SPN)不存在。 - 客户端和远程计算机位于不同的域中,两个域之间没有信任。检查上述问题后,请尝试以下操作: - 检查事件查看器以查找与身份验证相关的事件。 - 更改身份验证方法;将目标计算机添加到WinRM TrustedHosts配置设置或使用HTTPS传输。请注意,TrustedHosts列表中的计算机可能未经过身份验证

我还在trustedhosts中添加了机器名称。如何在Jenkins作业中包含域凭据?

答案

解决方案结果是根本不使用PowerShell的远程处理,而是依赖于Jenkins内置的远程处理:

  • 将作为Jenkins代理的远程计算机连接到Jenkins服务器,将代理可执行文件作为所需的域用户运行。
  • 在Jenkins服务器上,使用标签表达式确保将作业配置为在远程计算机上运行。
  • 假设安装了PowerShell插件,您可以按原样将PowerShell代码发送到远程计算机 - 无需PowerShell会话,凭据,......

以上是关于如何在Jenkins作业执行中包含域用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行Jenkins CI管道时屏蔽作为用户输入传递的密码?

如何将AWS实例的详细信息传递给jenkins作业,以便该作业在实例中ssh和执行

Jenkins 非特权用户如何从工作区下载文件?

如何执行 shell 命令来填充 Jenkins 动态选择参数插件

通过 Jenkins 执行 Newman(邮递员)作业(输出问题)

从 Jenkins 作业执行时如何使用 Ansible 报告分析 (ARA)