stage('Deployment') {
steps {
withCredentials([string(credentialsId: 'Test', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
powershell '$pass = ConvertTo-SecureString -AsPlainText "${PASSWORD}" -Force'
powershell '$SecureString = "${pass}"'
powershell '$MySecureCreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "${USERNAME}","${SecureString}"'
powershell 'New-PSSession -ComputerName 192.123.123.123 -Credential "${MySecureCreds}"'
}
powershell 'Copy-Item "${ARTIFACT_PATH}" -Destination "${DESTINATION_PATH}" -ToSession -Recurse -Force'
powershell 'Start-Process "iisreset.exe" -NoNewWindow -Wait'
powershell 'Remove-Website -Name WebCareRecord'
powershell 'Remove-WebAppPool WebCareRecord'
powershell 'Get-WebBinding -Port 85 -Name WebCareRecord | Remove-WebBinding'
powershell 'Start-Process "iisreset.exe" -NoNewWindow -Wait'
powershell 'New-WebAppPool -Name WebCareRecord'
powershell 'Set-ItemProperty "${POOL_PATH}" managedPipelineMode 0'
powershell 'Set-ItemProperty "${POOL_PATH}" managedRuntimeVersion ""'
powershell 'New-WebSite -Name WebCareRecord -Port 85 -PhysicalPath "${PHYSICAL_PATH}" -ApplicationPool WebCareRecord'
powershell 'Start-Process "iisreset.exe" -NoNewWindow -Wait'
}
}
我正在尝试获取Jenkins凭据ID,对其进行保护,并使用相同的凭据登录到远程服务器。登录到远程服务器后,将工件从Jenkins服务器复制到远程服务器。为此我得到错误
org.jenkinsci.plugins.credentialsbinding.impl.CredentialNotFoundException:凭据“Test”的类型为“Username with password”,其中应为“org.jenkinsci.plugins. plaincredit.StringCredentials”。
2条答案
按热度按时间dsf9zpds1#
可能会有很多问题,我现在正在经历类似的过程,并感受到在groovy中正确使用powershell的痛苦,所以这是我到目前为止注意到的:
你在一个powershell步骤中创建了一个
$pass
变量,然后试图在另一个powershell步骤中访问它,我不认为它会以这种方式工作,因为另一个步骤可能会在不同的powershell会话中启动,并且powershell变量不再存在。我会尝试这样的东西:
首先,使用多行语法
"""
,这样不同的powershell语句在同一个会话中,并且这些变量可以跨powershell命令使用。第二,对powershell变量
\$pass
和\$SecureString
进行转义,这样groovy就不会尝试展开它们,并且不会对实际引用groovy变量(如$PASSWORD
)的变量进行转义。请注意,$PASSWORD
不一定要用引号括起来,因为powershell参数可以接受不带引号的字符串,但如果在方法中使用了这一点,则应该将其放在引号SomePowershellMethod("$GROOVYVAR")
中。一般来说,我建议在故障排除时回显每个变量,以查看是否得到了预期的结果。
j5fpnvbx2#
我喜欢简短而准确的回答。
使用以下内容: