【问题标题】:VSTS pipeline step PublishPipelineArtifact fails on manifest deployment taskVSTS 管道步骤 PublishPipelineArtifact 在清单部署任务上失败
【发布时间】:2020-09-11 13:24:13
【问题描述】:

VSTS 自动为我创建了一个 yaml 管道。 它在 PublishPipelineArtifact 步骤失败。

我不熟悉 yaml 语法。
下面是自动生成的 yaml 的摘录。 2个步骤谈论清单。 但是我的 Visual Studio 项目没有任何清单文件或目录,并且 VSTS 没有生成任何 Deployment.yml 或 service.yml。 我不知道它为什么会失败,也不知道为什么会生成这样的 yaml,而这种依赖关系并不存在。 (如果我使用图形标准方式创建管道(不要求 yaml 管道),它不会失败并且不会生成清单部署步骤)。

- stage: Build
  displayName: Build stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      name: "AWS Linux agents pool"
    steps:
    - checkout: Self
    - checkout: Shared
      path: s/File.Pod/Shared.Lib 
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)
          
    - upload: manifests
      artifact: manifests

- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build

  jobs:
  - deployment: Deploy
    condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
    displayName: Deploy
    pool:
      name: "AWS Linux agents pool"
    environment: 'FilePod-1617.development'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: KubernetesManifest@0
            displayName: Create imagePullSecret
            inputs:
              action: createSecret
              secretName: $(imagePullSecret)
              dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
              
          - task: KubernetesManifest@0
            displayName: Deploy to Kubernetes cluster
            inputs:
              action: deploy
              manifests: |
                $(Pipeline.Workspace)/manifests/deployment.yml
                $(Pipeline.Workspace)/manifests/service.yml
              imagePullSecrets: |
                $(imagePullSecret)
              containers: |
                $(containerRegistry)/$(imageRepository):$(tag)

据我所知,清单文件夹存在于存储库中。

我是否需要 DockerFile 中的 somewhere 要求将其复制到 somewhere

分支是 dev

【问题讨论】:

    标签: azure-devops azure-yaml-pipelines


    【解决方案1】:

    我们可以看到该文件夹​​在dev分支上,我们应该确保我们在dev分支而不是其他分支上运行yaml构建,否则我们会得到错误:Path does not exist

    示例 YAML:

    steps:
    
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: |
          # Write your PowerShell commands here.
          
          Write-Host "Hello World"
    
    - upload: test01
      artifact: manifests
    

    结果:

    更新1:

    【讨论】:

    • 问题出在:-上传:test01 工件:清单(此处提到的 prependPath 不起作用:github.com/microsoft/azure-pipelines-yaml/blob/master/design/…)。我最终删除了上传步骤并将其移动到发布管道中
    • 嗨@CloudAnywhere,发布工件,你能检查一下这个doc吗?如果yaml构建运行分支没有该文件,你想上传,会报错:路径不存在,需要检查。在错误截图中,似乎正在运行的分支不是 dev。
    • 我确认,这绝对是 dev 分支。我们在多存储库中。 7ddd143..cd51e27 dev -> origin/dev Checkout File.Pod@dev to s/File.Pod 工作目录是s/File.Pod 错误是Path does not exist: /home/bitnami/vstsagent/_work/17 /s/manifests 因为显然我们应该在 /s/File.Pod/manifests 中。如前所述,我尝试使用 PreprendPath 更改目录,但没有成功
    • 嗨@CloudAnywhere,请检查更新1并与我们分享yaml构建的屏幕截图吗?另外,也请与我分享完整的日志,我需要检查并确保问题。谢谢。
    • 嗨@CloudAnywhere,这个问题怎么样?下面的答案是否解决了您的问题,如果没有,请告诉我有关此问题的最新信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多