ちょっとしたことですが、 pixela-java-client の CI をまわした回数を Pixela で数えてみることにしました。
に影響されてやってみました。たぶんTravis CI以外でもできるはず
tl;dr;
webhook作成後に .travis.ymlに下記を書く
after_script: - if [ "$PIXELA_WEBHOOK_URL" != "" ]; then curl -X POST $PIXELA_WEBHOOK_URL -H 'Content-Length:0'; fi
前置き
Travis CIではテストの前後などに任意の処理を差し込めるのですが、何が使えるかは下記に全部載ってます
このうちビルド終了後の処理は
after_success
after_failure
after_script
ですが、after_successと
after_failureは名前の通りビルド成功時と失敗時のみ実行されるやつなので今回はビルド結果に関わらず実行したいので
after_script` を使います
手順
グラフとwebhookを作成
拙作の pixela gem を使うとこんな感じ。
require "pixela" client = Pixela::Client.new(username: ENV["USERNAME"], token: ENV["TOKEN"]) client.graph("pixela-gem-ci").create(name: "CI activity of pixela-gem", unit: "build", type: "int", color: "shibafu", timezone: "Asia/Tokyo") client.create_webhook(graph_id: "pixela-gem-ci", type: "increment")
create_webhook
の戻り値に webhookHash
が入ってるので忘れずにコピペしておきます
.travis.yml修正
after_script: - if [ "$PIXELA_WEBHOOK_URL" != "" ]; then curl -X POST $PIXELA_WEBHOOK_URL -H 'Content-Length:0'; fi
.travis.ymlにwebhookのURLをベタ書きするとforkされた先のリポジトリでも草が生えるのが嫌だったので、環境変数が登録されてる時のみPOSTするようにしています。
TravisCIに環境変数を登録する
Settingsに https://pixe.la/v1/users/【USERNAME】/webhooks/【webhookHash】
の形式でwebhookのurlを登録する
READMEとかに草を貼る
こんな感じ
[![CI activity of pixela-gem](https://pixe.la/v1/users/sue445/graphs/pixela-gem-ci)](https://pixe.la/v1/users/sue445/graphs/pixela-gem-ci.html)
グラフにpurge_cache_urlsを登録する
GitHubに画像のURLを貼ると自動的にCDN経由のURLになってしまいwebhookで草を生やしてもGitHub上に反映されないため、CDNのURL(https://camo.githubusercontent.com/〜
)を purge_cache_urls
に登録してやる必要があります。
client.graph("pixela-gem-ci").update(purge_cache_urls: ["https://camo.githubusercontent.com/XXXXXXXXXXXXXXXXXX"])
purge_cache_urls
の仕組については下記を参照
対応時のPR
実際にできたやつ