Skip to content

Feat/cloud fn test

Feat/cloud fn test #2

Workflow file for this run

name: Jobs E2E
on:
push:
branches:
- main
- v1
pull_request:
branches:
- main
- v1
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-jobs-e2e
cancel-in-progress: true
jobs:
jobs-e2e:
runs-on: ubuntu-latest
env:
PGHOST: localhost
PGPORT: 5432
PGUSER: postgres
PGPASSWORD: password
PGDATABASE: launchql
TEST_DB: launchql
TEST_GRAPHQL_URL: http://127.0.0.1:3000/graphql
TEST_GRAPHQL_HOST: admin.localhost
services:
pg_db:
image: pyramation/pgvector:13.3-alpine
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Configure Git (for tests)
run: |
git config --global user.name "CI Test User"
git config --global user.email "ci@example.com"
- name: checkout
uses: actions/checkout@v4
- name: checkout constructive-db
uses: actions/checkout@v4
with:
repository: constructive-io/constructive-db
path: constructive-db
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10
- name: Install dependencies
run: pnpm install
- name: Build packages
run: pnpm run build
- name: Setup jobs database
run: |
PGDATABASE=postgres createdb launchql || true
pnpm --filter pgpm exec pgpm admin-users bootstrap --yes --cwd constructive-db
pnpm --filter pgpm exec pgpm admin-users add --test --yes --cwd constructive-db
pnpm --filter pgpm exec pgpm deploy --yes --database "$PGDATABASE" --package app-svc-local --cwd constructive-db
pnpm --filter pgpm exec pgpm deploy --yes --database "$PGDATABASE" --package metaschema --cwd constructive-db
pnpm --filter pgpm exec pgpm deploy --yes --database "$PGDATABASE" --package pgpm-database-jobs --cwd constructive-db
- name: Resolve database id
run: |
DBID=$(psql -h "$PGHOST" -U "$PGUSER" -d "$PGDATABASE" -Atc "SELECT id FROM metaschema_public.database ORDER BY created_at LIMIT 1;")
if [ -z "$DBID" ]; then
echo "No database id found in metaschema_public.database" >&2
exit 1
fi
echo "TEST_DATABASE_ID=$DBID" >> "$GITHUB_ENV"
echo "DEFAULT_DATABASE_ID=$DBID" >> "$GITHUB_ENV"
- name: Start combined server
env:
NODE_ENV: test
PORT: "3000"
SERVER_HOST: "127.0.0.1"
API_ENABLE_META: "false"
API_EXPOSED_SCHEMAS: "app_jobs,lql_private,lql_public,lql_roles_public,metaschema_modules_public,metaschema_public,services_public"
API_ANON_ROLE: "administrator"
API_ROLE_NAME: "administrator"
API_DEFAULT_DATABASE_ID: ${{ env.DEFAULT_DATABASE_ID }}
CONSTRUCTIVE_GRAPHQL_ENABLED: "true"
CONSTRUCTIVE_JOBS_ENABLED: "true"
CONSTRUCTIVE_FUNCTIONS: "simple-email,send-email-link"
CONSTRUCTIVE_FUNCTION_PORTS: "simple-email:8081,send-email-link:8082"
SIMPLE_EMAIL_DRY_RUN: "true"
SEND_EMAIL_LINK_DRY_RUN: "true"
LOCAL_APP_PORT: "3000"
GRAPHQL_URL: "http://127.0.0.1:3000/graphql"
META_GRAPHQL_URL: "http://127.0.0.1:3000/graphql"
GRAPHQL_HOST_HEADER: "admin.localhost"
META_GRAPHQL_HOST_HEADER: "admin.localhost"
MAILGUN_DOMAIN: "mg.constructive.io"
MAILGUN_FROM: "no-reply@mg.constructive.io"
MAILGUN_REPLY: "info@mg.constructive.io"
MAILGUN_API_KEY: "change-me-mailgun-api-key"
MAILGUN_KEY: "change-me-mailgun-api-key"
JOBS_SUPPORT_ANY: "false"
JOBS_SUPPORTED: "simple-email,send-email-link"
INTERNAL_GATEWAY_DEVELOPMENT_MAP: '{"simple-email":"http://127.0.0.1:8081","send-email-link":"http://127.0.0.1:8082"}'
INTERNAL_JOBS_CALLBACK_PORT: "8080"
JOBS_CALLBACK_BASE_URL: "http://127.0.0.1:8080/callback"
FEATURES_POSTGIS: "false"
run: |
nohup node packages/server/dist/run.js > /tmp/combined-server.log 2>&1 &
echo $! > /tmp/combined-server.pid
- name: Test server jobs e2e
run: pnpm --filter @constructive-io/server test
- name: Stop combined server
if: always()
run: |
if [ -f /tmp/combined-server.pid ]; then
kill "$(cat /tmp/combined-server.pid)" || true
fi