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

Boost your Dev Pipeline

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

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