Jenkins で指定されたタグを作成する際に問題が発生しています。タグはパラメータ化されたビルドの一部ですが、これを git プラグインに渡してそのタグをビルドする方法がわかりません。これには 1 日のうち 3 時間かかり、スタック オーバーフローのマスターに敗北を認めました。
12 に答える
「ビルドするブランチ」パラメーターを使用してそれを行うことができました。
Branch Specifier (blank for default): tags/[tag-name]
[tag-name] をタグの名前に置き換えます。
Jenkins に Ref 名からビルドするように指示できませんか? もしそうならそれは
refs/tags/tag-name
Jenkins と Hudson について私が目にするすべての質問から、TeamCity に切り替えることをお勧めします。TeamCity を機能させるために構成ファイルを編集する必要はありませんでした。
私はこのようなことをしましたが、うまくいきました:
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)
Advanced->Refspec フィールドを に設定しましたrefs/tags/[your tag name]
。これは、Refspec に関する他のさまざまな提案よりも単純に思えますが、私にとってはうまく機能しました。
2014 年 7 月 23 日更新- 実際、さらにテストした結果、これが期待どおりに機能しないことが判明しました。HEAD バージョンがまだチェックアウトされているようです。受け入れられた回答としてこれを元に戻してください。このスレッド(3 月 30 日)のgotgenesからの投稿に従って、実用的な解決策を得ることができました。私のジョブは SCM のポーリングからではなく、アップストリーム ジョブからトリガーされるため、ビルドの不必要なトリガーの投稿で言及されている問題は、私にとっては問題ではありませんでした。
UPDATE APR-2018 - これは 1 人で機能し、Jenkins のドキュメントに同意することをコメントで確認してください。
このブログ投稿で詳しく説明されているように、Refspec と Branch Specifier を設定することで、Jenkins にタグを作成させることができました。
また、Refspecで参照できるように、リポジトリ名を(私の場合は「origin」に)設定する必要がありました(そうしないと、ランダムに生成された名前が使用されるようです)。
私が最終的にやったことは次のとおりです。
- 新しいブランチ
jenkins-target
を作成し、ジェンキンスにそれを追跡してもらいました - ビルドしたいブランチまたはタグからマージします
jenkins-target
jenkins-target
ビルドが機能し、テストに合格したら、ブランチからタグを作成するだけです
これが誰にとってもうまくいくかどうかはわかりません.私のプロジェクトは非常に小さく、タグやものが多すぎませんでしたが、非常に簡単です.refspecやパラメータなどをいじる必要はありません:-)
この問題の最善の解決策を見つけました。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>'
],
],
])
}
}