web-dev-qa-db-ja.com

GitHubリポジトリでJenkinsビルドの現在の状態を表示する

プロジェクトのGitHub Readme.mdにJenkinsビルドステータスを表示する方法はありますか?

Jenkinsを使用して、継続的な統合ビルドを実行します。コミットするたびに、ドキュメントとリリースバンドルを最終的に作成する前に、すべてがコンパイルされ、単体テストと統合テストが実行されることが保証されます。

ビルドを壊す何かをうっかりコミットしてしまうリスクがまだあります。 GitHubプロジェクトページにアクセスするユーザーは、現在のマスターがその状態にあることを知っていると便利です。

159
Jasper Blues

OK、JenkinsをセットアップしてGitHubビルドステータスを設定する方法を次に示します。これは、すべてのプッシュでビルドを行うようにGitHubプラグインが設定されたJenkinsをすでに持っていることを前提としています。

  1. GitHubに移動し、ログインして、設定個人アクセストークンに移動し、新しいトークンを生成をクリックします。

    screenshot of GitHub settings

  2. repo:statusを確認してください(これが必要かどうかわかりませんが、私はそれをやったので、うまくいきました)。

    screenshot of GitHub token generation

  3. トークンを生成してコピーします。

  4. 使用するGitHubユーザーが、リポジトリの共同作業者(プライベートリポジトリの場合)であるか、ビルドするリポジトリへのプッシュおよびプルアクセスを持つ組織のメンバー(組織リポジトリの場合)であることを確認してください。

  5. Jenkinsサーバーにアクセスしてログインします。

  6. Jenkinsの管理システムの設定
  7. GitHub Web Hookを選択JenkinsがフックURLを自動管理するを選択し、GitHub sernameOAuthトークンを指定します手順3で取得しました。

    screenshot of Jenkins global settings

  8. Test Credentialボタンで機能することを確認します。 保存設定。

  9. Jenkinsジョブを見つけて、GitHubコミットでビルドステータスを設定をビルド後の手順に追加します

    screenshot of Jenkins job configuration

それでおしまい。次に、テストビルドを実行し、GitHubリポジトリに移動して、機能するかどうかを確認します。メインリポジトリページでBranchesをクリックして、ビルドステータスを確認します。

sceenshot of the main page where you click on 'branches'

緑色のチェックマークが表示されます:

screenshot of GitHub branches with build status

152
Marius Gedminas

私がしたことは非常に簡単です:

  1. Hudson Post Taskプラグインをインストールする
  2. ここでパーソナルアクセストークンを作成します。 https://github.com/settings/tokens
  3. 常に成功を収めるタスク後処理プラグインを追加する

    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!\"
    }"
    
  4. 「ビルドを失敗としてマーク」した場合に失敗するポストタスクプラグインを追加します

    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!\"
    }"
    
  5. テストの開始時に保留中に呼び出しを追加することもできます

    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!\"
    }"
    

Screenshot of the Post build task configuration

35
Natim

その間、JenkinsとGitHubのUIが少し変更され、Jenkinsを正しく構成する方法を見つけるのに少し時間がかかりました。ここでの説明は、Jenkinsバージョン2.121.1に基づいています。

また、Jenkins JobがWebhookまたはポーリングによってトリガーされるように既に構成されていると仮定します。それらは私がそれを機能させるために取ったステップです:

  1. Githubの構成:OAuthスコープを使用した個人用アクセストークンの作成repo:status
  2. Jenkinsを構成します:Configure SystemおよびOAuth SecretをGitHubサーバーとして追加します-Secret Textを認証方法として使用してOAuthそこに秘密。
  3. Jenkinsジョブを設定します:Set GitHub commit statusビルド後アクションとして追加します。 ステータス結果One of the default messages and statusesに設定します。
  4. GitHubで結果を確認します。GitHubコミットでビルドステータスとビルド実行時間を取得しているかどうかを確認します。

Githubを構成する

Create Personal Access Token


enter image description here


enter image description here


enter image description here


Jenkinsを構成する

enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


Jenkinsジョブの構成

enter image description here


enter image description here


enter image description here


結果

コミットとブランチのステータスが表示されます:

enter image description here

31
Alex

このプラグインは動作するはずです: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

このようなバッジをREADME.mdファイルに埋め込むことができるはずです:

build passing

21
Koraktor

Commit Status API を使用すると、「 Repo Statuses API 」を確認できます。

2013年4月26日以降、 GitHubリポジトリブランチページビルドステータス を確認できるようになりました。

build status on GitHub repo branches

つまり、GitHubプロジェクトページにアクセスして、ジェンキンスだけではなく、それらのステータスを確認することもできます。

2013年4月30日から、 コミットステータスのAPIエンドポイント が拡張され、ブランチおよびタグ名を許可し、SHAをコミットします

11
VonC

README.mdに投稿できるバッジURLを提供するこのプラグインもあります。

build passing

https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

10
mholm815

GithubプラグインがJenkinsにインストールされている場合、次のようにPost build actionsで実行できます。

set build status on github

7
Rémy Virin

README.mdに以下の行を追加し、jenkinsプロジェクトに従って両方のURLを変更します。

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
3
Kaushal

JenkinsとGitHubの保護されたブランチのセットアップに関して。私はJenkins 2.6を使用していますが、これらを機能させるために行った手順は次のとおりです。

リポジトリのGitHub Webページ:

  1. [設定]> [ブランチ]に移動します。
  2. [ブランチの保護]で、[ブランチの選択]メニューをクリックし、保護ブランチとして設定するブランチを選択します。
  3. 必要に応じてオプションを有効にします。

Jenkinsサーバー:(GitおよびGitHubプラグインがインストールされていることを確認してください)

  1. [Jenkinsの管理]> [システムの構成]に移動します。
  2. GitHubで、API URLを https://api.github.com に設定します。これはデフォルト値ですが。
  3. クレデンシャル用に生成されたトークンを選択します。トークンをまだ生成していない場合は、[詳細設定...]をクリックし、[追加のアクション]でログインとパスワードをトークンに変換して、資格情報として使用できます。

また、Jenkinsが使用しているGitHubアカウントがリポジトリの共同編集者であることを確認してください。書き込み許可レベルを設定しました。

お役に立てれば。

3
d' ghostman

Alex の指示に従いましたが、うまくいきました。

ただし、GitHub Enterpriseの場合、Jenkinsにサーバーを追加するときにAPI URLを変更する必要があります。

たとえば、会社がcreditcard.comの場合、URLは

https://github.creditcard.com/api/v3/

1
Adan Amarillas

丁寧に 更新 Githubコミットステータス (上記の@voncで説明)、残念ながら彼らはまだ実装していません レポステータスAPI

1
chernjie

編集:

私はもうこのアプローチを使用していません。他の回答のいずれかを使用してください。

更新:特定のケースのために私がやったこと:(上記の回答は素晴らしかった-ありがとう!)

ビルドサーバーはインターネット上にないため、ビルドステータスをgithubのgh-pagesブランチに公開するスクリプトがあります。

  • ビルドスタンプの開始に失敗しました
  • ビルド終了スタンプの成功
  • プロジェクトは、メインプロジェクトの後に実行され、結果を公開します->ビルドステータス、APIドキュメント、テストレポート、テストカバレッジ。

GitHubはイメージをキャッシュするため、ビルドステータスイメージの短いキャッシュタイムアウトを指示する.htaccessファイルを作成しました。

ビルドステータスイメージがあるディレクトリにこれを置きます:

ExpiresByType image/png "access plus 2 minutes"

こちら ビルドスクリプト。 gh-pagesに公開するターゲットは、 '-publish.site.dry.run'

400行未満の設定で、次のものがあります。

  • コンパイルチェック
  • 単体テストと統合テスト
  • テストレポート
  • コードカバレッジレポート
  • APIドキュメント
  • Githubへの公開

。 。そして、このスクリプトはジェンキンスの内外で実行できるため、

  • 開発者は、コミットする前にこのスクリプトを実行して、他の人に影響を与える破損したビルドの可能性を減らすことができます。
  • 障害はローカルで簡単に再現できます。

結果:

プロジェクトのメインページ ビルドステータスは、各ビルド後に更新され、最新のAPIドキュメント、テスト結果、テストカバレッジとともに表示されます。

1
Jasper Blues