
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.ymlstages:
- 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.ymlstages:
- 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:
- Alle Assets bauen
- Sie an den zweiten Job übergeben
- Den Release-Prozess wie zuvor beschrieben ausführen
