We welcome contributions in the form of issues and pull requests. We view the contributions and process as the same for internal and external contributors.
Log issues for both bugs and enhancement requests. Logging issues are important for the open community.
Issues in this repository should be for the toolkit packages. General feedback for GitHub Actions should be filed in the community forums. Runner specific issues can be filed in the runner repository.
We ask that before significant effort is put into code changes, that we have agreement on taking the change before time is invested in code changes.
- Create a feature request.
- When we agree to take the enhancement, create an ADR to agree on the details of the change.
An ADR is an Architectural Decision Record. This allows consensus on the direction forward and also serves as a record of the change and motivation. Read more here.
This repository uses Lerna to manage multiple packages. Read the documentation there to begin contributing.
Note that before a PR will be accepted, you must ensure:
- all tests are passing
npm run format
reports no issuesnpm run lint
reports no issues
npm run bootstrap
This runslerna bootstrap
which will install dependencies in this repository's packages and cross-link packages where necessary.npm run build
This compiles TypeScript code in each package (this is especially important if one package relies on changes in another when you're running tests). This is just an alias forlerna run tsc
.npm run format
This checks that formatting has been applied with Prettier.npm test
This runs all Jest tests in all packages in this repository.- If you need to run tests for only one package, you can pass normal Jest CLI options:
$ npm test -- packages/toolkit
- If you need to run tests for only one package, you can pass normal Jest CLI options:
npm run create-package [name]
This runs a script that automates a couple of parts of creating a new package.
- In a new branch, create a new Lerna package:
$ npm run create-package new-package
This will ask you some questions about the new package. Start with 0.0.0
as the first version (look generally at some of the other packages for how the package.json is structured).
- Add
tsc
script to the new package's package.json file:
"scripts": {
"tsc": "tsc"
}
- Start developing 😄.