61

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}/job/ {my_jenkins_job}/build?token={token}にアクセスすると、ビルドが適切に開始されます。

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

4

7 に答える 7

79

Bitbucket の Jenkins Hook がまったく機能していないため、さまざまなブランチにさまざまな Jenkins プロジェクトがあり、この解決策にたどり着きました。

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

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

ジェンキンスで認証をセットアップしている場合、URLは次のようにする必要があります

https:// USERNAME:PASSWORD@YOUR.JENKINS.SERVER:PORT /bitbucket-hook/

  • Jenkins プロジェクトを次のように構成します。
  • ビルドトリガーの下で、変更がBitBucketにプッシュされたときにビルドを有効にします
  • Source Code ManagementGITを選択します。資格情報を入力し、構築するブランチを定義します( **feature/*など)

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

さらに、新しい Jenkins プロジェクト用に新しいフックを追加する必要はありません。

于 2015-01-31T10:15:16.343 に答える
40

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

Jenkins の構成:

Build Triggers > Poll SCM = オン

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

# every 1 minute
*/1 * * * *
于 2012-06-27T16:44:50.880 に答える
12

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

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

これが私のセットアップ方法です:

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

プロジェクト名: [NameOfMyJenkinsProject]

モジュール名: [空]

トークン: [Jenkins プロジェクト設定で見つかったトークン]

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

于 2012-12-21T01:05:14.333 に答える
11

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

Git プラグインを使用し、その中で POST フックを使用しhttp[s]://your.site.com[/jenkins]/git/notifyCommit?url=git@bitbucket.org:your-username/your-repo.gitます。ポーリングがオンになっていて、ある値でスケジュールされていることを確認してください。そうしないと、これは機能しません。

于 2012-09-04T02:07:03.633 に答える
6

Poll SCM を使用することは良いことですが、欠点もほとんどありません。GIT リポジトリからメタデータをフェッチすることになります。GIT リポジトリは、bitbucket サーバーと Jenkins サーバーから帯域幅の一部を使用します。

Bitbucket は、新しい更新が到着した場合にいつ Jenkins をトリガーするかを認識している方がよいでしょう。bitbucket の最新バージョンを使用している場合は、Bitbucket と互換性のある "Stash webhooks for Jenkins" というプラグイン名があります。

このプラグイン内では、Jenkins の URL と JOB 名を指定するだけで済みます。これにより、Jenkins と Bitbucket 間の追加のセキュリティ レイヤーも提供されます。 ここに画像の説明を入力

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

ここに画像の説明を入力 上記は、Jenkins URL と Repo Clone URL を指定する必要があるアドオン設定です。トリガーで、接続なども確認できます。

プラグインのリンク: Jenkins の Bitbucket Webhooks

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

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

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

于 2016-03-30T06:46:33.247 に答える