mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
129 lines
5.1 KiB
YAML
129 lines
5.1 KiB
YAML
packages:
|
|
- name: lib
|
|
type: yarn
|
|
srcs:
|
|
- "src/**/*.ts"
|
|
- .eslintrc
|
|
- package.json
|
|
- mocha.opts
|
|
deps:
|
|
- :dbtest
|
|
- components/gitpod-protocol:lib
|
|
config:
|
|
packaging: library
|
|
yarnLock: ${coreYarnLockBase}/yarn.lock
|
|
tsconfig: tsconfig.json
|
|
dontTest: true
|
|
- name: latest-migration
|
|
type: generic
|
|
srcs:
|
|
- "src/typeorm/migration/*.ts"
|
|
- "scripts/generate-latest-migration.sh"
|
|
config:
|
|
dontTest: false
|
|
commands:
|
|
- ["sh", "-c", "scripts/generate-latest-migration.sh > latest-migration.txt"]
|
|
test:
|
|
- ["scripts/generate-latest-migration.sh", "test"]
|
|
- ["sh", "-c", "rm -rf src"]
|
|
- ["sh", "-c", "rm -rf scripts"]
|
|
- name: migrations
|
|
type: yarn
|
|
srcs:
|
|
- "src/**/*.ts"
|
|
- .eslintrc
|
|
- package.json
|
|
deps:
|
|
- components/gitpod-protocol:lib
|
|
config:
|
|
dontTest: true
|
|
packaging: offline-mirror
|
|
yarnLock: ${coreYarnLockBase}/yarn.lock
|
|
tsconfig: tsconfig.json
|
|
- name: dbtest
|
|
type: yarn
|
|
srcs:
|
|
- "src/**/*.ts"
|
|
- .eslintrc
|
|
- package.json
|
|
- mocha.opts
|
|
deps:
|
|
- :dbtest-init
|
|
- components/gitpod-protocol:lib
|
|
config:
|
|
packaging: library
|
|
yarnLock: ${coreYarnLockBase}/yarn.lock
|
|
tsconfig: tsconfig.json
|
|
commands:
|
|
test: ["yarn", "db-test"]
|
|
build: ["yarn", "build"]
|
|
- name: dbtest-init
|
|
type: generic
|
|
srcs:
|
|
- package.json
|
|
- hack/*.sql
|
|
deps:
|
|
- :migrations
|
|
- install/installer/pkg/components/database/incluster/init:init-scripts
|
|
env:
|
|
- DB_PORT=23306
|
|
- DB_USER=root
|
|
- DB_PASSWORD=test
|
|
- DB_ENCRYPTION_KEYS=[{"name":"general","version":1,"primary":true,"material":"5vRrp0H4oRgdkPnX1qQcS54Q0xggr6iyho42IQ1rO+c="}]
|
|
ephemeral: true
|
|
config:
|
|
commands:
|
|
# Check if a DB is present. If not: start one and wait until it's up
|
|
# Note: In CI there is a DB running as sidecar; in workspaces we're starting it once.
|
|
# Re-use of the instance because of the init scripts (cmp. next step).
|
|
# (gpl): It would be nice to use bitnami/mysql here as we do in previews. However the container does not start in Gitpod workspaces due to some docker/kernel/namespace issue.
|
|
- ["sh", "-c", "mysqladmin ping --wait=${DB_RETRIES:-1} -h $DB_HOST --port $DB_PORT -p$DB_PASSWORD -u$DB_USER --default-auth=mysql_native_password --silent || (docker run --name test-mysql -d -e MYSQL_ROOT_PASSWORD=$DB_PASSWORD -e MYSQL_TCP_PORT=$DB_PORT -p $DB_PORT:$DB_PORT mysql:8.0.33 --default-authentication-plugin=mysql_native_password; while ! mysqladmin ping -h \"$DB_HOST\" -P \"$DB_PORT\" -p$DB_PASSWORD -u$DB_USER --default-auth=mysql_native_password --silent; do echo \"waiting for DB...\"; sleep 2; done)"]
|
|
# Apply the DB initialization scripts (re-creates the "gitpod" DB if already there)
|
|
- ["mkdir", "-p", "init-scripts"]
|
|
- ["sh", "-c", "find . -name \"*.sql\" | sort | xargs -I file cp file init-scripts"]
|
|
- ["sh", "-c", "ls init-scripts | sort | xargs -I file cat init-scripts/file | sed -e 's/__GITPOD_USERNAME__/gitpod/g' | sed -e 's/__GITPOD_USERNAME__/gitpod/g' | sed -e 's/__GITPOD_DB_NAME__/gitpod/g' | tee debug.txt | mysql -h \"$DB_HOST\" -P \"$DB_PORT\" -p$DB_PASSWORD -u $DB_USER"]
|
|
# Run DB migrations
|
|
- ["sh", "-c", "mkdir -p mig; cd mig; ../components-gitpod-db--migrations/install.sh"]
|
|
# migrate 'migrations'
|
|
- ["yarn", "--cwd", "mig/node_modules/@gitpod/gitpod-db", "run", "migrate-migrations"]
|
|
# Run actual migrations
|
|
- ["yarn", "--cwd", "mig/node_modules/@gitpod/gitpod-db", "typeorm", "migrations:run"]
|
|
# Clean out package to not bload the build artifact
|
|
- ["rm", "-rf", "mig"]
|
|
- name: docker
|
|
type: docker
|
|
srcs:
|
|
- migrate.sh
|
|
- migrate_gcp.sh
|
|
- typeorm.sh
|
|
- typeorm_gcp.sh
|
|
deps:
|
|
- :migrations
|
|
argdeps:
|
|
- imageRepoBase
|
|
config:
|
|
buildArgs:
|
|
VERSION: ${version}
|
|
dockerfile: leeway.Dockerfile
|
|
metadata:
|
|
helm-component: dbMigrations
|
|
image:
|
|
- ${imageRepoBase}/db-migrations:${version}
|
|
- ${imageRepoBase}/db-migrations:commit-${__git_commit}
|
|
scripts:
|
|
- name: init-testdb
|
|
description: "Starts a properly initialized MySQL instance to run tests against. Usage: '. $(leeway run components/gitpod-db:init-testdb)'"
|
|
deps: []
|
|
script: |
|
|
export DB_HOST=${DB_HOST:-127.0.0.1}
|
|
leeway build components/gitpod-db/go:init-testdb
|
|
- name: db-test-env
|
|
description: "Creates a file with env vars necessary for running DB tests. The file delets itself after being sourced. Usage: '. $(leeway run components/gitpod-db:db-test-env)'"
|
|
deps: []
|
|
script: |
|
|
TMP="$(mktemp)"
|
|
echo '#!/bin/bash' > $TMP
|
|
echo 'export DB_ENCRYPTION_KEYS="[{\"name\":\"general\",\"version\":1,\"primary\":true,\"material\":\"5vRrp0H4oRgdkPnX1qQcS54Q0xggr6iyho42IQ1rO+c=\"}]";export DB_HOST=${DB_HOST:-127.0.0.1};export DB_PORT=23306;export DB_USER=root;export DB_PASSWORD=test;' >> $TMP
|
|
echo "rm -f $TMP" >> $TMP
|
|
echo $TMP
|