gradle-git-release-pluginでGitHubにMaven成果物をリリースする
Mavenの成果物をアップして使えるようにする場合、MavenCentralやJCenterに上げるのが公式ですが、それらに上げられない*1specificなライブラリである、公式レポジトリに上げるのが面倒などの理由でもうちょっと簡単なソリューションが欲しい時があります。
そういう場合、GitHub(GitHub Pages)をMaven repositoryとして使うという方法があります。私も gradle-embulk-plugin など自分のライブラリを kamatama41/maven-repository というレポジトリで公開しており
buildscript { repositories { jcenter() maven { url "http://kamatama41.github.com/maven-repository/repository" } } dependencies { classpath("com.github.kamatama41:gradle-embulk-plugin:0.1.4") } }
と言った記述でインストールすることが出来るようにしています。 このGitHubへのリリース作業を過略化するためのGradle pluginを作りました。
どんなプラグインかというと、maven-publish plugin と gradle-release plugin と gradle-git-publish pluginを統合したものになります。 release
タスクを実行すると、以下のことを実施してくれます。
- 指定したローカルディレクトリ*2にartifactをbuildしpublish
- releaseを実行(Mavenのrelease pluginほぼ同じ挙動、詳細はこちらを参照)
- release終了後、artifactを指定したGitリポジトリにpush
使用例
build.gradle
gitRelease { groupId = "com.example" artifactId = "awesome-artifact" repoUri = "git@github.com:your_account/your_maven_repository.git" }
gradle.properties
version=0.1.0-SNAPSHOT
これで、masterブランチ上*3で、gradle release
タスクを実行すると、以下のアクションが行われます。
gradle.properties
が更新されて、バージョンが0.1.0
になる。github.com/your_account/your_maven_repository
のgh-pages
ブランチに新しいバージョンawesome-artifact-0.1.0.jar
*4がcommitされpushされる- レポジトリに
0.1.0
のタグが追加される - すべて終了後、
gradle.properties
が更新されて、バージョンが0.1.1-SNAPSHOT
になる。
結構便利なので、ぜひ使ってみて下さい!
miamでexcludeオプションで除外したいIAMリソースを指定する
miamというAWS IAMリソースをDSLで管理できる素晴らしいツールがあるのですが、このツールの基本動作としてアカウントに紐づく全部のリソースを管理しようとするので、他のツール(例えばTerraformとかCloudFormation)で管理しているものがあった場合、こちらにエクスポートしておかないと削除されてしまいます。
そこで使うのが exclude
オプションで、除外したいリソースを正規表現で指定できます。
$ bundle exec miam --apply --exclude 'foo'
しかし、このオプション、一回しか指定できないので、複数のリソースを指定したい場合、一個の exclude
オプションに無理やり詰め込む必要がありました。
$ bundle exec miam --apply --exclude '(foo|bar|baz)'
しかし、我々のケースだと除外したいものが多くて複雑になってしまい
(foo-(admin|developer)-(staging|production)|bar-service.+)
こんなな感じになり読みづらいという難点がありました。
そこでPRを送らせてもらいまして、複数 exclude
を指定できるようになったバージョン(v0.2.4.beta15
)が本日リリースされました。
github.com
今後は以下のような感じで、 exclude
を分けることが出来るようになります。
$ bundle exec miam --apply --exclude 'foo' --exclude 'bar' --exclude 'baz'
あと、 target
というこれを指定したリソースだけをmiamで管理するというオプションも複数指定できるようになっています。
それでは、楽しいIAM管理ライフを!
2017年振り返り、2018年の抱負
子育て
やはりこれが今年一番のトピックですね。生まれてからは完全に子供中心の生活に変わりました。自由な時間も減りましたし子供に移されて体調不良になることも増えました。が、やっぱり子供はかわいいです。
仕事
2016年末~3月くらいまではインフラチームからちょっと離れてReactを書く仕事をやらせてもらってました*1。今まで余り経験出来なかったフロントの技術に触れられたのは良かったです。そこから育休を取って復帰後はインフラチームに戻り、体制変更などがあったりしましたが、今は社内のアプリ基盤をKubernetesに置き換えするプロジェクトを進めてます。
OSS活動
tfenvはお陰様で200スター越えて結構使われてissueもそれなりに来てるのですが、自分は今のバージョンで十分満足してる、bashのツールなので開発の技術的好奇心もあまり上がらない*2ということでモチベが全然上がっていないのが正直なところです..OSSの継続メンテの難しさを感じています。メンテナー募集中!
英語
地道に学習継続中。今は会社でサポートしてくれてるスタディサプリEnglishと、Rebuildfmで話題になってたバイリンガルニュースを毎月200円払ってトランスクリプトを読みながら聞くっていうのをやってます。あとは会社のオフィスに非日本語話者が増えてきたのでランチ行ったり、社内で英語のプレゼンしたり。TOEICは2回受けてどっちも700弱でした。
リトグリ
最高の体験をさせてもらった武道館ライブの後、ちょうど麻珠が卒業したあたりと子供の出産が重なりまして、それ以降はライブ/イベントなどはご無沙汰になってしました。が、今年からはまた参加していこうかなと思います。
イベント参加歴
- 01/08 ライブ (日本武道館)
- 02/11 ライブ (秦野市文化会館)
- 04/04 サイン会 (渋谷TSUTAYA)
- 04/09 ライブ (東京国際フォーラム)
- 04/28 ミニライブ (渋谷DUO)
- 10/31 ミニライブ (アクアパーク品川)
2018年の抱負
- 健康第一 (ちゃんと運動して強い体を身につける)
- エンジニア定年に向けたキャリアの方向性を考える
- 英語は引き続き、今年こそTOEIC700点超える
- ゴルフに2回以上行く
過去の振り返り
父親になった&育休を取りました
半年以上前の話ですがずっと下書きのまま放置して忘れてたのを公開します。ついでに他の方の参考になるかもしれないので、既に12/30ですが後付でAdventarにも登録しておきます。25日目の記事、という体です。
5/10に第一子となる子供を授かりました。その後、6週間ほど育休を取って子育てしてきたのでその記録。
出産まで
本来5/1が予定日だったので、9日遅れでした。8時間ほどの格闘を経て子供が出てきた時は感動と言うかママお疲れというか、色々な感情がありました。 産婦人科に4日ほど入院し、抱っこの仕方、おむつの変え方、授乳の仕方などを教えてもらい退院。
退院後
基本的には2~3時間に一回食事が必要なので
授乳 or ミルク
↓
寝るまであやす(おむつ変えたり抱っこしたり)
↓
授乳 or ミルク
↓
あやす
↓
...
の無限ループです。時間が無いのでごはんもスーパーやコンビニ弁当とかがメイン*1。 最初は勝手が分からず全然泣き止んでくれないし、それが夜も遅いと眠いし、赤ちゃんの何気ない変化(ミルクを吐く、湿疹がひどい、しゃっくりが止まらない、凄いえび反りをする、など)にいちいち慌てたりでけっこう大変でした。
1ヶ月超えた後はある程度慣れてきて、赤ちゃんも我々も生活のリズムが出来てくるとだいぶ楽になりました。後述する産後ケアにも随分助けられました。
産後ケアセンター
我々夫婦は里帰りをせず二人で子育てすることを選択しましたが、初期は休める時間が本当に無かったので思った以上に大変でした。親族の手助けを借りれる人は積極的に借りたほうが良いと思います。そんな中、出産した産婦人科での産後ケア入院や、桜新町にある産後ケアセンターは、授乳や沐浴指導なんかをしてくれたり、夜赤ちゃんを預かってくれたりするので大変助かりました。結構お高いのですが、休息は何事にも代えがたいです。
その他雑感
- ベビー用品(ベッド、ベビーカーなど)は新品だと結構高いので、レンタルで借りて色々必要なものを見極めて行くのが良いと思いました。自分はダスキンレントオールを使ってます。
- ベビーベッドを借りたのだけど、うちの赤ちゃんは全然泣き止んでくれなかったんのでほぼ物置きになっていた、あとあれはスペースを結構取るので買わなくてよかった。
- 子供服はすぐ小さくなるので、メルカリやヤフオクなんかで安く仕入れる、そして使えなくなったら売るのが良い。
- カーシェアリングをしている場合、チャイルドシートを車に置いておけないので、毎回運ぶのがかなり面倒。
- (余談) もともと5/1から育休を取っていたが、取れるのが産後じゃないとダメ*2なのを会社の誰も知らず*3、5/1~9の間の営業日は後付けで有給扱いになった, GW中だったのでそこまで多くなくて助かった..w
minikubeでRBACを有効にした時に、dashboardが見れないのを直す
とりあえず、 cluster-admin
のClusterRoleを kube-system:default
のServiceAccountにつければ動くようになる。最低限の権限とかは詳しく調べてないので分かりません!
$ minikube start --extra-config=apiserver.Authorization.Mode=RBAC $ kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default $ minikube dashboard