簡體   English   中英

Jenkins 多分支管道:如何獲取最新的 git 標簽?

[英]Jenkins multibranch pipeline: how to get most recent git tag?

我的項目構建依賴於 git 標簽來確定用於工件的版本。 我正在嘗試創建一個 Jenkins 多分支管道。 這意味着,我需要以某種方式獲得相當於 output 的

git describe --tags

進入我的 Jenkins 管道。 無論我對各種“高級行為”做什么,我都會得到一個分離的 HEAD 和 git 說它沒有什么可描述的。

本文檔https://jenkins.io/doc/pipeline/steps/workflow-scm-step/提到$class: GitTagMessageExtension帶有可選的 boolean 參數useMostRecentTag ,根據描述應該提供我需要的確切信息,但我找不到在管道片段生成器中等效於它,並且在 Jenkisfile 中,我包括

checkout(
            [$class: 'GitSCM', 
            branches: [[name: '**']], 
            doGenerateSubmoduleConfigurations: false, 
            extensions: [
                [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false], 
                [$class: 'GitTagMessageExtension', useMostRecentTag:true]
            ], 
            submoduleCfg: [], 
            userRemoteConfigs: [[credentialsId: 'xxx', url: 'xxx']]
            ]
        )

我收到一個錯誤

java.lang.UnsupportedOperationException: no known implementation of class hudson.plugins.git.extensions.GitSCMExtension is named GitTagMessageExtension

編輯:

正如@ioannis-barakos 所指出的,缺少 GitTagMessageExtension 插件。 但是,安裝后,promise 的

如果您勾選了使用最近的標簽選項,並且檢出的修訂版沒有與之關聯的 git 標記,則將在父提交中搜索 git 標記,並且上述規則將適用於第一個帶有 ZBA9F11ECC33497D9EFDC2B 標記的父提交.

不成立。 它只是針對分離的頭運行git describe --tags <commit-hash>並且什么都不導出。

那么,有人知道如何處理嗎? 我錯過了什么?

這都是虛驚一場:我只是忘了git push --tags

但是,有一個違反直覺的問題:勾選“發現標簽”是不夠的,還必須選擇“高級克隆行為”並勾選“獲取標簽”

您可能沒有在 Jenkins 中安裝Git Tag Message Plugin

GitTagMessageExtension由該插件提供(如此

確保在 Jenkins 插件中安裝了以下插件。

Git 標簽消息插件

下面是一個在所有分支 (origin/**) 中搜索標簽的工作示例。 請記住,應該已經在 jenkins 中配置了憑據 ID,其中包含 jenkins 帳戶的用戶名/密碼,並且應該為下載/克隆位置設置RelativeTargetDirectory class。

script {
    checkout([
      $class: 'GitSCM',
      branches: [[name: "origin/**"]],
      doGenerateSubmoduleConfigurations: false,
      extensions: [[
      $class: 'RelativeTargetDirectory',
        relativeTargetDir: "/tmp/jenkins/git"],
        [$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false], 
        [$class: 'GitTagMessageExtension', useMostRecentTag:true] 
        ],
        submoduleCfg: [],
        userRemoteConfigs: [[
             credentialsId: 'ioannis.barakos',
             url: 'https://git.example.com/git/example'
        ]]
    ])            
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM