8 Commits

Author SHA1 Message Date
nik.n
4f598b0017 Merged PR 988: pipelineエラー解消のためglobal npmアップデート削除
### 概要
Dockerfileから `RUN npm install -g npm` 削除。Node.js(v18.17.1)とnpm(11.0.0)のバージョン互換性の問題により、pipeline が失敗していたためです。
現在のNode.jsイメージに含まれている npmバージョン(9.6.7)でプロジェクトの要件は満たされているため、グローバルnpmのアップグレードは不要と判断した

### 参考リンク
失敗した Pipeline ビルド
- [#1931 • Merged PR 986: 保守対応の内容反映](https://dev.azure.com/ODMSCloud/ODMS%20Cloud/_build/results?buildId=1931&view=results)
2025-01-08 04:36:06 +00:00
湯本 開
cf56239da2 Merged PR 669: Pipeline上でdocker-composeを用いてMySQLを起動する方法を調査する
## 概要
[Task3427: Pipeline上でdocker-composeを用いてMySQLを起動する方法を調査する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3427)

- MySQLでUnitTestを実施する仕組みを作成
  - DevContainerにUnitTestからのみアクセスされるMySQLが動くコンテナ( `test_mysql_db` )を追加
  - テストでMySQLを使用し、上記 `test_mysql_db` に対してアクセスするよう構成
  - テストの前処理で `test_mysql_db` の全てのテーブルをTRUNCATEする処理を実行し、データをクリアする
    - 常にテスト用MySQLは起動しているが、テスト実行前にクリアされるので空っぽ前提の状態でテストを実施できる
  - 実際にMySQLを使用して実行されるテストを1つ追加
    - `users.service.spec.ts | UsersService.createUser` が対象
- Pipeline上でDevContainerを起動し、DevContainer内で `npm ci` `(UnitTest用DBへの) migration` `npm run test` を行う仕組みを作成
  - Pipelineを追加
    - **StagingPipelineでテスト・ステップを切り出し**
  - Pipelineテスト用DevContainer(のdocker-compose.yml)を作成
    - 構成は通常の物と同一だが、ネットワーク設定だけ外部のMySQLやRedisと通信しない前提に変更している
  - テストの実行環境を自己ホストではなく、一般で提供されているマシンに変更
    - 自己ホストのマシンにdocker-composeが入ってない/ビルド後のクリア処理が大変等の理由
- テストで使用する環境変数を `.env.test` という別環境変数に切り出し
  - そうすることで、PipelineでKeyVaultへのアクセスをする必要がなくなる
- **migrationの漏れを修正**
  - テストが通らないことで発覚したmigration漏れを修正
- **テストコードを修正**
  - **Date型のミリ秒単位の誤差を setMillseconds(0) を用いることで0にセットするコードを追加(ライセンス付近)**

## レビューポイント
- **WIPレビュー以降の追加の修正で違和感のある箇所はないか**
  - コミット履歴等で追っていただいた方が楽かと思います
  - 直近の`Merge branch 'develop' into feature/3427/poc-mysql-test` 以降がWIP以降に変更されたコードです
- **レビュー通過後、developのPipelineについては手動で同等のコードに変更→PRをdevelopにマージ予定だが進め方として問題はないか**
- [※WIPでレビュー済み] テスト用DevContainerを別途作成したが、現行のDevContainerを使用するよう頑張った方がいいか?
  - [※WIPでレビュー済み] CI/CDの実行速度面を考慮し、使用されないMySQLとRedisのサービスとネットワーク作成が同居しているdocker-compose.ymlの実行を避けたが、管理対象は増えているので議論の余地はある
- [※WIPでレビュー済み] MySQLでUnitTestを実行する際に懸念事項はないか
- [※WIPでレビュー済み] Dockerを起動する関係でCI/CDのスピードが数分遅くなると思われるが、許容可能か
- [※WIPでレビュー済み] `.env.test` に置き換えて問題ないか

## 動作確認状況
- ローカル&Pipelineで実行して確認済
2024-01-23 07:58:42 +00:00
湯本 開
83add51148 Merged PR 538: Azure AD B2Cの結果をCacheManagerにキャッシュするよう修正
## 概要
[Task2967: Azure AD B2Cの結果をCacheManagerにキャッシュするよう修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2967)

- キャッシュを扱うRedisServiceを追加
- AdB2cServiceでRedisServiceを使って結果をキャッシュする実装を追加
- ADB2Cの呼び出しと、キャッシュからの取得が行われた時にログを出す実装を追加
  - Azure Monitorで呼び出しコストでアラート出したくなった時のための予防的追加
- 開発環境でローカルのredisを操作する用途のredis-cliをインストールする設定を追加&スクリプトを追加
- `getUser` と `getUsers` の返り値の方を統一 & 使用されなくなった方の型を削除
- AdB2Cの`ttl` に設定する用の値を環境変数に追加
  - 今後実装予定のトークンのキャッシュとはTTLを別にしたかったため
- 複数ユーザー削除処理内でのindex処理が不適切と思われる箇所があったので修正

## レビューポイント
- **Redisへのget/set/delが失敗した際に、エラーログだけ出して成功 or 取得対象なしと同様の動作をするように作成したが、問題なさそうか**
    - これは速度向上用のキャッシュが死んでいても業務は動くべきではないか、という考えによるもの
    - 通信できない=障害中であると想定されるので、失敗しても良いような気もするので相談
- **AdB2cService内でキャッシュを扱う箇所のコードの可読性に問題はないか**
    - 更にWrapしてキャッシュの具体的な動きを隠蔽することも考えたが、詳細なエラーの制御をしづらくなりそうだったので具体的な引数の変換等以上のことはしない形で実装
    - AdB2cServiceが十分に末端の処理なので詳細な処理を生で書いていても認知負荷はそう変わらない可能性がある
- **キャッシュする値の性質によってTTLを変えられる仕組みを前提に設計・実装したが、懸念点はないか**
- **TTLに設定する値は妥当そうか**
- **`Aadb2cUser` を削除したが問題ないか**
- **`deleteUsers` 内のログ処理の変更は適切か**
    - to 岩田さん

## 動作確認状況
- ローカルで確認
- npm run testが通過することを確認
2023-10-31 03:45:31 +00:00
makabe.t
3e0c483b57 Merged PR 456: NestJSの環境変数を整理してバリデーションを修正
## 概要
[Task2769: NestJSの環境変数を整理してバリデーションを修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2769)

- 非必須の環境変数をチェックしないようにオプショナルを修正しました
- ローカルでのDBマイグレーションに必要なため、コンテナ起動時の`.env`ファイル読み込みを追加しました。
- 環境変数についてDB関連項目を残し、すべて`.env.local`に移動しました。

## レビューポイント
- 環境変数に対するチェックのオプショナル設定は適切か
- 環境変数をlocalに移動させたが問題ないか。

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
## 補足
- 不足している環境変数についてレビュー完了後にAppService、Wikiを整備しておきます。
2023-10-02 07:13:34 +00:00
makabe.t
ded673ec74 Merged PR 448: NestJSの環境変数をバリデータでチェックする
## 概要
[Task2729: NestJSの環境変数をバリデータでチェックする](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2729)

- 環境変数のバリデータを実装しました。
  - 起動時にバリデータのチェックに失敗したらエラーとなるようにしています。

## レビューポイント
- チェック対象の環境変数は適切か
  - チェック内容は適切か

## UIの変更
- なし

## 動作確認状況
- ローカルで確認

## 補足
- 参考:[環境変数をバリデーションしたい](https://zenn.dev/waddy/articles/nestjs-configuration-service#5.-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%97%E3%81%9F%E3%81%84)
2023-09-28 07:18:09 +00:00
saito.k
95b48a766a Merged PR 409: nodeバージョンアップ
## 概要
[Task2647: nodeバージョンアップ](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2647)

- タイトルの通り

## レビューポイント

## UIの変更
- Before/Afterのスクショなど
- スクショ置き場

## 動作確認状況
- ローカルで確認、develop環境で確認など

## 補足
- 相談、参考資料などがあれば
2023-09-13 06:38:01 +00:00
湯本 開
9f5252baf8 Merged PR 56: API実装(アカウント登録)
## 概要
[Task1496: API実装(アカウント登録)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1496)

- アカウント登録のAzureAD B2Cへのユーザー作成部分以外について実装
- migration SQLに足りない要素があった箇所を修正(default追加)
- 各種環境変数を追加
- 秘密鍵/公開鍵を取得する方法を環境変数に変更(KeyVaultからWebAppsの機能で環境変数へ流し込む想定)

## レビューポイント
- 実装方法として問題がありそうな箇所が存在しないか
- 可読性の低い箇所が存在しないか
- Moduleの分け方、つなげ方などは問題ないか
- ラフスケッチと違い、Account作成と管理者ユーザー作成を同一トランザクションで行うよう修正したが問題ないか

## 動作確認状況
- メール送信以外はローカルで確認、メール送信部分は未確認
2023-03-29 03:55:44 +00:00
拓海 真壁
e686db674f Merged PR 1: タスク 1176: 開発環境コンテナの構築(Client/Server)
[タスク 1176: 開発環境コンテナの構築(Client/Server)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/OMDSDictation/_workitems/edit/1176)
開発用コンテナを構築しました。以下のコンテナを追加しています。
- ライセンス管理
  - server
  - client
- ディクテーション管理
  - server
  - client
- DB(MySQL)
- Cache(Redis)
2023-01-12 08:56:38 +00:00