mirror of
https://github.com/symfony/recipes-contrib.git
synced 2026-09-16 17:46:30 +03:00
Add recipe for fyrst/shopware-cd (#2049)
* Add recipe for fyrst/shopware-cd Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * fix: use .yaml and 4-space indent for fyrst/shopware-cd recipe recipes-contrib QA rejects *.yml and YAML lines whose leading indent is not a multiple of 4. GitLab still defaults to .gitlab-ci.yml, so post-install.txt documents the CI/CD configuration file setting. shopware-cli already loads .shopware-project.yaml. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * fix: point fyrst/shopware-cd recipe at fyrst-dev/shopware-cd Sync the Flex recipe from fyrst-dev/recipes (source of truth). The Packagist package repo is now https://github.com/fyrst-dev/shopware-cd instead of shopware-cd-template. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * fix: require shopware/docker docker/Dockerfile in fyrst/shopware-cd Drop the root Dockerfile fallback so the recipe matches fyrst-dev/recipes. GitHub Actions, GitLab CI, and Compose now default DOCKERFILE to docker/Dockerfile from the shopware/docker Flex recipe. https://github.com/symfony/recipes-contrib/pull/2049 Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * fix: drop project-create overlaps; put CD compose in deploy/ shopware-cli project create owns shop-root compose.yaml, .gitignore, and .shopware-project.yaml. Move the CD stack to deploy/compose.yaml and deploy/compose.prod.yaml, and point vps-release.sh at -f deploy/compose.yaml -f deploy/compose.prod.yaml -f deploy/compose.vps.yaml. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * feat: add VPS runtime sync (no S3) to fyrst/shopware-cd Copy live MySQL + Docker volumes onto lower envs over SSH (mysqldump + volume tars). Snapshot/restore stay on the VPS. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * feat: bind-mount Shopware VPS runtime data by default Use SHOPWARE_DATA_ROOT host dirs for files/media/thumbnail/theme/sitemap instead of named volumes. Keep mysql_data/redis_data as named volumes. sync-runtime.sh rsyncs those host dirs as the primary copy path. Expand compose.yaml without YAML aliases (4-space .yaml). Feeds #2049. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * feat: add local project-dev runtime rsync helper Copy live VPS SHOPWARE_DATA_ROOT trees into shopware-cli project dev paths via deploy/sync-runtime-local.sh (rsync, optional --delete). Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * feat: derive Compose project and data root from shop id + env SHOPWARE_SHOP_ID + SHOPWARE_DEPLOY_ENV drive COMPOSE_PROJECT_NAME and SHOPWARE_DATA_ROOT=/var/lib/shopware/data/<shop>/<env>. Compose no longer hardcodes name: shopware. Sync scripts auto-derive when those vars are unset. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * feat: interpolate Compose name and bind mounts from shop id + env Compose uses ${SHOPWARE_SHOP_ID}-${SHOPWARE_DEPLOY_ENV} for the project name (required via :?) and bind-mounts ${SHOPWARE_DATA_BASE:-/var/lib/shopware/data}/${SHOPWARE_SHOP_ID}/${SHOPWARE_DEPLOY_ENV}/... COMPOSE_PROJECT_NAME and SHOPWARE_DATA_ROOT are no longer required for compose. Keep expanded YAML (no aliases) and 4-space indent for contrib QA. Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com> * docs: mark SHOPWARE_PACKAGES_TOKEN as optional * docs: mark SHOPWARE_PACKAGES_TOKEN optional in env and deploy README * docs: mark SHOPWARE_PACKAGES_TOKEN optional in GitLab CI comments * docs: mark SHOPWARE_PACKAGES_TOKEN optional in GitHub Actions comments * fix: E2E compose run, pull_policy override, and create .env footguns Mirror fyrst-dev/recipes overlay notes from Shopware 6.7 E2E: create writes .shopware-project.yml and COMPOSE_PROJECT_NAME=sw-shop-…; Compose v5 rejects run --no-build; same-host tag-and-load uses PULL_POLICY=never / SKIP_PULL=1 (default pull_policy stays always). Do not require SHOPWARE_PACKAGES_TOKEN. Recipe does not delete create's .env. * fix: E2E compose run, pull_policy override, and create .env footguns Mirror fyrst-dev/recipes overlay notes from Shopware 6.7 E2E: create writes .shopware-project.yml and COMPOSE_PROJECT_NAME=sw-shop-…; Compose v5 rejects run --no-build; same-host tag-and-load uses PULL_POLICY=never / SKIP_PULL=1 (default pull_policy stays always). Do not require SHOPWARE_PACKAGES_TOKEN. Recipe does not delete create's .env. * fix: E2E compose run, pull_policy override, and create .env footguns Mirror fyrst-dev/recipes overlay notes from Shopware 6.7 E2E: create writes .shopware-project.yml and COMPOSE_PROJECT_NAME=sw-shop-…; Compose v5 rejects run --no-build; same-host tag-and-load uses PULL_POLICY=never / SKIP_PULL=1 (default pull_policy stays always). Do not require SHOPWARE_PACKAGES_TOKEN. Recipe does not delete create's .env. * fix: E2E compose run, pull_policy override, and create .env footguns Mirror fyrst-dev/recipes overlay notes from Shopware 6.7 E2E: create writes .shopware-project.yml and COMPOSE_PROJECT_NAME=sw-shop-…; Compose v5 rejects run --no-build; same-host tag-and-load uses PULL_POLICY=never / SKIP_PULL=1 (default pull_policy stays always). Do not require SHOPWARE_PACKAGES_TOKEN. Recipe does not delete create's .env. * fix: E2E compose run, pull_policy override, and create .env footguns Mirror fyrst-dev/recipes overlay notes from Shopware 6.7 E2E: create writes .shopware-project.yml and COMPOSE_PROJECT_NAME=sw-shop-…; Compose v5 rejects run --no-build; same-host tag-and-load uses PULL_POLICY=never / SKIP_PULL=1 (default pull_policy stays always). Do not require SHOPWARE_PACKAGES_TOKEN. Recipe does not delete create's .env. * feat: Flex env SoT keys and deploy/init-env.sh after create Mirror fyrst-dev/recipes: Flex env appends safe CD keys; operators finish shop-specific values with deploy/init-env.sh --shop-id (VPS: --vps). * feat: register FyrstShopwareCdBundle in Flex recipe * feat: add slim bash guards for fyrst:sales-channel:rewrite-urls * docs: document console rewrite and Flex bundle for shops * docs: point contrib sync rewrite at fyrst:sales-channel:rewrite-urls * docs: mention console rewrite in contrib deploy README * feat(shopware-cd): call fyrst:sales-channel:rewrite-urls after restore * feat: dump VPS snapshots with shopware-cli project dump * feat: dump VPS snapshots with shopware-cli project dump * feat: dump VPS snapshots with shopware-cli project dump * feat: dump VPS snapshots with shopware-cli project dump * feat: dump VPS snapshots with shopware-cli project dump * feat: add deploy/lib/identity.sh for shopware-cd sync split * feat: add remaining deploy/lib helpers for shopware-cd sync split * feat: add sync-live and sync-app libs for shopware-cd split * feat: add sync-identity and sync-ssh libs for shopware-cd split * refactor: thin sync-runtime.sh CLI and slim rewrite lib * fix: match deploy/lib/sync-rewrite.sh to fyrst-dev/recipes main * feat: add deploy/lib/sync-volumes.sh for shopware-cd split * feat: add deploy/lib/sync-commands.sh for shopware-cd split * feat: add deploy/lib/sync-db.sh for shopware-cd split * fix: slim fyrst/shopware-cd recipe to copy-from-package Honor diimpp's review on #2049. Recipe is Flex metadata only (manifest + post-install). Overlay files come from vendor/fyrst/shopware-cd/overlay/. Toast uses fyrst-cli 0.1.0+; do not ship bash wrappers. * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay * fix: drop fyrst/shopware-cd recipe root overlay --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: ROBJkE <ROBJkE@users.noreply.github.com>
This commit is contained in:
co-authored by
Cursor Agent
ROBJkE
parent
d48bb7db3c
commit
d844543ffa
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"copy-from-package": {
|
||||
"overlay/": ""
|
||||
},
|
||||
"bundles": {
|
||||
"Fyrst\\ShopwareCd\\FyrstShopwareCdBundle": [
|
||||
"all"
|
||||
]
|
||||
},
|
||||
"env": {
|
||||
"SHOPWARE_SHOP_ID": "",
|
||||
"SHOPWARE_DEPLOY_ENV": "live",
|
||||
"SHOPWARE_DATA_BASE": "/var/lib/shopware/data"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
* <fg=blue>fyrst/shopware-cd</>
|
||||
Flex copied CD files from the package
|
||||
<comment>overlay/</comment> into the shop root: CI,
|
||||
<comment>deploy/</comment> (including CD Compose), <comment>.dockerignore</comment>,
|
||||
and <comment>.env.example</comment>
|
||||
(same idea as <comment>shopware/docker</comment> copying <comment>docker/Dockerfile</comment>).
|
||||
|
||||
<comment>compose.yaml</comment>, <comment>.gitignore</comment>, and
|
||||
<comment>.shopware-project.yml</comment> (create’s default;
|
||||
<comment>.shopware-project.yaml</comment> is also accepted — do not rename)
|
||||
are owned by
|
||||
<comment>shopware-cli project create</comment> / the CLI — not this recipe.
|
||||
|
||||
Local: <comment>shopware-cli project dev</comment> and the CLI-managed
|
||||
shop-root <comment>compose.yaml</comment>.
|
||||
VPS/CD: files under <comment>deploy/</comment>
|
||||
(<comment>deploy/compose.yaml</comment>, <comment>deploy/compose.prod.yaml</comment>,
|
||||
<comment>deploy/compose.vps.yaml</comment>).
|
||||
Runtime DB/bind-mount copy between VPS hosts:
|
||||
<comment>fyrst-cli shopware sync pull</comment>
|
||||
(see <comment>deploy/sync-runtime.md</comment>).
|
||||
DB snapshots use <comment>shopware-cli project dump</comment>
|
||||
(fyrst-cli never dumps; restore is
|
||||
<comment>fyrst-cli shopware db import</comment>).
|
||||
Live backups (not sync):
|
||||
<comment>fyrst-cli shopware backup create</comment>
|
||||
(see <comment>deploy/backup-runtime.md</comment>).
|
||||
Rollback:
|
||||
<comment>IMAGE_TAG=$(cat .previous-tag) fyrst-cli shopware deploy rollback</comment>.
|
||||
Each VPS needs <comment>fyrst-cli</comment> 0.1.0+
|
||||
(<comment>https://github.com/fyrst-dev/cli</comment>).
|
||||
CI runs <comment>fyrst-cli shopware deploy release</comment>
|
||||
with <comment>IMAGE</comment> / <comment>IMAGE_TAG</comment> /
|
||||
<comment>COMPOSE_DIR</comment>.
|
||||
TLS edge: <comment>deploy/edge/Caddyfile</comment>.
|
||||
Live → local project dev rsync (no DB):
|
||||
<comment>fyrst-cli shopware sync local</comment>
|
||||
(reads <comment>SHOPWARE_SHOP_ID</comment> from local <comment>.env</comment>;
|
||||
remote root <comment>/var/lib/shopware/data/${SHOPWARE_SHOP_ID}/live</comment>;
|
||||
<comment>--data all</comment> is refused).
|
||||
|
||||
Flex may append a <comment>###> fyrst/shopware-cd ###</comment>
|
||||
block to shop-root <comment>.env</comment> (empty
|
||||
<comment>SHOPWARE_SHOP_ID</comment>, <comment>SHOPWARE_DEPLOY_ENV=live</comment>,
|
||||
<comment>SHOPWARE_DATA_BASE=/var/lib/shopware/data</comment>).
|
||||
It does not overwrite create’s whole <comment>.env</comment>
|
||||
and does not put secrets in that block. Then run
|
||||
<comment>fyrst-cli shopware env init --shop-id …</comment>
|
||||
(see <comment>deploy/README</comment>).
|
||||
VPS <comment>.env</comment> source of truth (required):
|
||||
<comment>SHOPWARE_SHOP_ID</comment> (same slug on live + staging + laptop),
|
||||
<comment>SHOPWARE_DEPLOY_ENV</comment> (live|staging|playground|dev).
|
||||
Compose derives project name
|
||||
(<comment>${SHOPWARE_SHOP_ID}-${SHOPWARE_DEPLOY_ENV}</comment>)
|
||||
and bind-mount paths from those two plus optional
|
||||
<comment>SHOPWARE_DATA_BASE</comment> (default
|
||||
<comment>/var/lib/shopware/data</comment>) — three separate interpolations,
|
||||
no nested defaults. It does not require
|
||||
<comment>COMPOSE_PROJECT_NAME</comment> or <comment>SHOPWARE_DATA_ROOT</comment>
|
||||
(optional for scripts/docs; fyrst-cli derives when unset and prefers them
|
||||
when set — do not assign them empty).
|
||||
WARNING: <comment>shopware-cli project create</comment> writes
|
||||
<comment>COMPOSE_PROJECT_NAME=sw-shop-…</comment> into shop-root
|
||||
<comment>.env</comment> for local <comment>project dev</comment>. That env var
|
||||
overrides Compose <comment>name:</comment>
|
||||
(<comment>${SHOPWARE_SHOP_ID}-${SHOPWARE_DEPLOY_ENV}</comment>).
|
||||
On the VPS, comment out that line
|
||||
(<comment>fyrst-cli shopware env init --vps</comment> or by hand).
|
||||
Flex does not delete it on <comment>composer require</comment>
|
||||
(create owns the local flow).
|
||||
Bootstrap:
|
||||
<comment>DATA="${SHOPWARE_DATA_BASE:-/var/lib/shopware/data}/${SHOPWARE_SHOP_ID}/${SHOPWARE_DEPLOY_ENV}"</comment>
|
||||
then <comment>mkdir -p "${DATA}"/{files,media,thumbnail,theme,sitemap}</comment>
|
||||
then <comment>chown -R 82:82 "${DATA}"</comment>.
|
||||
Live profiles: uncomment
|
||||
<comment>COMPOSE_PROFILES=redis,worker,scheduler</comment>
|
||||
in <comment>.env</comment> (worker + scheduler; redis if used). Staging leaves
|
||||
this unset unless you need async tasks.
|
||||
<comment>fyrst-cli shopware deploy release</comment> warns on live when it is empty; it does
|
||||
not auto-enable.
|
||||
Same-host tag-and-load / air-gap: <comment>PULL_POLICY=never</comment>
|
||||
and <comment>SKIP_PULL=1</comment> (or
|
||||
<comment>fyrst-cli shopware deploy release --skip-pull</comment>). Default
|
||||
<comment>pull_policy</comment> is <comment>always</comment> for CI/VPS.
|
||||
Several shops or live+staging on one VPS share the host; shop id + env
|
||||
keep stacks isolated.
|
||||
|
||||
You MUST require <comment>shopware/docker</comment> in the same Composer command as
|
||||
this package. That recipe copies <comment>docker/Dockerfile</comment>, which CI and
|
||||
CD Compose require (default <comment>DOCKERFILE=docker/Dockerfile</comment>). This recipe
|
||||
does not ship a root Dockerfile. A missing <comment>docker/Dockerfile</comment>
|
||||
means <comment>shopware/docker</comment> was skipped.
|
||||
|
||||
Flex may append SoT keys to <comment>.env</comment>; it does not
|
||||
overwrite create’s whole <comment>.env</comment>. Then run
|
||||
<comment>fyrst-cli shopware env init --shop-id …</comment>
|
||||
(VPS: add <comment>--vps</comment>; see <comment>deploy/README</comment>).
|
||||
If <comment>.env</comment> is missing, that command copies
|
||||
<comment>.env.example</comment> first. Commit the copied files;
|
||||
<comment>vendor/</comment> is gitignored.
|
||||
|
||||
shopware-cli project create writes <comment>.shopware-project.yml</comment>
|
||||
(that extension is fine). shopware-cli accepts both
|
||||
<comment>.yml</comment> and <comment>.yaml</comment>; do not rename.
|
||||
GitHub Actions picks up
|
||||
<comment>.github/workflows/cd.yaml</comment>. GitLab still defaults to
|
||||
<comment>.gitlab-ci.yml</comment>: set Settings → CI/CD → CI/CD configuration file
|
||||
to <comment>.gitlab-ci.yaml</comment> (or copy/symlink that name).
|
||||
|
||||
Flex registers
|
||||
<comment>Fyrst\ShopwareCd\FyrstShopwareCdBundle</comment>
|
||||
in <comment>config/bundles.php</comment>.
|
||||
Post-restore sales-channel URL rewrite uses
|
||||
<comment>APP_URL</comment> in shop-root <comment>.env</comment>;
|
||||
sync calls
|
||||
<comment>bin/console fyrst:sales-channel:rewrite-urls</comment>.
|
||||
Laptop SSH (<comment>SHOPWARE_SSH_*</comment>) belongs in
|
||||
<comment>.env.local</comment>.
|
||||
Shops need <comment>composer update fyrst/shopware-cd</comment>
|
||||
so the command and bundle exist, then
|
||||
<comment>composer recipes:update fyrst/shopware-cd</comment>.
|
||||
|
||||
Refresh later with <comment>composer recipes:update fyrst/shopware-cd</comment>.
|
||||
See https://github.com/fyrst-dev/shopware-cd
|
||||
Reference in New Issue
Block a user