我有一个管道(MainPipeline),它触发另一个管道(DependantPipeline)。
但是我的 DependantPipeline 无法读取它,我想我的某个错误出现在管道定义的某个地方。
prepare.yml 可能在这里有用。我稍微修改了一下,目前它看起来是这样的:
parameters:
- name: pipelineOptions
type: object
- name: env
type: string
- name: region
type: string
default: $(region)
- name: artifactStagingDirectory
type: string
- name: artifactName
type: string
default: terraform_src
steps:
- task: DownloadPipelineArtifact@2
displayName: "Download Terraform Sources"
inputs:
source: 'specific'
project: $(resources.pipeline.SourcePipeline.projectName)
pipeline: $(resources.pipeline.SourcePipeline.pipelineName)
artifact: ${{parameters.artifactName}}
runVersion: 'specific'
runId: $(resources.pipeline.SourcePipeline.runID)
path: '$(Pipeline.Workspace)/DetectChanges'
[...]
这会导致错误,提示无法找到正确的文件。
有人能帮我解决这个问题吗?如果需要,我可以提供更多的 yml 定义。
可能还存在其他您尚未分享的
.yml
模板(包括download
或步骤)。DownloadPipelineArtifact@2
dev-crunch
如果您的依赖管道是由使用符号别名调用的管道触发的MainPipeline
,您可以尝试在 YAML 定义中的节点下添加示例步骤,以查看在依赖管道运行期间是否下载了steps
发布的工件MainPipeline
默认情况下,我们可以通过日志轻松找到下载和检查步骤
displayName
,并且应该能够看到工件文件已下载到$(Pipeline.Workspace)/<PipelineRsourceSymbolicName>/<ArtifactsName>
ie路径$(Pipeline.Workspace)/MainPipeline/terraform_src
(在本例中)。还请确保您的terraform
命令在正确的路径中运行workingDirectory
。似乎您没有下载包含 terraform 代码的工件 - 这就是您看到类似错误的原因
Given variables file xxxx.tfvars does not exist
。例如,以下任务将禁用工件下载:
另外,在
prepare.yml
任务中DownloadPipelineArtifact@2
被注释掉了。最后,请注意设置
buildType: 'current'
意味着DownloadPipelineArtifact@2
任务将尝试下载当前管道生成的工件。请参阅从特定项目/管道下载工件或从特定构建运行下载工件。