Jenkinsに特定のタグを作成させるのに問題があります。タグはパラメーター化されたビルドの一部ですが、これをgitプラグインに渡してそのタグをビルドする方法を知りません。これには1日3時間かかりましたが、スタックオーバーフローでマスターに敗北を認めました。
「構築するブランチ」パラメータを使用して、それを行うことができました。
Branch Specifier (blank for default): tags/[tag-name]
[tag-name]をタグの名前に置き換えます。
Jenkins CI v.1.555、Git Clientプラグインv.1.6.4、およびGitプラグイン2.0.4を使用した場合、これらの答えはどれも十分ではありませんでした。
1つの特定の固定(つまり、パラメーター化されていない)タグ用に1つのGitリポジトリ用にビルドするジョブが必要でした。さまざまな回答と 「Gitタグを作成する」ブログ投稿Thiloが引用 から解決策をまとめる必要がありました。
git Push --tags
を使用して、タグをリモートリポジトリにプッシュしてください。+refs/tags/*:refs/remotes/Origin/tags/*
*/tags/<TAG_TO_BUILD>
を配置します(<TAG_TO_BUILD>
を実際のタグ名に置き換えます)。Refspecを追加することが重要であることがわかりました。 gitリポジトリは、空白のままにすると、デフォルトですべてのリモート情報を取得しているように見えましたが、それでもGitプラグインは完全にタグを見つけることができませんでした。 Refspecフィールドで「リモートタグの取得」を明示的に指定した場合にのみ、Gitプラグインはタグから識別してビルドできました。
2014-5-7の更新:残念ながら、このソリューションにはJenkins CI(v.1.555)とGitリポジトリプッシュに望ましくない副作用があります通知メカニズムアラ Stash Webhook to Jenkins :リポジトリのブランチがプッシュで更新されるたびにany、タグビルドジョブも再度起動されます。これにより、同じタグジョブの不必要な再構築が何度も繰り返されます。 「ワークスペースを使用してポーリングを強制する」オプションを使用して、または使用せずにジョブを構成しようとしましたが、効果はないようです。 Jenkinsがタグジョブに不要なビルドを作成するのを防ぐ唯一の方法は、Refspecフィールドをクリアすることです(つまり、+refs/tags/*:refs/remotes/Origin/tags/*
を削除します)。
誰かがよりエレガントなソリューションを見つけた場合は、この回答を更新して編集してください。たとえば、refspecが具体的にアスタリスクのキャッチオールではなく+refs/tags/<TAG TO BUILD>:refs/remotes/Origin/tags/<TAG TO BUILD>
だった場合、これは起こらないと思われます。ただし、今のところ、このソリューションは機能しています。ジョブが成功した後、余分なRefspecを削除するだけです。
JenkinsにRef名からビルドするように指示できませんか?もしそうならそれは
refs/tags/tag-name
ジェンキンスとハドソンについて私が見るすべての質問から、TeamCityに切り替えることをお勧めします。 TeamCityを機能させるために、構成ファイルを編集する必要はありませんでした。
Jenkinsパイプラインを使用していて、特定のタグ(例:ビルドのTAG
パラメーター)をチェックアウトする場合、次のことができます。
stage('Checkout') {
steps {
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: 'YOUR_GIT_REPO_URL.git', credentialsId: 'YOUR_GIT_CREDENTIALS_ID' ]], branches: [[name: 'refs/tags/${TAG}']]], poll: false
}
}
私はこのようなことをしましたが、うまくいきました:
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の他のさまざまな提案よりも簡単に思えますが、私にとってはうまくいきました。
UPDATE 23/7/2014-実際、さらにテストした後、これは期待どおりに機能しなかったことが判明しました。 HEADバージョンはまだチェックアウトされているようです。受け入れられた回答としてこれを取り消してください。この thread (30thのgotgenesからの投稿をフォローすることで、実用的なソリューションを得ました。行進)。私の仕事はSCMのポーリングからではなく、上流の仕事からトリガーされるため、不必要なビルドのトリガーの投稿で言及された問題は私にとっては問題ではありませんでした。
UPDATE APR-2018-これは1人で機能し、Jenkinsのドキュメントに同意するというコメントに注意してください。
最新のJenkins(1.639以降)では、次のことができます。
RefspecとBranch Specifierを このブログ投稿で詳しく説明 に設定することで、Jenkinsにタグを作成させることができました。
また、Refspecで参照できるように、リポジトリ名を(私の場合は「Origin」に)設定する必要がありました(そうでなければ、明らかにランダムに生成された名前を使用します)。
ワイルドカードを使用して、1.2.3-alpha43
などのタグタイプを作成することもできます。
Refspec:+refs/tags/*:refs/remotes/Origin/tags/*
分岐指定子:Origin/tags/1.2.3-alpha*
「変更がGitHubにプッシュされたときにビルドする」にチェックマークを付けてプッシュをトリガーすることもできますが、追加する必要がありますウェブフックへの「作成」アクション
私が最後にしたことは:
jenkins-target
を作成し、ジェンキンスにそれを追跡させましたjenkins-target
にビルドしたいブランチまたはタグからマージしますjenkins-target
ブランチからタグを作成するだけですこれがすべての人にうまくいくかどうかはわかりませんが、私のプロジェクトは非常に小さく、タグやものが多すぎませんが、参照仕様やパラメータなどをいじる必要はありません:-)
Jenkinsのオプション「Build with parameters」を使用する答えを見たことがないので、ここに2セントを追加します。
ここでは、プロジェクトstarwars_apiにJenkins CIブラウザーコンソールを使用しており、値refs/tags/tag-nameを持つ「パラメーター付きビルド」で直接ビルドできました。