Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Boost your Dev Pipeline

Boost your Dev Pipeline

Avatar for Shyim

Shyim

June 30, 2026

More Decks by Shyim

Other Decks in Programming

Transcript

  1. Soner Sayakci Also known as Shyim Working for 8 Years

    for Shopware What I do? Build Developer Tooling Also working on FriendsOfShopware
  2. The Setup Landscape Today "How do YOU develop Shopware?" •

    Various Docker ways • Native PHP  Valet, MAMP, XAMPP • Symfony CLI • Devenv • Dockware → All different experiences.
  3. What We Actually Want • One golden way. From bootstrap,

    developing to deployment. • No local PHP required. → utilize Docker • Consistent environment everywhere. • Developers spend time on features, not on fighting their toolchain. So what does the new workflow look like?
  4. Three Commands That Do Everything shopware-cli project create my-shop cd

    my-shop shopware-cli project dev That's it. You're developing. • No Makefile, no manual compose.yaml, no local PHP • Also works via npx — no install needed: npx @shopware-ag/shopware-cli
  5. shopware-cli project create • Checks common installation problems • Helps

    to bootstrap a ”empty OS” with Docker installation • Docker is the new default, opt-out possible • Optionals • Deployment through Deployer/Platform.SH/PaaS Native • Elasticsearch/Opensearch • AMQP • CI/CD Templates GitHub Actions / GitLab Actions)
  6. The new local environment • Generates a compose.yaml • Thin

    wrapper around docker compose • Advanced users still can use compose.override.yaml
  7. Welcoming TUI which starts containers Zero-friction local startup • One

    command to start environment • Monitors containers and manage lifecycle
  8. CLI detects and fixes setup gaps Smart project state detection

    • Detects uninitialized projects - CLI checks state on every command • Guided initialization - one prompt to set up DB, migrations, and local env
  9. Local environment dashboard Everything at a glance • Shop &

    admin URLs - version, environment, credentials • Watcher status - see admin and storefront builds at a glance • Service endpoints - Adminer, RabbitMQ, MailPit ready to use • Keyboard-driven - tabs for General, Logs, Config
  10. All logs in one place Unified log viewer • Switch

    sources with arrow keys - PHP, web server, watchers, services • Follow mode - tail logs live as requests come in • No more tail -f juggling - one terminal, every log
  11. Local Environment configuration Built-in flexibility • Multiple PHP versions supported

    out of the box • Multiple PHP profilers & debuggers: – Xdebug – Tideways – Blackfire
  12. One palette, every command Command palette • Fuzzy search any

    action - no flags to memorize • Discoverable - every command in one list
  13. Pick a storefront, start watching Watch the right storefront •

    Sales channel picker - choose which storefront to watch • Works for multi-channel shops - no env edits, no guesswork
  14. Works with your existing projects Bring your own project •

    Detects missing Docker setup • Generates .shopware-project.yml • Spins up shop, Adminer, MailPit • No manual config needed
  15. Scriptable, not just interactive Works in CI and scripts •

    Start, stop, check status non-interactively • All project commands work headless • Drop into Makefiles, CI pipelines, git hooks • Same CLI, no separate flags to learn
  16. Run bin/console from your host Console Proxy • Runs bin/console

    in the PHP container from your host shell • Same syntax for Docker, local PHP, or symfony-cli • cache:clear, plugin:list, messenger:consume — all work • Bundled swx alias for less typing
  17. We just shipped the MVP. Now your feedback drives what

    comes next. Try it out now: npx @shopware-ag/shopware-cli@prerelease Drop ideas, bugs & wishlist items: github.com/shopware/shopware-cli/issues/1009
  18. Helping the community work more productively From • Manual, undocumented

    changes • Direct edits on the live shop • Fragmented solutions To • Simplified tooling that meets devs where they are • Local dev, staging, deployments - the standard path • Better docs and clearer guidance • Plan and prototype before touching production Multiple tools work together to get there: shopware-cli · deployment-helper · fixture-bundle · FroshTools
  19. Deployments, end to end BUILD shopware-cli Builds the project —

    composer, assets, JS On CI or your machine TRANSPORT Your way SSH, rsync, container registry, PaaS push, S3, Git… Pluggable — pick what fits DEPLOY deployment-helper Runs migrations, extensions, one- off tasks On the server
  20. One entry point for every deploy – deployment helper What

    it is A single entry point that handles deployment tasks, so deploys are repeatable. What it handles • Install or update Shopware, including migrations • Install and update extensions from config • Run one-time tasks per deploy • Manage Fastly CDN) configuration Included by default in any new Shopware project — otherwise composer require shopware/deployment-helper
  21. One CLI, every environment environments: local: type: docker url: http://localhost:8000

    staging: type: ssh url: https://staging.example.com connect_options: host: staging.example.com username: deploy private_key: ~/.ssh/id_rsa admin_api: password: $STAGING_PASSWORD # shopware-cli project -e staging console cache:clear Any env, one flag Add -e <name> to any project command and it runs there. Supported types • docker - local dev, auto-discovers services • local - native PHP, reads .env • ssh - remote, key auth + pooling • paas - Shopware PaaS / Platform.sh Add envs with project config manage
  22. One command, end to end deployment # Deploy straight to

    production shopware-cli project deploy -e production # What happens, in order: 1. Build assets locally / in CI 2. Ship over SSH or push to PaaS 3. Run deployment-helper on the remote: • Shopware update + migrations • Extensions + one-time tasks • Fastly CDN) config 4. Health check? # Same command for -e staging The CLI drives the deployment • Abstract by deployment type (ssh/paas) • Connection from the same environments: block • Triggers deployment-helper remotely • Per-env overrides honored (e.g. drop GoogleAnalytics on staging) • Local or in CI/CD
  23. Refresh local from production - safely # 1. Anonymized, clean

    dump from production shopware-cli project -e production dump \ --anonymize --clean \ --output prod.sql.zst # 2. Import locally — compression auto-detected shopware-cli project import prod.sql.zst # Same flags work across environments Database sync, built in Refresh your local with real-shape data - without leaking customer info. • --anonymize - GDPR-safe customer data • --clean - drops carts, logs, message queue • Works on any env - local, SSH, PaaS • Works on MariaDB/MySQL/Percona Next up: whole-shop export (dump + assets) for replication and unified backups.
  24. One command to trigger upgrades $ shopware-cli project upgrade →

    Checking extension compatibility… ✓ SwagPayPal 6.6.0 ok ✓ SwagCmsExtensions 6.6.0 ok ⚠ AcmeTheme update 6.6.1 Upgrade plan: Shopware 6.5.8 → 6.6.0 3 extensions → latest compatible ? Proceed with upgrade? yes → Creating backup… → Updating core + extensions… → Running migrations… ✓ Upgrade complete 4m 12s Guided upgrades A wizard that takes a shop from one Shopware version to the next - and brings every extension with it. What it does • Compatibility check - scans every installed extension against the target version before touching anything • Coordinated upgrade - updates Shopware core and all extensions together in one resolved plan • Safe by default - creates a backup, runs migrations, and rolls back on failure • Web-installer replacement - CLI-driven and CI friendly Dry-run first with project upgrade --dry-run