Testen, Bauen, und Veröffentlichen eines Shopware 6 Plugins mit GitLab CI - Teil 2 - Build

Insider Blog

In meinem vorherigen Post habe ich beschrieben, wie man ein Shopware 6 Plugin über die GitLab Package Registry ausliefert.

Wenn wir unser Projekt mit dem shopware-cli bauen, sucht das Tool in allen Plugins und prüft, ob sie gebaut werden müssen, und tut dies gegebenenfalls. Dies ist ein unnötiger Schritt.

Manuelles Bauen

Das Bauen eines Plugins ist so einfach wie das Ausführen von:

shopware-cli extension build .

Im Plugin-Root-Verzeichnis.

Es gibt einige Anpassungen, die Sie vornehmen können, wie zum Beispiel:

  • Einschränkung einer Shopware-Version
  • Angabe zusätzlicher Bundles
  • Verwendung von esbuild

Detaillierte Konfigurationen finden Sie in der offiziellen Dokumentation.

Der Build-Prozess erstellt die folgenden Verzeichnisse, die die kompilierten Dateien enthalten:

  • src/Resources/app/storefront/dist/
  • src/Resources/public/static/

Build-Pipeline

Wir verwenden das offizielle shopware-cli Docker-Image. Um den Prozess zu beschleunigen, nutzen wir das CI-Caching-System.

<plugin-root>/.gitlab-ci.yml
stages:
  - build

build:
  image:
    name: ghcr.io/shopware/shopware-cli:latest-php-8.2
    entrypoint: [""]
  stage: build
  variables:
    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer
    npm_config_cache: ${CI_PROJECT_DIR}/.npm
  script:
    - shopware-cli extension build .
  cache:
    - key: $CI_JOB_NAME
      paths:
        - $COMPOSER_CACHE_DIR
        - $npm_config_cache
  rules:
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
      when: never
    - if: $CI_COMMIT_BRANCH

Kombinieren wir dies mit unserer Release-Pipeline aus dem vorherigen Post.

Es ist wichtig, die gebauten Artefakte an den nächsten Job zu übergeben.

<plugin-root>/.gitlab-ci.yml
stages:
  - release
  - build

build:
  image:
    name: ghcr.io/shopware/shopware-cli:latest-php-8.2
    entrypoint: [""]
  stage: build
  variables:
    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer
    npm_config_cache: ${CI_PROJECT_DIR}/.npm
  script:
    - shopware-cli extension build .
  cache:
    - key: $CI_JOB_NAME
      paths:
        - $COMPOSER_CACHE_DIR
        - $npm_config_cache
  artifacts:
    paths:
      - src/Resources/
  rules:
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
      when: never
    - if: $CI_COMMIT_BRANCH

release:
  stage: release
  image:
    name: ghcr.io/voxpupuli/semantic-release:latest
    entrypoint: [""]
  interruptible: true
  script:
    - /docker-entrypoint.sh
  rules:
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
      when: never
    - if: $CI_COMMIT_BRANCH

Das war's!

Dies wird:

  1. Alle Assets bauen
  2. Sie an den zweiten Job übergeben
  3. Den Release-Prozess wie zuvor beschrieben ausführen

Autor

Steckbrief

Veröffentlicht:

March 26, 2026

Kategorien:

Was uns bewegt, DevOps

Tags:

DevOps, Open Source, Shopware
Vorheriger Artikel