зеркало из https://github.com/mozilla/fxa.git
a620922422
Because: - We wanted to run a few preliminary checks before proceeding to more expensive CI jobs. Checks include: - Compiling typescript in commonly referenced workspace packages - Linting code that has changed - Executing Unit Tests for code that has changed - We wanted to partition test operations into unit tests, and integration tests. Unit tests can be run relatively quickly and require no additional infrastructure. Integration tests require additional infrastructure and generally have longer execution times. Now that jobs are blocked from running until preliminary checks pass, one of which is unit tests, it is important to draw a distinction between these two types of tests. - We want to avoid unnecessary yarn installs and typescript compilations, which are time consuming. - We want to make sure that test results are published and failing tests can be easily viewed in the CI. This Commit: - Creates a build-and-validate job in the CI that builds, lints, and unit tests code prior to running any other jobs. - Creates unit-test job in CI config - Creates integration-test job in CI config - Removes redundant calls to compile workspace packages. These are now built up front, cached, and restored as needed for future runs. - Extends the create-lists script functionality to generate commands that can be executed with the parallel command. - Removes unnecessary yarn install operations. Invoking yarn workspace focus results in a yarn install. In the case of running tests this is largely unnecessary, because we already do a yarn install in the base-install step. - Make sure test results are exported as junit xml so the CI can report back on tests that were failing. This was done for a couple workspace packages, but many were lacking the capability. All test:unit and test:integration npm scripts now export this data. - Fixes the following issues encountered along the way: - Adds logs to monitor heap usage of jest tests. Some jest tests are still using a lot of memory. - Moves a few slow / long running tests from unit test to integration tests. - Ensures that jest.transform for ts-jest is always instructed to have the config option isolateModules is set to true. This definitely decreases memory overhead and resolves some of the OOM errors we were hitting. It was configured in some places but not everywhere. - Exports test results files for all tests - Exports all test artifacts - Uses gnu parallel to run tests in parallel. Turns out yarn workspaces foreach would give a false positive when an OOM was encountered. Fortunately, the parallel command offered an acceptable work around, and even offers some nice features like the load argument, which allows to control test execution a bit more efficiently. |
||
---|---|---|
.. | ||
bin | ||
config | ||
lib | ||
jest.config.js | ||
tsconfig.json |