web-dev-qa-db-ja.com

JenkinsをプッシュしてBitBucket gitリポジトリにビルドするにはどうすればよいですか?

BitBucketでgitリポジトリをホストしており、リポジトリとJenkinsサーバーの間にSSH認証を設定しています。 Jenkinsで手動でビルドできますが、ビルドをトリガーするBitBucketでJenkinsサービスを取得できません。

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]

訪問http:// {my_jenkins_address}/ジョブ/{my_jenkins_job}/build?token = {token}ビルドを適切に開始します。

変更をBitBucketにプッシュしないので、Jenkinsがビルドを開始するのはなぜですか?

57
Allen T.

毎分リポジトリをポーリングするようにJenkinsインスタンスをセットアップしています。それはあなたのニーズに十分な頻度ではありませんか?

当社のJenkins設定:

ビルドトリガー>ポーリングSCM =チェック済み

トリガーの作成> SCMのポーリング>スケジュール=

# every 1 minute
*/1 * * * *
34

BitbucketのJenkins Hookがまったく機能していないため、このソリューションに来たブランチごとに異なるJenkinsプロジェクトがあります。

  • Jenkinsで Bitbucket Plugin をインストールします
  • 通常の投稿をフックとしてBitbucketリポジトリに追加し(Settings-> Hooks)、次のURLを使用します。

https://YOUR.JENKINS.SERVER:PORT/ bitbucket-hook /

そして、あなたがジェンキンスでセットアップ認証を持っているなら、URLは

https://USERNAME:[email protected]:PORT/ bitbucket-hook /

  • Jenkinsプロジェクトを次のように構成します。
  • underbuild triggerenableBitBucketに変更がプッシュされたときにビルドする
  • Source Code Managementselect[〜#〜] git [〜#〜];資格情報を入力し、ビルドするブランチを定義します** feature/*

このようにして、3つのビルドプロジェクトがあります。1つはすべての機能、1つは開発用、もう1つはリリースブランチ用です。 URLの最後にスラッシュ( '/')を含めるようにしてください。そうしないと、フックが機能しません。

そして、最高の点は、新しいJenkinsプロジェクトに新しいフックを追加する必要がないことです。

72
salcosand

実際には、これをBitbucketサービスを使用してJenkinsで機能させることができますが、動作させるには多少の試行錯誤が必要でした。

認証を使用する場合、ビルドを作成できるユーザーの1人からAPIトークンを取得できます。 Bitbucket専用のアカウントを作成しました。 APIトークンを使用するには、少なくともJenkins 1.426が必要です。その後、APIトークンを使用したHTTP認証をBitbucketサービスのパスワードとして使用できます。

これが私の設定方法です:

エンドポイント: http:// [bitbucket]:[APITOKEN] @ [www.example.com/jenkins/]

プロジェクト名: [NameOfMyJenkinsProject]

モジュール名: [空]

トークン: [Jenkinsプロジェクト設定にトークンが見つかりました]

このように設定した後、トークンと認証を使用して、Bitbucketからプッシュトリガービルドを有効にすることができました。

12
Ian Hunter

Jenkinsで認証を使用する場合、トークンは役に立ちません。

gitプラグインを使用し、POSTフックとhttp[s]://your.site.com[/jenkins]/git/[email protected]:your-username/your-repo.git 初期化。ポーリングがオンになっていて、何らかの値でスケジュールされていることを確認してください。そうしないと機能しません。

11
floatingLomas

ポーリングSCMを使用するのは良いことですが、欠点もほとんどありません。GITリポジトリからメタデータをフェッチします。GITリポジトリは、とにかくビットバケツサーバーとJenkinsサーバーからある程度の帯域幅を使用します。

Bitbucketは、新しい更新プログラムが到着したときにJenkinsをトリガーするタイミングを知っている方が良いです。Bitbucketの最新バージョンを使用している場合、Bitbucketと互換性のあるプラグイン名「Stash webhooks for Jenkins」があります。

このプラグイン内で、Jenkins URLとJOB名を指定するだけで、JenkinsとBitbucketの間に追加のセキュリティレイヤーが提供されます。 enter image description here

これは、Atlassian Marketplaceからダウンロードできるプラグイン(JenkinsのBitbucket webhookとは呼ばないJenkinsのStash webhook)です。

enter image description here 上記はアドオン設定で、Jenkins URLとRepo Clone URLを指定する必要があります。トリガーを使用すると、接続なども確認できます。

プラグインのリンク: Bitbucket webhooks for Jenkins

このプラグインの仕組み:

  1. JenkinsにGitプラグインをインストールします。ソースコード管理にGitを使用するようにプロジェクトを構成します。 Stashの構成に使用するリポジトリURLを保持する必要があります。 Build TriggersでPoll SCMオプションを有効にします。これは、リモートでビルドをトリガーするために必要です。実際にポーリングする必要はないため、ポーリング頻度を設定して非常に頻繁にポーリングしないようにすることができます。プロジェクト構成を保存します。
  2. JenkinsインスタンスのURLと、使用するようにJenkinsを構成したリポジトリURLを入力します。ドロップダウンを使用して、サポートされている各プロトコルのクローンURLを取得できます。その後、Jenkinsインスタンスに合わせて自由に変更してください。
  3. それでおしまい!

JenkinsとStashの両方が構成された状態で、コードをコミットすると、ビルドトリガーが自動的に発生します。発生するのは、受信後フックがJenkinsにGETリクエストを発し、リポジトリにポーリングするよう指示することです(ポーリングをオンにする必要がある理由)。ポーリングは、実際に変更があるかどうかを確認します。あるので、ビルドをトリガーします!

6
Abhijeet Kamble

Bitbucketプラグインをインストールし、プラグインページに記載されている指示に従ってください。

POSTフック、URL JENKINS_URL/bitbucket-hookを使用して資格情報を必要としない)でBitBucketリポジトリを設定します。各コミットで、「変更がBitBucketにプッシュされたときにビルド」オプションを持つすべてのジョブ有効になります。

こちらをご覧ください: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin

4
jintux

私はこの問題に長い間苦労していましたが、Jenkinsのドキュメントで解決策を見つけることができませんでした。 here Cloudbeesサポートサイトで解決策を見つけました。

これらのけん引webhookをbitbucketリポジトリに追加するだけで、非常にうまく機能します。

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

MultiBranchパイプラインも含め、すべてのパイプラインで働いています。

これが誰かを助けることを願っています;)

ADA

0
abdelhadi danba