2021年5月10日 ~ 17日 振り返り

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を指します。

circleci.com

なぜ、以下のような書き方をしているかというと、他のジョブでテストを実行するよう設定しているため、ここではsbt assembly時はテストの実行を無視したかったからです。

sbt 'set lambdaXXXX/test in lambdaXXXX/assembly := {}' lambdaXXXX/clean lambdaXXXX/assembly

プロジェクトに新しいAPIを追加

概要

PoCプロジェクトで利用するAPIを新規で追加しました。

詳細

あまり詳細に書けないのであれですが、以下のライブラリとかプロジェクトで使ってて便利だしバリバリ使ってるので、コードリーディングしないとなーと感じてます。

github.com

github.com

github.com

プライベート

読書

『雰囲気でOAuth2.0を~』等

Auth屋さんのOAuth2.0・OIDC関連の本を読みました。

OAuth2.0とOIDCがいまいち分からない人やOAuthを利用したり実装したりする場合に気をつけるポイントを押さえたいと思っている方はぜひ読んでみてください!

かなりおすすめです!

blog.ryskit.com

blog.ryskit.com

blog.ryskit.com

やったこと

GW中や休日は FP in Scalaをやり直してました。

tatsu-zine.com

前回やったときはPart1 までやったのですが、今回はすべてやり抜こうと思い少しずつ進めています。

今はやっと第8章のプロパティベースのテストに入りました。

Part2 から難しく感じて、進みが遅いですがやり抜きたい!

github.com