Skip to content

Release life cycle fields #57

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
DATABASE_URL=[REDACTED]
PASSWORD=[REDACTED]
DATABASE_URL=postgres://postgres:hush1234@localhost:5432?schema=feature_tracker
PASSWORD=hush1234
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Changelog

All notable changes to this project will be documented in this file.

## [Unreleased]

## Changed

- Added release lifecycle fields ([#57]).

## Fixed

...

## Removed

...

[#57]:https://github.com/stackabletech/feature-tracker/pull/57
45 changes: 31 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,29 @@ for [Stackable](https://github.com/stackabletech).

Hosted dev version available [here](https://feature-tracker.vercel.app)

Install dependencies
## Install dependencies

```
npm i
```

## Set up the Postgresql server

Export the Postgres password (needed for the container and psql below)
```
export PGPASSWORD=...
```

Create .env file from .env.example
```
cp .env.example .env
```
Edit the `.env` file with the Postgres connection string and the app password. The connection string should look like `postgres://postgres:<password>@localhost:5432` where `<password>` should match the `PGPASSWORD` env var from above.
export PGPASSWORD=hush1234
export PGHOST=localhost
export PGUSER=postgres
export PGDATABASE=postgres
export DB_SCHEMA=feature_tracker

Start Postgres in a container
```
# create a volume to persist data between restarts
docker volume create feature-tracker

# start Postgres
docker run --rm --name postgres -e PGDATA=/var/lib/postgresql/data/pgdata -e POSTGRES_PASSWORD=${PGPASSWORD} -d -p 5432:5432 -v feature-tracker:/var/lib/postgresql/data postgres:alpine
Start Postgres in a container in the background.

```
docker run -d --name postgres -e POSTGRES_PASSWORD=${PGPASSWORD} -p 5432:5432 postgres:16.2-alpine3.19
```

Create and populate the database
Expand All @@ -37,10 +37,13 @@ npx prisma migrate dev --name init
psql -h localhost -U postgres -f sample/data.sql
```

Run the app
## Run the app

```
cp .env.example .env
npm run dev -- --open
```

# Migrating the DB

## Create baseline migration
Expand All @@ -61,3 +64,17 @@ git switch feat/lifecycle
npx prisma migrate dev --name lifecycle
```

# Schema description

| Name | Type | Description |
|-------------------------|----------|------------------------------------------|
| releases | table | SDP releases like `23.11`, etc. |
| release_versions | table | SDP patch releases like `23.11.0`, etc. |
| categories | table | Feature categories like `Certifications`, `Authentication`, etc. |
| features | table | All platform features like `LDAP`, `arm64`, `TLS`. Each feature belongs to a category. |
| product_features | table | Aggregates features per product and release. An `implementation_status` column contains values like `COMPLETED`, `NOT_PLANNED`, etc. |
| product_lifecycles | table | Aggregates the lifecycle state of a `product version` in a `release`. |
| product_versions | table | All product versions for all products. Example: `2.6.1` for Apache Airflow, etc. |
| products | table | All products. Example: `Apache Airflow`, `Druid`, etc. |
| release_components | table | All components included in a release version. A component is identified by a PURL. Currently only contains container images. |

Loading