Compare commits

..

4 Commits

8 changed files with 65 additions and 67 deletions

View File

@ -26,14 +26,8 @@ fi
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
WORK_DIR="${1:-/app}" 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 cd "${WORK_DIR}" || exit 1
./build-webapp.sh || exit 1
exit 0
fi
if [ -f "next.config.mjs" ]; then if [ -f "next.config.mjs" ]; then
NEXT_CONFIG_JS="next.config.mjs" NEXT_CONFIG_JS="next.config.mjs"
IMPORT_OR_REQUIRE="import" IMPORT_OR_REQUIRE="import"

View File

@ -30,44 +30,36 @@ fi
CERC_WEBAPP_FILES_DIR="${CERC_WEBAPP_FILES_DIR:-/app}" CERC_WEBAPP_FILES_DIR="${CERC_WEBAPP_FILES_DIR:-/app}"
cd "$CERC_WEBAPP_FILES_DIR" cd "$CERC_WEBAPP_FILES_DIR"
if [ -f "./run-webapp.sh" ]; then "$SCRIPT_DIR/apply-runtime-env.sh" "`pwd`" .next .next-r
echo "Running webapp with run-webapp.sh ..." mv .next .next.old
cd "${WORK_DIR}" || exit 1 mv .next-r/.next .
./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 if [ "$CERC_NEXTJS_SKIP_GENERATE" != "true" ]; then
jq -e '.scripts.cerc_generate' package.json >/dev/null jq -e '.scripts.cerc_generate' package.json >/dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
npm run cerc_generate > gen.out 2>&1 & npm run cerc_generate > gen.out 2>&1 &
tail -f gen.out & tail -f gen.out &
tpid=$! tpid=$!
count=0 count=0
generate_done="false" generate_done="false"
while [ $count -lt $CERC_MAX_GENERATE_TIME ] && [ "$generate_done" == "false" ]; do while [ $count -lt $CERC_MAX_GENERATE_TIME ] && [ "$generate_done" == "false" ]; do
sleep 1 sleep 1
count=$((count + 1)) count=$((count + 1))
grep 'rendered as static' gen.out > /dev/null grep 'rendered as static' gen.out > /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
generate_done="true" 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 fi
done
kill $tpid $(ps -ef | grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null if [ $generate_done != "true" ]; then
tpid="" echo "ERROR: 'npm run cerc_generate' not successful within CERC_MAX_GENERATE_TIME" 1>&2
exit 1
fi fi
fi
$CERC_BUILD_TOOL start . -- -p ${CERC_LISTEN_PORT:-80} kill $tpid $(ps -ef | grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null
tpid=""
fi
fi fi
$CERC_BUILD_TOOL start . -- -p ${CERC_LISTEN_PORT:-80}

View File

@ -56,8 +56,9 @@ class DeploymentContext:
self.stack.init_from_file(self.get_stack_file()) self.stack.init_from_file(self.get_stack_file())
deployment_file_path = self.get_deployment_file() deployment_file_path = self.get_deployment_file()
if deployment_file_path.exists(): if deployment_file_path.exists():
obj = get_yaml().load(open(deployment_file_path, "r")) with deployment_file_path:
self.id = obj[constants.cluster_id_key] obj = get_yaml().load(open(deployment_file_path, "r"))
self.id = obj[constants.cluster_id_key]
# Handle the case of a legacy deployment with no file # Handle the case of a legacy deployment with no file
# Code below is intended to match the output from _make_default_cluster_name() # Code below is intended to match the output from _make_default_cluster_name()
# TODO: remove when we no longer need to support legacy deployments # TODO: remove when we no longer need to support legacy deployments

View File

@ -92,8 +92,9 @@ class Spec:
return self.obj.get(item, default) return self.obj.get(item, default)
def init_from_file(self, file_path: Path): def init_from_file(self, file_path: Path):
self.obj = get_yaml().load(open(file_path, "r")) with file_path:
self.file_path = file_path self.obj = get_yaml().load(open(file_path, "r"))
self.file_path = file_path
def get_image_registry(self): def get_image_registry(self):
return self.obj.get(constants.image_registry_key) return self.obj.get(constants.image_registry_key)

View File

@ -27,4 +27,5 @@ class Stack:
self.name = name self.name = name
def init_from_file(self, file_path: Path): def init_from_file(self, file_path: Path):
self.obj = get_yaml().load(open(file_path, "r")) with file_path:
self.obj = get_yaml().load(open(file_path, "r"))

View File

@ -172,6 +172,7 @@ def process_app_deployment_request(
logger.log( logger.log(
f"Creating webapp deployment in: {deployment_dir} with container id: {deployment_container_tag}" f"Creating webapp deployment in: {deployment_dir} with container id: {deployment_container_tag}"
) )
# CREATES DEPLOYMENT DIR, NOT SKIPPING FOR TESTING
deploy_webapp.create_deployment( deploy_webapp.create_deployment(
ctx, ctx,
deployment_dir, deployment_dir,
@ -214,21 +215,24 @@ def process_app_deployment_request(
# add_tags_to_image(image_registry, app_image_shared_tag, deployment_container_tag) # add_tags_to_image(image_registry, app_image_shared_tag, deployment_container_tag)
logger.log("Tag complete") logger.log("Tag complete")
else: else:
extra_build_args = [] # TODO: pull from request # SKIP BUILD
logger.log(f"Building container image: {deployment_container_tag}") logger.log("TESTING: Skipping container build.")
build_container_image(
app, deployment_container_tag, extra_build_args, logger # extra_build_args = [] # TODO: pull from request
) # logger.log(f"Building container image: {deployment_container_tag}")
logger.log("Build complete") # build_container_image(
logger.log(f"Pushing container image: {deployment_container_tag}") # app, deployment_container_tag, extra_build_args, logger
push_container_image(deployment_dir, logger) # )
logger.log("Push complete") # logger.log("Build complete")
# The build/push commands above will use the unique deployment tag, so now we need to add the shared tag. # logger.log(f"Pushing container image: {deployment_container_tag}")
logger.log( # push_container_image(deployment_dir, logger)
f"(SKIPPED) Adding global app image tag: {app_image_shared_tag} to newly built image: {deployment_container_tag}" # logger.log("Push complete")
) # # The build/push commands above will use the unique deployment tag, so now we need to add the shared tag.
# add_tags_to_image(image_registry, deployment_container_tag, app_image_shared_tag) # logger.log(
logger.log("Tag complete") # f"(SKIPPED) Adding global app image tag: {app_image_shared_tag} to newly built image: {deployment_container_tag}"
# )
# # add_tags_to_image(image_registry, deployment_container_tag, app_image_shared_tag)
# logger.log("Tag complete")
else: else:
logger.log("Requested app is already deployed, skipping build and image push") logger.log("Requested app is already deployed, skipping build and image push")
@ -241,7 +245,9 @@ def process_app_deployment_request(
# 8. update k8s deployment # 8. update k8s deployment
if needs_k8s_deploy: if needs_k8s_deploy:
deploy_to_k8s(deployment_record, deployment_dir, recreate_on_deploy, logger) # SKIP DEPLOY
logger.log("TESTING: Skipping deployment to k8s.")
# deploy_to_k8s(deployment_record, deployment_dir, recreate_on_deploy, logger)
logger.log("Publishing deployment to registry.") logger.log("Publishing deployment to registry.")
publish_deployment( publish_deployment(

View File

@ -72,11 +72,12 @@ def process_app_removal_request(
# TODO(telackey): Call the function directly. The easiest way to build the correct click context is to # TODO(telackey): Call the function directly. The easiest way to build the correct click context is to
# exec the process, but it would be better to refactor so we could just call down_operation with the # exec the process, but it would be better to refactor so we could just call down_operation with the
# necessary parameters # necessary parameters
down_command = [sys.argv[0], "deployment", "--dir", deployment_dir, "down"] main_logger.log("TESTING: Skipping stopping deployment.")
if delete_volumes: # down_command = [sys.argv[0], "deployment", "--dir", deployment_dir, "down"]
down_command.append("--delete-volumes") # if delete_volumes:
result = subprocess.run(down_command) # down_command.append("--delete-volumes")
result.check_returncode() # result = subprocess.run(down_command)
# result.check_returncode()
removal_record = { removal_record = {
"record": { "record": {

View File

@ -180,7 +180,9 @@ def get_k8s_dir():
def get_parsed_deployment_spec(spec_file): def get_parsed_deployment_spec(spec_file):
spec_file_path = Path(spec_file) spec_file_path = Path(spec_file)
try: try:
return get_yaml().load(open(spec_file_path, "r")) with spec_file_path:
deploy_spec = get_yaml().load(open(spec_file_path, "r"))
return deploy_spec
except FileNotFoundError as error: except FileNotFoundError as error:
# We try here to generate a useful diagnostic error # We try here to generate a useful diagnostic error
print(f"Error: spec file: {spec_file_path} does not exist") print(f"Error: spec file: {spec_file_path} does not exist")