【问题标题】:Project files not available in deploy job azure dev ops pipelines项目文件在部署作业 azure dev ops 管道中不可用
【发布时间】:2020-11-20 02:43:20
【问题描述】:

相关 repo 中的文件在运行 Azure Dev Ops 管道的构建阶段时可用,但在运行部署阶段时不可用。关于为什么会这样的任何想法?

这里是简化版的 yaml 文件:

# Deploy to Azure Kubernetes Service
# Build and push image to Azure Container Registry; Deploy to Azure Kubernetes Service
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- master

resources:
- repo: self

variables:
  # Agent VM image name
  vmImageName: 'ubuntu-latest'

  # Name of the new namespace being created to deploy the PR changes.
  k8sNamespaceForPR: 'review-app-$(System.PullRequest.PullRequestId)'

stages:
- stage: Build
  displayName: Build stage
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Bash@3
      inputs:
        targetType: 'inline'
        script: |
          pwd
          ls -la


- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build

  jobs:
  - deployment: Deploy
    condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
    displayName: Deploy
    pool:
      vmImage: $(vmImageName)
    environment: 'test.development'
    strategy:
      runOnce:
        deploy:
          steps:
            - task: Bash@3
              inputs:
                targetType: 'inline'
                script: |
                  pwd
                  ls -la

补充说明: 如果首先运行部署阶段(删除构建阶段),则工作目录也是空的。

【问题讨论】:

  • 可能是 build 只生成 artifcat。你能添加更多细节吗
  • 我已经添加了yaml文件。
  • 问题似乎与构建阶段无关。
  • 您查看过微软提供的 YAML 文档吗?它解释了什么是部署作业以及它们与非部署作业的区别。
  • 在构建阶段,有一个包含默认签出步骤的构建作业。在 Deploy 阶段,它是一个部署作业,因此没有默认的签出步骤。这就是为什么项目文件在部署作业中不可用的原因。尼克格雷厄姆提供了一个很好的答案,你可以检查一下,如果它对你有帮助,你可以Accept it as an Answer。这可能对阅读此主题的其他社区成员有益,我们可以关闭此主题,谢谢

标签: azure azure-devops azure-pipelines


【解决方案1】:

部署阶段中的作业是部署作业而不是标准作业,部署作业不会自动签出管道所基于的存储库,但它们确实可以访问任何已发布的管道工件。

您可以在 Build 阶段发布管道工件,也可以将任务添加到 Deploy 阶段以明确签出 repo。

要发布管道工件,请将 Publish Pipeline Artifact 添加为构建阶段的任务。然后,在您的部署阶段,您可以使用路径 $(Pipeline.Workspace)/<artifactName>/<rest-of-path> 引用该工件中的文件

要检查整个 repo,请将其添加到您的 Deploy 阶段:

steps:
- checkout: self
  path: 'myrepo/'

然后使用 $(System.DefaultWorkingDirectory)\<rest-of-path> 引用 repo 中的文件

【讨论】:

  • 谢谢尼克!我使用了结帐步骤,这解决了问题!
猜你喜欢
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2020-03-12
  • 2021-12-09
  • 2021-02-27
相关资源
最近更新 更多