2017年7月24日月曜日

[CI] Bitrise で紹介プログラムが始まってた

Extra minutes on hobby plan! | Bitrise


以前の紹介したBitriseブログズミ: [CI] Bitrise 始めました)で、"Referral program(紹介プログラム)"が始まりました。
このプログラムは紹介するごとに、ビルド時間の上限が +5 分され、最大 +20 分できるものです。
条件や方法については、後述します。

無料プランではビルド時間 10分 の制限がある
Bitrise Pricing

Bitrise の Hobby plan (無料プラン)では、1ビルド10分の制限があります。

10分制限は、他の CI サービスと比べると結構短いです。
参考(少し古いですが…):「ブログズミ: 無料で使える CI サービス比較」

iutest でも、この制限回避のために iOS と Android のテストジョブを別個に用意してます。
(やりようによっては制限時間内に収められるかもしれませんし、分ける利点もあったりしますが…)

Referral program で無料プランでのビルド時間が最大 30 分になる
今回のプログラムを利用することで、ビルド時間が最大 30 分まで増やせるようになりました
1人紹介するごとに +5 分で、4人紹介で最大の 30 分になります。
さらに、紹介人数が5人になると Bitrise Tシャツがもらえるっぽいですw



条件と方法
まず、方法ですが、
Account Settings に Referrals のタブがあるのでそこを開きます。
(今なら上のバーにもリンクがありますね)
開くと、紹介用URL が右上に書いてありますので、この URL からアクセスしてもらうのが第一条件です。

筆者の場合 https://www.bitrise.io?referrer=a9c0b9baf7536067 です。(よろしくお願いしますm(__)m)

そして、アカウント登録をしてもらうこと、
さらに、ジョブ(App)を追加して、ビルドがグリーンであること、
これらの条件をすべて満たすと、紹介したことになり、+5 分されます。

筆者はまだ 0 人なので、公式ブログをキャプチャした画像になりますが、
こんな感じで状態が表示されるようです。



最後に
Bitriseは、iOS/Android のアプリ開発では定番の CI になっているようですし、それらの開発をしている方は是非使ってみてください。
また、最近どこの CI でも見るようになってきた ワークフロー も、Bitrise では使えますので、試してみたい方も是非!
そして、私に Bitrise T-shirt をください!




今回は以上です。では!


2017年7月18日火曜日

[Jenkins] Pipeline Script からプラグイン機能を呼び出す

ブログズミ: [Jenkins] Groovy で IRC Plugin を使い倒す
以前、Groovy post build プラグインから IRC Plugin の機能を呼び出して、任意のメッセージを飛ばすことをやりましたが、これを Jenkinsfile に記述します。

やり方は単純
Jenkinsfile にそのまま書くだけです。

以前、Groovy Label Assignment plugin 向けに書いた groovy がこちら。
def jenkins = hudson.model.Hudson.instance
def irc_channel="#kiwiirc-iutest"
def p = jenkins.getPlugin("ircbot")
if( p == null ) {
  println("require IRC Plugin")
  return
}
def c = p.imPlugin.provider.currentConnection()
if( c == null ) {
  println("IRC connection not found. please set to IRC configuration")
  return
}
c.send(irc_channel, "label assignment")
return

これを、すこし汎用的にして Jenkins ファイルに追加します。

def send_irc(channel, message)
{
    def jenkins = hudson.model.Hudson.instance
    def p = jenkins.getPlugin("ircbot")
    if( p == null ) {
      println("require IRC Plugin")
      return
    }
    def c = p.imPlugin.provider.currentConnection()
    if( c == null ) {
      println("IRC connection not found. please set to IRC configuration")
      return
    }
    c.send(channel, message)
    return
}

で、あとはお好きなタイミングで呼び出すだけです。
stage('irc-send') {
        send_irc('#TEST', 'ビルドに成功したよ!')
    }


簡単ですね^^

2017年7月10日月曜日

[C++] override すべき関数の名前 typo に気づける idiom

Google Test でテストのセットアップを定義する場合は、SetUp 関数をオーバーライドするのですが、これを Setup と間違えてしまう人が多いようです。
ただ、Google Test ではこの間違いにコンパイル時に気付けるようになってます。
その部分のコードがこちら

private:
  struct Setup_should_be_spelled_SetUp {};
  virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }

override つけたらいいやんって話ですが、まぁ…つけない人もいるわけで…
そんな人でもすぐに間違いに気付けるのがこのイディオムです。

サンプルコード:
class A
{
public:
    virtual void SetUp() {}
private:
  struct Setup_should_be_spelled_SetUp {};
  virtual Setup_should_be_spelled_SetUp* Setup() { return 0; }
};

class Override : public A
{
public:
    void Setup() override {}
    void setup() override {}
};

class NoOverride : public A
{
public:
    void Setup() {}
    void setup() {}
};


int main()
{
    return 0;
}
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ https://wandbox.org/permlink/jEs6OQf0t8tCkgzf



override 付けた方は当然 Setup も setup もコンパイルエラーになります。
一方、override 付けなかった方も Setup がコンパイルエラーになっています


いやー賢いですね。勉強になりました。

2017年7月3日月曜日

bat ファイルの実行時間を PowerShell で計測する

ググればいっぱい情報出てきますが、個人用備忘録として残しておく。
Windows PowerShell の機能
powershell -C "(Measure-Command { .\HogeHoge.bat | Out-Default }).TotalSeconds"

メモ:
* 秒だけ欲しいので .TotalSeconds
* ミリ秒で欲しいときは .TotalMilliseconds
* .\ をつけないと不明なコマンドになる
* 標準出力が欲しい場合は " | Out-Default" をつける
* 標準エラーはコマンドだけで出る