2017年11月13日月曜日

「第11回 Jenkins勉強会」に参加してきました

どうも僕です。仕事が始まって1週間。こちらでの生活にも慣れてきました。
そんなこんなで「第11回 Jenkins勉強会」に参加してきました。
東京来て一発目の勉強会!久しぶりの参加報告って感じですね。

今回の講演は3つ + LT 3本立て。
「初めての自動テスト meets Jenkins」


最初は「初めての自動テスト ―Webシステムのための自動テスト基礎」を翻訳された玉川紘子(@nkns165)さんの講演。

原著者がアジャイルサムライを書いた人と一緒とか、CI の章がないが CI があっての自動テスト(あるの当たり前)とか、翻訳こぼれ話とか、興味深い話が聞けました。
自分も本に関わってみたいなぁー



「Jenkins World 2017 の報告」
2つ目は Jenkins World 2017 で「Most Valuable Advocate」受賞の中村知成(@ikikko) さん!
(そのへんは @ikikko さんのブログへ)



Jenkins Advisor はじめて知りました。さっそく使ってみようと思いました。

Jenkins world の動画はここかな?
https://www.youtube.com/user/CloudBeesTV


「Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ」
最後は川口さん!

↓は今回の講演と(たぶん)同じヤツ




#はい

when で任意ブランチでのみ stage できるっぽいので、iutest のパッケージビルドを Jenkinsfile にお引っ越ししようと思いました。


LT
ここから LT
遠くの"計画"よりも今日の"CD"(継続的デプロイ)


タミヤ カムプログラムロボット工作セットで作るXFD


開発者(個人)のためのJenkins 運用編


感想
参考になる話、知見、情報と持ち帰るものが予想以上にあってよかった。
LT はホントいつも面白いし、すごい!
懇親会でも色々いいお話聞けたのでとっても大満足。

最後に、テクマトリックスさん、スタッフのみなさん、そして講演者の方々、ありがとうございました~

2017年11月8日水曜日

[Appveyor] イメージを環境変数で指定する

今回は Appveyor で環境変数を使ったイメージの指定を紹介します。
iutest のテストでイメージごとにそれぞれ異なる環境変数を設定したかったときに、この方法に行き着きましたのでそれの紹介です。

テストではよくマトリックスを組んで複数の環境でテストをすることが多いと思います。
Appveyor なら、イメージが複数用意されているので、それぞれでテストを実行することになります。その場合はイメージを複数指定すれば OK です。
さらに環境変数を列として、イメージ×環境変数のマトリックスも組むこともできます。
さきにこちらの方法を紹介しておきます。

イメージと環境変数のマトリックス
まずイメージは「SETTINGS」「Environment」の「Build worker image」で複数設定することができます。
指定したイメージの分だけ、ジョブが実行されます。


さらに、同じく「Environment」の「Environment variables」で環境変数を指定できます。
「Add variable」だと、各イメージで共通の環境変数が設定されますが、「Add build matrix group」では環境変数のマトリックスを作成できます。


グループを追加すると「Environment variables - 1」「Environment variables - 2」のようにグループが増えていきます。
それぞれ「Add variable」から環境変数を設定できます。



テーブルにするとこんな感じです。
ENV_M valueVisual Studio 2015Visual Studio 2017
Environment variables - 111
Environment variables - 222

Visual Stduio 2015/2017 のイメージそれぞれに対して、ENV_M が 1 と 2 のジョブが実行され、計4つのジョブが実行されます。

iutest でやりたかった構成
さて、これに対して iutest でやりたかったことはこうです。
ENV_M valueVisual Studio 2015Visual Studio 2017
Environment variables - 11×
Environment variables - 2×2
※×印はジョブを実行しないという意味です
上と合わせて書きましたが、わかりやすくするとこうです。
Visual Studio 2015Visual Studio 2017
ENV_M value12
つまり、マトリックスにしたいわけではなく、イメージ対して一意な環境変数を設定したいわけです。



これができないか調べていたら、イメージのマトリックスを使わずに、「APPVEYOR_BUILD_WORKER_IMAGE」環境変数でイメージの指定ができることを知りましたので、これで解決しました。

イメージを環境変数で指定する
環境変数マトリックスでイメージを指定するので「Build worker image」は空にします。
次に、「Add build matrix group」で環境変数のグループを作成し、環境変数名「APPVEYOR_BUILD_WORKER_IMAGE」でイメージの名前を設定します。


これで実行すると「Environment variables - 1」のときだけ、イメージ設定が上書きされます。


環境変数が変わっただけでイメージが変わってないかもしれないので、以下のコマンドで確認しました。


結果、このようにイメージが変わっていることを確認。


まとめ
イメージに対して環境変数を別途指定したい場合は、環境変数のマトリックスと APPVEYOR_BUILD_WORKER_IMAGE を使うと実現できます。
イメージ×環境変数のマトリックスを組みつつ、イメージに対して個別で一意な環境変数をセットしたい場合は、APPVEYOR_BUILD_WORKER_IMAGE 環境変数を参照して判断するのが良さそうです。

マトリックス化する予定があるなら、最初から APPVEYOR_BUILD_WORKER_IMAGE を参照して分岐させるほうがいいかもしれないです。
このへんは好み、かなぁ・・・
ともあれ、APPVEYOR_BUILD_WORKER_IMAGE は ReadOnly じゃなくて Write もできるってことを覚えておくと今後役に立つかもしれません。(たぶん)


今回は以上です。では。

2017年11月1日水曜日

初出社

本日、初出社でございます。
報告記事でブログ更新回数を稼いでいますが、ここ1ヶ月ほどやることが多くて全くもってプログラムをしてませんでした。(引越前の駆け込み観光とか引越後の観光とか)インプットがないとアウトプットもなかなかないわけで…

休暇も終わってこれから新天地での生活ルーチンが構築されていくわけですが、これまで通り趣味プロやブログを書く時間を作っていきたいと思います。(早速この記事は通勤中に書いてます)

では、今後ともよろしくお願いしますm(__)m