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がビルドを開始するのはなぜですか?
毎分リポジトリをポーリングするようにJenkinsインスタンスをセットアップしています。それはあなたのニーズに十分な頻度ではありませんか?
当社のJenkins設定:
ビルドトリガー>ポーリングSCM =チェック済み
トリガーの作成> SCMのポーリング>スケジュール=
# every 1 minute
*/1 * * * *
BitbucketのJenkins Hookがまったく機能していないため、このソリューションに来たブランチごとに異なるJenkinsプロジェクトがあります。
https://YOUR.JENKINS.SERVER:PORT/ bitbucket-hook /
そして、あなたがジェンキンスでセットアップ認証を持っているなら、URLは
https://USERNAME:[email protected]:PORT/ bitbucket-hook /
このようにして、3つのビルドプロジェクトがあります。1つはすべての機能、1つは開発用、もう1つはリリースブランチ用です。 URLの最後にスラッシュ( '/')を含めるようにしてください。そうしないと、フックが機能しません。
そして、最高の点は、新しいJenkinsプロジェクトに新しいフックを追加する必要がないことです。
実際には、これをBitbucketサービスを使用してJenkinsで機能させることができますが、動作させるには多少の試行錯誤が必要でした。
認証を使用する場合、ビルドを作成できるユーザーの1人からAPIトークンを取得できます。 Bitbucket専用のアカウントを作成しました。 APIトークンを使用するには、少なくともJenkins 1.426が必要です。その後、APIトークンを使用したHTTP認証をBitbucketサービスのパスワードとして使用できます。
これが私の設定方法です:
エンドポイント: http:// [bitbucket]:[APITOKEN] @ [www.example.com/jenkins/]
プロジェクト名: [NameOfMyJenkinsProject]
モジュール名: [空]
トークン: [Jenkinsプロジェクト設定にトークンが見つかりました]
このように設定した後、トークンと認証を使用して、Bitbucketからプッシュトリガービルドを有効にすることができました。
Jenkinsで認証を使用する場合、トークンは役に立ちません。
gitプラグインを使用し、POSTフックとhttp[s]://your.site.com[/jenkins]/git/[email protected]:your-username/your-repo.git
初期化。ポーリングがオンになっていて、何らかの値でスケジュールされていることを確認してください。そうしないと機能しません。
ポーリングSCMを使用するのは良いことですが、欠点もほとんどありません。GITリポジトリからメタデータをフェッチします。GITリポジトリは、とにかくビットバケツサーバーと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を指定する必要があります。トリガーを使用すると、接続なども確認できます。
プラグインのリンク: Bitbucket webhooks for Jenkins
このプラグインの仕組み:
JenkinsとStashの両方が構成された状態で、コードをコミットすると、ビルドトリガーが自動的に発生します。発生するのは、受信後フックがJenkinsにGETリクエストを発し、リポジトリにポーリングするよう指示することです(ポーリングをオンにする必要がある理由)。ポーリングは、実際に変更があるかどうかを確認します。あるので、ビルドをトリガーします!
Bitbucketプラグインをインストールし、プラグインページに記載されている指示に従ってください。
POSTフック、URL JENKINS_URL/bitbucket-hookを使用して資格情報を必要としない)でBitBucketリポジトリを設定します。各コミットで、「変更がBitBucketにプッシュされたときにビルド」オプションを持つすべてのジョブ有効になります。
こちらをご覧ください: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin
私はこの問題に長い間苦労していましたが、Jenkinsのドキュメントで解決策を見つけることができませんでした。 here Cloudbeesサポートサイトで解決策を見つけました。
これらのけん引webhookをbitbucketリポジトリに追加するだけで、非常にうまく機能します。
https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook
MultiBranchパイプラインも含め、すべてのパイプラインで働いています。
これが誰かを助けることを願っています;)
ADA