无法从 Yaml Azure Devops 管道运行脚本

时间:2021-06-06 14:04:14

标签: azure-devops azure-pipelines-yaml azure-devops-yaml

我的 Yaml Azure Devops 管道在运行脚本时失败。

情况

我在 Tuto-BuildDeploy 存储库中有此脚本:

trigger:
- none
 
pool:
  vmImage: windows-latest

resources:
  repositories:
    - repository: TutoDeploy
      ref: main
      type: git
      name: Tuto-Deploy

jobs:
 - job: checkout
   steps:
   - checkout: self
   - checkout: TutoDeploy

 - job: Deploy
   dependsOn: 
   - checkout
   steps:
   - task: AzurePowerShell@5
     inputs:
      azureSubscription: 'ToAzureCnx'
      ScriptType: 'FilePath'
      ScriptPath: .\Tuto-Deploy\build.ps1
      azurePowerShellVersion: 'LatestVersion'

这是我的 build.ps1 文件:

param
(
)

$resourceGroup = "RG2"
$location = "westeurope"

New-AzResourceGroup -Name $resourceGroup -Location $location -Force

发生了什么

我收到此错误消息:

<块引用>

##[错误]术语“D:\a\1\s\Tuto-Deploy\build.ps1”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。 检查名称的拼写,或者如果包含路径,请验证 路径正确,然后重试。

我测试了什么

我加了:

- script: dir $(Build.SourcesDirectory)\Tuto-Deploy

检查 build.ps1 是否已下载。

我还尝试从项目Tuto-Deploy中的管道运行它:

trigger:
- main
 
pool:
  vmImage: windows-latest
 
steps:
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'ToAzureCnx'
    ScriptType: 'FilePath'
    ScriptPath: '$(System.DefaultWorkingDirectory)/build.ps1'
    azurePowerShellVersion: 'LatestVersion'

效果很好。

所以我认为我的脚本没有问题。

我需要什么

我不明白为什么它不起作用。我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:1)

您在单独的作业中运行了结账步骤。这导致了问题。

每个作业都将在全新的代理中运行。见here。因此,在第一个作业中下载的 TutoDeploy 存储库在第二个作业中无法访问。您应该将结帐作业与部署作业结合起来。如果只需要在签出步骤成功时执行,则可以为 AzurePowershell 任务设置条件。见下文:

- job: 
   
   steps:
   - checkout: self
   - checkout: TutoDeploy

   - task: AzurePowerShell@5
     inputs:
      azureSubscription: 'ToAzureCnx'
      ScriptType: 'FilePath'
      ScriptPath: .\Tuto-Deploy\build.ps1
      azurePowerShellVersion: 'LatestVersion'
    condition: succeeded()