Skip to content

Commit 39bfe46

Browse files
committed
Fix GitHub Actions deployment setup
1 parent 7639cb8 commit 39bfe46

5 files changed

Lines changed: 75 additions & 15 deletions

File tree

.github/workflows/cd.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77

88
env:
99
REGISTRY: ghcr.io
10-
IMAGE_PREFIX: ${{ vars.IMAGE_PREFIX || format('ghcr.io/{0}/exchange', github.repository_owner) }}
10+
IMAGE_PREFIX: ${{ vars.IMAGE_PREFIX || 'ghcr.io/shikhar-395/exchange' }}
1111
PUBLIC_API_URL: ${{ vars.NEXT_PUBLIC_EXCHANGE_API_URL || 'https://api.exchange.shikhar.site/api/v1' }}
1212
PUBLIC_WS_URL: ${{ vars.NEXT_PUBLIC_EXCHANGE_WS_URL || 'wss://ws.exchange.shikhar.site' }}
1313

apps/integration-test/src/scripts/run-integration-ci.sh

100644100755
Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,68 @@ PORT=3001
77

88
function stop_services() {
99
echo "🔴 - Stopping backend..."
10-
kill $(lsof -t -i:$PORT)
10+
if [ -n "${BACKEND_PID:-}" ]; then
11+
kill "$BACKEND_PID" 2>/dev/null || true
12+
fi
1113

1214
echo "🔴 - Taking down auxiliary services..."
1315
docker compose -f "$PROJECT_ROOT/docker/compose-files/docker-compose-integration-test.yml" down
1416
}
1517

1618
trap stop_services EXIT INT TERM
1719

18-
DATABASE_URL="${DATABASE_URL:-postgresql://postgres:password@localhost:5432/postgres}"
20+
DATABASE_URL="${CI_DATABASE_URL:-postgresql://postgres:password@localhost:5432/postgres}"
21+
TIMESCALE_URL_PASSWORD="${TIMESCALE_PASSWORD:-password}"
1922

2023
echo "Starting auxilary services"
2124
docker compose -f "$PROJECT_ROOT/docker/compose-files/docker-compose-integration-test.yml" up -d --wait
2225

2326
echo '🟡 - Waiting for database to be ready...'
24-
$PROJECT_ROOT/apps/integration-test/src/scripts/wait-for-it.sh localhost:5432 -- echo "database has started"
27+
$PROJECT_ROOT/apps/integration-test/src/scripts/wait-for-it.sh localhost:5432 --timeout=60 -- echo "database has started"
2528

2629
echo "Applying migration"
27-
cd $PROJECT_ROOT/packages/database && DATABASE_URL="$DATABASE_URL" pnpm dlx prisma migrate dev --name init --schema "$PROJECT_ROOT/packages/database/prisma/schema.prisma"
30+
cd $PROJECT_ROOT/packages/database && DATABASE_URL="$DATABASE_URL" DIRECT_URL="$DATABASE_URL" pnpm dlx prisma migrate dev --name init --schema "$PROJECT_ROOT/packages/database/prisma/schema.prisma"
2831

2932
echo "Generate Client"
3033
cd $PROJECT_ROOT/packages/database && pnpm dlx prisma generate --schema "$PROJECT_ROOT/packages/database/prisma/schema.prisma"
3134

35+
cat > "$PROJECT_ROOT/apps/backend/.env" <<EOF
36+
PORT=$PORT
37+
DATABASE_URL=$DATABASE_URL
38+
DIRECT_URL=$DATABASE_URL
39+
REDIS_URL=redis://localhost:6379
40+
TIMESCALE_USER=exchange
41+
TIMESCALE_HOST=localhost
42+
TIMESCALE_DATABASE=exchange
43+
TIMESCALE_PASSWORD=$TIMESCALE_URL_PASSWORD
44+
TIMESCALE_PORT=5433
45+
FRONTEND_URL_DEPLOYED=http://localhost:3000
46+
BETTER_AUTH_SECRET=test-secret
47+
BETTER_AUTH_URL=http://localhost:$PORT
48+
EOF
49+
50+
cat > "$PROJECT_ROOT/apps/db-processor/.env" <<EOF
51+
DATABASE_URL=$DATABASE_URL
52+
DIRECT_URL=$DATABASE_URL
53+
REDIS_URL=redis://localhost:6379
54+
TIMESCALE_USER=exchange
55+
TIMESCALE_HOST=localhost
56+
TIMESCALE_DATABASE=exchange
57+
TIMESCALE_PASSWORD=$TIMESCALE_URL_PASSWORD
58+
TIMESCALE_PORT=5433
59+
EOF
60+
61+
echo "Initializing TimescaleDB"
62+
cd $PROJECT_ROOT/apps/db-processor && pnpm run seed
63+
3264
echo '🟡 - Starting backend server...'
3365
cd $PROJECT_ROOT/apps/backend && PORT=$PORT pnpm run dev:ci &
3466
BACKEND_PID=$!
3567

3668
echo "backend pid $BACKEND_PID"
3769

3870
echo '🟡 - Waiting for backend to be ready...'
39-
$PROJECT_ROOT/apps/integration-test/src/scripts/wait-for-it.sh localhost:3001 -- echo "backend has started"
71+
$PROJECT_ROOT/apps/integration-test/src/scripts/wait-for-it.sh localhost:3001 --timeout=60 -- echo "backend has started"
4072

4173
echo "Run integration test"
4274
cd $PROJECT_ROOT/apps/integration-test && vitest --run

apps/integration-test/src/scripts/wait-for-it.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,10 @@ WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
137137
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
138138

139139
# Check to see if timeout is from busybox?
140-
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
141-
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
140+
WAITFORIT_TIMEOUT_PATH=$(type -p timeout || true)
141+
if [[ -n "$WAITFORIT_TIMEOUT_PATH" ]]; then
142+
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
143+
fi
142144

143145
WAITFORIT_BUSYTIMEFLAG=""
144146
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
@@ -157,7 +159,7 @@ if [[ $WAITFORIT_CHILD -gt 0 ]]; then
157159
WAITFORIT_RESULT=$?
158160
exit $WAITFORIT_RESULT
159161
else
160-
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
162+
if [[ $WAITFORIT_TIMEOUT -gt 0 && -n "$WAITFORIT_TIMEOUT_PATH" ]]; then
161163
wait_for_wrapper
162164
WAITFORIT_RESULT=$?
163165
else

docker/compose-files/docker-compose-deploy.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ services:
3232
retries: 10
3333

3434
backend:
35-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/backend:${IMAGE_TAG:-latest}
35+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/backend:${IMAGE_TAG:-latest}
3636
container_name: backend
3737
restart: always
3838
ports:
@@ -46,7 +46,7 @@ services:
4646
condition: service_healthy
4747

4848
engine:
49-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/engine:${IMAGE_TAG:-latest}
49+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/engine:${IMAGE_TAG:-latest}
5050
container_name: engine
5151
restart: always
5252
env_file:
@@ -58,7 +58,7 @@ services:
5858
condition: service_healthy
5959

6060
db-processor:
61-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/db-processor:${IMAGE_TAG:-latest}
61+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/db-processor:${IMAGE_TAG:-latest}
6262
container_name: db-processor
6363
restart: always
6464
env_file:
@@ -70,7 +70,7 @@ services:
7070
condition: service_healthy
7171

7272
websocket:
73-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/websocket:${IMAGE_TAG:-latest}
73+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/websocket:${IMAGE_TAG:-latest}
7474
container_name: websocket
7575
restart: always
7676
ports:
@@ -82,7 +82,7 @@ services:
8282
condition: service_healthy
8383

8484
market-maker:
85-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/market-maker:${IMAGE_TAG:-latest}
85+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/market-maker:${IMAGE_TAG:-latest}
8686
container_name: market-maker
8787
restart: always
8888
env_file:
@@ -91,7 +91,7 @@ services:
9191
- backend
9292

9393
web:
94-
image: ${IMAGE_PREFIX:-ghcr.io/shikhar/exchange}/web:${IMAGE_TAG:-latest}
94+
image: ${IMAGE_PREFIX:-ghcr.io/shikhar-395/exchange}/web:${IMAGE_TAG:-latest}
9595
container_name: web
9696
restart: always
9797
ports:

docker/compose-files/docker-compose-integration-test.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,29 @@ services:
1212
interval: 1s
1313
timeout: 10s
1414
retries: 10
15+
16+
redis:
17+
image: redis
18+
container_name: redis
19+
ports:
20+
- '6379:6379'
21+
healthcheck:
22+
test: ["CMD", "redis-cli", "ping"]
23+
interval: 1s
24+
timeout: 10s
25+
retries: 10
26+
27+
timescaledb:
28+
image: timescale/timescaledb:latest-pg12
29+
container_name: timescaledb
30+
ports:
31+
- "5433:5432"
32+
environment:
33+
POSTGRES_DB: exchange
34+
POSTGRES_USER: exchange
35+
POSTGRES_PASSWORD: password
36+
healthcheck:
37+
test: ["CMD-SHELL", "pg_isready -U exchange -d exchange"]
38+
interval: 1s
39+
timeout: 10s
40+
retries: 10

0 commit comments

Comments
 (0)