web-dev-qa-db-ja.com

BitbucketをJenkinsに適切に接続する方法

約1週間後、BitbucketはJenkinsサーバーにリクエストを送信しません(?)。

私はすべてこのように設定しました:

Endpointhttp://username:apitoken@jenkinshost/
username = Jenkinsのユーザー名
apitoken = Jenkinsのユーザー名に接続されたapitoken
jenkinshost = Jenkinsを実行しているホスト

Project nameはプロジェクトです
Token:プロジェクトごとの構成でセットアップできるトークン。

私はこのウェブサイトに従ってこれをしました: http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins
動作しましたが、動作しなくなりました。 Bitbucketは何かを変更しましたか?どうすれば修正できますか?

enter image description here

46
Highmastdon

新しいコミット後にリポジトリを構築するには、 BitBucket Plugin を使用します。

注目すべき点が1つあります。POSTフック(JenkinsフックではなくPOSTフックであることに注意)を作成すると、URLは機能します最後に「/」が付いている場合:

URL: JENKINS_URL/bitbucket-hook/
e.g. someAddress:8080/bitbucket-hook/

ジョブ構成で「変更がBitBucketにプッシュされたときにビルドする」をチェックすることを忘れないでください。

31
mohi

うまくいくまで、私は同様の問題を抱えていました。以下は、統合の完全なリストです。

  1. 公開鍵と秘密鍵のペアを生成します:ssh-keygen -t rsa
  2. 公開キー(〜/ .ssh/id_rsa.pub)をコピーし、ユーザーのアカウント管理コンソールでBitbucket SSHキーに貼り付けます: enter image description here

  3. 秘密キー(〜/ .ssh/id_rsa)を秘密キーの資格情報を持つ新しいユーザー(または既存のユーザー)にコピーします。この場合、ユーザー名は違いを生じないため、ユーザー名は何でもかまいません。 enter image description here

  4. 次のコマンドを実行して、Bitbucketアカウントにアクセスできるかどうかをテストします:ssh -T [email protected]

  5. オプション:gitを使用して、passwjordなしでレポをデスクにコピーできますgit clone [email protected]:username/repo_name.git
  6. Jenkins Push通知と自動ビルドのBitbucketフックを有効にできるようになりました。次の2つの手順でこれを実行します。

    1. 設定するジョブ/プロジェクト内に認証トークンを追加します。それは何でも構いません: enter image description here

    2. Bitbucketフックの場合:jenkinsフックを選択し、以下のようにフィールドに入力します。 enter image description here

どこ:

**End point**: username:usertoken@jenkins_domain_or_ip
**Project name**: is the name of job you created on Jenkins
**Token**: Is the authorization token you added in the above steps in your Jenkins' job/project 

Recommendation: I usually add the usertoken as the authorization Token (in both Jenkins Auth Token job configuration and Bitbucket hooks), making them one variable to ease things on myself.
18
securecurve

次の手順(リンクと同様)で、JenkinsインスタンスへのBitBucketのHooksオプションを使用して、コミット時にビルドを正常にトリガーできました。

  1. カスタムUUIDまたは文字列シーケンスを生成し、後で保存します
  2. Jenkins->プロジェクトの構成->トリガーのビルド->「リモートからのトリガービルド(スクリプトからなど)」
  3. (ここにUUID/stringを貼り付けます)「認証トークン」
  4. セーブ
  5. Bitbucketリポジトリ設定を編集する
  6. フック->編集:エンドポイント: http://jenkins.something.co:9009/ モジュール名:プロジェクト名:プロジェクト名トークン:(ここにUUID/stringを貼り付け)

エンドポイントでは、認証を使用しているにもかかわらず、URLに基​​本的なHTTP認証を挿入する必要がありませんでした。モジュール名フィールドは使用せず、プロジェクト名はテストケースのスペースを含めて大文字と小文字を区別して入力しました。ビルドは常にすぐにトリガーされるわけではなく、比較的高速でした。このオプションが有効になっているときに既存の統合からあらゆる種類のAPIの問題が発生したため、「グローバルセキュリティの構成」の「クロスサイトリクエストフォージェリエクスプロイトの防止」オプションを無効にすることも検討できます。

14
SandWyrm

反復することで、Tokenフィールドとエンドポイントのトークンが同じになる場合があることを学びました。だから私はそれらをユーザートークンと同じに設定し、それは動作します!また、ユーザーにジョブを作成する権限があることを確認します。

とにかく、access.logをチェックして、BitBucketが試行するかどうかを確認できます。

jenkins

追伸 Bitbucket Documentation へのリンクもあります。いつかもっと便利になるかもしれません。

4
Alexey B.

私はこのプラグインに精通していませんが、BitBucketとJenkinsをうまく組み合わせて使用​​していますが、変更をBitBucketからプッシュするのではなくポーリングします(ビルドサーバーが会社のファイアウォールの背後に隠されているため)。現在のアプローチでまだ問題がある場合は、このアプローチが有効です。

LinuxでGit&MercurialのSSHをセットアップする のこのドキュメントでは、SSHを介してビルドサーバーとBitBucketの間で通信できるようにするために必要な作業の詳細を説明しています。 Gitプラグイン がインストールされた状態でこれが完了したら、ビルド構成に移動し、[ソースコード管理]で[Git]を選択し、リポジトリURLとしてリポジトリのssh URLを入力します。最後に、[トリガーの構築]セクションで[SCMのポーリング]を選択し、ポーリング頻度を必要なものに設定します。

1
robjohncox

私はこの問題を抱えていましたが、CamelCaseでリポジトリに名前を付けたことが問題であることがわかりました。 bitbucketは、リポジトリのURLをすべて小文字に自動的に変更し、WebhookでJenkinsに送信します。次に、Jenkinsは一致するリポジトリを持つプロジェクトを検索します。私のように、プロジェクト構成のリポジトリURLにCamelCaseがある場合、コードをチェックアウトできますが、webhookリクエストのパターンマッチングは失敗します。

リポジトリのURLをCamelCaseではなくすべて小文字に変更するだけで、パターンマッチでプロジェクトが見つかるはずです。

1
EliRibble