2017年3月21日火曜日

[CI] Semaphore 始めました

Semaphore は、既に2016年の3月から使っていたのですが、ブログにしてませんでした。

(いつのまにか変なおっさんが・・・)

ブログズミ: 無料で使える CI サービス比較」などで紹介したこともありますが、その当時はまだ使ってませんでした。
現在は iutest に対して clang analysis (scan-build) を行う CI として利用しています。
また、定期実行ができ Bitbucket 連携、private も Free プラン内で利用可能な点から他のことでも便利に使わせてもらっています。
今回はサインアップから概要程度の内容ですが、その辺の話もそのうち紹介したいと思ってます。

Semaphore
これまでに様々な CI サービスを紹介してきましたが、
Semaphore は Circle CI と同等の速さ(Travis や Codesihp よりは速い)と並列実行、シンプルが売りらしいです。
(シンプルだとは思ってるけど、速さとかは気にしたことないので実感ないなぁ)
個人的に便利だと思っているのは前述した、定期実行と Free プランで private リポジトリも扱える点です。


Pricing
さて、その Pricing ですが、基本的には有料です。
ただし、OSS であれば Free (2並列まで) で使えます(よくあるパターンですね)。また、Private リポジトリでも 100 job/月 までなら Free で使えます。

アカウント作成~プロジェクト作成
Semaphore は他の CI サービスと違い、Github などの外部アカウントでのサインアップがありません。
トップページの右サイドのところから、アカウント名、メールアドレス、パスワードを入力して、「Create Free Account」をクリックします。



入力したメールアドレスにメールが送られてくるので、
そちらのリンクを開いたら登録完了です。




つづいて、プロジェクトを作成していきます。
最初に Github か Bitbucket かを聞かれるので、選択してください。
初回はアカウント連携をする必要があると思いますので、適宜対応してください。


次にリポジトリを選択。


ブランチを選択。


リポジトリの解析が始まるので終わるまで待ちます。


解析が終わるとプロジェクトの作成が完了です。
あとは、何をさせるかを設定していきましょう。


設定に関しては特に説明するようなこともないので、省かせて頂きます。

最後に
Semaphore はシンプルに使えていいなぁーって感じくらいで、今回の紹介ではあんまり良さは伝わらないんじゃないかなと思います。
ただ、冒頭でも書いたとおり、Bitbucket + private が無料プランでデキルのが一番のメリットではないかと思います。
このへんも紹介したいところですが、まだまだ作業中な状態なので、もうちょっとお待ちください。定期実行の活用例は近いうちに紹介できると思います。

では。今回は以上です。









2017年3月13日月曜日

[MSBuild] コード分析警告をエラーとする

Visual Studio コード分析機能については省略。
こちらの機能が無効な状態で SCM 管理されている場合、MSBuild で /p:RunCodeAnalysis=true /p:EnablePREfast=true をつけてビルドするとコード分析が有効になります。
Jenkins でこれを実行して、警告集計している場合は、警告プラグインの設定でジョブを失敗にしたり、不安定にしたりできるので問題ないのですが、CI サービスを使っていると Warning は成功となってしまいます。(exit code 0)
実際、自作 C++ テスティングフレームワークの iutestAppVeyor でコード分析させてましたが、ずーーーっと警告を無視してました…





これを解決する方法はとても簡単です。
MSBuild のコマンドラインオプションに /p:CodeAnalysisTreatWarningsAsErrors=true を追加してください。これで、コード分析警告をエラーとして扱うようになります。



今回は以上です。

2017年3月7日火曜日

[Wercker] Walterbot + Slack を試してみた



Wercker に Walterbot というのがあったので使ってみました。
画像のとおり、Slack と連携する bot のようです。

Slack のセットアップ


まず、Slack のチームを作っておく必要があります。
仕事で使ってますが、個人用になかったので今回作りました。
iutest-team.slack.com
といっても、一人だし何もしゃべってませんが…

Walterbot セットアップ
というわけで、一人で寂しいので Walterbot をチームに加えたいと思います!
こちら(http://www.wercker.com/walterbot)のセットアップ手順に従ってやれば問題なくできると思います。


手順は3つです。
まずは、「Add to Slack」ボタンを押して Walterbot をチームにインストールします。
参加させたいチームを入力、認証をしてください。
  

これでインストール完了です。


特に問題がなければ、Slack に Walterbot さんが Join していると思います。



Token 作成と登録
続いて、Walterbot が CI ステータスを喋れるようにトークン作成と登録を行います。

トークンの作成は Wercker の Web ページで行います。
アカウントの「Settings」から「Personal Tokens」を開いて、「Name」に適当な名前をつけて「Generate」するだけです。

Generate するとトークンが出来上がるのでコピーしておきましょう。



ここからは Slack での作業になります。
先程作成したトークンを使って以下のコマンドを実行します。
/walter register <token>


通知設定
連携のための設定が完了しましたので、最後に通知設定をしていきます。
通知設定は subscribe コマンドを使います。まずは使い方を聞いてみます。
/walter subscribe help

Use `/walter subscribe` to get notifications on passed/failed runs
In order to receive notifications for runs on apps you can use:
`/walter subscribe to [owner/app name] by [me, wercker username or any] on [fail, pass or all]`
Get a list of all subscriptions via:
`/walter subscribe list`

ヘルプによれば、owner また app に対して、誰が、失敗 or 成功またはそのどちらかによって結果を通知してくれます。
今回は試しに iutest に対して any/all で設定しました。
/walter subscribe srz-zumix/iutest any all


テストが成功するとこんな感じで教えてくれます!



通知設定を解除するときは、/walter unsubscribe コマンドを実行すると下のように解除UIが表示されます。


最後に
今回は使ってみた程度ですが、Slack をよく使っているチームにはうれしい機能ではないでしょうか?
先週の Workflows に引き続き、Wercker の機能を紹介しましたが、今後もっともっと便利になっていくことを期待してます。