From 298e3b4fea8db46cc726e626d6f0647b0848225d Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 3 Jul 2025 16:25:08 +0530 Subject: [PATCH] Support custom build and run for NextJS apps --- .../cerc-nextjs-base/scripts/build-app.sh | 6 ++ .../scripts/start-serving-app.sh | 60 +++++++++++-------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh index 26d7db9e..70afc79c 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/build-app.sh @@ -26,8 +26,14 @@ fi SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) WORK_DIR="${1:-/app}" +if [ -f "${WORK_DIR}/build-webapp.sh" ]; then + echo "Building webapp with ${WORK_DIR}/build-webapp.sh ..." cd "${WORK_DIR}" || exit 1 + ./build-webapp.sh || exit 1 + exit 0 +fi + if [ -f "next.config.mjs" ]; then NEXT_CONFIG_JS="next.config.mjs" IMPORT_OR_REQUIRE="import" diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh index 03457574..2c3d2b11 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh @@ -30,36 +30,44 @@ fi CERC_WEBAPP_FILES_DIR="${CERC_WEBAPP_FILES_DIR:-/app}" cd "$CERC_WEBAPP_FILES_DIR" -"$SCRIPT_DIR/apply-runtime-env.sh" "`pwd`" .next .next-r -mv .next .next.old -mv .next-r/.next . +if [ -f "./run-webapp.sh" ]; then + echo "Running webapp with run-webapp.sh ..." + cd "${WORK_DIR}" || exit 1 + ./run-webapp.sh & + tpid=$! + wait $tpid +else + "$SCRIPT_DIR/apply-runtime-env.sh" "`pwd`" .next .next-r + mv .next .next.old + mv .next-r/.next . -if [ "$CERC_NEXTJS_SKIP_GENERATE" != "true" ]; then - jq -e '.scripts.cerc_generate' package.json >/dev/null - if [ $? -eq 0 ]; then - npm run cerc_generate > gen.out 2>&1 & - tail -f gen.out & - tpid=$! + if [ "$CERC_NEXTJS_SKIP_GENERATE" != "true" ]; then + jq -e '.scripts.cerc_generate' package.json >/dev/null + if [ $? -eq 0 ]; then + npm run cerc_generate > gen.out 2>&1 & + tail -f gen.out & + tpid=$! - count=0 - generate_done="false" - while [ $count -lt $CERC_MAX_GENERATE_TIME ] && [ "$generate_done" == "false" ]; do - sleep 1 - count=$((count + 1)) - grep 'rendered as static' gen.out > /dev/null - if [ $? -eq 0 ]; then - generate_done="true" + count=0 + generate_done="false" + while [ $count -lt $CERC_MAX_GENERATE_TIME ] && [ "$generate_done" == "false" ]; do + sleep 1 + count=$((count + 1)) + grep 'rendered as static' gen.out > /dev/null + if [ $? -eq 0 ]; then + generate_done="true" + fi + done + + if [ $generate_done != "true" ]; then + echo "ERROR: 'npm run cerc_generate' not successful within CERC_MAX_GENERATE_TIME" 1>&2 + exit 1 fi - done - if [ $generate_done != "true" ]; then - echo "ERROR: 'npm run cerc_generate' not successful within CERC_MAX_GENERATE_TIME" 1>&2 - exit 1 + kill $tpid $(ps -ef | grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null + tpid="" fi - - kill $tpid $(ps -ef | grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null - tpid="" fi -fi -$CERC_BUILD_TOOL start . -- -p ${CERC_LISTEN_PORT:-80} + $CERC_BUILD_TOOL start . -- -p ${CERC_LISTEN_PORT:-80} +fi