diff --git a/.agents/skills/deployment/SKILL.md b/.agents/skills/deployment/SKILL.md index d8d7e67..130eb5a 100644 --- a/.agents/skills/deployment/SKILL.md +++ b/.agents/skills/deployment/SKILL.md @@ -87,9 +87,6 @@ PRODUCTION_SERVER=dock4.basehosts.de PRODUCTION_TIBI_PREFIX=tibi PRODUCTION_PATH=/webroots2/customers//htdocs -# Staging -STAGING_PATH=/staging///dev - # URLs LIVE_URL=http://..dock4.basispanel.de # Preview-URL STAGING_URL=https://dev-.staging.testversion.online diff --git a/.agents/skills/tibi-project-setup/SKILL.md b/.agents/skills/tibi-project-setup/SKILL.md index d7f5eab..492619e 100644 --- a/.agents/skills/tibi-project-setup/SKILL.md +++ b/.agents/skills/tibi-project-setup/SKILL.md @@ -119,7 +119,7 @@ Important: - if `GET /api/v1/project` with `X-Admin-Token: $ADMIN_TOKEN` returns `permission denied: admin token lacks permission project.read`, that token is not valid for project registration - create new projects by logging in with `admin` / `admin` in the default starter dev setup and using the returned JWT via `X-Auth-Token` - `ADMIN_ASSET_VERSION` is required so Nova picks up the current admin bundle -- `PROJECT_NAME`, `TIBI_NAMESPACE`, `PRODUCTION_PATH`, and `STAGING_PATH` should be project-specific before the first deploy +- `PROJECT_NAME`, `TIBI_NAMESPACE`, and `PRODUCTION_PATH` should be project-specific before the first deploy - `package.json` should no longer advertise the starter repository or default package name once the project is bootstrapped ## Step 4 — Install and start the Docker stack diff --git a/.env b/.env index 2c5a92a..33b9511 100644 --- a/.env +++ b/.env @@ -15,8 +15,6 @@ PRODUCTION_SERVER=dock4.basehosts.de PRODUCTION_TIBI_PREFIX=tibi PRODUCTION_PATH=/webroots2/customers/_CUSTOMER_ID_/____ -STAGING_PATH=/staging/__ORG__/__PROJECT__/dev - LIVE_URL=https://www STAGING_URL=https://dev-__PROJECT_NAME__.staging.testversion.online CODING_URL=https://__PROJECT_NAME__.code.testversion.online diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 53f83fd..f593aef 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -20,6 +20,9 @@ jobs: - run: | git fetch --force --tags + - name: resolve starter defaults + run: ./scripts/ci-starter-defaults.sh + - name: setup node uses: actions/setup-node@v4 with: diff --git a/Makefile b/Makefile index 3a40137..a22b840 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ DOCKER_COMPOSE=docker compose -f docker-compose-local.yml .DEFAULT_GOAL := help -.PHONY: init docker-up docker-restart-frontend docker-up-tibi-dev docker-start docker-start-tibi-dev docker-down docker-ps docker-logs yarn-upgrade fix-permissions mongo-sync-master-to-local media-sync-master-to-local mongo-sync-local-to-staging media-sync-local-to-staging test test-e2e test-api test-visual +.PHONY: init docker-up docker-restart-frontend docker-up-tibi-dev docker-start docker-start-tibi-dev docker-down docker-ps docker-logs yarn-upgrade fix-permissions mongo-sync-master-to-local media-sync-master-to-local mongo-sync-local-to-staging test test-e2e test-api test-visual include ./.env @@ -92,6 +92,3 @@ mongo-sync-local-to-staging: ## sync mongo from local to staging area $(DOCKER_COMPOSE) exec -T mongo mongodump --archive --gzip --db=$(TIBI_PREFIX)_$(TIBI_NAMESPACE) | mongorestore --archive --gzip --nsFrom='$(TIBI_PREFIX)_$(TIBI_NAMESPACE).*' --nsTo='$(TIBI_PREFIX)_$(TIBI_NAMESPACE).*' --nsInclude='$(TIBI_PREFIX)_$(TIBI_NAMESPACE).*' --drop sleep 3 killall chisel - -media-sync-local-to-staging: ## sync attachments from local to staging area - sudo rsync -v -az --info=progress2 media $(STAGING_PATH)/ diff --git a/scripts/ci-staging.sh b/scripts/ci-staging.sh index 78292af..3d6dd7c 100755 --- a/scripts/ci-staging.sh +++ b/scripts/ci-staging.sh @@ -5,6 +5,11 @@ set -euo pipefail # Called from .gitea/workflows/deploy.yml # Required env: API_BASEDIR, COMPOSE_PROJECT_NAME +# Starter template: resolve __PLACEHOLDER__ to CI workspace values (no-op for real projects) +if [ -f ./scripts/ci-starter-defaults.sh ]; then + ./scripts/ci-starter-defaults.sh +fi + # Read .env set -o allexport . ./.env diff --git a/scripts/ci-starter-defaults.sh b/scripts/ci-starter-defaults.sh new file mode 100755 index 0000000..3beaab6 --- /dev/null +++ b/scripts/ci-starter-defaults.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -euo pipefail + +# CI helper: resolve starter placeholders for staging. +# Called from .gitea/workflows/deploy.yml (before validate/build). +# Keeps placeholders in git (template), patches .env in CI workspace only. +# +# Detection: PROJECT_NAME=__PROJECT_NAME__ or TIBI_NAMESPACE=__TIBI_NAMESPACE__ +# Real projects: no-op (already concrete values). + +# shellcheck disable=SC1091 +set -o allexport +# shellcheck disable=SC1091 +. ./.env 2>/dev/null || true +set +o allexport + +is_starter="false" +if [ "${PROJECT_NAME:-}" = "__PROJECT_NAME__" ]; then + is_starter="true" +fi +if [ "${TIBI_NAMESPACE:-}" = "__TIBI_NAMESPACE__" ]; then + is_starter="true" +fi + +if [ "${is_starter}" != "true" ]; then + echo "ci-starter-defaults: real project (PROJECT_NAME=${PROJECT_NAME:-?}), nothing to do." + exit 0 +fi + +echo "ci-starter-defaults: starter detected, patching .env for CI workspace only." + +PROJECT_NAME="tibi-svelte-starter" +TIBI_NAMESPACE="tibi-svelte-starter" +SENTRY_PROJECT="tibi-svelte-starter" +STAGING_URL="https://dev-tibi-svelte-starter.staging.testversion.online" +CODING_URL="https://tibi-svelte-starter.code.testversion.online" +CODING_TIBIADMIN_URL="https://tibi-svelte-starter-tibiadmin.code.testversion.online" +# Build uses LIVE_URL as originURL/PREVIEW_URL base — point it at staging for the starter +LIVE_URL="${STAGING_URL}" + +patch_env() { + key="$1" + val="$2" + if grep -q "^${key}=" .env; then + sed -i 's#^'"${key}"'=.*#'"${key}"'='"${val}"'#g' .env + else + printf '%s=%s\n' "${key}" "${val}" >> .env + fi +} + +patch_env "PROJECT_NAME" "${PROJECT_NAME}" +patch_env "TIBI_NAMESPACE" "${TIBI_NAMESPACE}" +patch_env "SENTRY_PROJECT" "${SENTRY_PROJECT}" +patch_env "STAGING_URL" "${STAGING_URL}" +patch_env "CODING_URL" "${CODING_URL}" +patch_env "CODING_TIBIADMIN_URL" "${CODING_TIBIADMIN_URL}" +patch_env "LIVE_URL" "${LIVE_URL}" + +echo "______ .env (starter-resolved) ______" +cat .env