woocommerce/tools/monorepo-utils
Christopher Allford 556cf46523
Added Monorepo CI Command (#43345)
* Added Config Object Types

* Added CI Config Parsing

* Added Package Loader

This is a convenience method for loading the package JSON file with support for caching the
files that have already been imported.

* Removed Unnecessary Package Values

* Specified Node Dependencies

* Added Test Environment Config Parsing

* Changed Internal Config Representation

For convenience it makes more sense to have a single
type of Job interface that we can process. This avoids
having to complicate checks when we output them.

* Added Workspace Dependency Graph

Using `pnpm list` we are able to build a graph of
all of the workspace projects and their dependencies.
This can be used to handle change cascades across
a project's dependencies.

* Added Changed File Detection

We can use `git` to figure out what files have changed
and associate them with the respective projects.
This will let us identify what jobs to run based on
the changes that have happened to a project.

* Added Test Environment Config Parsing Tests

* Added CI Config To Project Graph

In the interest of making it easier to process the jobs
we will store the CI config in the graph nodes.

* Changed Project Graph Build Output

Our usage of the graph depends a lot on how we
are choosing to use it. Instead of returning all of
the nodes we will return the root.

* Added Change-Based Job Creation

We can now marry the config, file changes, and project graph
to output jobs. This supports checking the changes
as well as cascade keys for test jobs.

* Added Job Test Env Parsing

The ideal time to parse all of the config values for the
job's test environment is when creating the job.

* Added Command Index

With everything in place we can now add the command.
In addition to that, I've fixed a few bugs that appeared
when testing out the command locally. Since
we aren't changing the CI config in this PR
we can't easily test the actual command.

* Fixed Typo
2024-01-09 15:15:08 -04:00
..
src Added Monorepo CI Command (#43345) 2024-01-09 15:15:08 -04:00
.eslintignore Monorepo Utils: Add Code Freeze date function (#37589) 2023-04-13 09:28:53 +12:00
.eslintrc.js Added Monorepo CI Command (#43345) 2024-01-09 15:15:08 -04:00
README.md Add monorepo util to notify slack, add improvements to calling utils and type clean up. (#38185) 2023-05-11 17:23:19 +12:00
jest.config.js Fix Jest Preset (#42707) 2023-12-12 09:58:13 -08:00
package.json Updated PNPM to ^8.12.1 (#42860) 2023-12-18 20:31:49 +13:00
tsconfig.json Update monorepo to pnpm 8 and Node to 16.14 (#37915) 2023-04-25 18:49:30 +12:00

README.md

Monorepo Utils

Description

A set of CLI tools and scripts for managing the WooCommerce monorepo.

Usage

This command is built on postinstall and can be run from the root of the project. To see a list of available commands you can run this from project root:

pnpm utils

Development

During development you can watch for changes via pnpm start in this directory, this will update the script referenced at the root package.json so you will see immediate changes as you re-run the CLI.