131

Jenkins で指定されたタグを作成する際に問題が発生しています。タグはパラメータ化されたビルドの一部ですが、これを git プラグインに渡してそのタグをビルドする方法がわかりません。これには 1 日のうち 3 時間かかり、スタック オーバーフローのマスターに敗北を認めました。

4

12 に答える 12

251

「ビルドするブランチ」パラメーターを使用してそれを行うことができました。

Branch Specifier (blank for default): tags/[tag-name]

[tag-name] をタグの名前に置き換えます。

于 2013-10-28T10:58:03.777 に答える
16

Jenkins に Ref 名からビルドするように指示できませんか? もしそうならそれは

refs/tags/tag-name

Jenkins と Hudson について私が目にするすべての質問から、TeamCity に切り替えることをお勧めします。TeamCity を機能させるために構成ファイルを編集する必要はありませんでした。

于 2012-04-17T17:34:07.627 に答える
10

私はこのようなことをしましたが、うまくいきました:

Source Code Management

 Git    
    Repositories    


 Advance

Name: ref
Refspec : +refs/tags/*:refs/remotes/origin/tags/* 

 Branches to build  
 Branch Specifier (blank for 'any') : v0.9.5.2

ここに画像の説明を入力

Jenkins ログは、タグからソースを取得していることを確認しました

リビジョンのチェックアウト0b4d6e810546663e931cccb45640583b596c24b9(v0.9.5.2)

于 2015-10-09T09:55:16.343 に答える
9

Advanced->Refspec フィールドを に設定しましたrefs/tags/[your tag name]。これは、Refspec に関する他のさまざまな提案よりも単純に思えますが、私にとってはうまく機能しました。

2014 年 7 月 23 日更新- 実際、さらにテストした結果、これが期待どおりに機能しないことが判明しました。HEAD バージョンがまだチェックアウトされているようです。受け入れられた回答としてこれを元に戻してください。このスレッド(3 月 30 日)のgotgenesからの投稿に従って、実用的な解決策を得ることができました。私のジョブは SCM のポーリングからではなく、アップストリーム ジョブからトリガーされるため、ビルドの不必要なトリガーの投稿で言及されている問題は、私にとっては問題ではありませんでした。

UPDATE APR-2018 - これは 1 人で機能し、Jenkins のドキュメントに同意することをコメントで確認してください。

于 2014-07-16T22:42:07.087 に答える
3

このブログ投稿で詳しく説明されているように、Refspec と Branch Specifier を設定することで、Jenkins にタグを作成させることができました。

また、Refspecで参照できるように、リポジトリ名を(私の場合は「origin」に)設定する必要がありました(そうしないと、ランダムに生成された名前が使用されるようです)。

于 2013-07-24T05:46:57.613 に答える
2

私が最終的にやったことは次のとおりです。

  • 新しいブランチjenkins-targetを作成し、ジェンキンスにそれを追跡してもらいました
  • ビルドしたいブランチまたはタグからマージしますjenkins-target
  • jenkins-targetビルドが機能し、テストに合格したら、ブランチからタグを作成するだけです

これが誰にとってもうまくいくかどうかはわかりません.私のプロジェクトは非常に小さく、タグやものが多すぎませんでしたが、非常に簡単です.refspecやパラメータなどをいじる必要はありません:-)

于 2015-04-18T09:28:12.197 に答える
0

この問題の最善の解決策を見つけました。git クラスの代わりに GitSCM クラスを使用する必要があります。

stages {
        stage('SCM') {
            steps {
                script {
                    wrap([$class: 'BuildUser']) {
                        currentBuild.displayName = "#${BUILD_NUMBER} - ${env.BUILD_USER} --> Build from branch ${BRANCH}"
                        slackSend channel: "#jenkins-build", color: "#02fe21", message: "${JOB_NAME} started by ${env.BUILD_USER} : #${BUILD_NUMBER} --> Build from ${BRANCH} branch with ${TAG} TAG"
                    }
                }
                checkout(
                        changelog: false, poll: false, scm: [
                        $class           : 'GitSCM',
                        branches         : [
                                [name: "$BRANCH"],
                        ],
                        userRemoteConfigs: [
                                [
                                        url: "<YOUR-GIT-URL>/${REPOSITORY}.git", credentialsId: '<YOUR-CREDENTIAL>'
                                ],
                        ],
                ])
            }
        }
于 2021-11-09T10:14:49.367 に答える