Git

在聲明性 Jenkins 管道中使用 GIT 變數

  • April 26, 2022

我正在努力訪問我的 Jenkins 管道中的 GIT 變數

我需要知道在管道的某個階段在一些 bash 程式碼中檢查了哪個 GIT 分支。我將使用它來創建不同的輸出文件名。我的管道是聲明式的,不是腳本式的,我使用的是 Jenkins 2.150.1

我嘗試了所有我能在網上找到的東西,但它大多是不完整的程式碼或腳本管道。或者只是我無法將資訊放在一起。

給出我在這方面花了多少時間,如果有一個使用聲明性管道的完整工作範例會很好。

這是我到目前為止所嘗試的:

#1

執行 git inside sh,但 Jenkins 簽出的是送出,而不是分支,導致頭部分離

#2

從 shell 中尋找環境變數,但沒有與 GIT 相關的設置。這個片段

steps {
 sh 'echo $GIT_BRANCH'
}

總是返回空。然後我嘗試了 Groovy:

steps {
 echo "${env.GIT_BRANCH}"
}

列印null

#3

在“全域變數參考”中有一點說:

SCM-specific variables such as GIT_COMMIT are not automatically defined as environment variables; rather you can use the return value of the checkout step.

我在網上搜尋瞭如何做到這一點,我把這段程式碼放在一起:

pipeline {
 stages {
   stage('Build') {
     steps {
       def scmVars = checkout([...])
       echo 'scm : the commit id is ' + scmVars.GIT_COMMIT
     }
   }
 }
}

但它失敗了一個例外

#4

使用environment命令並嘗試以某種方式獲取該值

#5

在 Jenkinsfile 中尋找其他級別的變數,但顯然我只能在腳本化管道上做到這一點

#5

試圖訪問建構 url 和 API 呼叫,但我是代理,這會使 URL 變得複雜。

我的詹金斯文件

pipeline {
 stages {
   stage('Build') {
     steps {
       checkout([
         $class: 'GitSCM',
         doGenerateSubmoduleConfigurations: false,
         userRemoteConfigs: [[
           url: '...',
           credentialsId: '...'
         ]],
         branches: [ [name: '*/master'] ]
       ])

       sh '''
       #!/bin/bash -x
       echo $MY_GIT_BRANCH_THAT_I_CANT_FIND
       '''
     }
   }
 }
}

最後我找到了一個例子,我能夠理解如何做到這一點。

我需要使用腳本命令,獲取Map返回checkout並保存Map為環境變數:

stage('Checkout code') {
 steps {
   script {
     // Checkout the repository and save the resulting metadata
     def scmVars = checkout([
       $class: 'GitSCM',
       ...
     ])

     // Display the variable using scmVars
     echo "scmVars.GIT_COMMIT"
     echo "${scmVars.GIT_COMMIT}"

     // Displaying the variables saving it as environment variable
     env.GIT_COMMIT = scmVars.GIT_COMMIT
     echo "env.GIT_COMMIT"
     echo "${env.GIT_COMMIT}"
   }

   // Here the metadata is available as environment variable
   ...
 }
}

引用自:https://serverfault.com/questions/950616