0

我有两种材料:

  • 一个静态的 git 仓库

  • 来自上游管道的工件

下游我有一个AnalysisBuilders需要两者都起作用。当任务执行时,我似乎只能访问 git 存储库而不是“网络”工件。

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”和“docker”文件夹。它不是。它只有 docker repo 的内容。如何使两种材料都可用?

4

1 回答 1

1

工件不会自动传播到下游管道。您需要添加一个 fetch artifact 任务,如下所示:

<tasks>
  <fetchartifact pipeline="FishAnalysis" stage="CommitHandler" job="builder" srcdir="web" dest="web">
    <runif status="passed" />
  </fetchartifact>
  <exec command="ls">
  ...
  </exec>
</tasks>

这是因为可以在多个上游作业中发布工件,并且每个上游作业可以发布不同的工件。请注意,在 AnalysisBuilders 管道中的上游材料定义中,您没有指定作业。

GoCD 将确保工件的版本是正确的。也就是说,它对应于导致该管道运行的上游管道实例。即使您稍后重新运行管道。

于 2017-11-28T19:27:45.780 回答