angular / angular/dev-infra

Tooling to accept payload size changes

オープン
#443 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
feature
主要言語
JavaScript
スター
77
フォーク
83
平均マージ
2日 5時間
マージ済み PR(30日)
37

説明

Currently in the angular/angular repo, when a change affects payload size for integration test app or AIO, an error is thrown on CI ([example CI failure](https://app.circleci.com/pipelines/github/angular/angular/43342/workflows/f4014ab1-aff3-4298-944b-f64c6a615e5f/jobs/1130977)):
```
FAIL: Commit undefined uncompressed main fell below expected size by 500 bytes or >1% (expected: 231381, actual: 230780).
If this is a desired change, please update the size limits in file '../.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/integration/cli-hello-world-lazy/test.sh.runfiles/angular/goldens/size-tracking/integration-payloads.json'.
```
We have a number of test apps (~10) for which we track payload size, thus it takes time to manually update everything. Also, minor payload size deltas between the main and a patch branches causes issues during the merge (when merge is requested to both main and patch branches), thus engineers end up creating a new PR and re-do all the manual updates to payload sizes once again.

It'd be great if we can have a tooling to update payload sizes, similar to what we have for tracking the symbols (via `yarn symbol-extractor:update`). That'd improve the quality of life for us, reduce CI reruns and save a bunch of time.

Also, I noticed that the payload size error for each app is present in [the CI output](https://app.circleci.com/pipelines/github/angular/angular/43342/workflows/f4014ab1-aff3-4298-944b-f64c6a615e5f/jobs/1130977) more than once. Do we run it multiple times for some reasons?

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

integration-payloads.json の golden file と既存の yarn symbol-extractor:update エントリーポイントから始めます。CI が各テストアプリの payload をどのように比較しているか、またエラーが複数回表示される理由を追跡します。完了の条件は、影響を受けるすべてのアプリについて、繰り返し手動編集を行わずに追跡対象のサイズを更新する tooling コマンドです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, javascript
領域
build-system, ci-cd, tooling
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
38/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。