我正在尝试将发布管道转换为多阶段 YAML 管道,并且遇到了 AzureFileCopy@4 任务的问题。当我在发布管道中运行任务时,任务成功并且文件被复制到远程 VM。当我在多阶段 YAML 管道中运行任务时,任务失败。具体来说,任务中的以下命令失败:
New-PSSession -ComputerName 'vmname.eastus.cloudapp.azure.com' -Port 5986 -Authentication Default -Name '68fe512f-477d-4d56-9217-5ab84517a53b' -Credential $credential -UseSSL -ErrorAction 'SilentlyContinue' -ErrorVariable sessionErrors -ConfigurationName 'microsoft.powershell'
生成的错误消息是:
Connecting to remote server vmname.eastus.cloudapp.azure.com failed with the following error message : Access is denied.
我不怀疑 WinRM 配置有问题,因为我在发布管道中连接得很好。鉴于错误和命令,我会说它是凭据,但我一遍又一遍地查看它们,它们完全相同。
NSG 上的入站规则将 WinRM 端口 5986 对任何源开放,因此似乎没有限制哪些机器可以启动新的 pssession。
2020 年 12 月 22 日更新
下面是失败的阶段的净化版本。文件副本主要在我的构建阶段起作用,但在它是使用部署作业的部署阶段的一部分时不起作用
- stage: deploy
jobs:
- deployment: DeployR50
displayName: Deploy R50 App
pool:
vmImage: 'windows-latest'
environment:
name: 'QA'
resourceName: 'Test'
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: '$(Pipeline.Workspace)\R50\*'
azureSubscription: 'Joe MSDN Azure'
Destination: 'AzureVMs'
storage: 'mytest'
resourceGroup: 'TEST'
MachineNames: 'Test'
vmsAdminUserName: '***'
vmsAdminPassword: $(VM_PASSWORD)
TargetPath: 'c:\R50'