diff --git a/.editorconfig b/.editorconfig index 18d3ed3cc282..690c003b3e6a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,5 +9,5 @@ indent_size = 2 insert_final_newline = true trim_trailing_whitespace = true -[{*.java,pom.xml,*.py}] +[{*.java,pom.xml,*.py,*.sql}] indent_size = 4 diff --git a/.github/workflows/build-docker-image.yml b/.github/workflows/build-docker-image.yml index 7dbab8525fb5..efad325db612 100644 --- a/.github/workflows/build-docker-image.yml +++ b/.github/workflows/build-docker-image.yml @@ -79,6 +79,12 @@ jobs: if [[ -f scripts/generate_info_json.sh ]]; then scripts/generate_info_json.sh fi + + - name: Place server artifacts-es + env: + EDITION: ${{ vars.EDITION }} + run: | + scripts/prepare_server_artifacts.sh - name: Set base image tag id: set_base_tag diff --git a/.gitignore b/.gitignore index 2015eb221fcc..8d9bcfba4528 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ stacks /deploy/docker/fs/opt/appsmith/info.json +# Server artifacts +/deploy/docker/fs/opt/appsmith/server + # to ignore the node_modeules folder node_modules # to ignore the package-lock.json file @@ -36,3 +39,5 @@ app/client/.fleet/* # Observability related local storage utils/observability/tempo-data/* +# Ignore the mongo data backup directory for Mongo to PG migrations +mongo-data** \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 51c91bc54274..a9d4b233719d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,6 @@ FROM ${BASE} ENV IN_DOCKER=1 -# Add backend server - Application Layer -ARG JAR_FILE=./app/server/dist/server-*.jar -ARG PLUGIN_JARS=./app/server/dist/plugins/*.jar - ARG APPSMITH_CLOUD_SERVICES_BASE_URL ENV APPSMITH_CLOUD_SERVICES_BASE_URL=${APPSMITH_CLOUD_SERVICES_BASE_URL} @@ -16,7 +12,17 @@ ENV APPSMITH_SEGMENT_CE_KEY=${APPSMITH_SEGMENT_CE_KEY} COPY deploy/docker/fs / RUN <&2 + exit 1 + fi + + if ! [ -f server/mongo/server.jar && -f server/pg/server.jar ]; then + echo "Missing one or both server.jar files in the right place. Are you using the build script?" >&2 + exit 1 + fi + + mkdir -p ./editor ./rts # Ensure all *.sh scripts are executable. find . -name node_modules -prune -or -type f -name '*.sh' -print -exec chmod +x '{}' ';' @@ -25,10 +31,6 @@ RUN < /dev/null; then echo Server build failed >&2 exit 1 fi +popd +./scripts/prepare_server_artifacts.sh pretty_print "Server build successful. Starting client build ..." -popd pushd app/client > /dev/null yarn > /dev/null if ! yarn build > /dev/null; then diff --git a/scripts/prepare_server_artifacts.sh b/scripts/prepare_server_artifacts.sh new file mode 100755 index 000000000000..d389508447a4 --- /dev/null +++ b/scripts/prepare_server_artifacts.sh @@ -0,0 +1,28 @@ +#!/bin/bash -eux + +cd "$(git rev-parse --show-toplevel)" + +if [[ -z "${EDITION-}" ]]; then + export EDITION=ce + if [[ "$(git remote get-url origin)" == *appsmithorg/appsmith-ee* ]]; then + export EDITION=ee + fi +fi + +PG_TAG="${PG_TAG-pg}" +echo "Will be copying pg server artifacts from appsmith-$EDITION:$PG_TAG" + +target="deploy/docker/fs/opt/appsmith/server" +mkdir -p "$target" +rm -rf "$target"/{pg,mongo} + +cp -r "app/server/dist" "$target/mongo" +mv "$target/mongo"/server-*.jar "$target/mongo/server.jar" + +# Grab PostgreSQL server artifacts from Docker image. +image="appsmith/appsmith-$EDITION:$PG_TAG" +docker run --name xx --detach --entrypoint sleep "$image" infinity +docker cp xx:/opt/appsmith/server/pg "$target/pg" +docker cp xx:/opt/appsmith/info.json "$target/pg/source-info.json" +docker rm --force xx +docker image rm "$image" \ No newline at end of file