Skip to content

Contributing ​

Guppy uses a staging branch workflow to test features under controlled conditions before they ship to production. The same strategy applies to DmfGuppyTheme and all Guppy plugins.

Branch structure ​

BranchPurposeShopware compatibility
mainProduction-ready, single source of truth, all tags originate here.current Shopware LTS
stageQA / testing branch, fed into the Guppy Playground.current Shopware LTS
Feature branchesindividual development, convention TICKET-123_feature-name.–

Feature workflow step by step ​

1. Create the feature branch (from main) ​

bash
git checkout main
git pull
git checkout -b GUPPY-123_product-slider-component

2. Develop and commit ​

Conventional Commits recommended, with a ticket prefix:

bash
git add .
git commit -m "GUPPY-123: Add product slider component"
git push origin GUPPY-123_product-slider-component

3. Merge into stage for testing ​

bash
git checkout stage
git pull
git merge GUPPY-123_product-slider-component
git push

Parallel features

Multiple features can be tested in stage in parallel, as long as they don't conflict.

4. Trigger the playground pipeline ​

In the guppy-playground GitLab project:

  • CI/CD → Pipelines → Run Pipeline
  • The pipeline auto-pulls the stage branches.

5. QA in Jira ​

  • Set ticket status to Testing.
  • Assign a QA person.
  • Test: functionality, cross-browser, mobile, accessibility.
  • On issues: back to step 2.
  • On success: QA sign-off.

6. Merge into main ​

Feature branch straight into main

For clean git history, the feature branch is merged directly into main, not the stage branch.

bash
git checkout main
git pull
git merge GUPPY-123_product-slider-component
git push

7. Tag the version ​

Follow SemVer, see Changelog.

bash
git tag v2.6.0
git push --tags

Major releases with RC tags

For breaking changes targeting a new Shopware major version there is no separate branch. RC tags are created directly on main:

bash
git tag v2.8.0-rc1
git push --tags

Multiple RC iterations are possible (-rc1, -rc2, ...) before the final release.

8. Update consumer projects ​

  • Express demo: composer update dmf/sw6-guppy-theme.
  • Customer projects: after sign-off from the project manager.

Hotfixes ​

For critical bug fixes:

  1. Branch off main: HOTFIX-123_critical-bug.
  2. Develop the fix.
  3. Merge directly into main (skip stage).
  4. Tag a PATCH version.
  5. Deploy immediately.
  6. Update stage.

Hotfixes as exception

Hotfixes bypass QA. If at all possible, use the normal stage workflow.

Keep stage fresh ​

Periodically (every few months) merge main into stage so hotfixes don't get lost:

bash
git checkout stage
git merge main
git push

Workflow diagram ​

text
Feature branch (from main)
         ↓
   Development
         ↓
   Merge → stage
         ↓
   Playground pipeline
         ↓
   QA testing ──→ Issues? ──→ Back to development
         ↓
     QA sign-off
         ↓
   Merge feature branch → main
         ↓
   Tag the version
         ↓
   Update consumer projects

Testing environments ​

EnvironmentBranch / versionPurpose
Guppy PlaygroundstageQA + feature testing
Express demotagged releasesshowcase
Customer projectsspecific tagsproduction

Release checklist ​

  • [ ] Feature branch created from main
  • [ ] Feature developed and locally tested
  • [ ] Feature branch merged into stage
  • [ ] Playground pipeline triggered
  • [ ] Jira ticket assigned to a QA person
  • [ ] QA testing passed
  • [ ] Feature branch merged into main
  • [ ] Version tag created
  • [ ] Express demo updated
  • [ ] Customer projects informed (if necessary)