在Azure DevOps中使用新的部署作业。找不到文物

时间:2019-06-06 15:38:42

标签: azure-devops azure-pipelines azure-deployment

我需要使用Azure Devops将Asp.Net核心应用程序部署到Azure WebApp。

我有以下有效的Azure-Pipelines YAML文件:

trigger:
- master

variables:
  buildConfiguration: 'Release'
  buildPlatform: 'any cpu'
  version: '0.2.0'

stages:

- stage: 'Stage1'

  jobs:

  # Previous Jobs like Build, Test, ...

  - job: 'Publish'
    pool:
      vmImage: 'Ubuntu-16.04'
    dependsOn: 'Test'
    steps:

    - task: DotNetCoreCLI@2
      displayName: 'Publish'
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
        zipAfterPublish: true

    - task: PublishBuildArtifacts@1
      displayName: 'Artifact'
      inputs:
        PathtoPublish: '$(build.artifactstagingdirectory)'

    - task: AzureRmWebAppDeployment@4
        displayName: 'Deploy'
        inputs:
          package: '$(build.artifactstagingdirectory)/App.Api.zip'
          azureSubscription: 'MyName.Azure'
          appType: 'Web App On Windows'
          webAppName: 'myname-api'

这工作正常,但我想使用新的Deployment Job

我删除了“部署”任务,并将其添加为“发布”任务之后的新部署任务:

  - deployment: DeployJob
    dependsOn: 'Publish'
    pool:
      vmImage: Ubuntu-16.04
    environment: production
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureRmWebAppDeployment@4
            inputs:
              package: '$(build.artifactstagingdirectory)/App.Api.zip'
              azureSubscription: 'MyName.Azure'
              appType: 'Web App On Windows'
              webAppName: 'myname-api'

您会看到“ AzureRmWebAppDeployment @ 4”与以前相同。

但是现在在运行管道时出现以下错误:

Download artifact to: /home/vsts/work/1/
Could not find any pipeline artifacts in the build.  

我想念什么?如何解决这个问题?

5 个答案:

答案 0 :(得分:5)

我整天都在为此苦苦挣扎,直到跌跌撞撞地找到解决方案。似乎有一些捆绑到作业中的默认“帮助程序”任务,而部署作业具有添加的默认下载任务。我仍然不确定在我的情况下它试图下载什么,但是它导致了您描述的相同问题。

尝试将- download: none任务添加到部署作业的步骤中,然后显式指定任务。这样的事情应该起作用:

  - stage: deploy_dev
    displayName: Development environment
    jobs:
    - deployment: Deploy
      displayName: Deploy to Development environment
      environment: myproject-dev
      pool:
        vmImage: ubuntu-16.04
      strategy:
        runOnce:
          deploy:
            steps:
            - download: none
            - task: DownloadBuildArtifacts@0
              inputs:
                artifactName: $(ArtifactName)
                buildType: 'current'
                downloadType: 'single'
                downloadPath: '$(System.ArtifactsDirectory)'

下载快捷方式的文档可以在这里找到:https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#download

希望有帮助!

答案 1 :(得分:1)

如果您拆分部署,则需要使用PublishPipelineArtifact @ 1而不是PublishBuildArtifacts @ 1。我整天都在努力解决这个问题,希望对您有帮助。

  # - task: PublishBuildArtifacts@1
- task: PublishPipelineArtifact@1
  displayName: Publish pipeline Artifacts
  inputs:
    pathtoPublish: '$(Pipeline.Workspace)' 
    artifactName: 'coreapidemo'

答案 2 :(得分:0)

在发布工件之前,您似乎正在尝试进行部署。

--network

您需要先发布工件。这是您称为dependsOn: 'Publish'的步骤。

我还希望您拥有的软件包路径Artifact无法正常工作。可能会在$(build.artifactstagingdirectory)/App.Api.zip下。

答案 3 :(得分:0)

您的Yaml格式似乎不正确。

dependsOn: 'Publish'

您可以尝试使用以下方法代替。

dependsOn: Publish

此处,依赖项应该是作业对象,而不是字符串。在表达式中,如果值是字符串,则必须将单引号引起来。请参阅此document

答案 4 :(得分:0)

尝试使用 $(Pipeline.Workspace) 代替。
你也应该做@wenbo 在他的回答中写的,但我认为这不是必需的,这里的重要部分是 $(Pipeline.Workspace):

<块引用>

默认情况下,文件下载到 $(Pipeline.Workspace)/{artifact},其中 artifact 是工件的名称。工件的文件夹结构始终保留。

source