代码之家  ›  专栏  ›  技术社区  ›  LeleGaurav

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

  •  1
  • LeleGaurav  · 技术社区  · 8 年前

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

    我的脚本是

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

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

    我还将机器名添加到trustedhosts中。如何在Jenkins jobs中包含域凭据?

    1 回复  |  直到 8 年前
        1
  •  0
  •   mklement0    8 年前

    结果证明,解决方案是不使用 PowerShell 的远程处理,但是 依靠内置的远程处理 詹金斯 :

    • 将远程计算机作为Jenkins代理连接到Jenkins服务器,以所需的域用户身份运行代理可执行文件。

    • 在Jenkins服务器上,确保使用标签表达式将作业配置为在远程计算机上运行。

    • 假设已安装PowerShell插件,则可以按原样将PowerShell代码发送到远程计算机-无需PowerShell会话、凭据等。。。

    推荐文章