GWと先週の振り返り。
仕事
CircleCIの設定ファイルの修正
概要
CircleCI上でサブプロジェクトをsbt assemblyするよう設定ファイルを修正しました。
詳細
今進めているプロジェクトのコードは一つのディレクトリに複数のサブプロジェクトが入っており、それらをマルチプロジェクトビルドしています。
その中にはEC2上で実行されるアプリケーションやAWS Lambdaとして起動されるものも含まれています。
CI上ではこれらサブプロジェクトのビルドやテストを実行していたのですが、AWS Lambdaとして起動されるサブプロジェクトのコードはCI上ではビルドする設定が記述されていませんでした。
そのため、あるライブラリをバージョンアップしてdevelopブランチでは動いていたため、masterブランチにマージしてリリースしようとした際に、sbt assemblyコマンドでjarを生成する段階でエラーが発生しました。
エラー内容としては、sbt-assemblyを使用してjarを生成する際に同名ファイルがあったためエラーになっていました。
気づかなかった原因としては、違うタイミングでsbtのMergeStrategyが修正されており、masterブランチにそれらが含まれていなかったということです。
ただ、CIでsbt assemblyをするよう設定をしておけばもっと早い段階で気づけたため、今回の修正対応を行いました。
解決策
.circleci/config.yml
に以下のような設定を追加
- run: name: run lambdaXXXX/assembly command: | if [ "$CIRCLE_NODE_INDEX" == "5" ]; then cat /dev/null | sbt 'set lambdaXXXX/test in lambdaXXXX/assembly := {}' lambdaXXXX/clean lambdaXXXX/assembly; else true; fi no_output_timeout: 30m
CIRCLE_NODE_INDEX
はCircleCIが定義している環境変数で、並列実行しているジョブのIndexを指します。
なぜ、以下のような書き方をしているかというと、他のジョブでテストを実行するよう設定しているため、ここではsbt assembly時はテストの実行を無視したかったからです。
sbt 'set lambdaXXXX/test in lambdaXXXX/assembly := {}' lambdaXXXX/clean lambdaXXXX/assembly
プロジェクトに新しいAPIを追加
概要
PoCプロジェクトで利用するAPIを新規で追加しました。
詳細
あまり詳細に書けないのであれですが、以下のライブラリとかプロジェクトで使ってて便利だしバリバリ使ってるので、コードリーディングしないとなーと感じてます。
プライベート
読書
『雰囲気でOAuth2.0を~』等
Auth屋さんのOAuth2.0・OIDC関連の本を読みました。
OAuth2.0とOIDCがいまいち分からない人やOAuthを利用したり実装したりする場合に気をつけるポイントを押さえたいと思っている方はぜひ読んでみてください!
かなりおすすめです!
やったこと
GW中や休日は FP in Scalaをやり直してました。
前回やったときはPart1 までやったのですが、今回はすべてやり抜こうと思い少しずつ進めています。
今はやっと第8章のプロパティベースのテストに入りました。
Part2 から難しく感じて、進みが遅いですがやり抜きたい!