diff --git a/.gitea/workflows/branches.yaml b/.gitea/workflows/branches.yaml new file mode 100644 index 0000000..b359d68 --- /dev/null +++ b/.gitea/workflows/branches.yaml @@ -0,0 +1,11 @@ +name: Build and Push Docker Image +run-name: ${{ gitea.actor }} +on: + push: + branches: + - "!main" + - "**/*" + +jobs: + tests: + uses: ./.gitea/workflows/test.yaml \ No newline at end of file diff --git a/.gitea/workflows/build_and_push.yaml b/.gitea/workflows/main.yaml similarity index 94% rename from .gitea/workflows/build_and_push.yaml rename to .gitea/workflows/main.yaml index 4bba295..4ae029d 100644 --- a/.gitea/workflows/build_and_push.yaml +++ b/.gitea/workflows/main.yaml @@ -6,7 +6,10 @@ on: - main jobs: + tests: + uses: ./.gitea/workflows/test.yaml build: + needs: [tests] runs-on: ubuntu-latest steps: - name: Checkout diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml index 19c3822..16bb341 100644 --- a/.gitea/workflows/test.yaml +++ b/.gitea/workflows/test.yaml @@ -1,8 +1,6 @@ name: Test run-name: ${{ gitea.actor }} -on: - push: - branches: +on: [workflow_call] jobs: build: @@ -38,11 +36,12 @@ jobs: run: bun install - name: Push Database - Test - run: bun run db:push + run: bun db:push:force env: - POSTGRES_URL: postgres://postgres:postgres@10.0.0.145:5432/postgres + POSTGRES_URL: postgres://postgres:postgres@postgres:5432/postgres - name: Test API run: bun test:api env: - POSTGRES_URL: postgres://postgres:postgres@10.0.0.145:5432/postgres \ No newline at end of file + NODE_ENV: test + POSTGRES_URL: postgres://postgres:postgres@postgres:5432/postgres \ No newline at end of file diff --git a/apps/api/src/utils/startup.ts b/apps/api/src/utils/startup.ts index 509abed..a9214db 100644 --- a/apps/api/src/utils/startup.ts +++ b/apps/api/src/utils/startup.ts @@ -8,6 +8,13 @@ declare module 'bun' { } export const startup = () => { + if (import.meta.env.NODE_ENV === 'test') { + if (!import.meta.env.POSTGRES_URL) { + console.error('Env Var POSTGRES_URL is missing!') + process.exit(0) + } + return + } const keys = [ 'POSTGRES_URL', 'CLERK_WEBHOOK_SECRET', diff --git a/package.json b/package.json index a7bc64e..12ed4d2 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "db:generate": "bun --filter '@boring.tools/database' db:generate", "db:migrate": "bun --filter '@boring.tools/database' db:migrate", "db:push": "bun --filter '@boring.tools/database' db:push", + "db:push:force": "bun --filter '@boring.tools/database' db:push:force", "test:api": "bun --filter '@boring.tools/api' test", "docker:website:build": "docker build -t git.hashdot.co/boring.tools/boring.tools/website -f ci/docker/website/Dockerfile .", "docker:website:push": "docker push git.hashdot.co/boring.tools/boring.tools/website", diff --git a/packages/database/drizzle.ci.config.ts b/packages/database/drizzle.ci.config.ts new file mode 100644 index 0000000..8737490 --- /dev/null +++ b/packages/database/drizzle.ci.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'drizzle-kit' +export default defineConfig({ + schema: './src/schema/index.ts', + out: './src/migrations', + dialect: 'postgresql', + dbCredentials: { + url: process.env.POSTGRES_URL as string, + }, + verbose: false, + strict: false, +}) diff --git a/packages/database/package.json b/packages/database/package.json index f7690c9..2dcc378 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -4,6 +4,7 @@ "type": "module", "scripts": { "db:push": "drizzle-kit push", + "db:push:force": "drizzle-kit push --config=drizzle.ci.config.ts", "db:studio": "drizzle-kit studio", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate"