【问题标题】:Azure DevOps Multi Stage Pipeline Error: No package found with specified pattern: /home/vsts/work/1/s/**/*.zip - How do I fix?Azure DevOps 多阶段管道错误:找不到具有指定模式的包:/home/vsts/work/1/s/**/*.zip - 如何修复?
【发布时间】:2020-07-29 02:10:26
【问题描述】:

我有一个成功部署到 Azure 的 Azure DevOps Build (yaml) 和 Release Pipeline (Classic)。

我正在尝试在多阶段 Yaml 管道中转换这两个单独的步骤。

在 Azure 应用服务部署任务 (AzureRmWebAppDeployment@4) 上,我收到以下错误:

No package found with specified pattern: /home/vsts/work/1/a/*.zip

下面是我的多阶段 Yaml 管道

stages:
  - stage: Build
    jobs:
    - job: 'Build'
      pool:
        vmImage: 'windows-latest'

      variables:
        buildConfiguration: 'Release'

      steps:
      - task: DotNetCoreCLI@2
        displayName: Restore
        inputs:
          command: restore
          projects: '**/*.csproj'
          vstsFeed: 'dd55642d-8943-411f-8856-9714dd0da8af'

      - task: DotNetCoreCLI@2
        displayName: Build
        inputs:
          projects: '**/*.csproj'
          arguments: '--configuration $(buildConfiguration)'

      - task: DotNetCoreCLI@2
        displayName: Test
        inputs:
          command: test
          projects: '**/*[Tt]ests/*.csproj'
          arguments: '--configuration $(buildConfiguration)'

      - task: DotNetCoreCLI@2
        displayName: Publish
        inputs:
          command: publish
          publishWebProjects: false
          projects: '**/Tools.Client.Blazor.ServerApp.csproj'
          arguments: '--configuration $(buildConfiguration) --output $(build.artifactstagingdirectory)'

      - task: PublishSymbols@2
        displayName: 'Publish symbols path'
        inputs:
          SearchPattern: '**\bin\**\*.pdb'
          PublishSymbols: false
        continueOnError: true

      - task: CopyFiles@2
        displayName: 'Copy Files to: $(build.artifactstagingdirectory)\AzureDeploy'
        inputs:
          SourceFolder: AzureDeploy
          TargetFolder: '$(build.artifactstagingdirectory)\AzureDeploy'

      - task: PublishBuildArtifacts@1
        displayName: 'Publish Artifact: drop'
        inputs:
          PathtoPublish: '$(build.artifactstagingdirectory)'
        condition: succeededOrFailed()
        
  - stage: Systest
    jobs:
    - job: 'Systest'
      variables:       
        resourceGroupName: '$(appName)-rg-$(environment)'
        location: 'East US'
        appServiceName: '$(appName)-svc-$(environment)'
        appInsightsName: '$(appName)-ins-$(environment)'
        appServicePlanName: '$(appName)-asp-$(environment)'
        appName: 'tools'
        owner: 'Pod'
        environment: 'systest'    

      steps:
      - task: AzureResourceManagerTemplateDeployment@3
        displayName: 'ARM Template deployment: Resource Group scope'
        inputs:
          azureResourceManagerConnection: 'Dev/Test Connection'
          subscriptionId: ''
          resourceGroupName: '$(resourceGroupName)'
          location: '$(location)'
          csmFile: '$(System.DefaultWorkingDirectory)/AzureDeploy/Tools.azureDeploy.json'
          csmParametersFile: '$(System.DefaultWorkingDirectory)/AzureDeploy/Tools.azureDeploy.parameter.json'
          overrideParameters: '-appServiceName "$(appServiceName)" -appInsightsName "$(appInsightsName)" -appServicePlanName "$(appServicePlanName)" -owner "$(owner)" -environment "$(environment)" -location "$(location)"'

      - task: AzureRmWebAppDeployment@4
        displayName: 'Azure App Service Deploy: $(appServiceName)'
        inputs:
          ConnectionType: 'AzureRM'
          azureSubscription: ''
          appType: 'webApp'
          WebAppName: '$(appServiceName)'
          packageForLinux: '$(Build.ArtifactStagingDirectory)/*.zip'

任何帮助/建议将不胜感激。

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task azure-pipelines-yaml


    【解决方案1】:

    因为是2阶段,所以第二阶段没有你在第一阶段发布的文件,需要下载。

    您可以使用Pipeline artifacts 代替构建工件。

    管道工件提供了一种在不同阶段之间共享文件的方法 管道或不同管道之间。它们通常是输出 一个构建过程需要被另一个作业消耗或被 部署。工件与它们产生的运行相关联 并在运行完成后保持可用。

    发布(上传)当前运行的工件:

    steps:
    - publish: $(build.artifactstagingdirectory)
      artifact: drop
    

    在第二阶段,您下载工件:

    steps:
    - download: current
      artifact: drop
    

    您也可以使用build artifacts 实现它并使用DownloadBuildArtifacts@0 任务下载。

    【讨论】:

    • 我根据您的建议完成了这项工作。感谢您为我指明正确的方向。
    【解决方案2】:

    在发布期间它不会像这样工作。而不是使用路径“/home/vsts/work/1/a/.zip”,这个路径可以使用“$(System.DefaultWorkingDirectory)/_Releasepipelinename/drop/.zip”

    【讨论】:

    • 强烈建议避免使用硬编码目录。使用提供的变量/任务是最佳实践。此方法假定工件将被命名为默认放置文件夹名称。
    猜你喜欢
    • 2021-09-24
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多