Skip to content

Latest commit

 

History

History
88 lines (53 loc) · 4.66 KB

CONTRIBUTING.md

File metadata and controls

88 lines (53 loc) · 4.66 KB

Contributing to Unleash

Getting started

Before you begin:

Don't see your issue? Open one

If you spot something new, open an issue. We'll use the issue to have a conversation about the problem you want to fix.

Ready to make a change? Fork the repo

Fork using GitHub Desktop:

Fork using the command line:

  • Fork the repo so that you can make your changes without affecting the original project until you're ready to merge them.

Fork with GitHub Codespaces:

Make your update:

Make your changes to the file(s) you'd like to update. You'll need Node.js v14 and PostgreSQL 10 to run Unleash locally. See more details

Open a pull request

When you're done making changes and you'd like to propose them for review by opening a pull request.

Submit your PR & get it reviewed

  • Once you submit your PR, others from the Unleash community will review it with you. The first thing you're going to want to do is a self review.
  • After that, we may have questions, check back on your PR to keep up with the conversation.
  • Did you have an issue, like a merge conflict? Check out GitHub's git tutorial on how to resolve merge conflicts and other issues.

Your PR is merged!

Congratulations! The whole Unleash community thanks you. ✨

Once your PR is merged, you will be proudly listed as a contributor in the contributor chart.

Nice to know

Controllers

In order to handle HTTP requests we have an abstraction called Controller. If you want to introduce a new route handler for a specific path (and sub pats) you should implement a controller class which extends the base Controller. An example to follow is the routes/admin-api/feature.ts implementation.

The controller takes care of the following:

  • try/catch RequestHandler method
  • error handling with proper response code if they fail
  • await the RequestHandler method if it returns a promise (so you don't have to)
  • access control so that you can just list the required permission for a RequestHandler and the base Controller will make sure the user have these permissions.

Creating a release

In order to produce a release you will need to be a Unleash core team member and have the Unleash admin role assigned on the Unleash organization on GitHub.

Step 1: create a new version tag

Use npm to set the version in package.json and specify a version tag.

npm version 3.10.0

This command will trigger an internal verification step where we will perform the following steps:

  • STEP 1. Check unleash-frontend version - Validate that a latest release of unleash-server does not depend on a pre-release of unleash-frontend (beta, alpha, etc)
  • STEP 2. Lint - Run lint checks on the code.
  • STEP 3. Build - Validate that we are able to build the project
  • STEP 4. Test - Validate that all test runs green.

If all steps completes a single commit is produced on the main branch where the version property in package.json is updated, and a git tag is created to point to that tag specifically.

Step 2: push tag

git push origin main --follow-tags

This will push the new tag and a GitHub action will trigger on the new version tag, build the release and publish it to npm.