From 121ae5ce28d618139360b507a1affb37870f20e3 Mon Sep 17 00:00:00 2001 From: Rody Davis Date: Tue, 20 Oct 2026 20:45:01 -0700 Subject: [PATCH] fix(celld-deploy): configure celld runtime via environment variables and copy wrangler config for d1 migrations --- celld-deploy/deploy.sh | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/celld-deploy/deploy.sh b/celld-deploy/deploy.sh index 31d0b08..aa6b03a 100755 --- a/celld-deploy/deploy.sh +++ b/celld-deploy/deploy.sh @@ -134,6 +134,7 @@ trap 'rm -rf "$STAGING_DIR" ~/.ssh/truenas_deploy_key' EXIT { echo "AWS_ACCESS_KEY_ID=${INPUT_S3_ACCESS_KEY}" echo "AWS_SECRET_ACCESS_KEY=${INPUT_S3_SECRET_KEY}" + echo "AWS_REGION=${S3_REGION}" if [ -n "${INPUT_ENV_CONTENT:-}" ]; then printf "%s\n" "$INPUT_ENV_CONTENT" fi @@ -153,6 +154,12 @@ services: env_file: - .env environment: + - CELLD_BUCKET=s3://${BUCKET} + - S3_ENDPOINT=${INTERNAL_S3_ENDPOINT} + - CELLD_ADDR=0.0.0.0:8080 + - CELLD_INTERNAL_ADDR=127.0.0.1:8081 + - CELLD_ADVERTISE=127.0.0.1:8081 + - CELLD_TRUST_FORWARDED_HEADERS=1 - CELLD_NODE=${CLEAN_APP}-truenas-1 - CELLD_WATCH=/var/lib/celld/state - CELLD_IDLE_EVICT_S=${IDLE_EVICT_S} @@ -160,13 +167,6 @@ services: - CELLD_DEPLOY_POLL_S=${DEPLOY_POLL_S} volumes: - ./data:/var/lib/celld - command: - - --bucket=s3://${BUCKET} - - --endpoint=${INTERNAL_S3_ENDPOINT} - - --region=${S3_REGION} - - --listen=0.0.0.0:8080 - - --internal-listen=127.0.0.1:8081 - - --advertise=127.0.0.1:8081 networks: - ${NETWORK} labels: @@ -204,18 +204,26 @@ if [ "$REMOTE_STATE" != "${LOCAL_ENV_HASH}:${LOCAL_COMPOSE_HASH}:true" ]; then scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/.env" "${USER}@${HOST}:${REMOTE_DIR}/.env" scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${STAGING_DIR}/docker-compose.yml" "${USER}@${HOST}:${REMOTE_DIR}/docker-compose.yml" ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "chmod 600 ${REMOTE_DIR}/.env && cd ${REMOTE_DIR} && docker compose up -d --remove-orphans" - sleep 3 + sleep 4 else - echo "⚡ TrueNAS container ${CLEAN_APP}-celld is already running with matching config; hot-reloading bundle in place!" + echo "⚡ TrueNAS container ${CLEAN_APP}-celld is already running; triggering immediate in-place reload..." + ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" " + docker exec ${CLEAN_APP}-celld bash -c 'exec 3<>/dev/tcp/127.0.0.1/8081 && printf \"POST /reload HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nContent-Length: 0\r\nConnection: close\r\n\r\n\" >&3 && head -n 1 <&3' 2>/dev/null || true + " fi # 8. Optional D1 SQLite migrations if [ -n "${INPUT_D1_DATABASE:-}" ] && [ -d "migrations" ]; then echo "🗄️ Applying D1 migrations for database '${INPUT_D1_DATABASE}'..." - ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "rm -rf ${REMOTE_DIR}/data/migrations && mkdir -p ${REMOTE_DIR}/data/migrations" - scp -r -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no migrations/. "${USER}@${HOST}:${REMOTE_DIR}/data/migrations/" + ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" "rm -rf ${REMOTE_DIR}/data/project && mkdir -p ${REMOTE_DIR}/data/project/migrations" + for f in wrangler.json wrangler.jsonc wrangler.toml; do + if [ -f "$f" ]; then + scp -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "$f" "${USER}@${HOST}:${REMOTE_DIR}/data/project/$f" + fi + done + scp -r -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no migrations/. "${USER}@${HOST}:${REMOTE_DIR}/data/project/migrations/" ssh -i ~/.ssh/truenas_deploy_key -o StrictHostKeyChecking=no "${USER}@${HOST}" " - docker exec -w /var/lib/celld ${CLEAN_APP}-celld celld d1 migrations apply '${INPUT_D1_DATABASE}' \ + docker exec -w /var/lib/celld/project ${CLEAN_APP}-celld celld d1 migrations apply '${INPUT_D1_DATABASE}' . \ --bucket 's3://${BUCKET}' \ --endpoint '${INTERNAL_S3_ENDPOINT}' \ --region '${S3_REGION}'