1

目標通神器或字符串在詹金斯管道上游的工作

我試圖協調使用GitHub的組織插件與詹金斯管道沿依賴鏈。

由於我構建的產品具有許多共享依賴關係,因此我使用nuget包來管理依賴關係版本控制和更新。

但是,我無法爲執行編排的項目獲取必要的工件/信息。

戰略

在一個SCM改變任何上游共享庫應該建立一個NuGet包和協調任何下游建立需要新的引用:

  1. 我硬編碼在每個上游項目的下游業務流程。 因此,如果構建了A,那麼將使用來自A的最新構件來構建B和具有對A的依賴關係的C.之後,將使用最新構件來構建具有B和C依賴關係的D以及依賴於A和C的E從A,B,C根據需要。等等。由於使用「Build Job:Jobname」語法構建依賴關係,因此這些將全部由A的Jenkinsfile觸發。我無法找到一個解決方案,我可以通過這個解決方案在每個步驟下游傳遞編排,因爲依賴關係發散並向下遊匯聚,我不想觸發具有不同引用的上游項目的多個相同下游項目的構建。
  2. 我可以將父項目的構件信息傳遞給任何下游作業,但是我面臨的問題是父項目沒有任何用於下游構件的組件版本信息(需要進一步下游編排作業)。 Stash/Unstash似乎沒有任何跨作業功能,並且歸檔/取消歸檔已被棄用。

TLDR: 我需要的任一上行傳遞的字符串或文本文件到作業中等執行(從多個下游作業)的方法或者需要使用與共享下游依賴於多個dowstream作業的方法協調並共同將信息傳遞給下游作業(僅觸發一次)。

謝謝!

回答

0

我結束了使用內置的「歸檔」步驟(see syntax in pipeline syntax)和copyArtifact plugin(必須使用帶有類名稱的Java樣式步驟)。

我更喜歡能夠合併工作流,而不是必須編排每個構建中的下游構建與任何構建下行流的構建,但迄今尚未能找到任何解決方案。

0

您可以使用構建結果的buildVariables。

主要任務 - 配置:流水線作業

node { 
    x = build job: 'test1', quietPeriod: 2 
    echo "$x.buildVariables.value1fromx" 
} 

測試1 - 配置:流水線作業

node { 
    env.value1fromx = "bull" 
    env.value2fromx = "bear" 
} 
+0

謝謝,這仍是那麼業務流程,不過,是完成的精細通過使用僞影插件。我認爲一些最新的管道插件有能力處理我需要的那種工作流程,但我還沒有時間去實施它們。 – tphuoc

1

這篇文章能對您有用 - 需要https://www.cloudbees.com/blog/using-workflow-deliver-multi-componentapp-pipeline

有時神器方式。 上游作業:

void runStaging(String VERSION) { 
    stagingJob = build job: 'staging-start', parameters: [ 
     string(name: 'VERSION', value: VERSION), 
    ] 
    step ([$class: 'CopyArtifact', 
     projectName: 'staging-start', 
     filter: 'IP', 
     selector: [$class: 'SpecificBuildSelector', 
      buildNumber: stagingJob.id 
     ] 
    ]); 
    IP = sh(returnStdout: true, script: "cat IP").trim() 
    ... 
} 

下游作業

sh 'echo 10.10.0.101 > IP' 
archiveArtifacts 'IP'