プロジェクトのGitHub Readme.mdにJenkinsビルドステータスを表示する方法はありますか?
Jenkinsを使用して、継続的な統合ビルドを実行します。コミットするたびに、ドキュメントとリリースバンドルを最終的に作成する前に、すべてがコンパイルされ、単体テストと統合テストが実行されることが保証されます。
ビルドを壊す何かをうっかりコミットしてしまうリスクがまだあります。 GitHubプロジェクトページにアクセスするユーザーは、現在のマスターがその状態にあることを知っていると便利です。
OK、JenkinsをセットアップしてGitHubビルドステータスを設定する方法を次に示します。これは、すべてのプッシュでビルドを行うようにGitHubプラグインが設定されたJenkinsをすでに持っていることを前提としています。
GitHubに移動し、ログインして、設定、個人アクセストークンに移動し、新しいトークンを生成をクリックします。
repo:statusを確認してください(これが必要かどうかわかりませんが、私はそれをやったので、うまくいきました)。
トークンを生成してコピーします。
使用するGitHubユーザーが、リポジトリの共同作業者(プライベートリポジトリの場合)であるか、ビルドするリポジトリへのプッシュおよびプルアクセスを持つ組織のメンバー(組織リポジトリの場合)であることを確認してください。
Jenkinsサーバーにアクセスしてログインします。
GitHub Web Hookを選択JenkinsがフックURLを自動管理するを選択し、GitHub sernameとOAuthトークンを指定します手順3で取得しました。
Test Credentialボタンで機能することを確認します。 保存設定。
Jenkinsジョブを見つけて、GitHubコミットでビルドステータスを設定をビルド後の手順に追加します
それでおしまい。次に、テストビルドを実行し、GitHubリポジトリに移動して、機能するかどうかを確認します。メインリポジトリページでBranchesをクリックして、ビルドステータスを確認します。
緑色のチェックマークが表示されます:
私がしたことは非常に簡単です:
常に成功を収めるタスク後処理プラグインを追加する
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
\"state\": \"success\",
\"target_url\": \"${BUILD_URL}\",
\"description\": \"The build has succeeded!\"
}"
「ビルドを失敗としてマーク」した場合に失敗するポストタスクプラグインを追加します
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
\"state\": \"failure\",
\"target_url\": \"${BUILD_URL}\",
\"description\": \"The build has failed!\"
}"
テストの開始時に保留中に呼び出しを追加することもできます
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
\"state\": \"pending\",
\"target_url\": \"${BUILD_URL}\",
\"description\": \"The build is pending!\"
}"
その間、JenkinsとGitHubのUIが少し変更され、Jenkinsを正しく構成する方法を見つけるのに少し時間がかかりました。ここでの説明は、Jenkinsバージョン2.121.1に基づいています。
また、Jenkins JobがWebhookまたはポーリングによってトリガーされるように既に構成されていると仮定します。それらは私がそれを機能させるために取ったステップです:
repo:status
Configure System
およびOAuth SecretをGitHubサーバーとして追加します-Secret Text
を認証方法として使用してOAuthそこに秘密。Set GitHub commit status
をビルド後アクションとして追加します。 ステータス結果をOne of the default messages and statuses
に設定します。コミットとブランチのステータスが表示されます:
このプラグインは動作するはずです: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
このようなバッジをREADME.md
ファイルに埋め込むことができるはずです:
Commit Status API を使用すると、「 Repo Statuses API 」を確認できます。
2013年4月26日以降、 GitHubリポジトリブランチページ で ビルドステータス を確認できるようになりました。
つまり、GitHubプロジェクトページにアクセスして、ジェンキンスだけではなく、それらのステータスを確認することもできます。
2013年4月30日から、 コミットステータスのAPIエンドポイント が拡張され、ブランチおよびタグ名を許可し、SHAをコミットします。
README.mdに投稿できるバッジURLを提供するこのプラグインもあります。
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Github
プラグインがJenkins
にインストールされている場合、次のようにPost build actions
で実行できます。
README.mdに以下の行を追加し、jenkinsプロジェクトに従って両方のURLを変更します。
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
JenkinsとGitHubの保護されたブランチのセットアップに関して。私はJenkins 2.6を使用していますが、これらを機能させるために行った手順は次のとおりです。
リポジトリのGitHub Webページ:
Jenkinsサーバー:(GitおよびGitHubプラグインがインストールされていることを確認してください)
また、Jenkinsが使用しているGitHubアカウントがリポジトリの共同編集者であることを確認してください。書き込み許可レベルを設定しました。
お役に立てれば。
Alex の指示に従いましたが、うまくいきました。
ただし、GitHub Enterpriseの場合、Jenkinsにサーバーを追加するときにAPI URLを変更する必要があります。
たとえば、会社がcreditcard.comの場合、URLは
丁寧に 更新 Githubコミットステータス (上記の@voncで説明)、残念ながら彼らはまだ実装していません レポステータスAPI
編集:
私はもうこのアプローチを使用していません。他の回答のいずれかを使用してください。
更新:特定のケースのために私がやったこと:(上記の回答は素晴らしかった-ありがとう!)
ビルドサーバーはインターネット上にないため、ビルドステータスをgithubのgh-pagesブランチに公開するスクリプトがあります。
GitHubはイメージをキャッシュするため、ビルドステータスイメージの短いキャッシュタイムアウトを指示する.htaccessファイルを作成しました。
ビルドステータスイメージがあるディレクトリにこれを置きます:
ExpiresByType image/png "access plus 2 minutes"
こちら ビルドスクリプト。 gh-pagesに公開するターゲットは、 '-publish.site.dry.run'
400行未満の設定で、次のものがあります。
。 。そして、このスクリプトはジェンキンスの内外で実行できるため、
結果:
プロジェクトのメインページ ビルドステータスは、各ビルド後に更新され、最新のAPIドキュメント、テスト結果、テストカバレッジとともに表示されます。