web-dev-qa-db-ja.com

BitbucketリポジトリからJenkinsパイプラインをトリガーする方法

テスト目的で、Jenkinsフリースタイルプロジェクトのbitbucketでwebhookトリガーを正常にセットアップしました。

残念ながら、私のJenkinsプロジェクトはPipeline形式を使用しているため、Bitbucketにそのようなプロジェクトをトリガーさせることはできません。問題は、Bitbucket webhookの送信元であるレポからプルするために登録されたJenkinsプロジェクトが存在しないようであり、Jenkinsは次のように返信します。

Error: Jenkins response: No git jobs using repository: ssh://git@myhost:7999/xxx/testing-jenkins.git and branches: master No Git consumers using SCM API plugin for: ssh://git@myhost:7999/xxx/testing-jenkins.git

パイプラインプロジェクトは、Jenkinsfileが指定されたリポジトリ(ssh://git@myhost:7999/xxx/testing-jenkins.git)、「SCMからのパイプラインスクリプト」オプションを使用します。

したがって、実際 Pipelineには一種の「gitコンシューマ」がありますが、これはJenkinsによって考慮されていないようです。おそらくこれは実際のプロジェクトソースではなく、パイプラインソースだからです。

BitbucketとJenkins Pipelineプロジェクトの統合の例はありますか?何も見つかりませんでした。

27
dangonfast

完全なBitbucketおよびJenkins Pipelineを探している場合は、 Bitbucket Branch Source Plugin を使用することを強くお勧めします。プラグインは、すべてのブランチとプルリクエストを検出し、リポジトリのルートにJenkinsFileを持つすべての人をビルドします。

Bitbucket Teamとしてプロジェクトを作成し、組織のすべてのレポをスキャンすることもできます。 enter image description here

CloudBeesの公式 doc を参照してください

15
JPLemelin

私は同じ問題に苦しんでいました。以下は私が従った重要なポイントです。

Jenkinsのパイプラインジョブでは、

  1. Build Triggersの下で、「Trigger builds remote(e.g.、from scripts)」をチェックし、「Authentication Token」にランダムでユニークなトークンを入力します。

BitBucketリポジトリで、

  1. [設定]> [サービス]に移動します

  2. ドロップダウンから「Jenkins」と「サービスの追加」を選択します。

    • 「Csrfが有効」をチェックします

    • エンドポイントhttp:// username:[email protected]/

      Jenkins home> Peopleでユーザー名とapitokenを見つけることができます。ユーザーを選択し、設定をクリックします。 [APIトークン]の下の[APIトークンを表示]ボタンをクリックすると、ユーザー名とapitokenが表示されます。

    • モジュール名:これはオプションです。監視する特定のファイルまたはフォルダを指定できます。

    • プロジェクト名:Jenkinsのプロジェクト名。

      ジョブが何らかのフォルダー構造にある場合、たとえば「MyTestFolder/MyTestPipelineJob」がある場合、言及するプロジェクト名は「MyTestFolder/job/MyTestPipelineJob」です

    • Token:Jenkinsジョブで作成された「認証トークン」。

準備完了です!!

http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins/ といくつかの本能を参照しました。 :)

8
Litty Philip

これと同じ問題があります。私の回避策は、 /をWebHookによってトリガーできるフリースタイルプロジェクトを作成し、そのプロジェクトの完了によってPipelineをトリガーすることでした。

それまでの間、修正を確認できるJenkinsのバグは次のとおりです。 https://issues.jenkins-ci.org/browse/JENKINS-38447

3
Chris Hill

2017.10でこれを行う方法を考え出す時間を費やす

  1. 説明した@JPLemelinのように、Bitbucketチーム/プロジェクトを使用した新しいJenkinsアイテム
  2. ドキュメントへの参照: https://support.cloudbees.com/hc/en-us/articles/115000051132-How-to-Trigger-Multibranch-Jobs-from-BitBucket-Cloud- 、インストールプラグイン:BitBucket Branch Sourceプラグイン。
  3. bitbucketに移動し、webhookを追加します:$ {your-jenkins-url}/bitbucket-scmsource-hook/notify

これらの3つのステップの後、bitbucketへの新しいコミット後にパイプラインジョブを実行します

1
DiveInto

私はまったく同じ問題を抱えていました...

原因は、ブランチ指定子に*/masterを使用していたことです。私はそれを綴る必要がありました:Origin/master(ワイルドカードなし)。

今はうまく機能しています。

1

簡単な解決策は、Jenkinsで Generic Webhook Trigger Plugin を使用することです。

あなたがする必要があります

  • フリースタイルまたはパイプラインジョブで有効にします。
  • トークン文字列を構成する
  • JSONPath:sを構築して、必要なものをBitbucket Webhookから収集します。
  • プラグインエンドポイントをBitbucketに追加します。 JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked

プラグインは、トラブルシューティングが容易になるように、呼び出されたときに明確なフィードバックを提供します。

正しいリポジトリを複製するために必要な値をwebhookから選択するか、それが呼び出されたときに何をしたいのかはあなた次第です。

1
Tomas Bjerre

私はついに、Multi Branch PipelineのJenkinsfileでこの作業を行うことができました。

Bitbucketでは、Jenkins-URLとclone-URLを使用してWebhookを作成し、webhookに次のURLを配置します(JenkinsのプロジェクトのURLを正確に示します)。

http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git

トリガーをテストすると、結果は次のようになります。

No git jobs using repository: http://<user>@<bitbucket>/scm/<project>/<repo>.git and branches: 
Scheduled indexing of <repo>

したがって、ジョブはトリガーされませんでしたが、マルチブランチスキャンがトリガーされたため、変更されたブランチがビルドされます。

0
Prikkeldraad