Files
drp-48/.gitlab-ci.yml
2025-05-30 08:36:53 +01:00

97 lines
3.0 KiB
YAML

default:
image: node:lts-alpine
deps:
needs: []
script:
- npm ci
cache:
- key:
files:
- package-lock.json
paths:
- node_modules/
artifacts:
paths:
- node_modules/
check_types:
needs: [deps]
dependencies: [deps]
script:
- npm run check
check_style:
needs: [deps]
dependencies: [deps]
script:
- npm run lint
test_unit:
needs: [deps, check_types, check_style]
dependencies: [deps]
script:
- npm run test:unit
test_db:
needs: [deps, check_types, check_style]
dependencies: [deps]
script: <<-SUPABASE_DB_SCRIPT
npx supabase db diff -f dummy_migration
git add -N supabase/migrations
if ! git diff --exit-code --quiet supabase/migrations; then
echo "Supabase migrations and schema are not in sync. See diff below:"
git diff supabase/migrations
exit 1
fi
npx supabase db start
npx supabase db reset
npx supabase db lint
SUPABASE_DB_SCRIPT
after_script:
- npx supabase db stop
# test_e2e:
# needs: [deps, check_types, check_style]
# dependencies: [deps]
# before_script:
# - npx playwright install
# script:
# - npm run test:e2e
build:
needs: [deps, check_types, check_style, test_unit, test_db]
dependencies: [deps]
script:
- npm run build
artifacts:
paths:
- build/
deploy_app:
needs: [deps, build]
dependencies: [deps, build]
before_script:
- apk update
- apk add openssh-client
- echo "$DRP_KEY" | wc -c
- echo "$DRP_KEY" | base64 -d > /tmp/drp.key
- chmod 600 /tmp/drp.key
script:
- ssh -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null debian@drp-host.pub.home.local.koval.net -C "rm -rf /home/debian/app/build /home/debian/app/node_modules"
- scp -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r build debian@drp-host.pub.home.local.koval.net:/home/debian/app/build
- scp -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r node_modules debian@drp-host.pub.home.local.koval.net:/home/debian/app/node_modules
- scp -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null docker-compose.yml debian@drp-host.pub.home.local.koval.net:/home/debian/app/docker-compose.yml
- scp -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null package.json debian@drp-host.pub.home.local.koval.net:/home/debian/app/package.json
- scp -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null package-lock.json debian@drp-host.pub.home.local.koval.net:/home/debian/app/package-lock.json
- ssh -i /tmp/drp.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null debian@drp-host.pub.home.local.koval.net -C "cd /home/debian/app && docker compose down && docker compose up -d"
- npx supabase db push
environment:
name: production
url: https://drp.koval.net
rules:
- if: $CI_COMMIT_BRANCH != "master"
when: never
- when: on_success