How to include domain user in Jenkins Job execution

1

I am automating a build process. The process requires deployment of application to a server, after deployment a few scripts have to be executed to share and provide permissions on the server. The scripts run when I login via domain user through powershell.I am using Jenkins for the CI/CD process. I want to include my domain credentials to run the scripts on the server. I have also used the active directory plugin, and can login with my domain credentials but still I am not able to establish a remote connection with the server.

My script is

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

Enter-PSSession : Connecting to remote server ATKT-WS-20 failed with the following error message : WinRM cannot process the request. The following error with errorcode 0x8009030e occurred while using Kerberos authentication: A specified logon session does not exist. It may already have been terminated.
Possible causes are: -The user name or password specified are invalid. -Kerberos is used when no authentication method and no user name are specified. -Kerberos accepts domain user names, but not local user names. -The Service Principal Name (SPN) for the remote computer name and port does not exist. -The client and remote computers are in different domains and there is no trust between the two domains. After checking for the above issues, try the following: -Check the Event Viewer for events related to authentication. -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport. Note that computers in the TrustedHosts list might not be authenticated.<

I have also added the machine name in the trustedhosts. How can I include the domain credential in Jenkins jobs?

windows
powershell
jenkins
dns
continuous-deployment
asked on Stack Overflow Feb 26, 2018 by LeleGaurav

1 Answer

0

The solution turned out to be not to use PowerShell's remoting at all, but instead rely on the remoting built into Jenkins:

  • Connect the remote machine as a Jenkins agent to the Jenkins server, running the agent executable as the desired domain user.

  • On the Jenkins server, ensure that your job is configured to run on the remote machine, using a label expression.

  • Assuming the PowerShell plugin is installed, you can then send PowerShell code as-is to the remote machine - no need for PowerShell sessions, credentials, ...

answered on Stack Overflow Feb 28, 2018 by mklement0

User contributions licensed under CC BY-SA 3.0