0

以下詹金斯文件:

pipeline {
  agent any

  stages {
    stage( "1" ) {
      steps {
        script {
          def br = "demo_branch"
          def clone_url = "ssh://git@server.com:7999/spc/my_prj.git"
          def cred_id = "ssh_cred_id"
          def relative_dir = "my_prj"
          checkout([$class: 'GitSCM',
                    branches: [[name: br]],
                    doGenerateSubmoduleConfigurations: false,
                    extensions: [[$class: 'RelativeTargetDirectory',
                                  relativeTargetDir: relative_dir]],
                    submoduleCfg: [],
                    userRemoteConfigs: [[url: clone_url,
                                        credentialsId: cred_id]]])

        }
      }
    }
  }

  post {
    always {
      script {
        echo "the end"
      }
    }
  }
}

...导致在/home/jenkins/workspace/job/my_prj/我的 Jenkins 服务器中创建目录,并且该目录包含我克隆的 git 存储库。

我想到cd这个目录,运行命令git rev-parse --abbrev-ref HEAD并获取值“ demo_branch”,但我得到的值是“ HEAD”。我很确定这是因为 Jenkinsfilecheckout命令正在签出refs/heads/demo_branch而不是demo_branch. IE:

user@server:/home/user# cd /home/jenkins/workspace/job/my_prj/
user@server:/home/jenkins/workspace/job/my_prj# git rev-parse --abbrev-ref HEAD
HEAD
user@server:/home/jenkins/workspace/job/my_prj# git checkout demo_branch
Switched to branch 'demo_branch'
Your branch is up-to-date with 'origin/demo_branch'.
user@server:/home/jenkins/workspace/job/my_prj# git rev-parse --abbrev-ref HEAD
demo_branch

有没有办法让 Jenkinscheckout命令签出demo_branch而不是refs/heads/demo_branch

4

0 回答 0