0

我正在尝试将发布管道转换为多阶段 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'
4

1 回答 1

0

根据你的描述,你可以在release pipeline中成功运行这个任务,所以VM设置是正确的。

根据我的测试,我尝试将管道导出到 Yaml,它仍然可以正常工作。

您可以尝试以下步骤来检查您的 Yaml 管道:</p>

  • 当您导出 Yaml 文件时,您可以直接将文件上传到 repo,而不是复制代码。

在此处输入图像描述

然后,当您创建 Yaml 管道时,您可以使用 现有的 YAML 文件

  • 在输出的 yaml 文件中,需要检查是否有多余的空格或特殊字符。

此问题可能是由错误的用户名和密码引起的。

  • 您可以尝试在 yaml 管道中手动重新添加此任务并检查它是否可以工作。
于 2020-12-17T07:14:51.173 回答