# Introduction This PR contains a big test file and few snapshots Related to https://github.com/twentyhq/core-team-issues/issues/487 ## New env var `APP_VERSION` Now will be injected directly in a built docker image the twenty's built version. Inferred from the build git tag name. Which mean on main or other `not a tag version` built APP_VERSION will be `null` ## New upgrade-commander-runner Refactored the upgrade command to be more strict regarding: - Version management - Sync metadata command always run - Added failing workspaces aggregator + logs on cleanup From now on the `upgrade` command will compare the `WORKSPACE_VERSION` to the `APP_VERSION` in order to bypass any workspace version != than the upgrade version `fromVersion` ## Existing commands Note that the version validation will be done only when passing by the `upgrade` command. Which means that running the following command `upgrade:x.y-some-specific-command` won't result in workspace version mutation This is to enforce that all an upgrade commands + sync-metadata has been run on a workspace ## Will do in other PR but related ### New workspace New workspace will now be inserted with version equal to the APP_VERSION they've been created by ### Old workspace Will create a command that should be ran outside of any `upgrade-runner` extending command, the command will have to be ran on every workspace before making the next release upgrade This command iterates over any active and suspended workspace that has `version` to `NULL` in order to update it `APP_VERSION` -1 minor ### SENTRY_RELEASE - Either deprecate SENTRY_RELEASE in favor of `APP_VERSION` => What about main with null version ? or create a new env var that would be `APP_COMMIT_SHA` instead of SENTRY third party ref ### Update CD to inject APP_VERSION from branch name ### Update docs and release logs Adding documentation for `APP_VERSION` ## Related PRs: https://github.com/twentyhq/twenty-infra/pull/181
32 lines
1.3 KiB
Bash
Executable File
32 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# Set APP_VERSION only if it has a value
|
|
if [ ! -z "${APP_VERSION}" ]; then
|
|
export APP_VERSION="${APP_VERSION}"
|
|
fi
|
|
|
|
# Check if the initialization has already been done and that we enabled automatic migration
|
|
if [ "${DISABLE_DB_MIGRATIONS}" != "true" ] && [ ! -f /app/docker-data/db_status ]; then
|
|
echo "Running database setup and migrations..."
|
|
|
|
# Creating the database if it doesn't exist
|
|
PGUSER=$(echo $PG_DATABASE_URL | awk -F '//' '{print $2}' | awk -F ':' '{print $1}')
|
|
PGPASS=$(echo $PG_DATABASE_URL | awk -F ':' '{print $3}' | awk -F '@' '{print $1}')
|
|
PGHOST=$(echo $PG_DATABASE_URL | awk -F '@' '{print $2}' | awk -F ':' '{print $1}')
|
|
PGPORT=$(echo $PG_DATABASE_URL | awk -F ':' '{print $4}' | awk -F '/' '{print $1}')
|
|
PGPASSWORD=${PGPASS} psql -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -d postgres -tc "SELECT 1 FROM pg_database WHERE datname = 'default'" | grep -q 1 || \
|
|
PGPASSWORD=${PGPASS} psql -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -d postgres -c "CREATE DATABASE \"default\""
|
|
|
|
# Run setup and migration scripts
|
|
NODE_OPTIONS="--max-old-space-size=1500" tsx ./scripts/setup-db.ts
|
|
yarn database:migrate:prod
|
|
|
|
# Mark initialization as done
|
|
echo "Successfuly migrated DB!"
|
|
touch /app/docker-data/db_status
|
|
fi
|
|
|
|
# Continue with the original Docker command
|
|
exec "$@"
|