如何在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和执行
如何执行 shell 命令来填充 Jenkins 动态选择参数插件