Skip to content

Latest commit

 

History

History
73 lines (48 loc) · 3.15 KB

CONTRIBUTING.md

File metadata and controls

73 lines (48 loc) · 3.15 KB

Contributing to Ably Features

Local Development Flow

Required Development Tools

You'll need Node.js installed. Consult our .tool-versions file for the version that we use to validate and build in CI. This file is of particular use to those using asdf or compatible tooling.

Installing Dependencies

When you've just cloned the repository or you've switched branch, ensure that you've installed dependencies with:

npm install

Or, alternatively, do a clean install to match exactly what we check and assemble in CI:

npm ci

Lint, Test and Preview

Always inspect our GitHub workflow files as the canonical reference as to what commands are performed in CI.

The following command will lint source files and run tests:

npm run lint && npm test

To serve the HTML micro-site in your local environment you can use:

npm start

The npm start command generates a folder called output/ which is intentionally ignored by Git and then spins up an HTTP server using the http-server dev dependency. You will then be able to open up on your browser http://127.0.0.1:8080/ with the features matrix displayed and ready to be edited from the source files.

Release Process

Canonical Feature List Release Process

Use our standard Release Process, except there is no 'Publish Workflow' to be triggered in this repository. This is because downstream users consume the contents of sdk.yaml using its GitHub raw URL for a given version tag (see Usage).

The "Public API" of this repository, when it comes to assessing the "Trigger" for the Version Bump, is the structured presented in sdk.yaml (otherwise known as the canonical feature list).

Core Business Logic Release Process

The files maintained within the core folder define a package which is published to the npm registry at @ably/features-core.

Git tags are not created when new versions of this package are released. Tags in this repository are reserved for the canonical feature list (where that version is defined in render/package.json).

To publish a new version of this package:

  1. Increment the version in package.json
  2. Run npm install from the core folder
  3. Run npm install from the render folder
  4. Commit the changes from steps 1 (package.json), 2 (core's package-lock.json) and 3 (render's package-lock.json) to the main branch
  5. Run the Publish Core workflow against the main branch

Steps 1 thru 4 will usually be done via a release PR, as outlined in our guidance for Release Process.