在Jenkins管道阶段隐式加载子模块

时间:2018-07-16 12:31:26

标签: git jenkins groovy jenkins-pipeline git-submodules

是否有一种方法可以使用Git存储库修改Jenkins管道脚本以自动初始化子模块?

 foreach (KeyValuePair<string, double> value in values)
 {
    Console.WriteLine($"Pair here: {value.Key}, {value.Value}");
 }

最好应更新为类似的内容

pipeline {
 stages {
  stage('Something A') {
    steps {
      sh 'git submodule update --init'
      // stuff
    }
  }
  stage('Something B') {
    steps {
      sh 'git submodule update --init'
      // stuff
    }
  }
 }
}

是否有一种实现的方法?我找不到任何东西。

1 个答案:

答案 0 :(得分:1)

我假设您到目前为止一直在使用git步骤来克隆存储库。

但是对于高级功能(如子模块),有checkout步骤可用: https://jenkins.io/doc/pipeline/steps/workflow-scm-step/

检出步骤提供了一个更新所有子模块的选项,甚至可以递归更新子模块,例如:

checkout([$class: 'GitSCM',
    branches: [[name: '*/master']],
    doGenerateSubmoduleConfigurations: false,
    extensions: [[$class: 'SubmoduleOption',
        disableSubmodules: false,
        parentCredentials: false,
        recursiveSubmodules: false,
        reference: '',
        trackingSubmodules: false
    ]],
    submoduleCfg: [],
    userRemoteConfigs: [[url: 'ssh://myserver/myrepo']]
])

实际上可以克隆子模块的是SubmoduleOption扩展名,如上例所示。

由于语法-可以说-稍微复杂一点,我建议您使用摘要生成器。