1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-28 00:06:53 +01:00
unleash.unleash/docs/developer-guide.md
ivaosthu 082d5068a8 Strategy should use better param description
Adds support for more fields sucha as description, required, etc.

relates to #182
2020-02-20 08:30:43 +01:00

2.5 KiB

Developer Guide

PostgreSQL

To run and develop unleash you need to have PostgreSQL databse (PostgreSQL v.9.5.x or newer) locally.

Create a local unleash databases in postgres

$ psql postgres <<SQL
CREATE USER unleash_user WITH PASSWORD 'passord';
CREATE DATABASE unleash;
GRANT ALL PRIVILEGES ON DATABASE unleash to unleash_user;
CREATE DATABASE unleash_test;
GRANT ALL PRIVILEGES ON DATABASE unleash_test to unleash_user;
SQL

Then set env vars:

(Optional as unleash will asume these as default values).

export DATABASE_URL=postgres://unleash_user:passord@localhost:5432/unleash
export TEST_DATABASE_URL=postgres://unleash_user:passord@localhost:5432/unleash_test

PostgreSQL with docker

If you dont want to install PostgreSQL locally you can spin up an instance with docker. We have created a script to ease this process: scripts/docker-postgres.sh

Commands

// Install dependencies
npm install

// Build unleash-frontend 
// (yes this is a bit wierd and be easier when we have a release of the frontend artifact).
// You can of course "npm link unleash-frontend" instead 
cd node_modules/unleash-frontend && npm install

// Start server in development
npm start:dev

// Admin dashboard
http://localhost:4242

// Feature API:
http://localhost:4242/api/features

// Execute tests in all packages:
npm test

Database changes

We use database migrations to track database changes.

Making a schema change

In order to run migrations you will set the environment variable for DATABASE_URL

export DATABASE_URL=postgres://unleash_user:passord@localhost:5432/unleash

Use db-migrate to create new migrations file.

> npm run db-migrate -- create YOUR-MIGRATION-NAME

All migrations requires on up and one down method.

Example of a typical migration:

/* eslint camelcase: "off" */
'use strict';

exports.up = function (db, cb) {
    db.createTable('examples', {
        id: { type: 'int', primaryKey: true, notNull: true },
        created_at: { type: 'timestamp', defaultValue: 'now()' },
    }, cb);
};

exports.down = function (db, cb) {
    return db.dropTable('examples', cb);
};

Test your migrations:

> npm run db-migrate -- up
> npm run db-migrate -- down

Publishing / Releasing new packages

Please run npm run nsp nad npm run lint checks before publishing.

Run npm run publish to start the publishing process. Lerna is setup with independent versioning so you will be prompted with version per package, and lerna will update all the versions across packages.

npm run publish:dry