在Jenkins共享库中,如何获取从库代码中检出的库的分支?

q9yhzks0  于 5个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(79)

在我的Jenkins环境中,我有一个共享库。共享库所做的一件事是使用标记从Amazon ECR中拉取Docker镜像。我希望能够使用共享库的分支作为标记的名称。如何实现这一点?
在共享库的上下文中使用env.GIT_BRANCH x时,env.GIT_BRANCH x是运行作业的存储库的分支,而不是共享库的分支。

@Library('library') // Defaults to pointing a branch called `production`

runBuild() // Should pull a Docker image with the tag `production`

个字符

lokaqttq

lokaqttq1#

以下是我的工作:

@Library('jenkins-pipeline-shared@master') _

import org.jenkinsci.plugins.workflow.libs.LibrariesAction

pipeline {
  agent any

  stages {
    stage('1') {
      steps {
        script {
          def my_run = currentBuild.rawBuild

          LibrariesAction l_action = my_run.getAction(LibrariesAction.class)
          for (def library : l_action.getLibraries()) {
            println  "library name: ${library.name}, version: ${library.version}"
          }
        }
      }
    }
  }
}

字符串
输出:

library name: jenkins-pipeline-shared, version: master

vngu2lb8

vngu2lb82#

Jenkins并不“知道”它正在运行的管道来自于一个共享管道,它使用库作为它自己的一部分。所以,在你的情况下,我看到的唯一可行的解决方案是把它作为一个变量放在你的共享库中。因为你将拥有的所有Git相关数据都将与运行作业的repo相关。

相关问题