当前位置: 首页 > 面试题库 >

使用Jenkins管道将多个git repos签出到同一作业中

鲁彬炳
2023-03-14
问题内容

我正在使用Jenkins Multiple
SCM插件将三个git存储库检出到Jenkins作业的三个子目录中。然后,我执行一组命令,以使用从所有三个存储库中提取的信息和代码构建一组工件。

现在已弃用多个SCM,并且文本建议移至管道。我尝试过,但是我不知道如何使它工作。

这是我感兴趣的从詹金斯工作目录的顶层看到的目录结构:

$ ls
Combination
CombinationBuilder
CombinationResults

这三个子目录中的每一个都有一个单独的git repo签出。对于Multiple
SCM,我使用git,然后添加了“检出到子目录”的行为。这是我使用管道脚本的尝试:

node('ATLAS && Linux') {
    sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
    sh('cd CalibrationResults')
    git url: 'https://github.com/AtlasBID/CalibrationResults.git'
    sh('cd ..')
    sh('[ -e Combination ] || mkdir Combination')
    sh('cd Combination')
    git url: 'https://github.com/AtlasBID/Combination.git'
    sh('cd ..')
    sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
    sh('cd CombinationBuilder')
    git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
    sh 'cd ..'

    sh('ls')
    sh('. CombinationBuilder/build.sh')
}

但是,git命令似乎在工作空间的顶级目录中执行(这在一定程度上是有意义的),并且根据语法,似乎也没有“ checkout-to-sub-子目录”行为。


问题答案:

您可以使用以下dir命令在子目录中执行管道步骤:

node('ATLAS && Linux') {
    dir('CalibrationResults') {
        git url: 'https://github.com/AtlasBID/CalibrationResults.git'
    }
    dir('Combination') {
        git url: 'https://github.com/AtlasBID/Combination.git'
    }
    dir('CombinationBuilder') {
        git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
    }

    sh('ls')
    sh('. CombinationBuilder/build.sh')
}


 类似资料:
  • 在我的Jenkins工作中,我使用Jenkins Multiple SCM插件将三个git存储库签出到三个子目录中。然后,我执行一组命令,用从所有三个存储库中提取的信息和代码构建一组工件。 多个SCM现在折旧,文本建议转移到管道。我试过了,但我想不出怎么让它起作用。

  • 我在Jenkins的工作中使用Jenkins Multiple SCM插件将两个git存储库签出到两个子目录中。然后,我执行一组命令,用从所有三个存储库中提取的信息和代码构建一组工件。但是分支测试检查了两次?工作区具有当前结构: 我希望工作区具有这种结构。

  • 问题内容: 使用Jenkins 1.501和Jenkins Git插件1.1.26 我有3个不同的git仓库,每个仓库都有多个项目。 现在,我需要将所有3个git存储库中的项目检出到Jenkins从属服务器上的同一工作区中。我在以下 代码中 定义了每个git repo: 源代码管理:多个SCM 。但是每次签出一个回购协议时,先前的回购协议(及其关联项目)都会被删除。 我读过这个: http://j

  • 使用Jenkins 1.501和Jenkins Git插件1.1.26 我有3个不同的git回购,每个都有多个项目。 现在我需要在一个Jenkins Slave上将来自3个git Repo的所有项目签出到同一个工作区。我在《源代码管理:多个SCM》中定义了每个git repo。但每次签出一个回购,就会删除先前的回购(及其关联的项目)。

  • 问题内容: 我正在尝试让詹金斯(Jenkins)的多分支管道工作来以类似于分支的方式构建标签。在Jenkins 2.73(不确定何时添加功能)中,可以将Multibranch项目配置为从源存储库中检索分支和标签。最初,我认为这将非常适合我的需求(我的Jenkinsfile现在可以在Jenkins的同一位置进行开发或生产构建)。 配置了标签发现的多分支作业 我已经使用脚本管道成功构建并运行了构建过程

  • 目前,我们试图将SonarQube分析添加到我们的jenkins工作管道中。但是每次构建作业失败时,都会出现以下消息:我们会重新安装所有插件和配置。无济于事。也许你们中有人能帮我们。 我们所做的: 从SonarQube执行本教程的所有步骤:用SonarQube扫描仪为Jenkins进行分析 > 安装SonarQube插件2.5 在管理詹金斯>配置系统下添加和配置SonarQube 在管理詹金斯>全