我有两种材料:
静态git仓库
来自上游管道的工件
下游我有一个 AnalysisBuilders ,它需要两个功能。当任务执行时,我似乎只能访问git存储库而不是“web”工件。
的xml:
<pipeline name="FishAnalysis">
<materials>
<git url="https://fish:XXXXXXX@redacted.com/fish/analysis.git" />
</materials>
<stage name="CommitHandler" cleanWorkingDir="true">
<jobs>
<job name="builder">
<tasks>
<exec command="yarn" workingdir="web">
<arg>install</arg>
<runif status="passed" />
</exec>
<exec command="npm" workingdir="web">
<arg>run</arg>
<arg>build</arg>
</exec>
</tasks>
<artifacts>
<artifact src="web/dist" dest="web" />
<artifact src="web/package.json" dest="web" />
<artifact src="web/node_modules" dest="web" />
<artifact src="web/nginx.conf" dest="web" />
</artifacts>
</job>
</jobs>
</stage>
</pipeline>
.....
<pipeline name="AnalysisBuilders">
<materials>
<pipeline pipelineName="FishAnalysis" stageName="CommitHandler" materialName="FishAnalysis" />
<git url="https://fish:XXXXX@redacted.com/fish/docker.git" dest="docker" materialName="Docker">
</git>
</materials>
<stage name="Builders">
<jobs>
<job name="shellScripts">
<tasks>
<exec command="ls">
<arg>-R</arg>
<arg>.</arg>
<runif status="passed" />
</exec>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
我希望ls -R输出有'web'和&amp; 'docker'文件夹。它不是。它只有docker repo的内容。我如何提供这两种材料?
答案 0 :(得分:1)
工件不会自动传播到下游管道。您需要添加一个获取工件任务,如下所示:
<tasks>
<fetchartifact pipeline="FishAnalysis" stage="CommitHandler" job="builder" srcdir="web" dest="web">
<runif status="passed" />
</fetchartifact>
<exec command="ls">
...
</exec>
</tasks>
这是因为工件可以在多个上游作业中发布,并且每个上游作业都可以发布不同的工件。请注意,在AnalysisBuilders管道中的上游材质定义中,您未指定作业。
GoCD将确保工件的版本正确无误。也就是说,它对应于导致此管道运行的上游管道实例。即使您稍后重新运行管道。