dev: add scripts to prepare dev environment
This commit is contained in:
parent
ee803cd1f8
commit
567ae0efb5
7 changed files with 79 additions and 61 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -29,9 +29,6 @@ coverage
|
||||||
!/.config/helm_values_example.yml
|
!/.config/helm_values_example.yml
|
||||||
!/.config/LICENSE
|
!/.config/LICENSE
|
||||||
|
|
||||||
# docker dev config
|
|
||||||
/dev/docker-compose.yml
|
|
||||||
|
|
||||||
# ESLint
|
# ESLint
|
||||||
.eslintcache
|
.eslintcache
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,42 @@ Be willing to comment on the good points and not just the things you want fixed
|
||||||
- Are there any omissions or gaps?
|
- Are there any omissions or gaps?
|
||||||
- Does it check for anomalies?
|
- Does it check for anomalies?
|
||||||
|
|
||||||
|
## Preparing the development environment
|
||||||
|
|
||||||
|
1. Install the following software
|
||||||
|
- nodejs
|
||||||
|
- rustup
|
||||||
|
- cargo
|
||||||
|
- sea-orm-cli
|
||||||
|
- podman
|
||||||
|
- podman-compose
|
||||||
|
1. Copy the config file
|
||||||
|
```sh
|
||||||
|
cp .config/dev.example.yml .config/default.yml
|
||||||
|
```
|
||||||
|
1. Start postgres/redis containers
|
||||||
|
```sh
|
||||||
|
pnpm run dev:up
|
||||||
|
```
|
||||||
|
1. Build Firefish
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
pnpm run build:debug
|
||||||
|
pnpm run migrate
|
||||||
|
```
|
||||||
|
1. Start Firefish on your localhost
|
||||||
|
```sh
|
||||||
|
pnpm run start
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the following commands to initialize the database:
|
||||||
|
```sh
|
||||||
|
pnpm run dev:init
|
||||||
|
pnpm run migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure to clear your browser local storage after initializing the dev instance.
|
||||||
|
|
||||||
## Deploy (SOON)
|
## Deploy (SOON)
|
||||||
The `/deploy` command by issue comment can be used to deploy the contents of a MR to the preview environment.
|
The `/deploy` command by issue comment can be used to deploy the contents of a MR to the preview environment.
|
||||||
```
|
```
|
||||||
|
|
15
dev/docker-compose.yml
Normal file
15
dev/docker-compose.yml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
image: docker.io/redis:7-alpine
|
||||||
|
ports:
|
||||||
|
- "26379:6379"
|
||||||
|
db:
|
||||||
|
image: docker.io/postgres:16-alpine
|
||||||
|
environment:
|
||||||
|
- "POSTGRES_PASSWORD=password"
|
||||||
|
- "POSTGRES_USER=firefish"
|
||||||
|
- "POSTGRES_DB=firefish_db"
|
||||||
|
ports:
|
||||||
|
- "25432:5432"
|
|
@ -1,57 +0,0 @@
|
||||||
version: "3"
|
|
||||||
|
|
||||||
services:
|
|
||||||
web:
|
|
||||||
image: registry.firefish.dev/firefish/firefish
|
|
||||||
build: ..
|
|
||||||
container_name: firefish_web
|
|
||||||
restart: always
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
- redis
|
|
||||||
# - es
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
networks:
|
|
||||||
- network
|
|
||||||
# - web
|
|
||||||
volumes:
|
|
||||||
- ../files:/firefish/files
|
|
||||||
- ../.config:/firefish/.config:ro
|
|
||||||
|
|
||||||
redis:
|
|
||||||
restart: always
|
|
||||||
container_name: firefish_redis
|
|
||||||
image: docker.io/redis:7.0-alpine
|
|
||||||
networks:
|
|
||||||
- network
|
|
||||||
volumes:
|
|
||||||
- ../redis:/data
|
|
||||||
|
|
||||||
db:
|
|
||||||
restart: always
|
|
||||||
image: docker.io/postgres:12.2-alpine
|
|
||||||
container_name: firefish_db
|
|
||||||
networks:
|
|
||||||
- network
|
|
||||||
env_file:
|
|
||||||
- ../.config/docker.env
|
|
||||||
volumes:
|
|
||||||
- ../db:/var/lib/postgresql/data
|
|
||||||
|
|
||||||
# es:
|
|
||||||
# restart: always
|
|
||||||
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
|
|
||||||
# environment:
|
|
||||||
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
|
||||||
# - "TAKE_FILE_OWNERSHIP=111"
|
|
||||||
# networks:
|
|
||||||
# - network
|
|
||||||
# volumes:
|
|
||||||
# - ./elasticsearch:/usr/share/elasticsearch/data
|
|
||||||
|
|
||||||
networks:
|
|
||||||
network:
|
|
||||||
# web:
|
|
||||||
# external:
|
|
||||||
# name: web
|
|
|
@ -19,9 +19,12 @@
|
||||||
"gulp": "gulp build",
|
"gulp": "gulp build",
|
||||||
"watch": "pnpm run dev",
|
"watch": "pnpm run dev",
|
||||||
"dev": "pnpm node ./scripts/dev.mjs",
|
"dev": "pnpm node ./scripts/dev.mjs",
|
||||||
|
"dev:up": "pnpm node ./scripts/dev-up.mjs",
|
||||||
|
"dev:down": "pnpm node ./scripts/dev-down.mjs",
|
||||||
|
"dev:init": "pnpm run dev:down && pnpm run dev:up",
|
||||||
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
||||||
"lint": "pnpm -r --parallel run lint",
|
"lint": "pnpm -r --parallel run lint",
|
||||||
"debug": "pnpm run build:debug && pnpm run start",
|
"debug": "pnpm run clean && pnpm run build:debug && pnpm run start",
|
||||||
"build:debug": "pnpm -r --parallel run build:debug && pnpm run gulp",
|
"build:debug": "pnpm -r --parallel run build:debug && pnpm run gulp",
|
||||||
"cy:open": "cypress open --browser --e2e --config-file=cypress.config.ts",
|
"cy:open": "cypress open --browser --e2e --config-file=cypress.config.ts",
|
||||||
"cy:run": "cypress run",
|
"cy:run": "cypress run",
|
||||||
|
|
12
scripts/dev-down.mjs
Normal file
12
scripts/dev-down.mjs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import path, { join } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
import { execa } from "execa";
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
|
execa("podman-compose", ["down"], {
|
||||||
|
cwd: join(__dirname, "/../dev"),
|
||||||
|
stdio: "inherit",
|
||||||
|
});
|
||||||
|
})();
|
12
scripts/dev-up.mjs
Normal file
12
scripts/dev-up.mjs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import path, { join } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
import { execa } from "execa";
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
|
execa("podman-compose", ["up", "--detach"], {
|
||||||
|
cwd: join(__dirname, "/../dev"),
|
||||||
|
stdio: "inherit",
|
||||||
|
});
|
||||||
|
})();
|
Loading…
Reference in a new issue