当前位置: 首页 > 知识库问答 >
问题:

将两个不同的项目签出到同一Jenkins工作区时出现“避免二次提取”错误

公良育
2023-03-14

我一直在尝试定义一个Jenkins管道,将Github中的两个项目签出到同一工作区的两个独立子目录中,但不幸的是,到目前为止我的所有尝试都无济于事。

我找到了一些对一些人有用的例子,并试图效仿他们。我用过的是:

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

这里:

无法签出Jenkinsfile中的其他分支吗?

下面是我的完整管道脚本,其中有两个签出变体,我正试图使用它们(dir-git目前已被注释掉)。

结果总是一样的,第一个项目签出到指定的子目录中没有问题,然后在尝试签出另一个项目时,创建了另一个子目录,但我得到了“避免二次提取”。

签出在Mac和Linux上都不起作用。我在詹金斯2.277.3频道

也许有什么显而易见的东西需要新的眼睛?无论如何,我将感谢任何建设性的建议。

def api_client_dir = 'scala-api-client'
def subject_dir = 'app-under-test'

pipeline {
    agent { label 'Mac' } //Change this to whatever your flutter jenkins nodes are labeled.
    stages {

        stage('Clean Workspace') {
            steps {
                cleanWs()
            }
        }

        stage('Checkout') {
            steps {

//                dir (subject_dir) {
//                  git credentialsId: 'github_credentials_kh', url: 'git@github.com:mygithubaccount/my-flutter-test-subject.git'
//                }
//
//                dir (api_client_dir) {
//                  git credentialsId: 'github_credentials_kh', url: 'git@github.com:mygithubaccount/my-scala-rest-client.git'
//                }

               checkout([$class: 'GitSCM',
                  branches: [[name: '*/master']],
                  doGenerateSubmoduleConfigurations: false,
                  extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: subject_dir]],
                  userRemoteConfigs: [[
                    credentialsId: 'github_credentials_kh',
                    url: 'git@github.com:mygithubaccount/my-flutter-test-subject.git'
                  ]]
               ])

               checkout([$class: 'GitSCM',
                  branches: [[name: '*/master']],
                  doGenerateSubmoduleConfigurations: false,
                  extenshtml" target="_blank">ions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: api_client_dir]],
                  userRemoteConfigs: [[
                    credentialsId: 'github_credentials_kh',
                    url: 'git@github.com:mygithubaccount/my-scala-rest-client.git'
                  ]]
               ])
           }
        }
    }
}

共有1个答案

暴奕
2023-03-14

我能够使用GitSCM插件中的noTags:False选项解决签出特定分支的问题。

                   checkout(
                   [
                       $class: 'GitSCM', 
                       branches: [[name: '${jenkins_branch}']],
                        extensions: [[$class: 'CloneOption', timeout: 20, noTags: false]],
                       userRemoteConfigs: [[url: '${jenkins_repo}']]
                    ]
                       )  

在您的特定情况下,需要用dir(){}包围签出

                dir ('folder1'){
                    checkout(
                           //checkout options as above
                            )                     
                 }        
                dir ('folder2'){
                    checkout(
                           //checkout options as above
                            )                     
                 }        

希望它能帮你解决问题。

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

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

  • 问题内容: 我正在使用Jenkins Multiple SCM插件将三个git存储库检出到Jenkins作业的三个子目录中。然后,我执行一组命令,以使用从所有三个存储库中提取的信息和代码构建一组工件。 现在已弃用多个SCM,并且文本建议移至管道。我尝试过,但是我不知道如何使它工作。 这是我感兴趣的从詹金斯工作目录的顶层看到的目录结构: 这三个子目录中的每一个都有一个单独的git repo签出。对于

  • 我正在做一个NFC应用程序,想知道这种情况是否可能: 比如说,我在一个项目中有两个NFC标签和两个活动。NFC A是通过在NFC A中编写MIME类型来打开活动A的 在项目的清单文件中,活动A有以下意图过滤器: 所以,这很好用。我将添加另一个NFC标签和另一个活动。NFC B是为了开放活动B而编写的 现在,我应该如何将MIME类型写入NFC B并为活动B设置意图过滤器?考虑到活动A和活动B都在一个

  • 问题内容: 我有两个卡夫卡喷口,我要将其值发送到同一螺栓。 可能吗 ? 问题答案: 是的,有可能: 您也可以使用任何其他分组。 更新: 为了区分使用者螺栓中的元组(即topic_1或topic_2),有两种可能性: 1)您可以使用操作员ID(如@ user-4870385所建议): 2)您可以使用流名称(@zenbeni建议)。对于这种情况,两个喷口都需要声明命名流,而螺栓需要通过流名称连接到喷口