diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..236d66a8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,56 @@ +# Contributing + +Contributions are welcome and any help that can be offered is greatly appreciated. +Please take a moment to read the entire contributing guide. + +This repository uses the [Feature Branch Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow), +meaning that development should take place in `feat/` branches, with the `master` branch being kept in a stable state. +When you submit pull requests, please make sure to fork from and submit back to `master`. + +Other processes and specifications that are in use in this repository are: + +- [Semantic versioning](https://semver.org/) +- [Conventional commits](https://www.conventionalcommits.org/en/v1.0.0-beta.3/) following the @commitlint/config-conventional config +- [Prettier](https://prettier.io/) style guide + +## Getting Started + +As noted in the prerequisites section of the readme file, this project requires that you have Node.js and Yarn installed. + +With those in place you can fork the repo and clone it, and then run `yarn install` to install all dependencies. + +### Development Workflow + +After cloning and installing all the dependencies, there are several commands available for local development: + +- `yarn lint` - Lints everything in src directory +- `yarn jest` - Runs Jest over all tests in src directory +- `yarn test` - Runs `yarn lint` and `yarn jest` together + +### Production Workflow + +- `yarn start` - Runs a production version. No live reload. + +## Pull Request Checklist + +Prior to submitting a pull request back to the main repository, please make sure you have completed the following steps: + +1. Pull request base branch is set to `master`. All pull requests should be forked from and merged back to `master` +2. Run `yarn test` to check the code adheres to the defined style and that it passes the Jest tests +3. Run `yarn prettier` to run the Prettier code formatter over the code + +## Release process + +When cutting a release, the following steps need to be performed: + +1. `package.json` needs to have a version update based on the content being released, remembering to adhere to semantic versioning +2. Generate the API docs if any changes have been made with `yarn doc` +3. Generate the changelog with `yarn changelog` +4. Create a release branch with the convention `release/x.x.x` +5. Create a tag for the version; the naming convention is the version (vx.x.x) +6. Push the tag to the repository +7. Draft a release in the release tab with release notes, copying the notes from the changelog + +## Issues + +Please file your issues [here](https://github.com/Fdawgs/ydh-sider-authentication-service/issues) and try to provide as much information in the template as possible/relevant. \ No newline at end of file