一千萬個為什麽

搜索

是否有可能在一個回購中使用JenkinsFile來構建和部署相關的回購?



我們的團隊為前端/後端系統提供兩個獨立的存儲庫。他們希望將這兩個存儲庫一起部署到共享團隊環境中。

我對JenkinsFile的理解是,它只能在承諾的存儲庫上工作,並且只有在SCM系統向Jenkins發送請求時才會運行,通知它新的更改。

是否有可能在兩個獨立的存儲庫中的JenkinsFile相互通信,以便在構建另一個時另一個也是構建的,並且只有在兩者都構建後,才會部署它們?

我的主要目標是避免在Jenkins UI中創建一個單獨的Jenkins作業。

轉載註明原文: 是否有可能在一個回購中使用JenkinsFile來構建和部署相關的回購?

一共有 2 個回答:

是的,這對於Jenkinsfiles來說非常簡單,不需要任何第三方插件或其他任何插件:使用內置管道構建步驟

我使用它來觸發依賴鏈中的項目構建,以便在一個項目成功構建後,依賴它的其他項目將引入更新後的依賴項並構建它。

這是Jenkinsfile中的樣子:

build repoName

其中 repoName 是一個包含您希望構建的存儲庫名稱的變量。

事情會變得更復雜一些,例如,如果您使用文件夾或多分支管道:

build "${projectName}/${repoName}/${branchName}"

本示例在Multibranch項目中構建一個作業,其中變量為:

  • projectName - the name of my Multibranch project
  • repoName - the name of the repository
  • branchName - the name of the branch to build, usually master

或者,此示例使用參數構建作業,並且還會異步觸發構建(父作業在繼續下一步之前不會等待子作業完成):

build(
  jobName,
  wait: false,
  parameters: [
    [
      $class: 'BooleanParameterValue',
      name: 'someBooleanParameter',
      value: true,
    ],
    [
      $class: 'StringParameterValue',
      name: 'someStringParameter',
      value: 'some string value',
    ],
  ],
)

正如你所看到的, build 的調用可能會變得相對復雜。請參閱上面鏈接的文檔以獲取更完整的信息。

您可以使用種子作業來完成此任務。種子作業(實際上是自由式作業)包含在作業DSL插件