fix(celld-deploy): configure celld runtime via environment variables and copy wrangler config for d1 migrations

This commit is contained in:
2026-10-20 20:45:01 -07:00
parent 2bfc685a92
commit 121ae5ce28
+20 -12
View File
@@ -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}'