CicleCIでDockerイメージを再利用する
CircleCI v1の話です、v2.0になったらもうちょっと楽になってそう(未確認)
基本的には以下のページを参考にしてます。
Caching docker image on CircleCI
1. キャッシュ用のディレクトリを用意する
例えば ~/docker-images、これを circle.yml の cache_directories に追加しておく
dependencies: cache_directories: - "~/docker-images"
2. イメージのタグを生成する
Dockerfile と依存ファイル達の sha1sum を取る。
たとえばRailsアプリの場合、gemだけイメージに含めるなら Gemfile と Gemfile.lock これらに変更が無ければ同じ値になるはず。(なのでキャッシュが使えるはず)
tag=$(sha1sum Dockerfile Gemfile Gemfile.lock | sha1sum | cut -d' ' -f1)
アプリ全体をイメージに入れるなら全ソースファイルを対象とする
3. ビルドしたイメージをdocker saveする
こんな感じ
docker save ${image_name}:${tag} > ~/docker-images/${image_name}-${tag}.tar
4. 再ビルドするときにキャッシュを使う
イメージのタグを算出してキャッシュディレクトリにあったら docker load する
if [[ -e ~/docker-images/${image_name}-${tag}.tar ]]; then docker load -i ~/docker-images/${image_name}-${tag}.tar else # 略. buildしてsaveする fi
ローカルにGitサーバを立ち上げる with Docker
Gitサーバ(というかGitHub)のレポジトリに対してcommitとかpushするOSSのテスト用に作りましたが、必要無くなったのでw 別リポジトリにしておきました。
READMEにも書いてますが、cloneして create_git_server.sh を叩くと2222ポートが開いてるGitサーバが出来上がります。
- レポジトリの実体は
work/git-server/repos配下に作られていて、それがマウントされている - SSHの公開鍵は
~/.ssh/*.pubを登録してるので、無いと動きません
$ git clone ssh://git@localhost:2222/git/repos/awesome-repo.git
Cloning into 'awesome-repo'...
Warning: Permanently added '[localhost]:2222' (ECDSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done.
$ cd awesome-repo
$ git log
commit f35d53a97488fac01267d094551df59a53e7ae07
Author: xxxx xxxx <xxxx@example.com>
Date: Mon Mar 6 02:10:30 2017 +0900
Add hello.txt
commit b15e864ddade594953ef671d1a2d3b4a0e3e9b0d
Author: xxxx xxxx <xxxx@example.com>
Date: Mon Mar 6 02:10:30 2017 +0900
my first commit
JJUG ナイトセミナーKotlin勉強会に参加してきた
EmbulkのプラグインをKotlinで書き直したり最近自分の中で激アツ言語のKotlinの勉強会が開かれると言うので早速参加してきました。サイバーエージェントのサーバサイドの事例だったりSpringのKotlin対応だったりKotlinの波が来ているのを感じられて良かったです。実際(元)JavaエンジニアとしてKotlinは本当に痒いとことに手が届く感じがして書いてて楽しいです。自分のところのプロダクトにも是非導入してみたいです。
続きを読むTOEIC 217回 結果
EmbulkのプラグインをKotlinで書く
embulk-input-remoteをKotlinで書き直したv0.3.0をリリースしました。
Kotlinは4年ほど前に会社のレポートでちょっと調べたままで知識が止まってましたが、最近はAndroidやサーバサイドの事例も多く出てきたので勉強がてらやってみるかなと思い試してみました。
結果
Kotlin、イイね 👍
積極的に使って行きたくなりました。
良かったところ
Javaとの相互運用性高い
導入が簡単
Javaで不便なところが解消されてて簡潔に書ける
- embulk-input-remoteでは行数が 33% 減りました*2
- アクセサ, equals, hashCodeなどのboilerplateが省略可能
- (比較的) Null安全
- 型推論があるので、型を明示する機会が減る
- Function as first class object
- Embulkプラグインは匿名クラスの利用が多いので助かった
- コレクションの便利メソッド*3
不明点
パフォーマンス (vs Java)
実際測ってないので、断言はできませんが、 以下のリンク*4を見る感じそんなにオーバーヘッド的なのは無いのでは、という期待を持ってます...w ttps://www.reddit.com/r/Kotlin/comments/3ddj8w/what_is_the_performance_of_kotlin