[{"data":1,"prerenderedAt":9569},["ShallowReactive",2],{"portfolio-de-purize":3,"employee-bernd-helm":281,"related-blog-shopware_e-commerce--de":388,"content-query-K9Z9yOwvGV":467,"content-query-G9vendBux1":4923,"content-query-hQiL1tjAhV":6006,"content-query-UKDfBsQuK3":8293,"content-query-YkijYFcsFd":8830,"content-query-ChH556dtBR":8905,"content-query-KtO3wftRle":9436,"content-query-1PFeYVQSzn":9508,"related-refs-shopware_e-commerce-purize-de":9544},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"subtitle":9,"heroImage":10,"areaOfApplication":11,"industry":12,"technologies":13,"period":17,"teamDescription":20,"budget":21,"tags":22,"body":25,"_type":275,"_id":276,"_source":277,"_file":278,"_stem":279,"_extension":280},"/portfolio/purize","portfolio",false,"","Purize Filters","E-COMMERCE UND FULFILLMENT FÜR AKTIVKOHLEFILTER \"MADE IN GERMANY\"","/images/portfolio/barcode-machine-verdandijpg.jpg","E-Commerce & Fulfillment","E-Commerce und Fulfillment",[14,15,16],"zabbix","mysql","php",{"from":18,"to":19},"März 2017","heute","1 E-Commerce-Berater, 1 Entwickler, DevOps-Team","sechsstellig",[23,24],"shopware","e-commerce",{"type":26,"children":27,"toc":270},"root",[28,86,172,263],{"type":29,"tag":30,"props":31,"children":34},"element","section-component",{"className":32},[33],"no-pattern",[35,80],{"type":29,"tag":36,"props":37,"children":46},"v-card",{"className":38,"style":45},[39,40,41,42,43,44],"description__card","text-justify","px-4","px-md-18","py-4","py-md-14","background-color: rgba(var(--v-theme-primary), 0.1)",[47,65,75],{"type":29,"tag":48,"props":49,"children":50},"p",{},[51,58,60],{"type":29,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":56,"value":57},"text","PURIZE® Filters produziert qualitativ hochwertige und schadstoffreduzierende Aktivkohlefilter \"Made in Germany\"",{"type":56,"value":59},".\nDas Unternehmen setzt zu 100% auf den Produktionsstandort Deutschland, da vergleichbare Aktivkohlefilter,\ndie den PURIZE® Qualitätsstandards entsprechen sollen, in Fernost nur schwer herstellbar sind.\nDie Herausforderung für PURIZE® bestand darin, neben der Herstellung ihrer hochwertigen Produkte auch einen effizienten\nE-Commerce- und Fulfillment-Prozess zu etablieren, um mit dem wachsenden Kundenstamm Schritt zu halten.\n",{"type":29,"tag":52,"props":61,"children":62},{},[63],{"type":56,"value":64},"Unsere Aufgabe war es, eine komplette E-Commerce-Lösung zu implementieren und einen reibungslosen Versandprozess\nsicherzustellen.",{"type":29,"tag":66,"props":67,"children":74},"img",{"alt":68,"aspect-ratio":69,"className":70,"object-fit":72,"src":73},"Verdandi Workstation für den Fulfillmentprozess bei Purize","3",[71],"my-5","contain","/images/portfolio/verdandi_workstation.jpg",[],{"type":29,"tag":48,"props":76,"children":77},{},[78],{"type":56,"value":79},"Um die Effizienz des Bestellprozesses zu maximieren, haben wir unsere Fulfillment-Services eingesetzt und eine\nnahtlose Anbindung an Versanddienstleister geschaffen. Diese Integration\nermöglicht eine schnelle und zuverlässige Bearbeitung von Bestellungen und Versand, was zu höherer\nKundenzufriedenheit führt. Darüber hinaus stehen wir als Dienstleister für alle Herausforderungen im Bereich\nE-Commerce beratend zur Seite. Dies umfasste technische Unterstützung bei der Webshop-Optimierung und kontinuierliche\nVerbesserung des gesamten Online-Verkaufsprozesses.",{"type":29,"tag":81,"props":82,"children":85},"v-divider",{"className":83},[84],"hw-my",[],{"type":29,"tag":30,"props":87,"children":88},{},[89,102],{"type":29,"tag":90,"props":91,"children":99},"h2",{"className":92,"id":98},[93,94,95,96,97],"justify-center","mt-12","mb-4","mb-md-8","pt-0","unsere-leistungen",[100],{"type":56,"value":101}," Unsere Leistungen ",{"type":29,"tag":36,"props":103,"children":109},{"className":104},[105,106,41,42,43,44,107,108],"background","transparent-4","mb-8","mb-md-12",[110,141],{"type":29,"tag":111,"props":112,"children":114},"v-row",{":no-gutters":113,"no-gutters":7},"true",[115,137],{"type":29,"tag":116,"props":117,"children":120},"v-col",{"cols":118,"md":119},12,"8",[121],{"type":29,"tag":122,"props":123,"children":125},"h3",{"id":124},"e-commerce-beratung-implementierung",[126],{"type":29,"tag":127,"props":128,"children":134},"span",{"className":129},[130,131,132,133],"w-100","text-center","mt-sm-n5","mt-md-n6",[135],{"type":56,"value":136},"E-Commerce-Beratung & Implementierung",{"type":29,"tag":116,"props":138,"children":140},{"cols":118,"md":139},"4",[],{"type":29,"tag":111,"props":142,"children":145},{"className":143},[144],"mt-0",[146,164],{"type":29,"tag":116,"props":147,"children":148},{"cols":118,"md":119},[149,154,159],{"type":29,"tag":48,"props":150,"children":151},{},[152],{"type":56,"value":153},"Für PURIZE® Filters haben wir eine umfassende E-Commerce-Lösung implementiert, die auf die spezifischen Anforderungen\nihres Produkts und ihrer Zielgruppe zugeschnitten ist.\nUnsere E-Commerce-Beratung umfasste kontinuierliche Optimierungen der Shop-Plattform, Einrichtung effizienter\nZahlungsprozesse und die Integration verschiedener Marketingtools. Wir haben PURIZE® dabei unterstützt, ihre\nOnline-Präsenz zu stärken und den digitalen Vertriebskanal bestmöglich zu nutzen.",{"type":29,"tag":48,"props":155,"children":156},{},[157],{"type":56,"value":158},"Die technische Implementierung umfasste die Einrichtung einer skalierbaren Shop-Lösung, die auch bei steigenden\nBestellzahlen stabil läuft und ein nahtloses Einkaufserlebnis bietet. Alle technischen Aspekte wurden so\ngestaltet, dass sie einfach zu warten und bei Bedarf zu erweitern sind, um mit dem Wachstum des Unternehmens Schritt\nzu halten.",{"type":29,"tag":48,"props":160,"children":161},{},[162],{"type":56,"value":163},"Ein zentrales Element unserer Zusammenarbeit mit PURIZE® ist die Bereitstellung eines vollständigen\nFulfillment-Services. Wir haben eine maßgeschneiderte Lösung entwickelt, die alle Aspekte der Auftragsabwicklung\nabdeckt - von der Bestellannahme über die Lagerung bis hin zum Versand der Produkte. Die nahtlose Integration unseres\nFulfillment-Systems mit dem E-Commerce-Shop ermöglicht eine Echtzeitverfolgung der Lagerbestände und automatisierte\nBestellprozesse.",{"type":29,"tag":116,"props":165,"children":166},{"cols":118,"md":139},[167],{"type":29,"tag":168,"props":169,"children":171},"employees-card",{":showExecutiveRole":113,"name":170},"bernd-helm",[],{"type":29,"tag":30,"props":173,"children":174},{},[175,182,259],{"type":29,"tag":90,"props":176,"children":179},{"className":177,"id":178},[93,94,95,96,97],"besondere-herausforderungen",[180],{"type":56,"value":181}," Besondere Herausforderungen ",{"type":29,"tag":36,"props":183,"children":185},{"className":184},[105,106,41,42,43,44],[186],{"type":29,"tag":111,"props":187,"children":188},{},[189,209,229,241],{"type":29,"tag":116,"props":190,"children":192},{"cols":118,"md":191,"sm":69},"2",[193],{"type":29,"tag":194,"props":195,"children":203},"v-responsive",{"aspect-ratio":196,"className":197,"content-class":201,"style":202},"0.921",[198,199,200],"bg-primary-lighten-3","hw-hexagon","mx-auto","d-flex justify-center align-center","width: 100%; max-width: 120px;",[204],{"type":29,"tag":205,"props":206,"children":208},"hw-image",{"src":207},"/images/scalability-logo.svg",[],{"type":29,"tag":116,"props":210,"children":213},{"cols":118,"md":211,"sm":212},"10","9",[214,224],{"type":29,"tag":122,"props":215,"children":217},{"id":216},"skalierbarkeit-bei-schnellem-wachstum",[218],{"type":29,"tag":127,"props":219,"children":221},{"className":220},[132,133],[222],{"type":56,"value":223},"Skalierbarkeit bei schnellem Wachstum",{"type":29,"tag":48,"props":225,"children":226},{},[227],{"type":56,"value":228},"Eine besondere Herausforderung bei diesem Projekt war die Notwendigkeit, ein System zu schaffen, das mit dem\nschnellen Wachstum von PURIZE® Schritt halten kann. Der E-Commerce-Bereich des Unternehmens verzeichnete ein rapides\nWachstum, was erhöhte Anforderungen an die Infrastruktur, Lagerkapazitäten und Versandprozesse stellte. Unsere\nLösung musste daher von Anfang an skalierbar konzipiert sein, um Spitzenzeiten und ein kontinuierliches Wachstum\nbewältigen zu können.",{"type":29,"tag":116,"props":230,"children":231},{"cols":118,"md":191,"sm":69},[232],{"type":29,"tag":194,"props":233,"children":236},{"aspect-ratio":196,"className":234,"content-class":201,"style":202},[235,199,200],"bg-primary-lighten-1",[237],{"type":29,"tag":205,"props":238,"children":240},{"src":239},"/images/data-processing-logo.svg",[],{"type":29,"tag":116,"props":242,"children":243},{"cols":118,"md":211,"sm":212},[244,254],{"type":29,"tag":122,"props":245,"children":247},{"id":246},"nahtlose-integration-des-versanddienstleisters",[248],{"type":29,"tag":127,"props":249,"children":251},{"className":250},[132,133],[252],{"type":56,"value":253},"Nahtlose Integration des Versanddienstleisters",{"type":29,"tag":48,"props":255,"children":256},{},[257],{"type":56,"value":258},"Die Integration von Versanddienstleistern erforderte eine komplexe technische Umsetzung, um eine\nnahtlose Kommunikation zwischen dem Webshop, unserem Fulfillment-System und den Logistikplattformen zu gewährleisten.\nWir mussten eine robuste API-Schnittstelle entwickeln, die in der Lage ist, Bestelldaten in Echtzeit zu übermitteln,\nTracking-Informationen zurückzuführen und den Status jeder Sendung zu aktualisieren. Eine besondere Herausforderung\nbestand darin, unterschiedliche Datenformate und Kommunikationsprotokolle zu harmonisieren und eine fehlerfreie\nÜbertragung sicherzustellen. Durch den Einsatz moderner Integrationstools und die Entwicklung spezifischer\nMiddleware-Komponenten konnten wir eine stabile und zuverlässige Verbindung schaffen.",{"type":29,"tag":81,"props":260,"children":262},{"className":261},[84],[],{"type":29,"tag":30,"props":264,"children":265},{},[266],{"type":29,"tag":267,"props":268,"children":269},"contact-form",{},[],{"title":7,"searchDepth":271,"depth":271,"links":272},2,[273,274],{"id":98,"depth":271,"text":101},{"id":178,"depth":271,"text":181},"markdown","common:portfolio:9000.purize:index.md","common","portfolio/9000.purize/index.md","portfolio/9000.purize/index","md",{"_path":282,"_dir":283,"_draft":6,"_partial":6,"_locale":7,"slug":170,"teams":284,"primaryTeam":286,"firstName":287,"lastName":288,"prefixTitle":7,"suffixTitle":7,"education":289,"executiveRole":294,"role":295,"workingSince":303,"inTheCompanySince":304,"techSkills":305,"skills":351,"projects":364,"contactDetails":377,"_image":381,"image":382,"_id":383,"_type":384,"title":385,"_source":283,"_file":386,"_stem":387,"_extension":384},"/employees/bernd-helm","employees",[285,286],"ai","devOps","Bernd","Helm",[290],[291,292,293],"B. Sc. Angewandte Informatik","FHDW Dresden","2010","CTO",[296,297,286,298,299,300,301,302],"founder","chiefTechnologyOfficer","databaseSpecialist","admin","softwareDeveloper","backendDeveloper","consultant","2005","2008",[306,310,313,315,318,320,323,325,327,329,332,336,339,342,345,348],{"name":307,"level":308,"icon":309},"Docker","expert","/images/Docker.svg",{"name":311,"level":308,"icon":312},"Linux","/images/linux_os-mono.svg",{"name":314,"level":308},"Zabbix",{"name":316,"level":308,"icon":317},"MariaDB ColumnStore","/images/maria-db-logo.svg",{"name":319,"level":308},"OpenAI",{"name":321,"level":308,"icon":322},"Pytorch","/images/PyTorch.svg",{"name":324,"level":308},"PHP",{"name":326,"level":308},"Java",{"name":328,"level":308},"Python",{"name":330,"level":308,"icon":331},"SQL","/images/SQL.svg",{"name":333,"level":334,"icon":335},"C++","advanced","/images/cpp-logo.svg",{"name":337,"level":334,"icon":338},"C#","/images/csharp.svg",{"name":340,"level":334,"icon":341},"CSS","/images/css.svg",{"name":343,"level":334,"icon":344},"HTML","/images/html.svg",{"name":346,"level":334,"icon":347},"OpenCV","/images/OpenCV.svg",{"name":349,"level":334,"icon":350},"Vue.js","/images/vuejs.svg",[352,354,356,358,360,362],{"name":353,"level":308},"artificialIntelligence",{"name":355,"level":308},"codingGuidelines",{"name":357,"level":308},"databases",{"name":359,"level":308},"linuxServerAdministration",{"name":361,"level":308},"softwareArchitect",{"name":363,"level":334},"qualityAssurance",[365,368,370,372,375],{"project":366,"position":367},"Gridside","Technical Consultant",{"project":369,"position":367},"Herole",{"project":371,"position":367},"Montagespezis",{"project":373,"position":374},"Orsee","Technical Manager",{"project":376,"position":367},"Vipr",{"eMail":378,"phone":379,"visibility":380},"bernd.helm@helmundwalter.de","+49 351 799 035 20","1","images/employees/Portraits/bernd_helm.webp","images/employees/Portraits/BerndHelm_MS.webp","employees:employees:1.bernd-helm.json","json","Bernd Helm","employees/1.bernd-helm.json","employees/1.bernd-helm",[389,408,418,428,440,454],{"_path":390,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":392,"description":393,"author":394,"image":395,"releaseDate":396,"blogCategories":397,"articleTags":400,"tags":403,"_type":275,"_id":405,"_source":277,"_file":406,"_stem":407,"_extension":280},"/blog/shopware-plugin-gitlab-pipeline-release","blog","Testen, Bauen, und Veröffentlichen von Shopware 6 Plugin mit GitLab CI - Teil 1: Veröffentlichen","Teil 1: Veröffentlichen - Verwendung von GitLab zum Testen, Bauen und Veröffentlichen eines Shopware 6 Plugins","robert-juzak","/images/dev-ops-dark.svg","2026-02-26",[398,399],"Was uns bewegt","DevOps",[399,401,402],"Open Source","Shopware",[23,404],"devops","common:blog:18.shopware-plugin-gitlab-pipeline-release.md","blog/18.shopware-plugin-gitlab-pipeline-release.md","blog/18.shopware-plugin-gitlab-pipeline-release",{"_path":409,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":410,"description":411,"author":394,"image":395,"releaseDate":396,"blogCategories":412,"articleTags":413,"tags":414,"_type":275,"_id":415,"_source":277,"_file":416,"_stem":417,"_extension":280},"/blog/shopware-plugin-gitlab-pipeline-build","Testen, Bauen, und Veröffentlichen eines Shopware 6 Plugins mit GitLab CI - Teil 2: Bauen","Teil 2: Bauen - Verwendung von GitLab zum Testen, Erstellen und Releasen eines Shopware 6 Plugins",[398,399],[399,401,402],[23,404],"common:blog:19.shopware-plugin-gitlab-pipeline-build.md","blog/19.shopware-plugin-gitlab-pipeline-build.md","blog/19.shopware-plugin-gitlab-pipeline-build",{"_path":419,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":420,"description":421,"author":394,"image":395,"releaseDate":396,"blogCategories":422,"articleTags":423,"tags":424,"_type":275,"_id":425,"_source":277,"_file":426,"_stem":427,"_extension":280},"/blog/shopware-plugin-gitlab-pipeline-test","Testen, Bauen und Veröffentlichen eines Shopware 6 Plugins mit GitLab CI - Teil 3: Testen","Teil 3: Testen - Verwendung von GitLab zum Testen, Bauen und Veröffentlichen eines Shopware 6 Plugins",[398,399],[399,401,402],[23,404],"common:blog:20.shopware-plugin-gitlab-pipeline-test.md","blog/20.shopware-plugin-gitlab-pipeline-test.md","blog/20.shopware-plugin-gitlab-pipeline-test",{"_path":429,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":430,"description":431,"author":394,"image":395,"releaseDate":432,"blogCategories":433,"articleTags":435,"tags":436,"_type":275,"_id":437,"_source":277,"_file":438,"_stem":439,"_extension":280},"/blog/shopware-renovate-bot","Konfiguration von Renovate für die ordnungsgemäße Behandlung von Shopware-Paketen","Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Um Renovate die automatische Erstellung von PR's zu ermöglichen, müssen wir die Renovate-Konfiguration anpassen","2025-09-08",[434,399],"Das bewegt uns",[399,401],[23,404],"common:blog:16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot",{"_path":441,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":442,"description":443,"author":170,"image":444,"releaseDate":445,"blogCategories":446,"articleTags":447,"tags":449,"_type":275,"_id":451,"_source":277,"_file":452,"_stem":453,"_extension":280},"/blog/amazon-mws-sp-api-wrapper-de","Amazon MWS zu SP API Wrapper","Wir haben einen Wrapper veröffentlicht, der Amazon MWS in SP API umwandelt, um Entwicklern mit veralteten Systemen eine einfache Lösung anzubieten. Dieses Open-Source-Projekt bietet eine praktische Alternative zur Neuentwicklung und unterstützt die Fortführung bestehender Anwendungen.","/blog/thumbnails/AWS.svg","2024-02-21",[434,399],[448,401],"Amazon",[24,450],"backend","common:blog:11.amazon-mws-sp-api-wrapper-de.md","blog/11.amazon-mws-sp-api-wrapper-de.md","blog/11.amazon-mws-sp-api-wrapper-de",{"_path":455,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":456,"description":457,"author":170,"image":458,"releaseDate":459,"blogCategories":460,"articleTags":461,"tags":463,"_type":275,"_id":464,"_source":277,"_file":465,"_stem":466,"_extension":280},"/blog/shopware-5-parallele-miniaturbildererstellung","Shopware 5 - Parallele Hochgeschwindigkeits-Miniaturbildererstellung","Wie man den integrierten SW5-Mechanismus so abstimmt, dass er mehr als 22 Mal schneller arbeitet! Shopware 5 - Parallele Thumbnail-Generierung nach dem Umzug eines Shopware 5 Systems auf einen anderen Server Wir hatten einen Kunden mit 400k Bildern und 1600k Thumbnails, der von einem alten hdd-basierten Server auf einen neuen ssd-Server umziehen musste ...","/images/shopware.svg","2021-04-29",[402,399],[462],"VPN",[23],"common:blog:9.shopware-5-parallele-miniaturbildererstellung.md","blog/9.shopware-5-parallele-miniaturbildererstellung.md","blog/9.shopware-5-parallele-miniaturbildererstellung",{"_path":390,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":392,"description":393,"author":394,"image":395,"releaseDate":396,"blogCategories":468,"articleTags":469,"tags":470,"body":471,"_type":275,"_id":405,"_source":277,"_file":406,"_stem":407,"_extension":280},[398,399],[399,401,402],[23,404],{"type":26,"children":472,"toc":4911},[473,480,485,499,504,509,548,553,559,564,570,583,1664,1669,1697,1707,1711,1724,1747,1884,1897,1902,1908,1920,1941,2343,2384,2389,2410,2552,2564,2570,2582,2587,2599,2634,2639,3566,3571,3670,3675,3734,3745,3750,3771,3906,3916,3922,3943,3946,3950,3956,3962,3967,3985,4035,4195,4201,4206,4217,4230,4453,4858,4863,4905],{"type":29,"tag":66,"props":474,"children":479},{"alt":7,"aspect-ratio":475,"height":476,"object-fit":477,"src":478},"1.78",300,"fill","/blog/shopware-plugin-release.png",[],{"type":29,"tag":48,"props":481,"children":482},{},[483],{"type":56,"value":484},"Es gibt viele Möglichkeiten, Shopware 6 Plugins zu installieren. Sie können sie direkt im Admin-Panel herunterladen oder mit Composer installieren.",{"type":29,"tag":48,"props":486,"children":487},{},[488,490,497],{"type":56,"value":489},"Einen detaillierten Vergleich finden Sie in der ",{"type":29,"tag":491,"props":492,"children":494},"a",{"href":493},"https://developer.shopware.com/docs/guides/plugins/plugins/",[495],{"type":56,"value":496},"offiziellen Dokumentation",{"type":56,"value":498},".",{"type":29,"tag":48,"props":500,"children":501},{},[502],{"type":56,"value":503},"Als Entwickler und Betreuer von Themes, Anpassungen, Drittanbieter-APIs usw. konzentriere ich mich auf statische Plugins.",{"type":29,"tag":48,"props":505,"children":506},{},[507],{"type":56,"value":508},"Der Workflow ist einfach:",{"type":29,"tag":510,"props":511,"children":512},"ol",{},[513,526,537],{"type":29,"tag":514,"props":515,"children":516},"li",{},[517,519],{"type":56,"value":518},"Erstelle ein Plugin mit ",{"type":29,"tag":520,"props":521,"children":523},"code",{"className":522},[],[524],{"type":56,"value":525},"bin/console plugin:create --static",{"type":29,"tag":514,"props":527,"children":528},{},[529,531],{"type":56,"value":530},"Installiere es mit ",{"type":29,"tag":491,"props":532,"children":534},{"href":533},"https://developer.shopware.com/docs/guides/plugins/plugins/#static-plugins",[535],{"type":56,"value":536},"Composer",{"type":29,"tag":514,"props":538,"children":539},{},[540,542],{"type":56,"value":541},"Baue das Projekt mit ",{"type":29,"tag":491,"props":543,"children":545},{"href":544},"https://developer.shopware.com/docs/products/cli/project-commands/build.html#example-docker-image",[546],{"type":56,"value":547},"shopware-cli",{"type":29,"tag":48,"props":549,"children":550},{},[551],{"type":56,"value":552},"Wenn wir dasselbe Plugin in mehr als einem Shop benötigen, könnten wir dasselbe Plugin mehrfach erstellen, das wäre aber für die Wartung nicht optimal.",{"type":29,"tag":90,"props":554,"children":556},{"id":555},"das-plugin-extrahieren",[557],{"type":56,"value":558},"Das Plugin extrahieren",{"type":29,"tag":48,"props":560,"children":561},{},[562],{"type":56,"value":563},"Wir fangen damit an, dass wir den Quellcode unseres Plugins in ein separates Repository verschieben. Um die Sache vorerst einfach zu machen, machen wir das Repository öffentlich.",{"type":29,"tag":122,"props":565,"children":567},{"id":566},"download-mit-git",[568],{"type":56,"value":569},"Download mit Git",{"type":29,"tag":48,"props":571,"children":572},{},[573,575,581],{"type":56,"value":574},"Wir müssen ",{"type":29,"tag":520,"props":576,"children":578},{"className":577},[],[579],{"type":56,"value":580},"composer",{"type":56,"value":582}," nur mitteilen, wo unser Plugin zu finden ist.",{"type":29,"tag":584,"props":585,"children":594},"pre",{"className":586,"code":587,"filename":588,"highlights":589,"language":384,"meta":7,"style":7},"language-json shiki shiki-themes github-dark github-dark monokai","{\n  \"name\": \"shopware/production\",\n  \"license\": \"MIT\",\n  \"type\": \"project\",\n  \"require\": {\n    \"composer-runtime-api\": \"^2.0\",\n    \"acme/sample-plugin\": \"^1.0\",\n    \"shopware/administration\": \"*\",\n    \"shopware/core\": \"6.6.10.2\",\n    \"shopware/elasticsearch\": \"*\",\n    \"shopware/storefront\": \"*\",\n    \"symfony/flex\": \"~2\"\n  },\n  \"repositories\": [\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*/packages/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/static-plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"git\",\n      \"url\": \"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n    }\n  ],\n  \"autoload\": {\n    \"psr-4\": {\n      \"App\\\\\": \"src/\"\n    }\n  },\n  \"prefer-stable\": true,\n  \"config\": {\n    \"allow-plugins\": {\n      \"symfony/flex\": true,\n      \"symfony/runtime\": true\n    },\n    \"optimize-autoloader\": true,\n    \"sort-packages\": true\n  },\n  \"scripts\": {\n    \"auto-scripts\": {\n      \"assets:install\": \"symfony-cmd\"\n    },\n    \"post-install-cmd\": [\n      \"@auto-scripts\"\n    ],\n    \"post-update-cmd\": [\n      \"@auto-scripts\"\n    ]\n  },\n  \"extra\": {\n    \"symfony\": {\n      \"allow-contrib\": true,\n      \"endpoint\": [\n        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\",\n        \"flex://defaults\"\n      ]\n    }\n  }\n}\n","\u003Cproject-root>/composer.json",[590,591,592,593],36,37,38,39,[595],{"type":29,"tag":520,"props":596,"children":597},{"__ignoreMap":7},[598,609,634,656,678,692,714,736,758,780,801,822,839,848,862,871,893,915,928,947,956,965,973,993,1014,1026,1042,1050,1058,1066,1086,1107,1119,1135,1143,1151,1160,1181,1198,1207,1216,1229,1242,1271,1279,1287,1308,1321,1334,1355,1372,1380,1401,1418,1426,1439,1452,1470,1478,1491,1500,1509,1522,1530,1539,1547,1560,1573,1594,1607,1620,1629,1638,1646,1655],{"type":29,"tag":127,"props":599,"children":602},{"class":600,"line":601},"line",1,[603],{"type":29,"tag":127,"props":604,"children":606},{"style":605},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[607],{"type":56,"value":608},"{\n",{"type":29,"tag":127,"props":610,"children":611},{"class":600,"line":271},[612,618,623,629],{"type":29,"tag":127,"props":613,"children":615},{"style":614},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[616],{"type":56,"value":617},"  \"name\"",{"type":29,"tag":127,"props":619,"children":620},{"style":605},[621],{"type":56,"value":622},": ",{"type":29,"tag":127,"props":624,"children":626},{"style":625},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[627],{"type":56,"value":628},"\"shopware/production\"",{"type":29,"tag":127,"props":630,"children":631},{"style":605},[632],{"type":56,"value":633},",\n",{"type":29,"tag":127,"props":635,"children":637},{"class":600,"line":636},3,[638,643,647,652],{"type":29,"tag":127,"props":639,"children":640},{"style":614},[641],{"type":56,"value":642},"  \"license\"",{"type":29,"tag":127,"props":644,"children":645},{"style":605},[646],{"type":56,"value":622},{"type":29,"tag":127,"props":648,"children":649},{"style":625},[650],{"type":56,"value":651},"\"MIT\"",{"type":29,"tag":127,"props":653,"children":654},{"style":605},[655],{"type":56,"value":633},{"type":29,"tag":127,"props":657,"children":659},{"class":600,"line":658},4,[660,665,669,674],{"type":29,"tag":127,"props":661,"children":662},{"style":614},[663],{"type":56,"value":664},"  \"type\"",{"type":29,"tag":127,"props":666,"children":667},{"style":605},[668],{"type":56,"value":622},{"type":29,"tag":127,"props":670,"children":671},{"style":625},[672],{"type":56,"value":673},"\"project\"",{"type":29,"tag":127,"props":675,"children":676},{"style":605},[677],{"type":56,"value":633},{"type":29,"tag":127,"props":679,"children":681},{"class":600,"line":680},5,[682,687],{"type":29,"tag":127,"props":683,"children":684},{"style":614},[685],{"type":56,"value":686},"  \"require\"",{"type":29,"tag":127,"props":688,"children":689},{"style":605},[690],{"type":56,"value":691},": {\n",{"type":29,"tag":127,"props":693,"children":695},{"class":600,"line":694},6,[696,701,705,710],{"type":29,"tag":127,"props":697,"children":698},{"style":614},[699],{"type":56,"value":700},"    \"composer-runtime-api\"",{"type":29,"tag":127,"props":702,"children":703},{"style":605},[704],{"type":56,"value":622},{"type":29,"tag":127,"props":706,"children":707},{"style":625},[708],{"type":56,"value":709},"\"^2.0\"",{"type":29,"tag":127,"props":711,"children":712},{"style":605},[713],{"type":56,"value":633},{"type":29,"tag":127,"props":715,"children":717},{"class":600,"line":716},7,[718,723,727,732],{"type":29,"tag":127,"props":719,"children":720},{"style":614},[721],{"type":56,"value":722},"    \"acme/sample-plugin\"",{"type":29,"tag":127,"props":724,"children":725},{"style":605},[726],{"type":56,"value":622},{"type":29,"tag":127,"props":728,"children":729},{"style":625},[730],{"type":56,"value":731},"\"^1.0\"",{"type":29,"tag":127,"props":733,"children":734},{"style":605},[735],{"type":56,"value":633},{"type":29,"tag":127,"props":737,"children":739},{"class":600,"line":738},8,[740,745,749,754],{"type":29,"tag":127,"props":741,"children":742},{"style":614},[743],{"type":56,"value":744},"    \"shopware/administration\"",{"type":29,"tag":127,"props":746,"children":747},{"style":605},[748],{"type":56,"value":622},{"type":29,"tag":127,"props":750,"children":751},{"style":625},[752],{"type":56,"value":753},"\"*\"",{"type":29,"tag":127,"props":755,"children":756},{"style":605},[757],{"type":56,"value":633},{"type":29,"tag":127,"props":759,"children":761},{"class":600,"line":760},9,[762,767,771,776],{"type":29,"tag":127,"props":763,"children":764},{"style":614},[765],{"type":56,"value":766},"    \"shopware/core\"",{"type":29,"tag":127,"props":768,"children":769},{"style":605},[770],{"type":56,"value":622},{"type":29,"tag":127,"props":772,"children":773},{"style":625},[774],{"type":56,"value":775},"\"6.6.10.2\"",{"type":29,"tag":127,"props":777,"children":778},{"style":605},[779],{"type":56,"value":633},{"type":29,"tag":127,"props":781,"children":783},{"class":600,"line":782},10,[784,789,793,797],{"type":29,"tag":127,"props":785,"children":786},{"style":614},[787],{"type":56,"value":788},"    \"shopware/elasticsearch\"",{"type":29,"tag":127,"props":790,"children":791},{"style":605},[792],{"type":56,"value":622},{"type":29,"tag":127,"props":794,"children":795},{"style":625},[796],{"type":56,"value":753},{"type":29,"tag":127,"props":798,"children":799},{"style":605},[800],{"type":56,"value":633},{"type":29,"tag":127,"props":802,"children":804},{"class":600,"line":803},11,[805,810,814,818],{"type":29,"tag":127,"props":806,"children":807},{"style":614},[808],{"type":56,"value":809},"    \"shopware/storefront\"",{"type":29,"tag":127,"props":811,"children":812},{"style":605},[813],{"type":56,"value":622},{"type":29,"tag":127,"props":815,"children":816},{"style":625},[817],{"type":56,"value":753},{"type":29,"tag":127,"props":819,"children":820},{"style":605},[821],{"type":56,"value":633},{"type":29,"tag":127,"props":823,"children":824},{"class":600,"line":118},[825,830,834],{"type":29,"tag":127,"props":826,"children":827},{"style":614},[828],{"type":56,"value":829},"    \"symfony/flex\"",{"type":29,"tag":127,"props":831,"children":832},{"style":605},[833],{"type":56,"value":622},{"type":29,"tag":127,"props":835,"children":836},{"style":625},[837],{"type":56,"value":838},"\"~2\"\n",{"type":29,"tag":127,"props":840,"children":842},{"class":600,"line":841},13,[843],{"type":29,"tag":127,"props":844,"children":845},{"style":605},[846],{"type":56,"value":847},"  },\n",{"type":29,"tag":127,"props":849,"children":851},{"class":600,"line":850},14,[852,857],{"type":29,"tag":127,"props":853,"children":854},{"style":614},[855],{"type":56,"value":856},"  \"repositories\"",{"type":29,"tag":127,"props":858,"children":859},{"style":605},[860],{"type":56,"value":861},": [\n",{"type":29,"tag":127,"props":863,"children":865},{"class":600,"line":864},15,[866],{"type":29,"tag":127,"props":867,"children":868},{"style":605},[869],{"type":56,"value":870},"    {\n",{"type":29,"tag":127,"props":872,"children":874},{"class":600,"line":873},16,[875,880,884,889],{"type":29,"tag":127,"props":876,"children":877},{"style":614},[878],{"type":56,"value":879},"      \"type\"",{"type":29,"tag":127,"props":881,"children":882},{"style":605},[883],{"type":56,"value":622},{"type":29,"tag":127,"props":885,"children":886},{"style":625},[887],{"type":56,"value":888},"\"path\"",{"type":29,"tag":127,"props":890,"children":891},{"style":605},[892],{"type":56,"value":633},{"type":29,"tag":127,"props":894,"children":896},{"class":600,"line":895},17,[897,902,906,911],{"type":29,"tag":127,"props":898,"children":899},{"style":614},[900],{"type":56,"value":901},"      \"url\"",{"type":29,"tag":127,"props":903,"children":904},{"style":605},[905],{"type":56,"value":622},{"type":29,"tag":127,"props":907,"children":908},{"style":625},[909],{"type":56,"value":910},"\"custom/plugins/*\"",{"type":29,"tag":127,"props":912,"children":913},{"style":605},[914],{"type":56,"value":633},{"type":29,"tag":127,"props":916,"children":918},{"class":600,"line":917},18,[919,924],{"type":29,"tag":127,"props":920,"children":921},{"style":614},[922],{"type":56,"value":923},"      \"options\"",{"type":29,"tag":127,"props":925,"children":926},{"style":605},[927],{"type":56,"value":691},{"type":29,"tag":127,"props":929,"children":931},{"class":600,"line":930},19,[932,937,941],{"type":29,"tag":127,"props":933,"children":934},{"style":614},[935],{"type":56,"value":936},"        \"symlink\"",{"type":29,"tag":127,"props":938,"children":939},{"style":605},[940],{"type":56,"value":622},{"type":29,"tag":127,"props":942,"children":944},{"style":943},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[945],{"type":56,"value":946},"true\n",{"type":29,"tag":127,"props":948,"children":950},{"class":600,"line":949},20,[951],{"type":29,"tag":127,"props":952,"children":953},{"style":605},[954],{"type":56,"value":955},"      }\n",{"type":29,"tag":127,"props":957,"children":959},{"class":600,"line":958},21,[960],{"type":29,"tag":127,"props":961,"children":962},{"style":605},[963],{"type":56,"value":964},"    },\n",{"type":29,"tag":127,"props":966,"children":968},{"class":600,"line":967},22,[969],{"type":29,"tag":127,"props":970,"children":971},{"style":605},[972],{"type":56,"value":870},{"type":29,"tag":127,"props":974,"children":976},{"class":600,"line":975},23,[977,981,985,989],{"type":29,"tag":127,"props":978,"children":979},{"style":614},[980],{"type":56,"value":879},{"type":29,"tag":127,"props":982,"children":983},{"style":605},[984],{"type":56,"value":622},{"type":29,"tag":127,"props":986,"children":987},{"style":625},[988],{"type":56,"value":888},{"type":29,"tag":127,"props":990,"children":991},{"style":605},[992],{"type":56,"value":633},{"type":29,"tag":127,"props":994,"children":996},{"class":600,"line":995},24,[997,1001,1005,1010],{"type":29,"tag":127,"props":998,"children":999},{"style":614},[1000],{"type":56,"value":901},{"type":29,"tag":127,"props":1002,"children":1003},{"style":605},[1004],{"type":56,"value":622},{"type":29,"tag":127,"props":1006,"children":1007},{"style":625},[1008],{"type":56,"value":1009},"\"custom/plugins/*/packages/*\"",{"type":29,"tag":127,"props":1011,"children":1012},{"style":605},[1013],{"type":56,"value":633},{"type":29,"tag":127,"props":1015,"children":1017},{"class":600,"line":1016},25,[1018,1022],{"type":29,"tag":127,"props":1019,"children":1020},{"style":614},[1021],{"type":56,"value":923},{"type":29,"tag":127,"props":1023,"children":1024},{"style":605},[1025],{"type":56,"value":691},{"type":29,"tag":127,"props":1027,"children":1029},{"class":600,"line":1028},26,[1030,1034,1038],{"type":29,"tag":127,"props":1031,"children":1032},{"style":614},[1033],{"type":56,"value":936},{"type":29,"tag":127,"props":1035,"children":1036},{"style":605},[1037],{"type":56,"value":622},{"type":29,"tag":127,"props":1039,"children":1040},{"style":943},[1041],{"type":56,"value":946},{"type":29,"tag":127,"props":1043,"children":1045},{"class":600,"line":1044},27,[1046],{"type":29,"tag":127,"props":1047,"children":1048},{"style":605},[1049],{"type":56,"value":955},{"type":29,"tag":127,"props":1051,"children":1053},{"class":600,"line":1052},28,[1054],{"type":29,"tag":127,"props":1055,"children":1056},{"style":605},[1057],{"type":56,"value":964},{"type":29,"tag":127,"props":1059,"children":1061},{"class":600,"line":1060},29,[1062],{"type":29,"tag":127,"props":1063,"children":1064},{"style":605},[1065],{"type":56,"value":870},{"type":29,"tag":127,"props":1067,"children":1069},{"class":600,"line":1068},30,[1070,1074,1078,1082],{"type":29,"tag":127,"props":1071,"children":1072},{"style":614},[1073],{"type":56,"value":879},{"type":29,"tag":127,"props":1075,"children":1076},{"style":605},[1077],{"type":56,"value":622},{"type":29,"tag":127,"props":1079,"children":1080},{"style":625},[1081],{"type":56,"value":888},{"type":29,"tag":127,"props":1083,"children":1084},{"style":605},[1085],{"type":56,"value":633},{"type":29,"tag":127,"props":1087,"children":1089},{"class":600,"line":1088},31,[1090,1094,1098,1103],{"type":29,"tag":127,"props":1091,"children":1092},{"style":614},[1093],{"type":56,"value":901},{"type":29,"tag":127,"props":1095,"children":1096},{"style":605},[1097],{"type":56,"value":622},{"type":29,"tag":127,"props":1099,"children":1100},{"style":625},[1101],{"type":56,"value":1102},"\"custom/static-plugins/*\"",{"type":29,"tag":127,"props":1104,"children":1105},{"style":605},[1106],{"type":56,"value":633},{"type":29,"tag":127,"props":1108,"children":1110},{"class":600,"line":1109},32,[1111,1115],{"type":29,"tag":127,"props":1112,"children":1113},{"style":614},[1114],{"type":56,"value":923},{"type":29,"tag":127,"props":1116,"children":1117},{"style":605},[1118],{"type":56,"value":691},{"type":29,"tag":127,"props":1120,"children":1122},{"class":600,"line":1121},33,[1123,1127,1131],{"type":29,"tag":127,"props":1124,"children":1125},{"style":614},[1126],{"type":56,"value":936},{"type":29,"tag":127,"props":1128,"children":1129},{"style":605},[1130],{"type":56,"value":622},{"type":29,"tag":127,"props":1132,"children":1133},{"style":943},[1134],{"type":56,"value":946},{"type":29,"tag":127,"props":1136,"children":1138},{"class":600,"line":1137},34,[1139],{"type":29,"tag":127,"props":1140,"children":1141},{"style":605},[1142],{"type":56,"value":955},{"type":29,"tag":127,"props":1144,"children":1146},{"class":600,"line":1145},35,[1147],{"type":29,"tag":127,"props":1148,"children":1149},{"style":605},[1150],{"type":56,"value":964},{"type":29,"tag":127,"props":1152,"children":1155},{"class":1153,"line":590},[600,1154],"highlight",[1156],{"type":29,"tag":127,"props":1157,"children":1158},{"style":605},[1159],{"type":56,"value":870},{"type":29,"tag":127,"props":1161,"children":1163},{"class":1162,"line":591},[600,1154],[1164,1168,1172,1177],{"type":29,"tag":127,"props":1165,"children":1166},{"style":614},[1167],{"type":56,"value":879},{"type":29,"tag":127,"props":1169,"children":1170},{"style":605},[1171],{"type":56,"value":622},{"type":29,"tag":127,"props":1173,"children":1174},{"style":625},[1175],{"type":56,"value":1176},"\"git\"",{"type":29,"tag":127,"props":1178,"children":1179},{"style":605},[1180],{"type":56,"value":633},{"type":29,"tag":127,"props":1182,"children":1184},{"class":1183,"line":592},[600,1154],[1185,1189,1193],{"type":29,"tag":127,"props":1186,"children":1187},{"style":614},[1188],{"type":56,"value":901},{"type":29,"tag":127,"props":1190,"children":1191},{"style":605},[1192],{"type":56,"value":622},{"type":29,"tag":127,"props":1194,"children":1195},{"style":625},[1196],{"type":56,"value":1197},"\"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n",{"type":29,"tag":127,"props":1199,"children":1201},{"class":1200,"line":593},[600,1154],[1202],{"type":29,"tag":127,"props":1203,"children":1204},{"style":605},[1205],{"type":56,"value":1206},"    }\n",{"type":29,"tag":127,"props":1208,"children":1210},{"class":600,"line":1209},40,[1211],{"type":29,"tag":127,"props":1212,"children":1213},{"style":605},[1214],{"type":56,"value":1215},"  ],\n",{"type":29,"tag":127,"props":1217,"children":1219},{"class":600,"line":1218},41,[1220,1225],{"type":29,"tag":127,"props":1221,"children":1222},{"style":614},[1223],{"type":56,"value":1224},"  \"autoload\"",{"type":29,"tag":127,"props":1226,"children":1227},{"style":605},[1228],{"type":56,"value":691},{"type":29,"tag":127,"props":1230,"children":1232},{"class":600,"line":1231},42,[1233,1238],{"type":29,"tag":127,"props":1234,"children":1235},{"style":614},[1236],{"type":56,"value":1237},"    \"psr-4\"",{"type":29,"tag":127,"props":1239,"children":1240},{"style":605},[1241],{"type":56,"value":691},{"type":29,"tag":127,"props":1243,"children":1245},{"class":600,"line":1244},43,[1246,1251,1257,1262,1266],{"type":29,"tag":127,"props":1247,"children":1248},{"style":614},[1249],{"type":56,"value":1250},"      \"App",{"type":29,"tag":127,"props":1252,"children":1254},{"style":1253},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#AE81FF;--shiki-sepia-font-style:italic",[1255],{"type":56,"value":1256},"\\\\",{"type":29,"tag":127,"props":1258,"children":1259},{"style":614},[1260],{"type":56,"value":1261},"\"",{"type":29,"tag":127,"props":1263,"children":1264},{"style":605},[1265],{"type":56,"value":622},{"type":29,"tag":127,"props":1267,"children":1268},{"style":625},[1269],{"type":56,"value":1270},"\"src/\"\n",{"type":29,"tag":127,"props":1272,"children":1274},{"class":600,"line":1273},44,[1275],{"type":29,"tag":127,"props":1276,"children":1277},{"style":605},[1278],{"type":56,"value":1206},{"type":29,"tag":127,"props":1280,"children":1282},{"class":600,"line":1281},45,[1283],{"type":29,"tag":127,"props":1284,"children":1285},{"style":605},[1286],{"type":56,"value":847},{"type":29,"tag":127,"props":1288,"children":1290},{"class":600,"line":1289},46,[1291,1296,1300,1304],{"type":29,"tag":127,"props":1292,"children":1293},{"style":614},[1294],{"type":56,"value":1295},"  \"prefer-stable\"",{"type":29,"tag":127,"props":1297,"children":1298},{"style":605},[1299],{"type":56,"value":622},{"type":29,"tag":127,"props":1301,"children":1302},{"style":943},[1303],{"type":56,"value":113},{"type":29,"tag":127,"props":1305,"children":1306},{"style":605},[1307],{"type":56,"value":633},{"type":29,"tag":127,"props":1309,"children":1311},{"class":600,"line":1310},47,[1312,1317],{"type":29,"tag":127,"props":1313,"children":1314},{"style":614},[1315],{"type":56,"value":1316},"  \"config\"",{"type":29,"tag":127,"props":1318,"children":1319},{"style":605},[1320],{"type":56,"value":691},{"type":29,"tag":127,"props":1322,"children":1324},{"class":600,"line":1323},48,[1325,1330],{"type":29,"tag":127,"props":1326,"children":1327},{"style":614},[1328],{"type":56,"value":1329},"    \"allow-plugins\"",{"type":29,"tag":127,"props":1331,"children":1332},{"style":605},[1333],{"type":56,"value":691},{"type":29,"tag":127,"props":1335,"children":1337},{"class":600,"line":1336},49,[1338,1343,1347,1351],{"type":29,"tag":127,"props":1339,"children":1340},{"style":614},[1341],{"type":56,"value":1342},"      \"symfony/flex\"",{"type":29,"tag":127,"props":1344,"children":1345},{"style":605},[1346],{"type":56,"value":622},{"type":29,"tag":127,"props":1348,"children":1349},{"style":943},[1350],{"type":56,"value":113},{"type":29,"tag":127,"props":1352,"children":1353},{"style":605},[1354],{"type":56,"value":633},{"type":29,"tag":127,"props":1356,"children":1358},{"class":600,"line":1357},50,[1359,1364,1368],{"type":29,"tag":127,"props":1360,"children":1361},{"style":614},[1362],{"type":56,"value":1363},"      \"symfony/runtime\"",{"type":29,"tag":127,"props":1365,"children":1366},{"style":605},[1367],{"type":56,"value":622},{"type":29,"tag":127,"props":1369,"children":1370},{"style":943},[1371],{"type":56,"value":946},{"type":29,"tag":127,"props":1373,"children":1375},{"class":600,"line":1374},51,[1376],{"type":29,"tag":127,"props":1377,"children":1378},{"style":605},[1379],{"type":56,"value":964},{"type":29,"tag":127,"props":1381,"children":1383},{"class":600,"line":1382},52,[1384,1389,1393,1397],{"type":29,"tag":127,"props":1385,"children":1386},{"style":614},[1387],{"type":56,"value":1388},"    \"optimize-autoloader\"",{"type":29,"tag":127,"props":1390,"children":1391},{"style":605},[1392],{"type":56,"value":622},{"type":29,"tag":127,"props":1394,"children":1395},{"style":943},[1396],{"type":56,"value":113},{"type":29,"tag":127,"props":1398,"children":1399},{"style":605},[1400],{"type":56,"value":633},{"type":29,"tag":127,"props":1402,"children":1404},{"class":600,"line":1403},53,[1405,1410,1414],{"type":29,"tag":127,"props":1406,"children":1407},{"style":614},[1408],{"type":56,"value":1409},"    \"sort-packages\"",{"type":29,"tag":127,"props":1411,"children":1412},{"style":605},[1413],{"type":56,"value":622},{"type":29,"tag":127,"props":1415,"children":1416},{"style":943},[1417],{"type":56,"value":946},{"type":29,"tag":127,"props":1419,"children":1421},{"class":600,"line":1420},54,[1422],{"type":29,"tag":127,"props":1423,"children":1424},{"style":605},[1425],{"type":56,"value":847},{"type":29,"tag":127,"props":1427,"children":1429},{"class":600,"line":1428},55,[1430,1435],{"type":29,"tag":127,"props":1431,"children":1432},{"style":614},[1433],{"type":56,"value":1434},"  \"scripts\"",{"type":29,"tag":127,"props":1436,"children":1437},{"style":605},[1438],{"type":56,"value":691},{"type":29,"tag":127,"props":1440,"children":1442},{"class":600,"line":1441},56,[1443,1448],{"type":29,"tag":127,"props":1444,"children":1445},{"style":614},[1446],{"type":56,"value":1447},"    \"auto-scripts\"",{"type":29,"tag":127,"props":1449,"children":1450},{"style":605},[1451],{"type":56,"value":691},{"type":29,"tag":127,"props":1453,"children":1455},{"class":600,"line":1454},57,[1456,1461,1465],{"type":29,"tag":127,"props":1457,"children":1458},{"style":614},[1459],{"type":56,"value":1460},"      \"assets:install\"",{"type":29,"tag":127,"props":1462,"children":1463},{"style":605},[1464],{"type":56,"value":622},{"type":29,"tag":127,"props":1466,"children":1467},{"style":625},[1468],{"type":56,"value":1469},"\"symfony-cmd\"\n",{"type":29,"tag":127,"props":1471,"children":1473},{"class":600,"line":1472},58,[1474],{"type":29,"tag":127,"props":1475,"children":1476},{"style":605},[1477],{"type":56,"value":964},{"type":29,"tag":127,"props":1479,"children":1481},{"class":600,"line":1480},59,[1482,1487],{"type":29,"tag":127,"props":1483,"children":1484},{"style":614},[1485],{"type":56,"value":1486},"    \"post-install-cmd\"",{"type":29,"tag":127,"props":1488,"children":1489},{"style":605},[1490],{"type":56,"value":861},{"type":29,"tag":127,"props":1492,"children":1494},{"class":600,"line":1493},60,[1495],{"type":29,"tag":127,"props":1496,"children":1497},{"style":625},[1498],{"type":56,"value":1499},"      \"@auto-scripts\"\n",{"type":29,"tag":127,"props":1501,"children":1503},{"class":600,"line":1502},61,[1504],{"type":29,"tag":127,"props":1505,"children":1506},{"style":605},[1507],{"type":56,"value":1508},"    ],\n",{"type":29,"tag":127,"props":1510,"children":1512},{"class":600,"line":1511},62,[1513,1518],{"type":29,"tag":127,"props":1514,"children":1515},{"style":614},[1516],{"type":56,"value":1517},"    \"post-update-cmd\"",{"type":29,"tag":127,"props":1519,"children":1520},{"style":605},[1521],{"type":56,"value":861},{"type":29,"tag":127,"props":1523,"children":1525},{"class":600,"line":1524},63,[1526],{"type":29,"tag":127,"props":1527,"children":1528},{"style":625},[1529],{"type":56,"value":1499},{"type":29,"tag":127,"props":1531,"children":1533},{"class":600,"line":1532},64,[1534],{"type":29,"tag":127,"props":1535,"children":1536},{"style":605},[1537],{"type":56,"value":1538},"    ]\n",{"type":29,"tag":127,"props":1540,"children":1542},{"class":600,"line":1541},65,[1543],{"type":29,"tag":127,"props":1544,"children":1545},{"style":605},[1546],{"type":56,"value":847},{"type":29,"tag":127,"props":1548,"children":1550},{"class":600,"line":1549},66,[1551,1556],{"type":29,"tag":127,"props":1552,"children":1553},{"style":614},[1554],{"type":56,"value":1555},"  \"extra\"",{"type":29,"tag":127,"props":1557,"children":1558},{"style":605},[1559],{"type":56,"value":691},{"type":29,"tag":127,"props":1561,"children":1563},{"class":600,"line":1562},67,[1564,1569],{"type":29,"tag":127,"props":1565,"children":1566},{"style":614},[1567],{"type":56,"value":1568},"    \"symfony\"",{"type":29,"tag":127,"props":1570,"children":1571},{"style":605},[1572],{"type":56,"value":691},{"type":29,"tag":127,"props":1574,"children":1576},{"class":600,"line":1575},68,[1577,1582,1586,1590],{"type":29,"tag":127,"props":1578,"children":1579},{"style":614},[1580],{"type":56,"value":1581},"      \"allow-contrib\"",{"type":29,"tag":127,"props":1583,"children":1584},{"style":605},[1585],{"type":56,"value":622},{"type":29,"tag":127,"props":1587,"children":1588},{"style":943},[1589],{"type":56,"value":113},{"type":29,"tag":127,"props":1591,"children":1592},{"style":605},[1593],{"type":56,"value":633},{"type":29,"tag":127,"props":1595,"children":1597},{"class":600,"line":1596},69,[1598,1603],{"type":29,"tag":127,"props":1599,"children":1600},{"style":614},[1601],{"type":56,"value":1602},"      \"endpoint\"",{"type":29,"tag":127,"props":1604,"children":1605},{"style":605},[1606],{"type":56,"value":861},{"type":29,"tag":127,"props":1608,"children":1610},{"class":600,"line":1609},70,[1611,1616],{"type":29,"tag":127,"props":1612,"children":1613},{"style":625},[1614],{"type":56,"value":1615},"        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\"",{"type":29,"tag":127,"props":1617,"children":1618},{"style":605},[1619],{"type":56,"value":633},{"type":29,"tag":127,"props":1621,"children":1623},{"class":600,"line":1622},71,[1624],{"type":29,"tag":127,"props":1625,"children":1626},{"style":625},[1627],{"type":56,"value":1628},"        \"flex://defaults\"\n",{"type":29,"tag":127,"props":1630,"children":1632},{"class":600,"line":1631},72,[1633],{"type":29,"tag":127,"props":1634,"children":1635},{"style":605},[1636],{"type":56,"value":1637},"      ]\n",{"type":29,"tag":127,"props":1639,"children":1641},{"class":600,"line":1640},73,[1642],{"type":29,"tag":127,"props":1643,"children":1644},{"style":605},[1645],{"type":56,"value":1206},{"type":29,"tag":127,"props":1647,"children":1649},{"class":600,"line":1648},74,[1650],{"type":29,"tag":127,"props":1651,"children":1652},{"style":605},[1653],{"type":56,"value":1654},"  }\n",{"type":29,"tag":127,"props":1656,"children":1658},{"class":600,"line":1657},75,[1659],{"type":29,"tag":127,"props":1660,"children":1661},{"style":605},[1662],{"type":56,"value":1663},"}\n",{"type":29,"tag":48,"props":1665,"children":1666},{},[1667],{"type":56,"value":1668},"und installieren es mit",{"type":29,"tag":584,"props":1670,"children":1674},{"className":1671,"code":1672,"language":1673,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai","composer req acme/sample-plugin\n","shell",[1675],{"type":29,"tag":520,"props":1676,"children":1677},{"__ignoreMap":7},[1678],{"type":29,"tag":127,"props":1679,"children":1680},{"class":600,"line":601},[1681,1686,1692],{"type":29,"tag":127,"props":1682,"children":1684},{"style":1683},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[1685],{"type":56,"value":580},{"type":29,"tag":127,"props":1687,"children":1689},{"style":1688},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[1690],{"type":56,"value":1691}," req",{"type":29,"tag":127,"props":1693,"children":1694},{"style":1688},[1695],{"type":56,"value":1696}," acme/sample-plugin\n",{"type":29,"tag":1698,"props":1699,"children":1701},"v-alert",{"type":1700},"error",[1702],{"type":29,"tag":48,"props":1703,"children":1704},{},[1705],{"type":56,"value":1706},"Could not find a version of package acme/sample-plugin matching your minimum-stability (stable).\nRequire it with an explicit version constraint allowing its desired stability.",{"type":29,"tag":1708,"props":1709,"children":1710},"br",{},[],{"type":29,"tag":48,"props":1712,"children":1713},{},[1714,1716,1722],{"type":56,"value":1715},"Ja... das ist der Nachteil. Wir müssen ",{"type":29,"tag":520,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":56,"value":1721},"dev-master",{"type":56,"value":1723}," als Version verwenden",{"type":29,"tag":584,"props":1725,"children":1727},{"className":1671,"code":1726,"language":1673,"meta":7,"style":7},"composer req acme/sample-plugin:dev-master\n",[1728],{"type":29,"tag":520,"props":1729,"children":1730},{"__ignoreMap":7},[1731],{"type":29,"tag":127,"props":1732,"children":1733},{"class":600,"line":601},[1734,1738,1742],{"type":29,"tag":127,"props":1735,"children":1736},{"style":1683},[1737],{"type":56,"value":580},{"type":29,"tag":127,"props":1739,"children":1740},{"style":1688},[1741],{"type":56,"value":1691},{"type":29,"tag":127,"props":1743,"children":1744},{"style":1688},[1745],{"type":56,"value":1746}," acme/sample-plugin:dev-master\n",{"type":29,"tag":584,"props":1748,"children":1752},{"className":1749,"code":1750,"language":1751,"meta":7,"style":7},"language-output shiki shiki-themes github-dark github-dark monokai","./composer.json has been updated\nRunning composer update acme/sample-plugin\nLoading composer repositories with package information                                                                \nUpdating dependencies                                 \nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (dev-master 294414d)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n","output",[1753],{"type":29,"tag":520,"props":1754,"children":1755},{"__ignoreMap":7},[1756,1764,1772,1780,1788,1796,1804,1812,1820,1828,1836,1844,1852,1861,1869,1876],{"type":29,"tag":127,"props":1757,"children":1758},{"class":600,"line":601},[1759],{"type":29,"tag":127,"props":1760,"children":1761},{},[1762],{"type":56,"value":1763},"./composer.json has been updated\n",{"type":29,"tag":127,"props":1765,"children":1766},{"class":600,"line":271},[1767],{"type":29,"tag":127,"props":1768,"children":1769},{},[1770],{"type":56,"value":1771},"Running composer update acme/sample-plugin\n",{"type":29,"tag":127,"props":1773,"children":1774},{"class":600,"line":636},[1775],{"type":29,"tag":127,"props":1776,"children":1777},{},[1778],{"type":56,"value":1779},"Loading composer repositories with package information                                                                \n",{"type":29,"tag":127,"props":1781,"children":1782},{"class":600,"line":658},[1783],{"type":29,"tag":127,"props":1784,"children":1785},{},[1786],{"type":56,"value":1787},"Updating dependencies                                 \n",{"type":29,"tag":127,"props":1789,"children":1790},{"class":600,"line":680},[1791],{"type":29,"tag":127,"props":1792,"children":1793},{},[1794],{"type":56,"value":1795},"Lock file operations: 1 install, 0 updates, 0 removals\n",{"type":29,"tag":127,"props":1797,"children":1798},{"class":600,"line":694},[1799],{"type":29,"tag":127,"props":1800,"children":1801},{},[1802],{"type":56,"value":1803},"  - Locking acme/sample-plugin (dev-master 294414d)\n",{"type":29,"tag":127,"props":1805,"children":1806},{"class":600,"line":716},[1807],{"type":29,"tag":127,"props":1808,"children":1809},{},[1810],{"type":56,"value":1811},"Writing lock file\n",{"type":29,"tag":127,"props":1813,"children":1814},{"class":600,"line":738},[1815],{"type":29,"tag":127,"props":1816,"children":1817},{},[1818],{"type":56,"value":1819},"Installing dependencies from lock file (including require-dev)\n",{"type":29,"tag":127,"props":1821,"children":1822},{"class":600,"line":760},[1823],{"type":29,"tag":127,"props":1824,"children":1825},{},[1826],{"type":56,"value":1827},"Package operations: 1 install, 0 updates, 0 removals\n",{"type":29,"tag":127,"props":1829,"children":1830},{"class":600,"line":782},[1831],{"type":29,"tag":127,"props":1832,"children":1833},{},[1834],{"type":56,"value":1835},"  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n",{"type":29,"tag":127,"props":1837,"children":1838},{"class":600,"line":803},[1839],{"type":29,"tag":127,"props":1840,"children":1841},{},[1842],{"type":56,"value":1843},"  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\n",{"type":29,"tag":127,"props":1845,"children":1846},{"class":600,"line":118},[1847],{"type":29,"tag":127,"props":1848,"children":1849},{},[1850],{"type":56,"value":1851},"Generating optimized autoload files\n",{"type":29,"tag":127,"props":1853,"children":1854},{"class":600,"line":841},[1855],{"type":29,"tag":127,"props":1856,"children":1858},{"emptyLinePlaceholder":1857},true,[1859],{"type":56,"value":1860},"\n",{"type":29,"tag":127,"props":1862,"children":1863},{"class":600,"line":850},[1864],{"type":29,"tag":127,"props":1865,"children":1866},{},[1867],{"type":56,"value":1868},"Run composer recipes at any time to see the status of your Symfony recipes.\n",{"type":29,"tag":127,"props":1870,"children":1871},{"class":600,"line":864},[1872],{"type":29,"tag":127,"props":1873,"children":1874},{"emptyLinePlaceholder":1857},[1875],{"type":56,"value":1860},{"type":29,"tag":127,"props":1877,"children":1878},{"class":600,"line":873},[1879],{"type":29,"tag":127,"props":1880,"children":1881},{},[1882],{"type":56,"value":1883},"Executing script assets:install [OK]\n",{"type":29,"tag":48,"props":1885,"children":1886},{},[1887,1889,1895],{"type":56,"value":1888},"Composer wird ",{"type":29,"tag":520,"props":1890,"children":1892},{"className":1891},[],[1893],{"type":56,"value":1894},"git",{"type":56,"value":1896}," verwenden, um unser Repository zu klonen, und den Standard-Branch sowie den Commit-Hash verwenden, um den Release zu verfolgen.",{"type":29,"tag":48,"props":1898,"children":1899},{},[1900],{"type":56,"value":1901},"Das funktioniert, aber wir können es besser machen.",{"type":29,"tag":122,"props":1903,"children":1905},{"id":1904},"git-tags",[1906],{"type":56,"value":1907},"Git Tags",{"type":29,"tag":48,"props":1909,"children":1910},{},[1911,1913,1919],{"type":56,"value":1912},"Wir taggen nun unser Plugin als ",{"type":29,"tag":520,"props":1914,"children":1916},{"className":1915},[],[1917],{"type":56,"value":1918},"v1.0.0",{"type":56,"value":498},{"type":29,"tag":48,"props":1921,"children":1922},{},[1923,1925,1931,1933,1939],{"type":56,"value":1924},"Bitte beachten, dass Sie die ",{"type":29,"tag":520,"props":1926,"children":1928},{"className":1927},[],[1929],{"type":56,"value":1930},"version",{"type":56,"value":1932}," in der ",{"type":29,"tag":520,"props":1934,"children":1936},{"className":1935},[],[1937],{"type":56,"value":1938},"composer.json",{"type":56,"value":1940}," gesetzt ist.",{"type":29,"tag":584,"props":1942,"children":1946},{"className":586,"code":1943,"filename":1944,"highlights":1945,"language":384,"meta":7,"style":7},"{\n    \"name\": \"acme/sample-plugin\",\n    \"description\": \"acme/sample-plugin\",\n    \"type\": \"shopware-platform-plugin\",\n    \"version\": \"1.0.0\",\n    \"license\": \"MIT\",\n    \"require\": {\n        \"shopware/core\": \"~6.6.0\"\n    },\n    \"extra\": {\n        \"shopware-plugin-class\": \"Acme\\\\SamplePlugin\",\n        \"label\": {\n            \"de-DE\": \"Skeleton plugin\",\n            \"en-GB\": \"Skeleton plugin\"\n        }\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"Acme\\\\\": \"src/\"\n        }\n    },\n    \"autoload-dev\": {\n        \"psr-4\": {\n            \"Acme\\\\Tests\\\\\": \"tests/\"\n        }\n    }\n}\n\n","\u003Cplugin-root>/composer.json",[680],[1947],{"type":29,"tag":520,"props":1948,"children":1949},{"__ignoreMap":7},[1950,1957,1978,1998,2019,2041,2061,2073,2090,2097,2109,2139,2151,2172,2189,2197,2204,2216,2228,2252,2259,2266,2278,2289,2322,2329,2336],{"type":29,"tag":127,"props":1951,"children":1952},{"class":600,"line":601},[1953],{"type":29,"tag":127,"props":1954,"children":1955},{"style":605},[1956],{"type":56,"value":608},{"type":29,"tag":127,"props":1958,"children":1959},{"class":600,"line":271},[1960,1965,1969,1974],{"type":29,"tag":127,"props":1961,"children":1962},{"style":614},[1963],{"type":56,"value":1964},"    \"name\"",{"type":29,"tag":127,"props":1966,"children":1967},{"style":605},[1968],{"type":56,"value":622},{"type":29,"tag":127,"props":1970,"children":1971},{"style":625},[1972],{"type":56,"value":1973},"\"acme/sample-plugin\"",{"type":29,"tag":127,"props":1975,"children":1976},{"style":605},[1977],{"type":56,"value":633},{"type":29,"tag":127,"props":1979,"children":1980},{"class":600,"line":636},[1981,1986,1990,1994],{"type":29,"tag":127,"props":1982,"children":1983},{"style":614},[1984],{"type":56,"value":1985},"    \"description\"",{"type":29,"tag":127,"props":1987,"children":1988},{"style":605},[1989],{"type":56,"value":622},{"type":29,"tag":127,"props":1991,"children":1992},{"style":625},[1993],{"type":56,"value":1973},{"type":29,"tag":127,"props":1995,"children":1996},{"style":605},[1997],{"type":56,"value":633},{"type":29,"tag":127,"props":1999,"children":2000},{"class":600,"line":658},[2001,2006,2010,2015],{"type":29,"tag":127,"props":2002,"children":2003},{"style":614},[2004],{"type":56,"value":2005},"    \"type\"",{"type":29,"tag":127,"props":2007,"children":2008},{"style":605},[2009],{"type":56,"value":622},{"type":29,"tag":127,"props":2011,"children":2012},{"style":625},[2013],{"type":56,"value":2014},"\"shopware-platform-plugin\"",{"type":29,"tag":127,"props":2016,"children":2017},{"style":605},[2018],{"type":56,"value":633},{"type":29,"tag":127,"props":2020,"children":2022},{"class":2021,"line":680},[600,1154],[2023,2028,2032,2037],{"type":29,"tag":127,"props":2024,"children":2025},{"style":614},[2026],{"type":56,"value":2027},"    \"version\"",{"type":29,"tag":127,"props":2029,"children":2030},{"style":605},[2031],{"type":56,"value":622},{"type":29,"tag":127,"props":2033,"children":2034},{"style":625},[2035],{"type":56,"value":2036},"\"1.0.0\"",{"type":29,"tag":127,"props":2038,"children":2039},{"style":605},[2040],{"type":56,"value":633},{"type":29,"tag":127,"props":2042,"children":2043},{"class":600,"line":694},[2044,2049,2053,2057],{"type":29,"tag":127,"props":2045,"children":2046},{"style":614},[2047],{"type":56,"value":2048},"    \"license\"",{"type":29,"tag":127,"props":2050,"children":2051},{"style":605},[2052],{"type":56,"value":622},{"type":29,"tag":127,"props":2054,"children":2055},{"style":625},[2056],{"type":56,"value":651},{"type":29,"tag":127,"props":2058,"children":2059},{"style":605},[2060],{"type":56,"value":633},{"type":29,"tag":127,"props":2062,"children":2063},{"class":600,"line":716},[2064,2069],{"type":29,"tag":127,"props":2065,"children":2066},{"style":614},[2067],{"type":56,"value":2068},"    \"require\"",{"type":29,"tag":127,"props":2070,"children":2071},{"style":605},[2072],{"type":56,"value":691},{"type":29,"tag":127,"props":2074,"children":2075},{"class":600,"line":738},[2076,2081,2085],{"type":29,"tag":127,"props":2077,"children":2078},{"style":614},[2079],{"type":56,"value":2080},"        \"shopware/core\"",{"type":29,"tag":127,"props":2082,"children":2083},{"style":605},[2084],{"type":56,"value":622},{"type":29,"tag":127,"props":2086,"children":2087},{"style":625},[2088],{"type":56,"value":2089},"\"~6.6.0\"\n",{"type":29,"tag":127,"props":2091,"children":2092},{"class":600,"line":760},[2093],{"type":29,"tag":127,"props":2094,"children":2095},{"style":605},[2096],{"type":56,"value":964},{"type":29,"tag":127,"props":2098,"children":2099},{"class":600,"line":782},[2100,2105],{"type":29,"tag":127,"props":2101,"children":2102},{"style":614},[2103],{"type":56,"value":2104},"    \"extra\"",{"type":29,"tag":127,"props":2106,"children":2107},{"style":605},[2108],{"type":56,"value":691},{"type":29,"tag":127,"props":2110,"children":2111},{"class":600,"line":803},[2112,2117,2121,2126,2130,2135],{"type":29,"tag":127,"props":2113,"children":2114},{"style":614},[2115],{"type":56,"value":2116},"        \"shopware-plugin-class\"",{"type":29,"tag":127,"props":2118,"children":2119},{"style":605},[2120],{"type":56,"value":622},{"type":29,"tag":127,"props":2122,"children":2123},{"style":625},[2124],{"type":56,"value":2125},"\"Acme",{"type":29,"tag":127,"props":2127,"children":2128},{"style":943},[2129],{"type":56,"value":1256},{"type":29,"tag":127,"props":2131,"children":2132},{"style":625},[2133],{"type":56,"value":2134},"SamplePlugin\"",{"type":29,"tag":127,"props":2136,"children":2137},{"style":605},[2138],{"type":56,"value":633},{"type":29,"tag":127,"props":2140,"children":2141},{"class":600,"line":118},[2142,2147],{"type":29,"tag":127,"props":2143,"children":2144},{"style":614},[2145],{"type":56,"value":2146},"        \"label\"",{"type":29,"tag":127,"props":2148,"children":2149},{"style":605},[2150],{"type":56,"value":691},{"type":29,"tag":127,"props":2152,"children":2153},{"class":600,"line":841},[2154,2159,2163,2168],{"type":29,"tag":127,"props":2155,"children":2156},{"style":614},[2157],{"type":56,"value":2158},"            \"de-DE\"",{"type":29,"tag":127,"props":2160,"children":2161},{"style":605},[2162],{"type":56,"value":622},{"type":29,"tag":127,"props":2164,"children":2165},{"style":625},[2166],{"type":56,"value":2167},"\"Skeleton plugin\"",{"type":29,"tag":127,"props":2169,"children":2170},{"style":605},[2171],{"type":56,"value":633},{"type":29,"tag":127,"props":2173,"children":2174},{"class":600,"line":850},[2175,2180,2184],{"type":29,"tag":127,"props":2176,"children":2177},{"style":614},[2178],{"type":56,"value":2179},"            \"en-GB\"",{"type":29,"tag":127,"props":2181,"children":2182},{"style":605},[2183],{"type":56,"value":622},{"type":29,"tag":127,"props":2185,"children":2186},{"style":625},[2187],{"type":56,"value":2188},"\"Skeleton plugin\"\n",{"type":29,"tag":127,"props":2190,"children":2191},{"class":600,"line":864},[2192],{"type":29,"tag":127,"props":2193,"children":2194},{"style":605},[2195],{"type":56,"value":2196},"        }\n",{"type":29,"tag":127,"props":2198,"children":2199},{"class":600,"line":873},[2200],{"type":29,"tag":127,"props":2201,"children":2202},{"style":605},[2203],{"type":56,"value":964},{"type":29,"tag":127,"props":2205,"children":2206},{"class":600,"line":895},[2207,2212],{"type":29,"tag":127,"props":2208,"children":2209},{"style":614},[2210],{"type":56,"value":2211},"    \"autoload\"",{"type":29,"tag":127,"props":2213,"children":2214},{"style":605},[2215],{"type":56,"value":691},{"type":29,"tag":127,"props":2217,"children":2218},{"class":600,"line":917},[2219,2224],{"type":29,"tag":127,"props":2220,"children":2221},{"style":614},[2222],{"type":56,"value":2223},"        \"psr-4\"",{"type":29,"tag":127,"props":2225,"children":2226},{"style":605},[2227],{"type":56,"value":691},{"type":29,"tag":127,"props":2229,"children":2230},{"class":600,"line":930},[2231,2236,2240,2244,2248],{"type":29,"tag":127,"props":2232,"children":2233},{"style":614},[2234],{"type":56,"value":2235},"            \"Acme",{"type":29,"tag":127,"props":2237,"children":2238},{"style":1253},[2239],{"type":56,"value":1256},{"type":29,"tag":127,"props":2241,"children":2242},{"style":614},[2243],{"type":56,"value":1261},{"type":29,"tag":127,"props":2245,"children":2246},{"style":605},[2247],{"type":56,"value":622},{"type":29,"tag":127,"props":2249,"children":2250},{"style":625},[2251],{"type":56,"value":1270},{"type":29,"tag":127,"props":2253,"children":2254},{"class":600,"line":949},[2255],{"type":29,"tag":127,"props":2256,"children":2257},{"style":605},[2258],{"type":56,"value":2196},{"type":29,"tag":127,"props":2260,"children":2261},{"class":600,"line":958},[2262],{"type":29,"tag":127,"props":2263,"children":2264},{"style":605},[2265],{"type":56,"value":964},{"type":29,"tag":127,"props":2267,"children":2268},{"class":600,"line":967},[2269,2274],{"type":29,"tag":127,"props":2270,"children":2271},{"style":614},[2272],{"type":56,"value":2273},"    \"autoload-dev\"",{"type":29,"tag":127,"props":2275,"children":2276},{"style":605},[2277],{"type":56,"value":691},{"type":29,"tag":127,"props":2279,"children":2280},{"class":600,"line":975},[2281,2285],{"type":29,"tag":127,"props":2282,"children":2283},{"style":614},[2284],{"type":56,"value":2223},{"type":29,"tag":127,"props":2286,"children":2287},{"style":605},[2288],{"type":56,"value":691},{"type":29,"tag":127,"props":2290,"children":2291},{"class":600,"line":995},[2292,2296,2300,2305,2309,2313,2317],{"type":29,"tag":127,"props":2293,"children":2294},{"style":614},[2295],{"type":56,"value":2235},{"type":29,"tag":127,"props":2297,"children":2298},{"style":1253},[2299],{"type":56,"value":1256},{"type":29,"tag":127,"props":2301,"children":2302},{"style":614},[2303],{"type":56,"value":2304},"Tests",{"type":29,"tag":127,"props":2306,"children":2307},{"style":1253},[2308],{"type":56,"value":1256},{"type":29,"tag":127,"props":2310,"children":2311},{"style":614},[2312],{"type":56,"value":1261},{"type":29,"tag":127,"props":2314,"children":2315},{"style":605},[2316],{"type":56,"value":622},{"type":29,"tag":127,"props":2318,"children":2319},{"style":625},[2320],{"type":56,"value":2321},"\"tests/\"\n",{"type":29,"tag":127,"props":2323,"children":2324},{"class":600,"line":1016},[2325],{"type":29,"tag":127,"props":2326,"children":2327},{"style":605},[2328],{"type":56,"value":2196},{"type":29,"tag":127,"props":2330,"children":2331},{"class":600,"line":1028},[2332],{"type":29,"tag":127,"props":2333,"children":2334},{"style":605},[2335],{"type":56,"value":1206},{"type":29,"tag":127,"props":2337,"children":2338},{"class":600,"line":1044},[2339],{"type":29,"tag":127,"props":2340,"children":2341},{"style":605},[2342],{"type":56,"value":1663},{"type":29,"tag":584,"props":2344,"children":2346},{"className":1671,"code":2345,"language":1673,"meta":7,"style":7},"git tag v1.0.0\ngit push --tags\n",[2347],{"type":29,"tag":520,"props":2348,"children":2349},{"__ignoreMap":7},[2350,2367],{"type":29,"tag":127,"props":2351,"children":2352},{"class":600,"line":601},[2353,2357,2362],{"type":29,"tag":127,"props":2354,"children":2355},{"style":1683},[2356],{"type":56,"value":1894},{"type":29,"tag":127,"props":2358,"children":2359},{"style":1688},[2360],{"type":56,"value":2361}," tag",{"type":29,"tag":127,"props":2363,"children":2364},{"style":1688},[2365],{"type":56,"value":2366}," v1.0.0\n",{"type":29,"tag":127,"props":2368,"children":2369},{"class":600,"line":271},[2370,2374,2379],{"type":29,"tag":127,"props":2371,"children":2372},{"style":1683},[2373],{"type":56,"value":1894},{"type":29,"tag":127,"props":2375,"children":2376},{"style":1688},[2377],{"type":56,"value":2378}," push",{"type":29,"tag":127,"props":2380,"children":2381},{"style":943},[2382],{"type":56,"value":2383}," --tags\n",{"type":29,"tag":48,"props":2385,"children":2386},{},[2387],{"type":56,"value":2388},"Nun wird dies funktionieren:",{"type":29,"tag":584,"props":2390,"children":2391},{"className":1671,"code":1672,"language":1673,"meta":7,"style":7},[2392],{"type":29,"tag":520,"props":2393,"children":2394},{"__ignoreMap":7},[2395],{"type":29,"tag":127,"props":2396,"children":2397},{"class":600,"line":601},[2398,2402,2406],{"type":29,"tag":127,"props":2399,"children":2400},{"style":1683},[2401],{"type":56,"value":580},{"type":29,"tag":127,"props":2403,"children":2404},{"style":1688},[2405],{"type":56,"value":1691},{"type":29,"tag":127,"props":2407,"children":2408},{"style":1688},[2409],{"type":56,"value":1696},{"type":29,"tag":584,"props":2411,"children":2415},{"className":2412,"code":2413,"language":2414,"meta":7,"style":7},"language-terminaloutput shiki shiki-themes github-dark github-dark monokai","./composer.json has been updated                                                                                                            \nRunning composer update acme/sample-plugin\nLoading composer repositories with package information\nUpdating dependencies\nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (1.0.0)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Syncing acme/sample-plugin (1.0.0) into cache\n  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n\nUsing version ^1.0 for acme/sample-plugin\n","terminaloutput",[2416],{"type":29,"tag":520,"props":2417,"children":2418},{"__ignoreMap":7},[2419,2427,2434,2442,2450,2457,2465,2472,2479,2486,2494,2502,2509,2516,2523,2530,2537,2544],{"type":29,"tag":127,"props":2420,"children":2421},{"class":600,"line":601},[2422],{"type":29,"tag":127,"props":2423,"children":2424},{},[2425],{"type":56,"value":2426},"./composer.json has been updated                                                                                                            \n",{"type":29,"tag":127,"props":2428,"children":2429},{"class":600,"line":271},[2430],{"type":29,"tag":127,"props":2431,"children":2432},{},[2433],{"type":56,"value":1771},{"type":29,"tag":127,"props":2435,"children":2436},{"class":600,"line":636},[2437],{"type":29,"tag":127,"props":2438,"children":2439},{},[2440],{"type":56,"value":2441},"Loading composer repositories with package information\n",{"type":29,"tag":127,"props":2443,"children":2444},{"class":600,"line":658},[2445],{"type":29,"tag":127,"props":2446,"children":2447},{},[2448],{"type":56,"value":2449},"Updating dependencies\n",{"type":29,"tag":127,"props":2451,"children":2452},{"class":600,"line":680},[2453],{"type":29,"tag":127,"props":2454,"children":2455},{},[2456],{"type":56,"value":1795},{"type":29,"tag":127,"props":2458,"children":2459},{"class":600,"line":694},[2460],{"type":29,"tag":127,"props":2461,"children":2462},{},[2463],{"type":56,"value":2464},"  - Locking acme/sample-plugin (1.0.0)\n",{"type":29,"tag":127,"props":2466,"children":2467},{"class":600,"line":716},[2468],{"type":29,"tag":127,"props":2469,"children":2470},{},[2471],{"type":56,"value":1811},{"type":29,"tag":127,"props":2473,"children":2474},{"class":600,"line":738},[2475],{"type":29,"tag":127,"props":2476,"children":2477},{},[2478],{"type":56,"value":1819},{"type":29,"tag":127,"props":2480,"children":2481},{"class":600,"line":760},[2482],{"type":29,"tag":127,"props":2483,"children":2484},{},[2485],{"type":56,"value":1827},{"type":29,"tag":127,"props":2487,"children":2488},{"class":600,"line":782},[2489],{"type":29,"tag":127,"props":2490,"children":2491},{},[2492],{"type":56,"value":2493},"  - Syncing acme/sample-plugin (1.0.0) into cache\n",{"type":29,"tag":127,"props":2495,"children":2496},{"class":600,"line":803},[2497],{"type":29,"tag":127,"props":2498,"children":2499},{},[2500],{"type":56,"value":2501},"  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\n",{"type":29,"tag":127,"props":2503,"children":2504},{"class":600,"line":118},[2505],{"type":29,"tag":127,"props":2506,"children":2507},{},[2508],{"type":56,"value":1851},{"type":29,"tag":127,"props":2510,"children":2511},{"class":600,"line":841},[2512],{"type":29,"tag":127,"props":2513,"children":2514},{"emptyLinePlaceholder":1857},[2515],{"type":56,"value":1860},{"type":29,"tag":127,"props":2517,"children":2518},{"class":600,"line":850},[2519],{"type":29,"tag":127,"props":2520,"children":2521},{},[2522],{"type":56,"value":1868},{"type":29,"tag":127,"props":2524,"children":2525},{"class":600,"line":864},[2526],{"type":29,"tag":127,"props":2527,"children":2528},{"emptyLinePlaceholder":1857},[2529],{"type":56,"value":1860},{"type":29,"tag":127,"props":2531,"children":2532},{"class":600,"line":873},[2533],{"type":29,"tag":127,"props":2534,"children":2535},{},[2536],{"type":56,"value":1883},{"type":29,"tag":127,"props":2538,"children":2539},{"class":600,"line":895},[2540],{"type":29,"tag":127,"props":2541,"children":2542},{"emptyLinePlaceholder":1857},[2543],{"type":56,"value":1860},{"type":29,"tag":127,"props":2545,"children":2546},{"class":600,"line":917},[2547],{"type":29,"tag":127,"props":2548,"children":2549},{},[2550],{"type":56,"value":2551},"Using version ^1.0 for acme/sample-plugin\n",{"type":29,"tag":48,"props":2553,"children":2554},{},[2555,2557,2562],{"type":56,"value":2556},"Das ist besser, aber wir verwenden immer noch ",{"type":29,"tag":520,"props":2558,"children":2560},{"className":2559},[],[2561],{"type":56,"value":1894},{"type":56,"value":2563},", um das Plugin abzurufen. Wir können es noch besser machen.",{"type":29,"tag":122,"props":2565,"children":2567},{"id":2566},"gitlab-package-registry",[2568],{"type":56,"value":2569},"GitLab Package Registry",{"type":29,"tag":48,"props":2571,"children":2572},{},[2573,2575,2580],{"type":56,"value":2574},"Hier beginnt der GitLab-Teil. Weitere Details sind in der ",{"type":29,"tag":491,"props":2576,"children":2578},{"href":2577},"https://docs.gitlab.com/18.3/user/packages/composer_repository/",[2579],{"type":56,"value":496},{"type":56,"value":2581}," zu finden.",{"type":29,"tag":48,"props":2583,"children":2584},{},[2585],{"type":56,"value":2586},"An dieser Stelle spielt es keine Rolle, ob unser Projekt öffentlich ist oder nicht, da wir uns ohnehin gegenüber der Package Registry authentifizieren müssen.",{"type":29,"tag":48,"props":2588,"children":2589},{},[2590,2592,2597],{"type":56,"value":2591},"Wir veröffentlichen unseren ",{"type":29,"tag":520,"props":2593,"children":2595},{"className":2594},[],[2596],{"type":56,"value":1918},{"type":56,"value":2598},"-Tag als Composer-Paket.",{"type":29,"tag":584,"props":2600,"children":2602},{"className":1671,"code":2601,"language":1673,"meta":7,"style":7},"curl --fail-with-body --data tag=v1.0.0 \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",[2603],{"type":29,"tag":520,"props":2604,"children":2605},{"__ignoreMap":7},[2606],{"type":29,"tag":127,"props":2607,"children":2608},{"class":600,"line":601},[2609,2614,2619,2624,2629],{"type":29,"tag":127,"props":2610,"children":2611},{"style":1683},[2612],{"type":56,"value":2613},"curl",{"type":29,"tag":127,"props":2615,"children":2616},{"style":943},[2617],{"type":56,"value":2618}," --fail-with-body",{"type":29,"tag":127,"props":2620,"children":2621},{"style":943},[2622],{"type":56,"value":2623}," --data",{"type":29,"tag":127,"props":2625,"children":2626},{"style":1688},[2627],{"type":56,"value":2628}," tag=v1.0.0",{"type":29,"tag":127,"props":2630,"children":2631},{"style":1688},[2632],{"type":56,"value":2633}," \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",{"type":29,"tag":48,"props":2635,"children":2636},{},[2637],{"type":56,"value":2638},"Nun müssen wir die Repository-Informationen aktualisieren:",{"type":29,"tag":584,"props":2640,"children":2643},{"className":586,"code":2641,"filename":588,"highlights":2642,"language":384,"meta":7,"style":7},"{\n  \"name\": \"shopware/production\",\n  \"license\": \"MIT\",\n  \"type\": \"project\",\n  \"require\": {\n    \"composer-runtime-api\": \"^2.0\",\n    \"acme/sample-plugin\": \"^1.0\",\n    \"shopware/administration\": \"*\",\n    \"shopware/core\": \"6.6.10.2\",\n    \"shopware/elasticsearch\": \"*\",\n    \"shopware/storefront\": \"*\",\n    \"symfony/flex\": \"~2\"\n  },\n  \"repositories\": [\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/plugins/*/packages/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"path\",\n      \"url\": \"custom/static-plugins/*\",\n      \"options\": {\n        \"symlink\": true\n      }\n    },\n    {\n      \"type\": \"composer\",\n      \"url\": \"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n    }\n  ],\n  \"autoload\": {\n    \"psr-4\": {\n      \"App\\\\\": \"src/\"\n    }\n  },\n  \"prefer-stable\": true,\n  \"config\": {\n    \"allow-plugins\": {\n      \"symfony/flex\": true,\n      \"symfony/runtime\": true\n    },\n    \"optimize-autoloader\": true,\n    \"sort-packages\": true\n  },\n  \"scripts\": {\n    \"auto-scripts\": {\n      \"assets:install\": \"symfony-cmd\"\n    },\n    \"post-install-cmd\": [\n      \"@auto-scripts\"\n    ],\n    \"post-update-cmd\": [\n      \"@auto-scripts\"\n    ]\n  },\n  \"extra\": {\n    \"symfony\": {\n      \"allow-contrib\": true,\n      \"endpoint\": [\n        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\",\n        \"flex://defaults\"\n      ]\n    }\n  }\n}\n",[590,591,592,593],[2644],{"type":29,"tag":520,"props":2645,"children":2646},{"__ignoreMap":7},[2647,2654,2673,2692,2711,2722,2741,2760,2779,2798,2817,2836,2851,2858,2869,2876,2895,2914,2925,2940,2947,2954,2961,2980,2999,3010,3025,3032,3039,3046,3065,3084,3095,3110,3117,3124,3132,3153,3170,3178,3185,3196,3207,3230,3237,3244,3263,3274,3285,3304,3319,3326,3345,3360,3367,3378,3389,3404,3411,3422,3429,3436,3447,3454,3461,3468,3479,3490,3509,3520,3531,3538,3545,3552,3559],{"type":29,"tag":127,"props":2648,"children":2649},{"class":600,"line":601},[2650],{"type":29,"tag":127,"props":2651,"children":2652},{"style":605},[2653],{"type":56,"value":608},{"type":29,"tag":127,"props":2655,"children":2656},{"class":600,"line":271},[2657,2661,2665,2669],{"type":29,"tag":127,"props":2658,"children":2659},{"style":614},[2660],{"type":56,"value":617},{"type":29,"tag":127,"props":2662,"children":2663},{"style":605},[2664],{"type":56,"value":622},{"type":29,"tag":127,"props":2666,"children":2667},{"style":625},[2668],{"type":56,"value":628},{"type":29,"tag":127,"props":2670,"children":2671},{"style":605},[2672],{"type":56,"value":633},{"type":29,"tag":127,"props":2674,"children":2675},{"class":600,"line":636},[2676,2680,2684,2688],{"type":29,"tag":127,"props":2677,"children":2678},{"style":614},[2679],{"type":56,"value":642},{"type":29,"tag":127,"props":2681,"children":2682},{"style":605},[2683],{"type":56,"value":622},{"type":29,"tag":127,"props":2685,"children":2686},{"style":625},[2687],{"type":56,"value":651},{"type":29,"tag":127,"props":2689,"children":2690},{"style":605},[2691],{"type":56,"value":633},{"type":29,"tag":127,"props":2693,"children":2694},{"class":600,"line":658},[2695,2699,2703,2707],{"type":29,"tag":127,"props":2696,"children":2697},{"style":614},[2698],{"type":56,"value":664},{"type":29,"tag":127,"props":2700,"children":2701},{"style":605},[2702],{"type":56,"value":622},{"type":29,"tag":127,"props":2704,"children":2705},{"style":625},[2706],{"type":56,"value":673},{"type":29,"tag":127,"props":2708,"children":2709},{"style":605},[2710],{"type":56,"value":633},{"type":29,"tag":127,"props":2712,"children":2713},{"class":600,"line":680},[2714,2718],{"type":29,"tag":127,"props":2715,"children":2716},{"style":614},[2717],{"type":56,"value":686},{"type":29,"tag":127,"props":2719,"children":2720},{"style":605},[2721],{"type":56,"value":691},{"type":29,"tag":127,"props":2723,"children":2724},{"class":600,"line":694},[2725,2729,2733,2737],{"type":29,"tag":127,"props":2726,"children":2727},{"style":614},[2728],{"type":56,"value":700},{"type":29,"tag":127,"props":2730,"children":2731},{"style":605},[2732],{"type":56,"value":622},{"type":29,"tag":127,"props":2734,"children":2735},{"style":625},[2736],{"type":56,"value":709},{"type":29,"tag":127,"props":2738,"children":2739},{"style":605},[2740],{"type":56,"value":633},{"type":29,"tag":127,"props":2742,"children":2743},{"class":600,"line":716},[2744,2748,2752,2756],{"type":29,"tag":127,"props":2745,"children":2746},{"style":614},[2747],{"type":56,"value":722},{"type":29,"tag":127,"props":2749,"children":2750},{"style":605},[2751],{"type":56,"value":622},{"type":29,"tag":127,"props":2753,"children":2754},{"style":625},[2755],{"type":56,"value":731},{"type":29,"tag":127,"props":2757,"children":2758},{"style":605},[2759],{"type":56,"value":633},{"type":29,"tag":127,"props":2761,"children":2762},{"class":600,"line":738},[2763,2767,2771,2775],{"type":29,"tag":127,"props":2764,"children":2765},{"style":614},[2766],{"type":56,"value":744},{"type":29,"tag":127,"props":2768,"children":2769},{"style":605},[2770],{"type":56,"value":622},{"type":29,"tag":127,"props":2772,"children":2773},{"style":625},[2774],{"type":56,"value":753},{"type":29,"tag":127,"props":2776,"children":2777},{"style":605},[2778],{"type":56,"value":633},{"type":29,"tag":127,"props":2780,"children":2781},{"class":600,"line":760},[2782,2786,2790,2794],{"type":29,"tag":127,"props":2783,"children":2784},{"style":614},[2785],{"type":56,"value":766},{"type":29,"tag":127,"props":2787,"children":2788},{"style":605},[2789],{"type":56,"value":622},{"type":29,"tag":127,"props":2791,"children":2792},{"style":625},[2793],{"type":56,"value":775},{"type":29,"tag":127,"props":2795,"children":2796},{"style":605},[2797],{"type":56,"value":633},{"type":29,"tag":127,"props":2799,"children":2800},{"class":600,"line":782},[2801,2805,2809,2813],{"type":29,"tag":127,"props":2802,"children":2803},{"style":614},[2804],{"type":56,"value":788},{"type":29,"tag":127,"props":2806,"children":2807},{"style":605},[2808],{"type":56,"value":622},{"type":29,"tag":127,"props":2810,"children":2811},{"style":625},[2812],{"type":56,"value":753},{"type":29,"tag":127,"props":2814,"children":2815},{"style":605},[2816],{"type":56,"value":633},{"type":29,"tag":127,"props":2818,"children":2819},{"class":600,"line":803},[2820,2824,2828,2832],{"type":29,"tag":127,"props":2821,"children":2822},{"style":614},[2823],{"type":56,"value":809},{"type":29,"tag":127,"props":2825,"children":2826},{"style":605},[2827],{"type":56,"value":622},{"type":29,"tag":127,"props":2829,"children":2830},{"style":625},[2831],{"type":56,"value":753},{"type":29,"tag":127,"props":2833,"children":2834},{"style":605},[2835],{"type":56,"value":633},{"type":29,"tag":127,"props":2837,"children":2838},{"class":600,"line":118},[2839,2843,2847],{"type":29,"tag":127,"props":2840,"children":2841},{"style":614},[2842],{"type":56,"value":829},{"type":29,"tag":127,"props":2844,"children":2845},{"style":605},[2846],{"type":56,"value":622},{"type":29,"tag":127,"props":2848,"children":2849},{"style":625},[2850],{"type":56,"value":838},{"type":29,"tag":127,"props":2852,"children":2853},{"class":600,"line":841},[2854],{"type":29,"tag":127,"props":2855,"children":2856},{"style":605},[2857],{"type":56,"value":847},{"type":29,"tag":127,"props":2859,"children":2860},{"class":600,"line":850},[2861,2865],{"type":29,"tag":127,"props":2862,"children":2863},{"style":614},[2864],{"type":56,"value":856},{"type":29,"tag":127,"props":2866,"children":2867},{"style":605},[2868],{"type":56,"value":861},{"type":29,"tag":127,"props":2870,"children":2871},{"class":600,"line":864},[2872],{"type":29,"tag":127,"props":2873,"children":2874},{"style":605},[2875],{"type":56,"value":870},{"type":29,"tag":127,"props":2877,"children":2878},{"class":600,"line":873},[2879,2883,2887,2891],{"type":29,"tag":127,"props":2880,"children":2881},{"style":614},[2882],{"type":56,"value":879},{"type":29,"tag":127,"props":2884,"children":2885},{"style":605},[2886],{"type":56,"value":622},{"type":29,"tag":127,"props":2888,"children":2889},{"style":625},[2890],{"type":56,"value":888},{"type":29,"tag":127,"props":2892,"children":2893},{"style":605},[2894],{"type":56,"value":633},{"type":29,"tag":127,"props":2896,"children":2897},{"class":600,"line":895},[2898,2902,2906,2910],{"type":29,"tag":127,"props":2899,"children":2900},{"style":614},[2901],{"type":56,"value":901},{"type":29,"tag":127,"props":2903,"children":2904},{"style":605},[2905],{"type":56,"value":622},{"type":29,"tag":127,"props":2907,"children":2908},{"style":625},[2909],{"type":56,"value":910},{"type":29,"tag":127,"props":2911,"children":2912},{"style":605},[2913],{"type":56,"value":633},{"type":29,"tag":127,"props":2915,"children":2916},{"class":600,"line":917},[2917,2921],{"type":29,"tag":127,"props":2918,"children":2919},{"style":614},[2920],{"type":56,"value":923},{"type":29,"tag":127,"props":2922,"children":2923},{"style":605},[2924],{"type":56,"value":691},{"type":29,"tag":127,"props":2926,"children":2927},{"class":600,"line":930},[2928,2932,2936],{"type":29,"tag":127,"props":2929,"children":2930},{"style":614},[2931],{"type":56,"value":936},{"type":29,"tag":127,"props":2933,"children":2934},{"style":605},[2935],{"type":56,"value":622},{"type":29,"tag":127,"props":2937,"children":2938},{"style":943},[2939],{"type":56,"value":946},{"type":29,"tag":127,"props":2941,"children":2942},{"class":600,"line":949},[2943],{"type":29,"tag":127,"props":2944,"children":2945},{"style":605},[2946],{"type":56,"value":955},{"type":29,"tag":127,"props":2948,"children":2949},{"class":600,"line":958},[2950],{"type":29,"tag":127,"props":2951,"children":2952},{"style":605},[2953],{"type":56,"value":964},{"type":29,"tag":127,"props":2955,"children":2956},{"class":600,"line":967},[2957],{"type":29,"tag":127,"props":2958,"children":2959},{"style":605},[2960],{"type":56,"value":870},{"type":29,"tag":127,"props":2962,"children":2963},{"class":600,"line":975},[2964,2968,2972,2976],{"type":29,"tag":127,"props":2965,"children":2966},{"style":614},[2967],{"type":56,"value":879},{"type":29,"tag":127,"props":2969,"children":2970},{"style":605},[2971],{"type":56,"value":622},{"type":29,"tag":127,"props":2973,"children":2974},{"style":625},[2975],{"type":56,"value":888},{"type":29,"tag":127,"props":2977,"children":2978},{"style":605},[2979],{"type":56,"value":633},{"type":29,"tag":127,"props":2981,"children":2982},{"class":600,"line":995},[2983,2987,2991,2995],{"type":29,"tag":127,"props":2984,"children":2985},{"style":614},[2986],{"type":56,"value":901},{"type":29,"tag":127,"props":2988,"children":2989},{"style":605},[2990],{"type":56,"value":622},{"type":29,"tag":127,"props":2992,"children":2993},{"style":625},[2994],{"type":56,"value":1009},{"type":29,"tag":127,"props":2996,"children":2997},{"style":605},[2998],{"type":56,"value":633},{"type":29,"tag":127,"props":3000,"children":3001},{"class":600,"line":1016},[3002,3006],{"type":29,"tag":127,"props":3003,"children":3004},{"style":614},[3005],{"type":56,"value":923},{"type":29,"tag":127,"props":3007,"children":3008},{"style":605},[3009],{"type":56,"value":691},{"type":29,"tag":127,"props":3011,"children":3012},{"class":600,"line":1028},[3013,3017,3021],{"type":29,"tag":127,"props":3014,"children":3015},{"style":614},[3016],{"type":56,"value":936},{"type":29,"tag":127,"props":3018,"children":3019},{"style":605},[3020],{"type":56,"value":622},{"type":29,"tag":127,"props":3022,"children":3023},{"style":943},[3024],{"type":56,"value":946},{"type":29,"tag":127,"props":3026,"children":3027},{"class":600,"line":1044},[3028],{"type":29,"tag":127,"props":3029,"children":3030},{"style":605},[3031],{"type":56,"value":955},{"type":29,"tag":127,"props":3033,"children":3034},{"class":600,"line":1052},[3035],{"type":29,"tag":127,"props":3036,"children":3037},{"style":605},[3038],{"type":56,"value":964},{"type":29,"tag":127,"props":3040,"children":3041},{"class":600,"line":1060},[3042],{"type":29,"tag":127,"props":3043,"children":3044},{"style":605},[3045],{"type":56,"value":870},{"type":29,"tag":127,"props":3047,"children":3048},{"class":600,"line":1068},[3049,3053,3057,3061],{"type":29,"tag":127,"props":3050,"children":3051},{"style":614},[3052],{"type":56,"value":879},{"type":29,"tag":127,"props":3054,"children":3055},{"style":605},[3056],{"type":56,"value":622},{"type":29,"tag":127,"props":3058,"children":3059},{"style":625},[3060],{"type":56,"value":888},{"type":29,"tag":127,"props":3062,"children":3063},{"style":605},[3064],{"type":56,"value":633},{"type":29,"tag":127,"props":3066,"children":3067},{"class":600,"line":1088},[3068,3072,3076,3080],{"type":29,"tag":127,"props":3069,"children":3070},{"style":614},[3071],{"type":56,"value":901},{"type":29,"tag":127,"props":3073,"children":3074},{"style":605},[3075],{"type":56,"value":622},{"type":29,"tag":127,"props":3077,"children":3078},{"style":625},[3079],{"type":56,"value":1102},{"type":29,"tag":127,"props":3081,"children":3082},{"style":605},[3083],{"type":56,"value":633},{"type":29,"tag":127,"props":3085,"children":3086},{"class":600,"line":1109},[3087,3091],{"type":29,"tag":127,"props":3088,"children":3089},{"style":614},[3090],{"type":56,"value":923},{"type":29,"tag":127,"props":3092,"children":3093},{"style":605},[3094],{"type":56,"value":691},{"type":29,"tag":127,"props":3096,"children":3097},{"class":600,"line":1121},[3098,3102,3106],{"type":29,"tag":127,"props":3099,"children":3100},{"style":614},[3101],{"type":56,"value":936},{"type":29,"tag":127,"props":3103,"children":3104},{"style":605},[3105],{"type":56,"value":622},{"type":29,"tag":127,"props":3107,"children":3108},{"style":943},[3109],{"type":56,"value":946},{"type":29,"tag":127,"props":3111,"children":3112},{"class":600,"line":1137},[3113],{"type":29,"tag":127,"props":3114,"children":3115},{"style":605},[3116],{"type":56,"value":955},{"type":29,"tag":127,"props":3118,"children":3119},{"class":600,"line":1145},[3120],{"type":29,"tag":127,"props":3121,"children":3122},{"style":605},[3123],{"type":56,"value":964},{"type":29,"tag":127,"props":3125,"children":3127},{"class":3126,"line":590},[600,1154],[3128],{"type":29,"tag":127,"props":3129,"children":3130},{"style":605},[3131],{"type":56,"value":870},{"type":29,"tag":127,"props":3133,"children":3135},{"class":3134,"line":591},[600,1154],[3136,3140,3144,3149],{"type":29,"tag":127,"props":3137,"children":3138},{"style":614},[3139],{"type":56,"value":879},{"type":29,"tag":127,"props":3141,"children":3142},{"style":605},[3143],{"type":56,"value":622},{"type":29,"tag":127,"props":3145,"children":3146},{"style":625},[3147],{"type":56,"value":3148},"\"composer\"",{"type":29,"tag":127,"props":3150,"children":3151},{"style":605},[3152],{"type":56,"value":633},{"type":29,"tag":127,"props":3154,"children":3156},{"class":3155,"line":592},[600,1154],[3157,3161,3165],{"type":29,"tag":127,"props":3158,"children":3159},{"style":614},[3160],{"type":56,"value":901},{"type":29,"tag":127,"props":3162,"children":3163},{"style":605},[3164],{"type":56,"value":622},{"type":29,"tag":127,"props":3166,"children":3167},{"style":625},[3168],{"type":56,"value":3169},"\"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n",{"type":29,"tag":127,"props":3171,"children":3173},{"class":3172,"line":593},[600,1154],[3174],{"type":29,"tag":127,"props":3175,"children":3176},{"style":605},[3177],{"type":56,"value":1206},{"type":29,"tag":127,"props":3179,"children":3180},{"class":600,"line":1209},[3181],{"type":29,"tag":127,"props":3182,"children":3183},{"style":605},[3184],{"type":56,"value":1215},{"type":29,"tag":127,"props":3186,"children":3187},{"class":600,"line":1218},[3188,3192],{"type":29,"tag":127,"props":3189,"children":3190},{"style":614},[3191],{"type":56,"value":1224},{"type":29,"tag":127,"props":3193,"children":3194},{"style":605},[3195],{"type":56,"value":691},{"type":29,"tag":127,"props":3197,"children":3198},{"class":600,"line":1231},[3199,3203],{"type":29,"tag":127,"props":3200,"children":3201},{"style":614},[3202],{"type":56,"value":1237},{"type":29,"tag":127,"props":3204,"children":3205},{"style":605},[3206],{"type":56,"value":691},{"type":29,"tag":127,"props":3208,"children":3209},{"class":600,"line":1244},[3210,3214,3218,3222,3226],{"type":29,"tag":127,"props":3211,"children":3212},{"style":614},[3213],{"type":56,"value":1250},{"type":29,"tag":127,"props":3215,"children":3216},{"style":1253},[3217],{"type":56,"value":1256},{"type":29,"tag":127,"props":3219,"children":3220},{"style":614},[3221],{"type":56,"value":1261},{"type":29,"tag":127,"props":3223,"children":3224},{"style":605},[3225],{"type":56,"value":622},{"type":29,"tag":127,"props":3227,"children":3228},{"style":625},[3229],{"type":56,"value":1270},{"type":29,"tag":127,"props":3231,"children":3232},{"class":600,"line":1273},[3233],{"type":29,"tag":127,"props":3234,"children":3235},{"style":605},[3236],{"type":56,"value":1206},{"type":29,"tag":127,"props":3238,"children":3239},{"class":600,"line":1281},[3240],{"type":29,"tag":127,"props":3241,"children":3242},{"style":605},[3243],{"type":56,"value":847},{"type":29,"tag":127,"props":3245,"children":3246},{"class":600,"line":1289},[3247,3251,3255,3259],{"type":29,"tag":127,"props":3248,"children":3249},{"style":614},[3250],{"type":56,"value":1295},{"type":29,"tag":127,"props":3252,"children":3253},{"style":605},[3254],{"type":56,"value":622},{"type":29,"tag":127,"props":3256,"children":3257},{"style":943},[3258],{"type":56,"value":113},{"type":29,"tag":127,"props":3260,"children":3261},{"style":605},[3262],{"type":56,"value":633},{"type":29,"tag":127,"props":3264,"children":3265},{"class":600,"line":1310},[3266,3270],{"type":29,"tag":127,"props":3267,"children":3268},{"style":614},[3269],{"type":56,"value":1316},{"type":29,"tag":127,"props":3271,"children":3272},{"style":605},[3273],{"type":56,"value":691},{"type":29,"tag":127,"props":3275,"children":3276},{"class":600,"line":1323},[3277,3281],{"type":29,"tag":127,"props":3278,"children":3279},{"style":614},[3280],{"type":56,"value":1329},{"type":29,"tag":127,"props":3282,"children":3283},{"style":605},[3284],{"type":56,"value":691},{"type":29,"tag":127,"props":3286,"children":3287},{"class":600,"line":1336},[3288,3292,3296,3300],{"type":29,"tag":127,"props":3289,"children":3290},{"style":614},[3291],{"type":56,"value":1342},{"type":29,"tag":127,"props":3293,"children":3294},{"style":605},[3295],{"type":56,"value":622},{"type":29,"tag":127,"props":3297,"children":3298},{"style":943},[3299],{"type":56,"value":113},{"type":29,"tag":127,"props":3301,"children":3302},{"style":605},[3303],{"type":56,"value":633},{"type":29,"tag":127,"props":3305,"children":3306},{"class":600,"line":1357},[3307,3311,3315],{"type":29,"tag":127,"props":3308,"children":3309},{"style":614},[3310],{"type":56,"value":1363},{"type":29,"tag":127,"props":3312,"children":3313},{"style":605},[3314],{"type":56,"value":622},{"type":29,"tag":127,"props":3316,"children":3317},{"style":943},[3318],{"type":56,"value":946},{"type":29,"tag":127,"props":3320,"children":3321},{"class":600,"line":1374},[3322],{"type":29,"tag":127,"props":3323,"children":3324},{"style":605},[3325],{"type":56,"value":964},{"type":29,"tag":127,"props":3327,"children":3328},{"class":600,"line":1382},[3329,3333,3337,3341],{"type":29,"tag":127,"props":3330,"children":3331},{"style":614},[3332],{"type":56,"value":1388},{"type":29,"tag":127,"props":3334,"children":3335},{"style":605},[3336],{"type":56,"value":622},{"type":29,"tag":127,"props":3338,"children":3339},{"style":943},[3340],{"type":56,"value":113},{"type":29,"tag":127,"props":3342,"children":3343},{"style":605},[3344],{"type":56,"value":633},{"type":29,"tag":127,"props":3346,"children":3347},{"class":600,"line":1403},[3348,3352,3356],{"type":29,"tag":127,"props":3349,"children":3350},{"style":614},[3351],{"type":56,"value":1409},{"type":29,"tag":127,"props":3353,"children":3354},{"style":605},[3355],{"type":56,"value":622},{"type":29,"tag":127,"props":3357,"children":3358},{"style":943},[3359],{"type":56,"value":946},{"type":29,"tag":127,"props":3361,"children":3362},{"class":600,"line":1420},[3363],{"type":29,"tag":127,"props":3364,"children":3365},{"style":605},[3366],{"type":56,"value":847},{"type":29,"tag":127,"props":3368,"children":3369},{"class":600,"line":1428},[3370,3374],{"type":29,"tag":127,"props":3371,"children":3372},{"style":614},[3373],{"type":56,"value":1434},{"type":29,"tag":127,"props":3375,"children":3376},{"style":605},[3377],{"type":56,"value":691},{"type":29,"tag":127,"props":3379,"children":3380},{"class":600,"line":1441},[3381,3385],{"type":29,"tag":127,"props":3382,"children":3383},{"style":614},[3384],{"type":56,"value":1447},{"type":29,"tag":127,"props":3386,"children":3387},{"style":605},[3388],{"type":56,"value":691},{"type":29,"tag":127,"props":3390,"children":3391},{"class":600,"line":1454},[3392,3396,3400],{"type":29,"tag":127,"props":3393,"children":3394},{"style":614},[3395],{"type":56,"value":1460},{"type":29,"tag":127,"props":3397,"children":3398},{"style":605},[3399],{"type":56,"value":622},{"type":29,"tag":127,"props":3401,"children":3402},{"style":625},[3403],{"type":56,"value":1469},{"type":29,"tag":127,"props":3405,"children":3406},{"class":600,"line":1472},[3407],{"type":29,"tag":127,"props":3408,"children":3409},{"style":605},[3410],{"type":56,"value":964},{"type":29,"tag":127,"props":3412,"children":3413},{"class":600,"line":1480},[3414,3418],{"type":29,"tag":127,"props":3415,"children":3416},{"style":614},[3417],{"type":56,"value":1486},{"type":29,"tag":127,"props":3419,"children":3420},{"style":605},[3421],{"type":56,"value":861},{"type":29,"tag":127,"props":3423,"children":3424},{"class":600,"line":1493},[3425],{"type":29,"tag":127,"props":3426,"children":3427},{"style":625},[3428],{"type":56,"value":1499},{"type":29,"tag":127,"props":3430,"children":3431},{"class":600,"line":1502},[3432],{"type":29,"tag":127,"props":3433,"children":3434},{"style":605},[3435],{"type":56,"value":1508},{"type":29,"tag":127,"props":3437,"children":3438},{"class":600,"line":1511},[3439,3443],{"type":29,"tag":127,"props":3440,"children":3441},{"style":614},[3442],{"type":56,"value":1517},{"type":29,"tag":127,"props":3444,"children":3445},{"style":605},[3446],{"type":56,"value":861},{"type":29,"tag":127,"props":3448,"children":3449},{"class":600,"line":1524},[3450],{"type":29,"tag":127,"props":3451,"children":3452},{"style":625},[3453],{"type":56,"value":1499},{"type":29,"tag":127,"props":3455,"children":3456},{"class":600,"line":1532},[3457],{"type":29,"tag":127,"props":3458,"children":3459},{"style":605},[3460],{"type":56,"value":1538},{"type":29,"tag":127,"props":3462,"children":3463},{"class":600,"line":1541},[3464],{"type":29,"tag":127,"props":3465,"children":3466},{"style":605},[3467],{"type":56,"value":847},{"type":29,"tag":127,"props":3469,"children":3470},{"class":600,"line":1549},[3471,3475],{"type":29,"tag":127,"props":3472,"children":3473},{"style":614},[3474],{"type":56,"value":1555},{"type":29,"tag":127,"props":3476,"children":3477},{"style":605},[3478],{"type":56,"value":691},{"type":29,"tag":127,"props":3480,"children":3481},{"class":600,"line":1562},[3482,3486],{"type":29,"tag":127,"props":3483,"children":3484},{"style":614},[3485],{"type":56,"value":1568},{"type":29,"tag":127,"props":3487,"children":3488},{"style":605},[3489],{"type":56,"value":691},{"type":29,"tag":127,"props":3491,"children":3492},{"class":600,"line":1575},[3493,3497,3501,3505],{"type":29,"tag":127,"props":3494,"children":3495},{"style":614},[3496],{"type":56,"value":1581},{"type":29,"tag":127,"props":3498,"children":3499},{"style":605},[3500],{"type":56,"value":622},{"type":29,"tag":127,"props":3502,"children":3503},{"style":943},[3504],{"type":56,"value":113},{"type":29,"tag":127,"props":3506,"children":3507},{"style":605},[3508],{"type":56,"value":633},{"type":29,"tag":127,"props":3510,"children":3511},{"class":600,"line":1596},[3512,3516],{"type":29,"tag":127,"props":3513,"children":3514},{"style":614},[3515],{"type":56,"value":1602},{"type":29,"tag":127,"props":3517,"children":3518},{"style":605},[3519],{"type":56,"value":861},{"type":29,"tag":127,"props":3521,"children":3522},{"class":600,"line":1609},[3523,3527],{"type":29,"tag":127,"props":3524,"children":3525},{"style":625},[3526],{"type":56,"value":1615},{"type":29,"tag":127,"props":3528,"children":3529},{"style":605},[3530],{"type":56,"value":633},{"type":29,"tag":127,"props":3532,"children":3533},{"class":600,"line":1622},[3534],{"type":29,"tag":127,"props":3535,"children":3536},{"style":625},[3537],{"type":56,"value":1628},{"type":29,"tag":127,"props":3539,"children":3540},{"class":600,"line":1631},[3541],{"type":29,"tag":127,"props":3542,"children":3543},{"style":605},[3544],{"type":56,"value":1637},{"type":29,"tag":127,"props":3546,"children":3547},{"class":600,"line":1640},[3548],{"type":29,"tag":127,"props":3549,"children":3550},{"style":605},[3551],{"type":56,"value":1206},{"type":29,"tag":127,"props":3553,"children":3554},{"class":600,"line":1648},[3555],{"type":29,"tag":127,"props":3556,"children":3557},{"style":605},[3558],{"type":56,"value":1654},{"type":29,"tag":127,"props":3560,"children":3561},{"class":600,"line":1657},[3562],{"type":29,"tag":127,"props":3563,"children":3564},{"style":605},[3565],{"type":56,"value":1663},{"type":29,"tag":48,"props":3567,"children":3568},{},[3569],{"type":56,"value":3570},"oder über das CLI:",{"type":29,"tag":584,"props":3572,"children":3574},{"className":1671,"code":3573,"language":1673,"meta":7,"style":7},"composer config repositories.\u003Cgroup_id> composer https://\u003CDOMAIN-NAME>/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\n",[3575],{"type":29,"tag":520,"props":3576,"children":3577},{"__ignoreMap":7},[3578],{"type":29,"tag":127,"props":3579,"children":3580},{"class":600,"line":601},[3581,3585,3590,3595,3601,3606,3611,3616,3621,3626,3630,3635,3640,3644,3649,3653,3657,3661,3665],{"type":29,"tag":127,"props":3582,"children":3583},{"style":1683},[3584],{"type":56,"value":580},{"type":29,"tag":127,"props":3586,"children":3587},{"style":1688},[3588],{"type":56,"value":3589}," config",{"type":29,"tag":127,"props":3591,"children":3592},{"style":1688},[3593],{"type":56,"value":3594}," repositories.",{"type":29,"tag":127,"props":3596,"children":3598},{"style":3597},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[3599],{"type":56,"value":3600},"\u003C",{"type":29,"tag":127,"props":3602,"children":3603},{"style":1688},[3604],{"type":56,"value":3605},"group_i",{"type":29,"tag":127,"props":3607,"children":3608},{"style":605},[3609],{"type":56,"value":3610},"d",{"type":29,"tag":127,"props":3612,"children":3613},{"style":3597},[3614],{"type":56,"value":3615},">",{"type":29,"tag":127,"props":3617,"children":3618},{"style":1688},[3619],{"type":56,"value":3620}," composer",{"type":29,"tag":127,"props":3622,"children":3623},{"style":1688},[3624],{"type":56,"value":3625}," https://",{"type":29,"tag":127,"props":3627,"children":3628},{"style":3597},[3629],{"type":56,"value":3600},{"type":29,"tag":127,"props":3631,"children":3632},{"style":1688},[3633],{"type":56,"value":3634},"DOMAIN-NAM",{"type":29,"tag":127,"props":3636,"children":3637},{"style":605},[3638],{"type":56,"value":3639},"E",{"type":29,"tag":127,"props":3641,"children":3642},{"style":3597},[3643],{"type":56,"value":3615},{"type":29,"tag":127,"props":3645,"children":3646},{"style":1688},[3647],{"type":56,"value":3648},"/api/v4/group/",{"type":29,"tag":127,"props":3650,"children":3651},{"style":3597},[3652],{"type":56,"value":3600},{"type":29,"tag":127,"props":3654,"children":3655},{"style":1688},[3656],{"type":56,"value":3605},{"type":29,"tag":127,"props":3658,"children":3659},{"style":605},[3660],{"type":56,"value":3610},{"type":29,"tag":127,"props":3662,"children":3663},{"style":3597},[3664],{"type":56,"value":3615},{"type":29,"tag":127,"props":3666,"children":3667},{"style":1688},[3668],{"type":56,"value":3669},"/-/packages/composer/packages.json\n",{"type":29,"tag":48,"props":3671,"children":3672},{},[3673],{"type":56,"value":3674},"Und die GitLab-Anmeldeinformationen einrichten:",{"type":29,"tag":584,"props":3676,"children":3678},{"className":1671,"code":3677,"language":1673,"meta":7,"style":7},"composer config gitlab-token.\u003CDOMAIN-NAME> \u003Cpersonal_access_token>\n",[3679],{"type":29,"tag":520,"props":3680,"children":3681},{"__ignoreMap":7},[3682],{"type":29,"tag":127,"props":3683,"children":3684},{"class":600,"line":601},[3685,3689,3693,3698,3702,3706,3710,3714,3719,3724,3729],{"type":29,"tag":127,"props":3686,"children":3687},{"style":1683},[3688],{"type":56,"value":580},{"type":29,"tag":127,"props":3690,"children":3691},{"style":1688},[3692],{"type":56,"value":3589},{"type":29,"tag":127,"props":3694,"children":3695},{"style":1688},[3696],{"type":56,"value":3697}," gitlab-token.",{"type":29,"tag":127,"props":3699,"children":3700},{"style":3597},[3701],{"type":56,"value":3600},{"type":29,"tag":127,"props":3703,"children":3704},{"style":1688},[3705],{"type":56,"value":3634},{"type":29,"tag":127,"props":3707,"children":3708},{"style":605},[3709],{"type":56,"value":3639},{"type":29,"tag":127,"props":3711,"children":3712},{"style":3597},[3713],{"type":56,"value":3615},{"type":29,"tag":127,"props":3715,"children":3716},{"style":3597},[3717],{"type":56,"value":3718}," \u003C",{"type":29,"tag":127,"props":3720,"children":3721},{"style":1688},[3722],{"type":56,"value":3723},"personal_access_toke",{"type":29,"tag":127,"props":3725,"children":3726},{"style":605},[3727],{"type":56,"value":3728},"n",{"type":29,"tag":127,"props":3730,"children":3731},{"style":3597},[3732],{"type":56,"value":3733},">\n",{"type":29,"tag":48,"props":3735,"children":3736},{},[3737,3739,3744],{"type":56,"value":3738},"Mehr über diesen Prozess in der ",{"type":29,"tag":491,"props":3740,"children":3742},{"href":3741},"https://docs.gitlab.com/user/packages/composer_repository/#install-a-composer-package",[3743],{"type":56,"value":496},{"type":56,"value":2581},{"type":29,"tag":48,"props":3746,"children":3747},{},[3748],{"type":56,"value":3749},"Jetzt installieren wir unser Paket wie gewohnt:",{"type":29,"tag":584,"props":3751,"children":3752},{"className":1671,"code":1672,"language":1673,"meta":7,"style":7},[3753],{"type":29,"tag":520,"props":3754,"children":3755},{"__ignoreMap":7},[3756],{"type":29,"tag":127,"props":3757,"children":3758},{"class":600,"line":601},[3759,3763,3767],{"type":29,"tag":127,"props":3760,"children":3761},{"style":1683},[3762],{"type":56,"value":580},{"type":29,"tag":127,"props":3764,"children":3765},{"style":1688},[3766],{"type":56,"value":1691},{"type":29,"tag":127,"props":3768,"children":3769},{"style":1688},[3770],{"type":56,"value":1696},{"type":29,"tag":584,"props":3772,"children":3774},{"className":2412,"code":3773,"language":2414,"meta":7,"style":7},"./composer.json has been updated\nRunning composer update acme/sample-plugin\nLoading composer repositories with package information\nUpdating dependencies\nLock file operations: 1 install, 0 updates, 0 removals\n  - Locking acme/sample-plugin (1.0.0)\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nPackage operations: 1 install, 0 updates, 0 removals\n  - Downloading acme/sample-plugin (1.0.0)\n  - Installing acme/sample-plugin (1.0.0): Extracting archive\nGenerating optimized autoload files\n\nRun composer recipes at any time to see the status of your Symfony recipes.\n\nExecuting script assets:install [OK]\n\nUsing version ^1.0 for acme/sample-plugin\n",[3775],{"type":29,"tag":520,"props":3776,"children":3777},{"__ignoreMap":7},[3778,3785,3792,3799,3806,3813,3820,3827,3834,3841,3849,3857,3864,3871,3878,3885,3892,3899],{"type":29,"tag":127,"props":3779,"children":3780},{"class":600,"line":601},[3781],{"type":29,"tag":127,"props":3782,"children":3783},{},[3784],{"type":56,"value":1763},{"type":29,"tag":127,"props":3786,"children":3787},{"class":600,"line":271},[3788],{"type":29,"tag":127,"props":3789,"children":3790},{},[3791],{"type":56,"value":1771},{"type":29,"tag":127,"props":3793,"children":3794},{"class":600,"line":636},[3795],{"type":29,"tag":127,"props":3796,"children":3797},{},[3798],{"type":56,"value":2441},{"type":29,"tag":127,"props":3800,"children":3801},{"class":600,"line":658},[3802],{"type":29,"tag":127,"props":3803,"children":3804},{},[3805],{"type":56,"value":2449},{"type":29,"tag":127,"props":3807,"children":3808},{"class":600,"line":680},[3809],{"type":29,"tag":127,"props":3810,"children":3811},{},[3812],{"type":56,"value":1795},{"type":29,"tag":127,"props":3814,"children":3815},{"class":600,"line":694},[3816],{"type":29,"tag":127,"props":3817,"children":3818},{},[3819],{"type":56,"value":2464},{"type":29,"tag":127,"props":3821,"children":3822},{"class":600,"line":716},[3823],{"type":29,"tag":127,"props":3824,"children":3825},{},[3826],{"type":56,"value":1811},{"type":29,"tag":127,"props":3828,"children":3829},{"class":600,"line":738},[3830],{"type":29,"tag":127,"props":3831,"children":3832},{},[3833],{"type":56,"value":1819},{"type":29,"tag":127,"props":3835,"children":3836},{"class":600,"line":760},[3837],{"type":29,"tag":127,"props":3838,"children":3839},{},[3840],{"type":56,"value":1827},{"type":29,"tag":127,"props":3842,"children":3843},{"class":600,"line":782},[3844],{"type":29,"tag":127,"props":3845,"children":3846},{},[3847],{"type":56,"value":3848},"  - Downloading acme/sample-plugin (1.0.0)\n",{"type":29,"tag":127,"props":3850,"children":3851},{"class":600,"line":803},[3852],{"type":29,"tag":127,"props":3853,"children":3854},{},[3855],{"type":56,"value":3856},"  - Installing acme/sample-plugin (1.0.0): Extracting archive\n",{"type":29,"tag":127,"props":3858,"children":3859},{"class":600,"line":118},[3860],{"type":29,"tag":127,"props":3861,"children":3862},{},[3863],{"type":56,"value":1851},{"type":29,"tag":127,"props":3865,"children":3866},{"class":600,"line":841},[3867],{"type":29,"tag":127,"props":3868,"children":3869},{"emptyLinePlaceholder":1857},[3870],{"type":56,"value":1860},{"type":29,"tag":127,"props":3872,"children":3873},{"class":600,"line":850},[3874],{"type":29,"tag":127,"props":3875,"children":3876},{},[3877],{"type":56,"value":1868},{"type":29,"tag":127,"props":3879,"children":3880},{"class":600,"line":864},[3881],{"type":29,"tag":127,"props":3882,"children":3883},{"emptyLinePlaceholder":1857},[3884],{"type":56,"value":1860},{"type":29,"tag":127,"props":3886,"children":3887},{"class":600,"line":873},[3888],{"type":29,"tag":127,"props":3889,"children":3890},{},[3891],{"type":56,"value":1883},{"type":29,"tag":127,"props":3893,"children":3894},{"class":600,"line":895},[3895],{"type":29,"tag":127,"props":3896,"children":3897},{"emptyLinePlaceholder":1857},[3898],{"type":56,"value":1860},{"type":29,"tag":127,"props":3900,"children":3901},{"class":600,"line":917},[3902],{"type":29,"tag":127,"props":3903,"children":3904},{},[3905],{"type":56,"value":2551},{"type":29,"tag":48,"props":3907,"children":3908},{},[3909],{"type":29,"tag":127,"props":3910,"children":3913},{"className":3911},[3912],"text-h2",[3914],{"type":56,"value":3915},"Großartig. Direkter Paket-Download!",{"type":29,"tag":122,"props":3917,"children":3919},{"id":3918},"warum-die-mühe",[3920],{"type":56,"value":3921},"Warum die Mühe?",{"type":29,"tag":48,"props":3923,"children":3924},{},[3925,3927,3933,3935,3941],{"type":56,"value":3926},"Das ist eine sehr gute Frage. Der Hauptgrund ist das Paket-Caching. Bei der Ausführung in einer ",{"type":29,"tag":520,"props":3928,"children":3930},{"className":3929},[],[3931],{"type":56,"value":3932},"CI/CD",{"type":56,"value":3934},"-Umgebung oder einem ",{"type":29,"tag":520,"props":3936,"children":3938},{"className":3937},[],[3939],{"type":56,"value":3940},"docker build",{"type":56,"value":3942}," kann das Caching von Paketen einen massiven Leistungsschub bewirken.",{"type":29,"tag":1708,"props":3944,"children":3945},{},[],{"type":29,"tag":3947,"props":3948,"children":3949},"hr",{},[],{"type":29,"tag":90,"props":3951,"children":3953},{"id":3952},"release-pipeline",[3954],{"type":56,"value":3955},"Release-Pipeline",{"type":29,"tag":122,"props":3957,"children":3959},{"id":3958},"mit-manuellem-tagging",[3960],{"type":56,"value":3961},"Mit manuellem Tagging",{"type":29,"tag":48,"props":3963,"children":3964},{},[3965],{"type":56,"value":3966},"Dies ist eine einfache Pipeline, in der ein Git-Tag manuell erstellt und pushen wird.",{"type":29,"tag":48,"props":3968,"children":3969},{},[3970,3972,3977,3978,3983],{"type":56,"value":3971},"Bitte sicherstellen, dass Sie die ",{"type":29,"tag":520,"props":3973,"children":3975},{"className":3974},[],[3976],{"type":56,"value":1930},{"type":56,"value":1932},{"type":29,"tag":520,"props":3979,"children":3981},{"className":3980},[],[3982],{"type":56,"value":1938},{"type":56,"value":3984}," immer aktualisiert wird.",{"type":29,"tag":584,"props":3986,"children":3988},{"className":1671,"code":3987,"language":1673,"meta":7,"style":7},"git tag \u003Cversion>\ngit push --tags\n",[3989],{"type":29,"tag":520,"props":3990,"children":3991},{"__ignoreMap":7},[3992,4020],{"type":29,"tag":127,"props":3993,"children":3994},{"class":600,"line":601},[3995,3999,4003,4007,4012,4016],{"type":29,"tag":127,"props":3996,"children":3997},{"style":1683},[3998],{"type":56,"value":1894},{"type":29,"tag":127,"props":4000,"children":4001},{"style":1688},[4002],{"type":56,"value":2361},{"type":29,"tag":127,"props":4004,"children":4005},{"style":3597},[4006],{"type":56,"value":3718},{"type":29,"tag":127,"props":4008,"children":4009},{"style":1688},[4010],{"type":56,"value":4011},"versio",{"type":29,"tag":127,"props":4013,"children":4014},{"style":605},[4015],{"type":56,"value":3728},{"type":29,"tag":127,"props":4017,"children":4018},{"style":3597},[4019],{"type":56,"value":3733},{"type":29,"tag":127,"props":4021,"children":4022},{"class":600,"line":271},[4023,4027,4031],{"type":29,"tag":127,"props":4024,"children":4025},{"style":1683},[4026],{"type":56,"value":1894},{"type":29,"tag":127,"props":4028,"children":4029},{"style":1688},[4030],{"type":56,"value":2378},{"type":29,"tag":127,"props":4032,"children":4033},{"style":943},[4034],{"type":56,"value":2383},{"type":29,"tag":584,"props":4036,"children":4041},{"className":4037,"code":4038,"filename":4039,"language":4040,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark github-dark monokai","stages:\n  - release\n\ndeploy:\n  image: alpine/curl\n  stage: release\n  script:\n    - 'curl --fail-with-body --header \"Job-Token: $CI_JOB_TOKEN\" --data tag=$CI_COMMIT_TAG \"${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/composer\"'\n  environment: production\n  rules:\n    if: $CI_COMMIT_TAG\n",".gitlab-ci.yml","yaml",[4042],{"type":29,"tag":520,"props":4043,"children":4044},{"__ignoreMap":7},[4045,4059,4072,4079,4091,4108,4124,4136,4149,4166,4178],{"type":29,"tag":127,"props":4046,"children":4047},{"class":600,"line":601},[4048,4054],{"type":29,"tag":127,"props":4049,"children":4051},{"style":4050},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[4052],{"type":56,"value":4053},"stages",{"type":29,"tag":127,"props":4055,"children":4056},{"style":605},[4057],{"type":56,"value":4058},":\n",{"type":29,"tag":127,"props":4060,"children":4061},{"class":600,"line":271},[4062,4067],{"type":29,"tag":127,"props":4063,"children":4064},{"style":605},[4065],{"type":56,"value":4066},"  - ",{"type":29,"tag":127,"props":4068,"children":4069},{"style":1688},[4070],{"type":56,"value":4071},"release\n",{"type":29,"tag":127,"props":4073,"children":4074},{"class":600,"line":636},[4075],{"type":29,"tag":127,"props":4076,"children":4077},{"emptyLinePlaceholder":1857},[4078],{"type":56,"value":1860},{"type":29,"tag":127,"props":4080,"children":4081},{"class":600,"line":658},[4082,4087],{"type":29,"tag":127,"props":4083,"children":4084},{"style":4050},[4085],{"type":56,"value":4086},"deploy",{"type":29,"tag":127,"props":4088,"children":4089},{"style":605},[4090],{"type":56,"value":4058},{"type":29,"tag":127,"props":4092,"children":4093},{"class":600,"line":680},[4094,4099,4103],{"type":29,"tag":127,"props":4095,"children":4096},{"style":4050},[4097],{"type":56,"value":4098},"  image",{"type":29,"tag":127,"props":4100,"children":4101},{"style":605},[4102],{"type":56,"value":622},{"type":29,"tag":127,"props":4104,"children":4105},{"style":1688},[4106],{"type":56,"value":4107},"alpine/curl\n",{"type":29,"tag":127,"props":4109,"children":4110},{"class":600,"line":694},[4111,4116,4120],{"type":29,"tag":127,"props":4112,"children":4113},{"style":4050},[4114],{"type":56,"value":4115},"  stage",{"type":29,"tag":127,"props":4117,"children":4118},{"style":605},[4119],{"type":56,"value":622},{"type":29,"tag":127,"props":4121,"children":4122},{"style":1688},[4123],{"type":56,"value":4071},{"type":29,"tag":127,"props":4125,"children":4126},{"class":600,"line":716},[4127,4132],{"type":29,"tag":127,"props":4128,"children":4129},{"style":4050},[4130],{"type":56,"value":4131},"  script",{"type":29,"tag":127,"props":4133,"children":4134},{"style":605},[4135],{"type":56,"value":4058},{"type":29,"tag":127,"props":4137,"children":4138},{"class":600,"line":738},[4139,4144],{"type":29,"tag":127,"props":4140,"children":4141},{"style":605},[4142],{"type":56,"value":4143},"    - ",{"type":29,"tag":127,"props":4145,"children":4146},{"style":1688},[4147],{"type":56,"value":4148},"'curl --fail-with-body --header \"Job-Token: $CI_JOB_TOKEN\" --data tag=$CI_COMMIT_TAG \"${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/composer\"'\n",{"type":29,"tag":127,"props":4150,"children":4151},{"class":600,"line":760},[4152,4157,4161],{"type":29,"tag":127,"props":4153,"children":4154},{"style":4050},[4155],{"type":56,"value":4156},"  environment",{"type":29,"tag":127,"props":4158,"children":4159},{"style":605},[4160],{"type":56,"value":622},{"type":29,"tag":127,"props":4162,"children":4163},{"style":1688},[4164],{"type":56,"value":4165},"production\n",{"type":29,"tag":127,"props":4167,"children":4168},{"class":600,"line":782},[4169,4174],{"type":29,"tag":127,"props":4170,"children":4171},{"style":4050},[4172],{"type":56,"value":4173},"  rules",{"type":29,"tag":127,"props":4175,"children":4176},{"style":605},[4177],{"type":56,"value":4058},{"type":29,"tag":127,"props":4179,"children":4180},{"class":600,"line":803},[4181,4186,4190],{"type":29,"tag":127,"props":4182,"children":4183},{"style":4050},[4184],{"type":56,"value":4185},"    if",{"type":29,"tag":127,"props":4187,"children":4188},{"style":605},[4189],{"type":56,"value":622},{"type":29,"tag":127,"props":4191,"children":4192},{"style":1688},[4193],{"type":56,"value":4194},"$CI_COMMIT_TAG\n",{"type":29,"tag":122,"props":4196,"children":4198},{"id":4197},"mit-semantic-release",[4199],{"type":56,"value":4200},"Mit semantic-release",{"type":29,"tag":48,"props":4202,"children":4203},{},[4204],{"type":56,"value":4205},"Es wäre viel einfacher, wenn wir unsere Änderungen einfach pushen könnten und uns nicht um Versionierung und Tagging kümmern müssten.",{"type":29,"tag":48,"props":4207,"children":4208},{},[4209,4215],{"type":29,"tag":491,"props":4210,"children":4212},{"href":4211},"https://github.com/semantic-release/semantic-release",[4213],{"type":56,"value":4214},"semantic-release",{"type":56,"value":4216}," automatisiert den gesamten Workflow für Paket-Releases.",{"type":29,"tag":48,"props":4218,"children":4219},{},[4220,4222,4228],{"type":56,"value":4221},"Bitte befolgen Sie der ",{"type":29,"tag":491,"props":4223,"children":4225},{"href":4224},"https://github.com/semantic-release/gitlab?tab=readme-ov-file#gitlab-authentication",[4226],{"type":56,"value":4227},"Anleitung zur GitLab-Authentifizierung",{"type":56,"value":4229},", bevor Sie weiterlesen.",{"type":29,"tag":584,"props":4231,"children":4234},{"className":4037,"code":4232,"filename":4233,"language":4040,"meta":7,"style":7},"stages:\n  - release\n\nrelease:\n  stage: release\n  image:\n    name: ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n    entrypoint: [\"\"]\n  interruptible: true\n  script:\n    - /container-entrypoint.sh\n  rules:\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n\n","\u003Cplugin-root>/.gitlab-ci.yml",[4235],{"type":29,"tag":520,"props":4236,"children":4237},{"__ignoreMap":7},[4238,4249,4260,4267,4279,4294,4305,4322,4345,4361,4372,4384,4395,4416,4433],{"type":29,"tag":127,"props":4239,"children":4240},{"class":600,"line":601},[4241,4245],{"type":29,"tag":127,"props":4242,"children":4243},{"style":4050},[4244],{"type":56,"value":4053},{"type":29,"tag":127,"props":4246,"children":4247},{"style":605},[4248],{"type":56,"value":4058},{"type":29,"tag":127,"props":4250,"children":4251},{"class":600,"line":271},[4252,4256],{"type":29,"tag":127,"props":4253,"children":4254},{"style":605},[4255],{"type":56,"value":4066},{"type":29,"tag":127,"props":4257,"children":4258},{"style":1688},[4259],{"type":56,"value":4071},{"type":29,"tag":127,"props":4261,"children":4262},{"class":600,"line":636},[4263],{"type":29,"tag":127,"props":4264,"children":4265},{"emptyLinePlaceholder":1857},[4266],{"type":56,"value":1860},{"type":29,"tag":127,"props":4268,"children":4269},{"class":600,"line":658},[4270,4275],{"type":29,"tag":127,"props":4271,"children":4272},{"style":4050},[4273],{"type":56,"value":4274},"release",{"type":29,"tag":127,"props":4276,"children":4277},{"style":605},[4278],{"type":56,"value":4058},{"type":29,"tag":127,"props":4280,"children":4281},{"class":600,"line":680},[4282,4286,4290],{"type":29,"tag":127,"props":4283,"children":4284},{"style":4050},[4285],{"type":56,"value":4115},{"type":29,"tag":127,"props":4287,"children":4288},{"style":605},[4289],{"type":56,"value":622},{"type":29,"tag":127,"props":4291,"children":4292},{"style":1688},[4293],{"type":56,"value":4071},{"type":29,"tag":127,"props":4295,"children":4296},{"class":600,"line":694},[4297,4301],{"type":29,"tag":127,"props":4298,"children":4299},{"style":4050},[4300],{"type":56,"value":4098},{"type":29,"tag":127,"props":4302,"children":4303},{"style":605},[4304],{"type":56,"value":4058},{"type":29,"tag":127,"props":4306,"children":4307},{"class":600,"line":716},[4308,4313,4317],{"type":29,"tag":127,"props":4309,"children":4310},{"style":4050},[4311],{"type":56,"value":4312},"    name",{"type":29,"tag":127,"props":4314,"children":4315},{"style":605},[4316],{"type":56,"value":622},{"type":29,"tag":127,"props":4318,"children":4319},{"style":1688},[4320],{"type":56,"value":4321},"ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n",{"type":29,"tag":127,"props":4323,"children":4324},{"class":600,"line":738},[4325,4330,4335,4340],{"type":29,"tag":127,"props":4326,"children":4327},{"style":4050},[4328],{"type":56,"value":4329},"    entrypoint",{"type":29,"tag":127,"props":4331,"children":4332},{"style":605},[4333],{"type":56,"value":4334},": [",{"type":29,"tag":127,"props":4336,"children":4337},{"style":1688},[4338],{"type":56,"value":4339},"\"\"",{"type":29,"tag":127,"props":4341,"children":4342},{"style":605},[4343],{"type":56,"value":4344},"]\n",{"type":29,"tag":127,"props":4346,"children":4347},{"class":600,"line":760},[4348,4353,4357],{"type":29,"tag":127,"props":4349,"children":4350},{"style":4050},[4351],{"type":56,"value":4352},"  interruptible",{"type":29,"tag":127,"props":4354,"children":4355},{"style":605},[4356],{"type":56,"value":622},{"type":29,"tag":127,"props":4358,"children":4359},{"style":943},[4360],{"type":56,"value":946},{"type":29,"tag":127,"props":4362,"children":4363},{"class":600,"line":782},[4364,4368],{"type":29,"tag":127,"props":4365,"children":4366},{"style":4050},[4367],{"type":56,"value":4131},{"type":29,"tag":127,"props":4369,"children":4370},{"style":605},[4371],{"type":56,"value":4058},{"type":29,"tag":127,"props":4373,"children":4374},{"class":600,"line":803},[4375,4379],{"type":29,"tag":127,"props":4376,"children":4377},{"style":605},[4378],{"type":56,"value":4143},{"type":29,"tag":127,"props":4380,"children":4381},{"style":1688},[4382],{"type":56,"value":4383},"/container-entrypoint.sh\n",{"type":29,"tag":127,"props":4385,"children":4386},{"class":600,"line":118},[4387,4391],{"type":29,"tag":127,"props":4388,"children":4389},{"style":4050},[4390],{"type":56,"value":4173},{"type":29,"tag":127,"props":4392,"children":4393},{"style":605},[4394],{"type":56,"value":4058},{"type":29,"tag":127,"props":4396,"children":4397},{"class":600,"line":841},[4398,4402,4407,4411],{"type":29,"tag":127,"props":4399,"children":4400},{"style":605},[4401],{"type":56,"value":4143},{"type":29,"tag":127,"props":4403,"children":4404},{"style":4050},[4405],{"type":56,"value":4406},"if",{"type":29,"tag":127,"props":4408,"children":4409},{"style":605},[4410],{"type":56,"value":622},{"type":29,"tag":127,"props":4412,"children":4413},{"style":1688},[4414],{"type":56,"value":4415},"$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n",{"type":29,"tag":127,"props":4417,"children":4418},{"class":600,"line":850},[4419,4424,4428],{"type":29,"tag":127,"props":4420,"children":4421},{"style":4050},[4422],{"type":56,"value":4423},"      when",{"type":29,"tag":127,"props":4425,"children":4426},{"style":605},[4427],{"type":56,"value":622},{"type":29,"tag":127,"props":4429,"children":4430},{"style":1688},[4431],{"type":56,"value":4432},"never\n",{"type":29,"tag":127,"props":4434,"children":4435},{"class":600,"line":864},[4436,4440,4444,4448],{"type":29,"tag":127,"props":4437,"children":4438},{"style":605},[4439],{"type":56,"value":4143},{"type":29,"tag":127,"props":4441,"children":4442},{"style":4050},[4443],{"type":56,"value":4406},{"type":29,"tag":127,"props":4445,"children":4446},{"style":605},[4447],{"type":56,"value":622},{"type":29,"tag":127,"props":4449,"children":4450},{"style":1688},[4451],{"type":56,"value":4452},"$CI_COMMIT_BRANCH\n",{"type":29,"tag":584,"props":4454,"children":4457},{"className":586,"code":4455,"filename":4456,"language":384,"meta":7,"style":7},"{\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    [\n      \"semantic-release-replace-plugin\",\n      {\n        \"replacements\": [\n          {\n            \"files\": [\"composer.json\"],\n            \"from\": \"version\\\": \\\".*\\\"\",\n            \"to\": \"version\\\": \\\"${nextRelease.version}\\\"\"\n          }\n        ]\n      }\n    ],\n    [\n      \"@semantic-release/git\",\n      {\n        \"assets\": [\"composer.json\"],\n        \"message\": \"chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}\"\n      }\n    ],\n    [\n      \"@semantic-release/exec\",\n      {\n        \"publishCmd\": \"curl --fail-with-body --header \\\"Job-Token: ${process.env.CI_JOB_TOKEN}\\\" --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n      }\n    ]\n  ]\n}\n","\u003Cplugin-root>/.releaserc.json",[4458],{"type":29,"tag":520,"props":4459,"children":4460},{"__ignoreMap":7},[4461,4468,4480,4492,4500,4512,4520,4532,4540,4562,4609,4651,4659,4667,4674,4681,4688,4700,4707,4727,4754,4761,4768,4775,4787,4794,4829,4836,4843,4851],{"type":29,"tag":127,"props":4462,"children":4463},{"class":600,"line":601},[4464],{"type":29,"tag":127,"props":4465,"children":4466},{"style":605},[4467],{"type":56,"value":608},{"type":29,"tag":127,"props":4469,"children":4470},{"class":600,"line":271},[4471,4476],{"type":29,"tag":127,"props":4472,"children":4473},{"style":614},[4474],{"type":56,"value":4475},"  \"plugins\"",{"type":29,"tag":127,"props":4477,"children":4478},{"style":605},[4479],{"type":56,"value":861},{"type":29,"tag":127,"props":4481,"children":4482},{"class":600,"line":636},[4483,4488],{"type":29,"tag":127,"props":4484,"children":4485},{"style":625},[4486],{"type":56,"value":4487},"    \"@semantic-release/commit-analyzer\"",{"type":29,"tag":127,"props":4489,"children":4490},{"style":605},[4491],{"type":56,"value":633},{"type":29,"tag":127,"props":4493,"children":4494},{"class":600,"line":658},[4495],{"type":29,"tag":127,"props":4496,"children":4497},{"style":605},[4498],{"type":56,"value":4499},"    [\n",{"type":29,"tag":127,"props":4501,"children":4502},{"class":600,"line":680},[4503,4508],{"type":29,"tag":127,"props":4504,"children":4505},{"style":625},[4506],{"type":56,"value":4507},"      \"semantic-release-replace-plugin\"",{"type":29,"tag":127,"props":4509,"children":4510},{"style":605},[4511],{"type":56,"value":633},{"type":29,"tag":127,"props":4513,"children":4514},{"class":600,"line":694},[4515],{"type":29,"tag":127,"props":4516,"children":4517},{"style":605},[4518],{"type":56,"value":4519},"      {\n",{"type":29,"tag":127,"props":4521,"children":4522},{"class":600,"line":716},[4523,4528],{"type":29,"tag":127,"props":4524,"children":4525},{"style":614},[4526],{"type":56,"value":4527},"        \"replacements\"",{"type":29,"tag":127,"props":4529,"children":4530},{"style":605},[4531],{"type":56,"value":861},{"type":29,"tag":127,"props":4533,"children":4534},{"class":600,"line":738},[4535],{"type":29,"tag":127,"props":4536,"children":4537},{"style":605},[4538],{"type":56,"value":4539},"          {\n",{"type":29,"tag":127,"props":4541,"children":4542},{"class":600,"line":760},[4543,4548,4552,4557],{"type":29,"tag":127,"props":4544,"children":4545},{"style":614},[4546],{"type":56,"value":4547},"            \"files\"",{"type":29,"tag":127,"props":4549,"children":4550},{"style":605},[4551],{"type":56,"value":4334},{"type":29,"tag":127,"props":4553,"children":4554},{"style":625},[4555],{"type":56,"value":4556},"\"composer.json\"",{"type":29,"tag":127,"props":4558,"children":4559},{"style":605},[4560],{"type":56,"value":4561},"],\n",{"type":29,"tag":127,"props":4563,"children":4564},{"class":600,"line":782},[4565,4570,4574,4579,4584,4588,4592,4597,4601,4605],{"type":29,"tag":127,"props":4566,"children":4567},{"style":614},[4568],{"type":56,"value":4569},"            \"from\"",{"type":29,"tag":127,"props":4571,"children":4572},{"style":605},[4573],{"type":56,"value":622},{"type":29,"tag":127,"props":4575,"children":4576},{"style":625},[4577],{"type":56,"value":4578},"\"version",{"type":29,"tag":127,"props":4580,"children":4581},{"style":943},[4582],{"type":56,"value":4583},"\\\"",{"type":29,"tag":127,"props":4585,"children":4586},{"style":625},[4587],{"type":56,"value":622},{"type":29,"tag":127,"props":4589,"children":4590},{"style":943},[4591],{"type":56,"value":4583},{"type":29,"tag":127,"props":4593,"children":4594},{"style":625},[4595],{"type":56,"value":4596},".*",{"type":29,"tag":127,"props":4598,"children":4599},{"style":943},[4600],{"type":56,"value":4583},{"type":29,"tag":127,"props":4602,"children":4603},{"style":625},[4604],{"type":56,"value":1261},{"type":29,"tag":127,"props":4606,"children":4607},{"style":605},[4608],{"type":56,"value":633},{"type":29,"tag":127,"props":4610,"children":4611},{"class":600,"line":803},[4612,4617,4621,4625,4629,4633,4637,4642,4646],{"type":29,"tag":127,"props":4613,"children":4614},{"style":614},[4615],{"type":56,"value":4616},"            \"to\"",{"type":29,"tag":127,"props":4618,"children":4619},{"style":605},[4620],{"type":56,"value":622},{"type":29,"tag":127,"props":4622,"children":4623},{"style":625},[4624],{"type":56,"value":4578},{"type":29,"tag":127,"props":4626,"children":4627},{"style":943},[4628],{"type":56,"value":4583},{"type":29,"tag":127,"props":4630,"children":4631},{"style":625},[4632],{"type":56,"value":622},{"type":29,"tag":127,"props":4634,"children":4635},{"style":943},[4636],{"type":56,"value":4583},{"type":29,"tag":127,"props":4638,"children":4639},{"style":625},[4640],{"type":56,"value":4641},"${nextRelease.version}",{"type":29,"tag":127,"props":4643,"children":4644},{"style":943},[4645],{"type":56,"value":4583},{"type":29,"tag":127,"props":4647,"children":4648},{"style":625},[4649],{"type":56,"value":4650},"\"\n",{"type":29,"tag":127,"props":4652,"children":4653},{"class":600,"line":118},[4654],{"type":29,"tag":127,"props":4655,"children":4656},{"style":605},[4657],{"type":56,"value":4658},"          }\n",{"type":29,"tag":127,"props":4660,"children":4661},{"class":600,"line":841},[4662],{"type":29,"tag":127,"props":4663,"children":4664},{"style":605},[4665],{"type":56,"value":4666},"        ]\n",{"type":29,"tag":127,"props":4668,"children":4669},{"class":600,"line":850},[4670],{"type":29,"tag":127,"props":4671,"children":4672},{"style":605},[4673],{"type":56,"value":955},{"type":29,"tag":127,"props":4675,"children":4676},{"class":600,"line":864},[4677],{"type":29,"tag":127,"props":4678,"children":4679},{"style":605},[4680],{"type":56,"value":1508},{"type":29,"tag":127,"props":4682,"children":4683},{"class":600,"line":873},[4684],{"type":29,"tag":127,"props":4685,"children":4686},{"style":605},[4687],{"type":56,"value":4499},{"type":29,"tag":127,"props":4689,"children":4690},{"class":600,"line":895},[4691,4696],{"type":29,"tag":127,"props":4692,"children":4693},{"style":625},[4694],{"type":56,"value":4695},"      \"@semantic-release/git\"",{"type":29,"tag":127,"props":4697,"children":4698},{"style":605},[4699],{"type":56,"value":633},{"type":29,"tag":127,"props":4701,"children":4702},{"class":600,"line":917},[4703],{"type":29,"tag":127,"props":4704,"children":4705},{"style":605},[4706],{"type":56,"value":4519},{"type":29,"tag":127,"props":4708,"children":4709},{"class":600,"line":930},[4710,4715,4719,4723],{"type":29,"tag":127,"props":4711,"children":4712},{"style":614},[4713],{"type":56,"value":4714},"        \"assets\"",{"type":29,"tag":127,"props":4716,"children":4717},{"style":605},[4718],{"type":56,"value":4334},{"type":29,"tag":127,"props":4720,"children":4721},{"style":625},[4722],{"type":56,"value":4556},{"type":29,"tag":127,"props":4724,"children":4725},{"style":605},[4726],{"type":56,"value":4561},{"type":29,"tag":127,"props":4728,"children":4729},{"class":600,"line":949},[4730,4735,4739,4744,4749],{"type":29,"tag":127,"props":4731,"children":4732},{"style":614},[4733],{"type":56,"value":4734},"        \"message\"",{"type":29,"tag":127,"props":4736,"children":4737},{"style":605},[4738],{"type":56,"value":622},{"type":29,"tag":127,"props":4740,"children":4741},{"style":625},[4742],{"type":56,"value":4743},"\"chore(release): ${nextRelease.version} [skip ci]",{"type":29,"tag":127,"props":4745,"children":4746},{"style":943},[4747],{"type":56,"value":4748},"\\n\\n",{"type":29,"tag":127,"props":4750,"children":4751},{"style":625},[4752],{"type":56,"value":4753},"${nextRelease.notes}\"\n",{"type":29,"tag":127,"props":4755,"children":4756},{"class":600,"line":958},[4757],{"type":29,"tag":127,"props":4758,"children":4759},{"style":605},[4760],{"type":56,"value":955},{"type":29,"tag":127,"props":4762,"children":4763},{"class":600,"line":967},[4764],{"type":29,"tag":127,"props":4765,"children":4766},{"style":605},[4767],{"type":56,"value":1508},{"type":29,"tag":127,"props":4769,"children":4770},{"class":600,"line":975},[4771],{"type":29,"tag":127,"props":4772,"children":4773},{"style":605},[4774],{"type":56,"value":4499},{"type":29,"tag":127,"props":4776,"children":4777},{"class":600,"line":995},[4778,4783],{"type":29,"tag":127,"props":4779,"children":4780},{"style":625},[4781],{"type":56,"value":4782},"      \"@semantic-release/exec\"",{"type":29,"tag":127,"props":4784,"children":4785},{"style":605},[4786],{"type":56,"value":633},{"type":29,"tag":127,"props":4788,"children":4789},{"class":600,"line":1016},[4790],{"type":29,"tag":127,"props":4791,"children":4792},{"style":605},[4793],{"type":56,"value":4519},{"type":29,"tag":127,"props":4795,"children":4796},{"class":600,"line":1028},[4797,4802,4806,4811,4815,4820,4824],{"type":29,"tag":127,"props":4798,"children":4799},{"style":614},[4800],{"type":56,"value":4801},"        \"publishCmd\"",{"type":29,"tag":127,"props":4803,"children":4804},{"style":605},[4805],{"type":56,"value":622},{"type":29,"tag":127,"props":4807,"children":4808},{"style":625},[4809],{"type":56,"value":4810},"\"curl --fail-with-body --header ",{"type":29,"tag":127,"props":4812,"children":4813},{"style":943},[4814],{"type":56,"value":4583},{"type":29,"tag":127,"props":4816,"children":4817},{"style":625},[4818],{"type":56,"value":4819},"Job-Token: ${process.env.CI_JOB_TOKEN}",{"type":29,"tag":127,"props":4821,"children":4822},{"style":943},[4823],{"type":56,"value":4583},{"type":29,"tag":127,"props":4825,"children":4826},{"style":625},[4827],{"type":56,"value":4828}," --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n",{"type":29,"tag":127,"props":4830,"children":4831},{"class":600,"line":1044},[4832],{"type":29,"tag":127,"props":4833,"children":4834},{"style":605},[4835],{"type":56,"value":955},{"type":29,"tag":127,"props":4837,"children":4838},{"class":600,"line":1052},[4839],{"type":29,"tag":127,"props":4840,"children":4841},{"style":605},[4842],{"type":56,"value":1538},{"type":29,"tag":127,"props":4844,"children":4845},{"class":600,"line":1060},[4846],{"type":29,"tag":127,"props":4847,"children":4848},{"style":605},[4849],{"type":56,"value":4850},"  ]\n",{"type":29,"tag":127,"props":4852,"children":4853},{"class":600,"line":1068},[4854],{"type":29,"tag":127,"props":4855,"children":4856},{"style":605},[4857],{"type":56,"value":1663},{"type":29,"tag":48,"props":4859,"children":4860},{},[4861],{"type":56,"value":4862},"Dies wird:",{"type":29,"tag":510,"props":4864,"children":4865},{},[4866,4871,4883,4895,4900],{"type":29,"tag":514,"props":4867,"children":4868},{},[4869],{"type":56,"value":4870},"Die Commits seit dem letzten Release analysieren, um zu entscheiden, ob eine neue Version veröffentlicht werden soll",{"type":29,"tag":514,"props":4872,"children":4873},{},[4874,4876,4881],{"type":56,"value":4875},"Die Version in der ",{"type":29,"tag":520,"props":4877,"children":4879},{"className":4878},[],[4880],{"type":56,"value":1938},{"type":56,"value":4882}," aktualisieren",{"type":29,"tag":514,"props":4884,"children":4885},{},[4886,4888,4893],{"type":56,"value":4887},"Die ",{"type":29,"tag":520,"props":4889,"children":4891},{"className":4890},[],[4892],{"type":56,"value":1938},{"type":56,"value":4894}," zurück in das Repository committen",{"type":29,"tag":514,"props":4896,"children":4897},{},[4898],{"type":56,"value":4899},"Einen Tag erstellen",{"type":29,"tag":514,"props":4901,"children":4902},{},[4903],{"type":56,"value":4904},"Ein Composer-Paket von diesem Tag releasen",{"type":29,"tag":4906,"props":4907,"children":4908},"style",{},[4909],{"type":56,"value":4910},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":271,"depth":271,"links":4912},[4913,4919],{"id":555,"depth":271,"text":558,"children":4914},[4915,4916,4917,4918],{"id":566,"depth":636,"text":569},{"id":1904,"depth":636,"text":1907},{"id":2566,"depth":636,"text":2569},{"id":3918,"depth":636,"text":3921},{"id":3952,"depth":271,"text":3955,"children":4920},[4921,4922],{"id":3958,"depth":636,"text":3961},{"id":4197,"depth":636,"text":4200},{"_path":409,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":410,"description":411,"author":394,"image":395,"releaseDate":396,"blogCategories":4924,"articleTags":4925,"tags":4926,"body":4927,"_type":275,"_id":415,"_source":277,"_file":416,"_stem":417,"_extension":280},[398,399],[399,401,402],[23,404],{"type":26,"children":4928,"toc":6002},[4929,4933,4945,4957,4963,4968,4997,5002,5007,5026,5037,5042,5063,5069,5089,5408,5419,5424,5967,5976,5980,5998],{"type":29,"tag":66,"props":4930,"children":4932},{"alt":7,"aspect-ratio":475,"height":476,"object-fit":477,"src":4931},"/blog/shopware-plugin-build+release.png",[],{"type":29,"tag":48,"props":4934,"children":4935},{},[4936,4938,4943],{"type":56,"value":4937},"In meinem ",{"type":29,"tag":491,"props":4939,"children":4940},{"href":390},[4941],{"type":56,"value":4942},"vorherigen Post",{"type":56,"value":4944}," habe ich beschrieben, wie man ein Shopware 6 Plugin über die GitLab Package Registry ausliefert.",{"type":29,"tag":48,"props":4946,"children":4947},{},[4948,4950,4955],{"type":56,"value":4949},"Wenn wir unser Projekt mit dem ",{"type":29,"tag":491,"props":4951,"children":4953},{"href":4952},"https://developer.shopware.com/docs/products/cli/extension-commands/build.html#building-an-extension",[4954],{"type":56,"value":547},{"type":56,"value":4956}," bauen,\nsucht das Tool in allen Plugins und prüft, ob sie gebaut werden müssen, und tut dies gegebenenfalls. Dies ist ein unnötiger Schritt.",{"type":29,"tag":90,"props":4958,"children":4960},{"id":4959},"manuelles-bauen",[4961],{"type":56,"value":4962},"Manuelles Bauen",{"type":29,"tag":48,"props":4964,"children":4965},{},[4966],{"type":56,"value":4967},"Das Bauen eines Plugins ist so einfach wie das Ausführen von:",{"type":29,"tag":584,"props":4969,"children":4971},{"className":1671,"code":4970,"language":1673,"meta":7,"style":7},"shopware-cli extension build .\n",[4972],{"type":29,"tag":520,"props":4973,"children":4974},{"__ignoreMap":7},[4975],{"type":29,"tag":127,"props":4976,"children":4977},{"class":600,"line":601},[4978,4982,4987,4992],{"type":29,"tag":127,"props":4979,"children":4980},{"style":1683},[4981],{"type":56,"value":547},{"type":29,"tag":127,"props":4983,"children":4984},{"style":1688},[4985],{"type":56,"value":4986}," extension",{"type":29,"tag":127,"props":4988,"children":4989},{"style":1688},[4990],{"type":56,"value":4991}," build",{"type":29,"tag":127,"props":4993,"children":4994},{"style":1688},[4995],{"type":56,"value":4996}," .\n",{"type":29,"tag":48,"props":4998,"children":4999},{},[5000],{"type":56,"value":5001},"Im Plugin-Root-Verzeichnis.",{"type":29,"tag":48,"props":5003,"children":5004},{},[5005],{"type":56,"value":5006},"Es gibt einige Anpassungen, die Sie vornehmen können, wie zum Beispiel:",{"type":29,"tag":5008,"props":5009,"children":5010},"ul",{},[5011,5016,5021],{"type":29,"tag":514,"props":5012,"children":5013},{},[5014],{"type":56,"value":5015},"Einschränkung einer Shopware-Version",{"type":29,"tag":514,"props":5017,"children":5018},{},[5019],{"type":56,"value":5020},"Angabe zusätzlicher Bundles",{"type":29,"tag":514,"props":5022,"children":5023},{},[5024],{"type":56,"value":5025},"Verwendung von esbuild",{"type":29,"tag":48,"props":5027,"children":5028},{},[5029,5031,5036],{"type":56,"value":5030},"Detaillierte Konfigurationen finden Sie in der ",{"type":29,"tag":491,"props":5032,"children":5034},{"href":5033},"https://developer.shopware.com/docs/products/cli/extension-commands/build.html",[5035],{"type":56,"value":496},{"type":56,"value":498},{"type":29,"tag":48,"props":5038,"children":5039},{},[5040],{"type":56,"value":5041},"Der Build-Prozess erstellt die folgenden Verzeichnisse, die die kompilierten Dateien enthalten:",{"type":29,"tag":5008,"props":5043,"children":5044},{},[5045,5054],{"type":29,"tag":514,"props":5046,"children":5047},{},[5048],{"type":29,"tag":520,"props":5049,"children":5051},{"className":5050},[],[5052],{"type":56,"value":5053},"src/Resources/app/storefront/dist/",{"type":29,"tag":514,"props":5055,"children":5056},{},[5057],{"type":29,"tag":520,"props":5058,"children":5060},{"className":5059},[],[5061],{"type":56,"value":5062},"src/Resources/public/static/",{"type":29,"tag":90,"props":5064,"children":5066},{"id":5065},"build-pipeline",[5067],{"type":56,"value":5068},"Build-Pipeline",{"type":29,"tag":48,"props":5070,"children":5071},{},[5072,5074,5079,5081,5087],{"type":56,"value":5073},"Wir verwenden das offizielle ",{"type":29,"tag":520,"props":5075,"children":5077},{"className":5076},[],[5078],{"type":56,"value":547},{"type":56,"value":5080}," Docker-Image. Um den Prozess zu beschleunigen, nutzen wir das ",{"type":29,"tag":520,"props":5082,"children":5084},{"className":5083},[],[5085],{"type":56,"value":5086},"CI",{"type":56,"value":5088},"-Caching-System.",{"type":29,"tag":584,"props":5090,"children":5093},{"className":4037,"code":5091,"filename":4233,"highlights":5092,"language":4040,"meta":7,"style":7},"stages:\n  - build\n\nbuild:\n  image:\n    name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n    entrypoint: [\"\"]\n  stage: build\n  variables:\n    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer\n    npm_config_cache: ${CI_PROJECT_DIR}/.npm\n  script:\n    - shopware-cli extension build .\n  cache:\n    - key: $CI_JOB_NAME\n      paths:\n        - $COMPOSER_CACHE_DIR\n        - $npm_config_cache\n  rules:\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n",[694,850,864,873,895,917],[5094],{"type":29,"tag":520,"props":5095,"children":5096},{"__ignoreMap":7},[5097,5108,5120,5127,5139,5150,5167,5186,5201,5213,5230,5247,5258,5269,5282,5304,5317,5331,5344,5355,5374,5389],{"type":29,"tag":127,"props":5098,"children":5099},{"class":600,"line":601},[5100,5104],{"type":29,"tag":127,"props":5101,"children":5102},{"style":4050},[5103],{"type":56,"value":4053},{"type":29,"tag":127,"props":5105,"children":5106},{"style":605},[5107],{"type":56,"value":4058},{"type":29,"tag":127,"props":5109,"children":5110},{"class":600,"line":271},[5111,5115],{"type":29,"tag":127,"props":5112,"children":5113},{"style":605},[5114],{"type":56,"value":4066},{"type":29,"tag":127,"props":5116,"children":5117},{"style":1688},[5118],{"type":56,"value":5119},"build\n",{"type":29,"tag":127,"props":5121,"children":5122},{"class":600,"line":636},[5123],{"type":29,"tag":127,"props":5124,"children":5125},{"emptyLinePlaceholder":1857},[5126],{"type":56,"value":1860},{"type":29,"tag":127,"props":5128,"children":5129},{"class":600,"line":658},[5130,5135],{"type":29,"tag":127,"props":5131,"children":5132},{"style":4050},[5133],{"type":56,"value":5134},"build",{"type":29,"tag":127,"props":5136,"children":5137},{"style":605},[5138],{"type":56,"value":4058},{"type":29,"tag":127,"props":5140,"children":5141},{"class":600,"line":680},[5142,5146],{"type":29,"tag":127,"props":5143,"children":5144},{"style":4050},[5145],{"type":56,"value":4098},{"type":29,"tag":127,"props":5147,"children":5148},{"style":605},[5149],{"type":56,"value":4058},{"type":29,"tag":127,"props":5151,"children":5153},{"class":5152,"line":694},[600,1154],[5154,5158,5162],{"type":29,"tag":127,"props":5155,"children":5156},{"style":4050},[5157],{"type":56,"value":4312},{"type":29,"tag":127,"props":5159,"children":5160},{"style":605},[5161],{"type":56,"value":622},{"type":29,"tag":127,"props":5163,"children":5164},{"style":1688},[5165],{"type":56,"value":5166},"ghcr.io/shopware/shopware-cli:latest-php-8.2\n",{"type":29,"tag":127,"props":5168,"children":5169},{"class":600,"line":716},[5170,5174,5178,5182],{"type":29,"tag":127,"props":5171,"children":5172},{"style":4050},[5173],{"type":56,"value":4329},{"type":29,"tag":127,"props":5175,"children":5176},{"style":605},[5177],{"type":56,"value":4334},{"type":29,"tag":127,"props":5179,"children":5180},{"style":1688},[5181],{"type":56,"value":4339},{"type":29,"tag":127,"props":5183,"children":5184},{"style":605},[5185],{"type":56,"value":4344},{"type":29,"tag":127,"props":5187,"children":5188},{"class":600,"line":738},[5189,5193,5197],{"type":29,"tag":127,"props":5190,"children":5191},{"style":4050},[5192],{"type":56,"value":4115},{"type":29,"tag":127,"props":5194,"children":5195},{"style":605},[5196],{"type":56,"value":622},{"type":29,"tag":127,"props":5198,"children":5199},{"style":1688},[5200],{"type":56,"value":5119},{"type":29,"tag":127,"props":5202,"children":5203},{"class":600,"line":760},[5204,5209],{"type":29,"tag":127,"props":5205,"children":5206},{"style":4050},[5207],{"type":56,"value":5208},"  variables",{"type":29,"tag":127,"props":5210,"children":5211},{"style":605},[5212],{"type":56,"value":4058},{"type":29,"tag":127,"props":5214,"children":5215},{"class":600,"line":782},[5216,5221,5225],{"type":29,"tag":127,"props":5217,"children":5218},{"style":4050},[5219],{"type":56,"value":5220},"    COMPOSER_CACHE_DIR",{"type":29,"tag":127,"props":5222,"children":5223},{"style":605},[5224],{"type":56,"value":622},{"type":29,"tag":127,"props":5226,"children":5227},{"style":1688},[5228],{"type":56,"value":5229},"${CI_PROJECT_DIR}/.composer\n",{"type":29,"tag":127,"props":5231,"children":5232},{"class":600,"line":803},[5233,5238,5242],{"type":29,"tag":127,"props":5234,"children":5235},{"style":4050},[5236],{"type":56,"value":5237},"    npm_config_cache",{"type":29,"tag":127,"props":5239,"children":5240},{"style":605},[5241],{"type":56,"value":622},{"type":29,"tag":127,"props":5243,"children":5244},{"style":1688},[5245],{"type":56,"value":5246},"${CI_PROJECT_DIR}/.npm\n",{"type":29,"tag":127,"props":5248,"children":5249},{"class":600,"line":118},[5250,5254],{"type":29,"tag":127,"props":5251,"children":5252},{"style":4050},[5253],{"type":56,"value":4131},{"type":29,"tag":127,"props":5255,"children":5256},{"style":605},[5257],{"type":56,"value":4058},{"type":29,"tag":127,"props":5259,"children":5260},{"class":600,"line":841},[5261,5265],{"type":29,"tag":127,"props":5262,"children":5263},{"style":605},[5264],{"type":56,"value":4143},{"type":29,"tag":127,"props":5266,"children":5267},{"style":1688},[5268],{"type":56,"value":4970},{"type":29,"tag":127,"props":5270,"children":5272},{"class":5271,"line":850},[600,1154],[5273,5278],{"type":29,"tag":127,"props":5274,"children":5275},{"style":4050},[5276],{"type":56,"value":5277},"  cache",{"type":29,"tag":127,"props":5279,"children":5280},{"style":605},[5281],{"type":56,"value":4058},{"type":29,"tag":127,"props":5283,"children":5285},{"class":5284,"line":864},[600,1154],[5286,5290,5295,5299],{"type":29,"tag":127,"props":5287,"children":5288},{"style":605},[5289],{"type":56,"value":4143},{"type":29,"tag":127,"props":5291,"children":5292},{"style":4050},[5293],{"type":56,"value":5294},"key",{"type":29,"tag":127,"props":5296,"children":5297},{"style":605},[5298],{"type":56,"value":622},{"type":29,"tag":127,"props":5300,"children":5301},{"style":1688},[5302],{"type":56,"value":5303},"$CI_JOB_NAME\n",{"type":29,"tag":127,"props":5305,"children":5307},{"class":5306,"line":873},[600,1154],[5308,5313],{"type":29,"tag":127,"props":5309,"children":5310},{"style":4050},[5311],{"type":56,"value":5312},"      paths",{"type":29,"tag":127,"props":5314,"children":5315},{"style":605},[5316],{"type":56,"value":4058},{"type":29,"tag":127,"props":5318,"children":5320},{"class":5319,"line":895},[600,1154],[5321,5326],{"type":29,"tag":127,"props":5322,"children":5323},{"style":605},[5324],{"type":56,"value":5325},"        - ",{"type":29,"tag":127,"props":5327,"children":5328},{"style":1688},[5329],{"type":56,"value":5330},"$COMPOSER_CACHE_DIR\n",{"type":29,"tag":127,"props":5332,"children":5334},{"class":5333,"line":917},[600,1154],[5335,5339],{"type":29,"tag":127,"props":5336,"children":5337},{"style":605},[5338],{"type":56,"value":5325},{"type":29,"tag":127,"props":5340,"children":5341},{"style":1688},[5342],{"type":56,"value":5343},"$npm_config_cache\n",{"type":29,"tag":127,"props":5345,"children":5346},{"class":600,"line":930},[5347,5351],{"type":29,"tag":127,"props":5348,"children":5349},{"style":4050},[5350],{"type":56,"value":4173},{"type":29,"tag":127,"props":5352,"children":5353},{"style":605},[5354],{"type":56,"value":4058},{"type":29,"tag":127,"props":5356,"children":5357},{"class":600,"line":949},[5358,5362,5366,5370],{"type":29,"tag":127,"props":5359,"children":5360},{"style":605},[5361],{"type":56,"value":4143},{"type":29,"tag":127,"props":5363,"children":5364},{"style":4050},[5365],{"type":56,"value":4406},{"type":29,"tag":127,"props":5367,"children":5368},{"style":605},[5369],{"type":56,"value":622},{"type":29,"tag":127,"props":5371,"children":5372},{"style":1688},[5373],{"type":56,"value":4415},{"type":29,"tag":127,"props":5375,"children":5376},{"class":600,"line":958},[5377,5381,5385],{"type":29,"tag":127,"props":5378,"children":5379},{"style":4050},[5380],{"type":56,"value":4423},{"type":29,"tag":127,"props":5382,"children":5383},{"style":605},[5384],{"type":56,"value":622},{"type":29,"tag":127,"props":5386,"children":5387},{"style":1688},[5388],{"type":56,"value":4432},{"type":29,"tag":127,"props":5390,"children":5391},{"class":600,"line":967},[5392,5396,5400,5404],{"type":29,"tag":127,"props":5393,"children":5394},{"style":605},[5395],{"type":56,"value":4143},{"type":29,"tag":127,"props":5397,"children":5398},{"style":4050},[5399],{"type":56,"value":4406},{"type":29,"tag":127,"props":5401,"children":5402},{"style":605},[5403],{"type":56,"value":622},{"type":29,"tag":127,"props":5405,"children":5406},{"style":1688},[5407],{"type":56,"value":4452},{"type":29,"tag":48,"props":5409,"children":5410},{},[5411,5413,5418],{"type":56,"value":5412},"Kombinieren wir dies mit unserer Release-Pipeline aus dem ",{"type":29,"tag":491,"props":5414,"children":5416},{"href":5415},"/blog/shopware-plugin-gitlab-pipeline-release#mit-semantic-release",[5417],{"type":56,"value":4942},{"type":56,"value":498},{"type":29,"tag":48,"props":5420,"children":5421},{},[5422],{"type":56,"value":5423},"Es ist wichtig, die gebauten Artefakte an den nächsten Job zu übergeben.",{"type":29,"tag":584,"props":5425,"children":5428},{"className":4037,"code":5426,"filename":4233,"highlights":5427,"language":4040,"meta":7,"style":7},"stages:\n  - release\n  - build\n\nbuild:\n  image:\n    name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n    entrypoint: [\"\"]\n  stage: build\n  variables:\n    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer\n    npm_config_cache: ${CI_PROJECT_DIR}/.npm\n  script:\n    - shopware-cli extension build .\n  cache:\n    - key: $CI_JOB_NAME\n      paths:\n        - $COMPOSER_CACHE_DIR\n        - $npm_config_cache\n  artifacts:\n    paths:\n      - src/Resources/public\n      - src/Storefront/Resources/public\n  rules:\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n\nrelease:\n  stage: release\n  image:\n    name: ghcr.io/voxpupuli/semantic-release:latest\n    entrypoint: [\"\"]\n  interruptible: true\n  script:\n    - /docker-entrypoint.sh\n  rules:\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n",[949,958,967,975],[5429],{"type":29,"tag":520,"props":5430,"children":5431},{"__ignoreMap":7},[5432,5443,5454,5465,5472,5483,5494,5509,5528,5543,5554,5569,5584,5595,5606,5617,5636,5647,5658,5669,5682,5695,5709,5722,5733,5752,5767,5786,5793,5804,5819,5830,5846,5865,5880,5891,5903,5914,5933,5948],{"type":29,"tag":127,"props":5433,"children":5434},{"class":600,"line":601},[5435,5439],{"type":29,"tag":127,"props":5436,"children":5437},{"style":4050},[5438],{"type":56,"value":4053},{"type":29,"tag":127,"props":5440,"children":5441},{"style":605},[5442],{"type":56,"value":4058},{"type":29,"tag":127,"props":5444,"children":5445},{"class":600,"line":271},[5446,5450],{"type":29,"tag":127,"props":5447,"children":5448},{"style":605},[5449],{"type":56,"value":4066},{"type":29,"tag":127,"props":5451,"children":5452},{"style":1688},[5453],{"type":56,"value":4071},{"type":29,"tag":127,"props":5455,"children":5456},{"class":600,"line":636},[5457,5461],{"type":29,"tag":127,"props":5458,"children":5459},{"style":605},[5460],{"type":56,"value":4066},{"type":29,"tag":127,"props":5462,"children":5463},{"style":1688},[5464],{"type":56,"value":5119},{"type":29,"tag":127,"props":5466,"children":5467},{"class":600,"line":658},[5468],{"type":29,"tag":127,"props":5469,"children":5470},{"emptyLinePlaceholder":1857},[5471],{"type":56,"value":1860},{"type":29,"tag":127,"props":5473,"children":5474},{"class":600,"line":680},[5475,5479],{"type":29,"tag":127,"props":5476,"children":5477},{"style":4050},[5478],{"type":56,"value":5134},{"type":29,"tag":127,"props":5480,"children":5481},{"style":605},[5482],{"type":56,"value":4058},{"type":29,"tag":127,"props":5484,"children":5485},{"class":600,"line":694},[5486,5490],{"type":29,"tag":127,"props":5487,"children":5488},{"style":4050},[5489],{"type":56,"value":4098},{"type":29,"tag":127,"props":5491,"children":5492},{"style":605},[5493],{"type":56,"value":4058},{"type":29,"tag":127,"props":5495,"children":5496},{"class":600,"line":716},[5497,5501,5505],{"type":29,"tag":127,"props":5498,"children":5499},{"style":4050},[5500],{"type":56,"value":4312},{"type":29,"tag":127,"props":5502,"children":5503},{"style":605},[5504],{"type":56,"value":622},{"type":29,"tag":127,"props":5506,"children":5507},{"style":1688},[5508],{"type":56,"value":5166},{"type":29,"tag":127,"props":5510,"children":5511},{"class":600,"line":738},[5512,5516,5520,5524],{"type":29,"tag":127,"props":5513,"children":5514},{"style":4050},[5515],{"type":56,"value":4329},{"type":29,"tag":127,"props":5517,"children":5518},{"style":605},[5519],{"type":56,"value":4334},{"type":29,"tag":127,"props":5521,"children":5522},{"style":1688},[5523],{"type":56,"value":4339},{"type":29,"tag":127,"props":5525,"children":5526},{"style":605},[5527],{"type":56,"value":4344},{"type":29,"tag":127,"props":5529,"children":5530},{"class":600,"line":760},[5531,5535,5539],{"type":29,"tag":127,"props":5532,"children":5533},{"style":4050},[5534],{"type":56,"value":4115},{"type":29,"tag":127,"props":5536,"children":5537},{"style":605},[5538],{"type":56,"value":622},{"type":29,"tag":127,"props":5540,"children":5541},{"style":1688},[5542],{"type":56,"value":5119},{"type":29,"tag":127,"props":5544,"children":5545},{"class":600,"line":782},[5546,5550],{"type":29,"tag":127,"props":5547,"children":5548},{"style":4050},[5549],{"type":56,"value":5208},{"type":29,"tag":127,"props":5551,"children":5552},{"style":605},[5553],{"type":56,"value":4058},{"type":29,"tag":127,"props":5555,"children":5556},{"class":600,"line":803},[5557,5561,5565],{"type":29,"tag":127,"props":5558,"children":5559},{"style":4050},[5560],{"type":56,"value":5220},{"type":29,"tag":127,"props":5562,"children":5563},{"style":605},[5564],{"type":56,"value":622},{"type":29,"tag":127,"props":5566,"children":5567},{"style":1688},[5568],{"type":56,"value":5229},{"type":29,"tag":127,"props":5570,"children":5571},{"class":600,"line":118},[5572,5576,5580],{"type":29,"tag":127,"props":5573,"children":5574},{"style":4050},[5575],{"type":56,"value":5237},{"type":29,"tag":127,"props":5577,"children":5578},{"style":605},[5579],{"type":56,"value":622},{"type":29,"tag":127,"props":5581,"children":5582},{"style":1688},[5583],{"type":56,"value":5246},{"type":29,"tag":127,"props":5585,"children":5586},{"class":600,"line":841},[5587,5591],{"type":29,"tag":127,"props":5588,"children":5589},{"style":4050},[5590],{"type":56,"value":4131},{"type":29,"tag":127,"props":5592,"children":5593},{"style":605},[5594],{"type":56,"value":4058},{"type":29,"tag":127,"props":5596,"children":5597},{"class":600,"line":850},[5598,5602],{"type":29,"tag":127,"props":5599,"children":5600},{"style":605},[5601],{"type":56,"value":4143},{"type":29,"tag":127,"props":5603,"children":5604},{"style":1688},[5605],{"type":56,"value":4970},{"type":29,"tag":127,"props":5607,"children":5608},{"class":600,"line":864},[5609,5613],{"type":29,"tag":127,"props":5610,"children":5611},{"style":4050},[5612],{"type":56,"value":5277},{"type":29,"tag":127,"props":5614,"children":5615},{"style":605},[5616],{"type":56,"value":4058},{"type":29,"tag":127,"props":5618,"children":5619},{"class":600,"line":873},[5620,5624,5628,5632],{"type":29,"tag":127,"props":5621,"children":5622},{"style":605},[5623],{"type":56,"value":4143},{"type":29,"tag":127,"props":5625,"children":5626},{"style":4050},[5627],{"type":56,"value":5294},{"type":29,"tag":127,"props":5629,"children":5630},{"style":605},[5631],{"type":56,"value":622},{"type":29,"tag":127,"props":5633,"children":5634},{"style":1688},[5635],{"type":56,"value":5303},{"type":29,"tag":127,"props":5637,"children":5638},{"class":600,"line":895},[5639,5643],{"type":29,"tag":127,"props":5640,"children":5641},{"style":4050},[5642],{"type":56,"value":5312},{"type":29,"tag":127,"props":5644,"children":5645},{"style":605},[5646],{"type":56,"value":4058},{"type":29,"tag":127,"props":5648,"children":5649},{"class":600,"line":917},[5650,5654],{"type":29,"tag":127,"props":5651,"children":5652},{"style":605},[5653],{"type":56,"value":5325},{"type":29,"tag":127,"props":5655,"children":5656},{"style":1688},[5657],{"type":56,"value":5330},{"type":29,"tag":127,"props":5659,"children":5660},{"class":600,"line":930},[5661,5665],{"type":29,"tag":127,"props":5662,"children":5663},{"style":605},[5664],{"type":56,"value":5325},{"type":29,"tag":127,"props":5666,"children":5667},{"style":1688},[5668],{"type":56,"value":5343},{"type":29,"tag":127,"props":5670,"children":5672},{"class":5671,"line":949},[600,1154],[5673,5678],{"type":29,"tag":127,"props":5674,"children":5675},{"style":4050},[5676],{"type":56,"value":5677},"  artifacts",{"type":29,"tag":127,"props":5679,"children":5680},{"style":605},[5681],{"type":56,"value":4058},{"type":29,"tag":127,"props":5683,"children":5685},{"class":5684,"line":958},[600,1154],[5686,5691],{"type":29,"tag":127,"props":5687,"children":5688},{"style":4050},[5689],{"type":56,"value":5690},"    paths",{"type":29,"tag":127,"props":5692,"children":5693},{"style":605},[5694],{"type":56,"value":4058},{"type":29,"tag":127,"props":5696,"children":5698},{"class":5697,"line":967},[600,1154],[5699,5704],{"type":29,"tag":127,"props":5700,"children":5701},{"style":605},[5702],{"type":56,"value":5703},"      - ",{"type":29,"tag":127,"props":5705,"children":5706},{"style":1688},[5707],{"type":56,"value":5708},"src/Resources/public\n",{"type":29,"tag":127,"props":5710,"children":5712},{"class":5711,"line":975},[600,1154],[5713,5717],{"type":29,"tag":127,"props":5714,"children":5715},{"style":605},[5716],{"type":56,"value":5703},{"type":29,"tag":127,"props":5718,"children":5719},{"style":1688},[5720],{"type":56,"value":5721},"src/Storefront/Resources/public\n",{"type":29,"tag":127,"props":5723,"children":5724},{"class":600,"line":995},[5725,5729],{"type":29,"tag":127,"props":5726,"children":5727},{"style":4050},[5728],{"type":56,"value":4173},{"type":29,"tag":127,"props":5730,"children":5731},{"style":605},[5732],{"type":56,"value":4058},{"type":29,"tag":127,"props":5734,"children":5735},{"class":600,"line":1016},[5736,5740,5744,5748],{"type":29,"tag":127,"props":5737,"children":5738},{"style":605},[5739],{"type":56,"value":4143},{"type":29,"tag":127,"props":5741,"children":5742},{"style":4050},[5743],{"type":56,"value":4406},{"type":29,"tag":127,"props":5745,"children":5746},{"style":605},[5747],{"type":56,"value":622},{"type":29,"tag":127,"props":5749,"children":5750},{"style":1688},[5751],{"type":56,"value":4415},{"type":29,"tag":127,"props":5753,"children":5754},{"class":600,"line":1028},[5755,5759,5763],{"type":29,"tag":127,"props":5756,"children":5757},{"style":4050},[5758],{"type":56,"value":4423},{"type":29,"tag":127,"props":5760,"children":5761},{"style":605},[5762],{"type":56,"value":622},{"type":29,"tag":127,"props":5764,"children":5765},{"style":1688},[5766],{"type":56,"value":4432},{"type":29,"tag":127,"props":5768,"children":5769},{"class":600,"line":1044},[5770,5774,5778,5782],{"type":29,"tag":127,"props":5771,"children":5772},{"style":605},[5773],{"type":56,"value":4143},{"type":29,"tag":127,"props":5775,"children":5776},{"style":4050},[5777],{"type":56,"value":4406},{"type":29,"tag":127,"props":5779,"children":5780},{"style":605},[5781],{"type":56,"value":622},{"type":29,"tag":127,"props":5783,"children":5784},{"style":1688},[5785],{"type":56,"value":4452},{"type":29,"tag":127,"props":5787,"children":5788},{"class":600,"line":1052},[5789],{"type":29,"tag":127,"props":5790,"children":5791},{"emptyLinePlaceholder":1857},[5792],{"type":56,"value":1860},{"type":29,"tag":127,"props":5794,"children":5795},{"class":600,"line":1060},[5796,5800],{"type":29,"tag":127,"props":5797,"children":5798},{"style":4050},[5799],{"type":56,"value":4274},{"type":29,"tag":127,"props":5801,"children":5802},{"style":605},[5803],{"type":56,"value":4058},{"type":29,"tag":127,"props":5805,"children":5806},{"class":600,"line":1068},[5807,5811,5815],{"type":29,"tag":127,"props":5808,"children":5809},{"style":4050},[5810],{"type":56,"value":4115},{"type":29,"tag":127,"props":5812,"children":5813},{"style":605},[5814],{"type":56,"value":622},{"type":29,"tag":127,"props":5816,"children":5817},{"style":1688},[5818],{"type":56,"value":4071},{"type":29,"tag":127,"props":5820,"children":5821},{"class":600,"line":1088},[5822,5826],{"type":29,"tag":127,"props":5823,"children":5824},{"style":4050},[5825],{"type":56,"value":4098},{"type":29,"tag":127,"props":5827,"children":5828},{"style":605},[5829],{"type":56,"value":4058},{"type":29,"tag":127,"props":5831,"children":5832},{"class":600,"line":1109},[5833,5837,5841],{"type":29,"tag":127,"props":5834,"children":5835},{"style":4050},[5836],{"type":56,"value":4312},{"type":29,"tag":127,"props":5838,"children":5839},{"style":605},[5840],{"type":56,"value":622},{"type":29,"tag":127,"props":5842,"children":5843},{"style":1688},[5844],{"type":56,"value":5845},"ghcr.io/voxpupuli/semantic-release:latest\n",{"type":29,"tag":127,"props":5847,"children":5848},{"class":600,"line":1121},[5849,5853,5857,5861],{"type":29,"tag":127,"props":5850,"children":5851},{"style":4050},[5852],{"type":56,"value":4329},{"type":29,"tag":127,"props":5854,"children":5855},{"style":605},[5856],{"type":56,"value":4334},{"type":29,"tag":127,"props":5858,"children":5859},{"style":1688},[5860],{"type":56,"value":4339},{"type":29,"tag":127,"props":5862,"children":5863},{"style":605},[5864],{"type":56,"value":4344},{"type":29,"tag":127,"props":5866,"children":5867},{"class":600,"line":1137},[5868,5872,5876],{"type":29,"tag":127,"props":5869,"children":5870},{"style":4050},[5871],{"type":56,"value":4352},{"type":29,"tag":127,"props":5873,"children":5874},{"style":605},[5875],{"type":56,"value":622},{"type":29,"tag":127,"props":5877,"children":5878},{"style":943},[5879],{"type":56,"value":946},{"type":29,"tag":127,"props":5881,"children":5882},{"class":600,"line":1145},[5883,5887],{"type":29,"tag":127,"props":5884,"children":5885},{"style":4050},[5886],{"type":56,"value":4131},{"type":29,"tag":127,"props":5888,"children":5889},{"style":605},[5890],{"type":56,"value":4058},{"type":29,"tag":127,"props":5892,"children":5893},{"class":600,"line":590},[5894,5898],{"type":29,"tag":127,"props":5895,"children":5896},{"style":605},[5897],{"type":56,"value":4143},{"type":29,"tag":127,"props":5899,"children":5900},{"style":1688},[5901],{"type":56,"value":5902},"/docker-entrypoint.sh\n",{"type":29,"tag":127,"props":5904,"children":5905},{"class":600,"line":591},[5906,5910],{"type":29,"tag":127,"props":5907,"children":5908},{"style":4050},[5909],{"type":56,"value":4173},{"type":29,"tag":127,"props":5911,"children":5912},{"style":605},[5913],{"type":56,"value":4058},{"type":29,"tag":127,"props":5915,"children":5916},{"class":600,"line":592},[5917,5921,5925,5929],{"type":29,"tag":127,"props":5918,"children":5919},{"style":605},[5920],{"type":56,"value":4143},{"type":29,"tag":127,"props":5922,"children":5923},{"style":4050},[5924],{"type":56,"value":4406},{"type":29,"tag":127,"props":5926,"children":5927},{"style":605},[5928],{"type":56,"value":622},{"type":29,"tag":127,"props":5930,"children":5931},{"style":1688},[5932],{"type":56,"value":4415},{"type":29,"tag":127,"props":5934,"children":5935},{"class":600,"line":593},[5936,5940,5944],{"type":29,"tag":127,"props":5937,"children":5938},{"style":4050},[5939],{"type":56,"value":4423},{"type":29,"tag":127,"props":5941,"children":5942},{"style":605},[5943],{"type":56,"value":622},{"type":29,"tag":127,"props":5945,"children":5946},{"style":1688},[5947],{"type":56,"value":4432},{"type":29,"tag":127,"props":5949,"children":5950},{"class":600,"line":1209},[5951,5955,5959,5963],{"type":29,"tag":127,"props":5952,"children":5953},{"style":605},[5954],{"type":56,"value":4143},{"type":29,"tag":127,"props":5956,"children":5957},{"style":4050},[5958],{"type":56,"value":4406},{"type":29,"tag":127,"props":5960,"children":5961},{"style":605},[5962],{"type":56,"value":622},{"type":29,"tag":127,"props":5964,"children":5965},{"style":1688},[5966],{"type":56,"value":4452},{"type":29,"tag":48,"props":5968,"children":5969},{},[5970],{"type":29,"tag":127,"props":5971,"children":5973},{"className":5972},[3912],[5974],{"type":56,"value":5975},"Das war's!",{"type":29,"tag":48,"props":5977,"children":5978},{},[5979],{"type":56,"value":4862},{"type":29,"tag":510,"props":5981,"children":5982},{},[5983,5988,5993],{"type":29,"tag":514,"props":5984,"children":5985},{},[5986],{"type":56,"value":5987},"Alle Assets bauen",{"type":29,"tag":514,"props":5989,"children":5990},{},[5991],{"type":56,"value":5992},"Sie an den zweiten Job übergeben",{"type":29,"tag":514,"props":5994,"children":5995},{},[5996],{"type":56,"value":5997},"Den Release-Prozess wie zuvor beschrieben ausführen",{"type":29,"tag":4906,"props":5999,"children":6000},{},[6001],{"type":56,"value":4910},{"title":7,"searchDepth":271,"depth":271,"links":6003},[6004,6005],{"id":4959,"depth":271,"text":4962},{"id":5065,"depth":271,"text":5068},{"_path":419,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":420,"description":421,"author":394,"image":395,"releaseDate":396,"blogCategories":6007,"articleTags":6008,"tags":6009,"body":6010,"_type":275,"_id":425,"_source":277,"_file":426,"_stem":427,"_extension":280},[398,399],[399,401,402],[23,404],{"type":26,"children":6011,"toc":8284},[6012,6016,6021,6072,6078,6090,6102,6144,6157,6165,6177,6183,6188,6459,6464,6469,6474,6479,6492,6497,6522,6528,6540,7310,7315,7343,7348,7354,7359,8280],{"type":29,"tag":66,"props":6013,"children":6015},{"alt":7,"aspect-ratio":475,"height":476,"object-fit":477,"src":6014},"/blog/shopware-plugin-test.png",[],{"type":29,"tag":48,"props":6017,"children":6018},{},[6019],{"type":56,"value":6020},"Wenn es um das Testen eines Shopware 6 Plugins geht, gibt es zwei Arten von Tests, die durchgeführt werden können:",{"type":29,"tag":510,"props":6022,"children":6023},{},[6024,6060],{"type":29,"tag":514,"props":6025,"children":6026},{},[6027,6029,6035,6037],{"type":56,"value":6028},"Testen des Codes selbst (",{"type":29,"tag":491,"props":6030,"children":6032},{"href":6031},"https://developer.shopware.com/docs/guides/plugins/plugins/testing/",[6033],{"type":56,"value":6034},"mehr in der offiziellen Dokumentation",{"type":56,"value":6036},")\n",{"type":29,"tag":510,"props":6038,"children":6039},{},[6040,6045,6050,6055],{"type":29,"tag":514,"props":6041,"children":6042},{},[6043],{"type":56,"value":6044},"PHP-Unit-Tests",{"type":29,"tag":514,"props":6046,"children":6047},{},[6048],{"type":56,"value":6049},"Jest-Unit-Tests in Shopwares Storefront",{"type":29,"tag":514,"props":6051,"children":6052},{},[6053],{"type":56,"value":6054},"Jest-Unit-Tests in Shopwares Administration",{"type":29,"tag":514,"props":6056,"children":6057},{},[6058],{"type":56,"value":6059},"End-to-End (E2E) Testing",{"type":29,"tag":514,"props":6061,"children":6062},{},[6063,6065,6070],{"type":56,"value":6064},"Sicherstellen einer hohen Code-Qualität (",{"type":29,"tag":491,"props":6066,"children":6068},{"href":6067},"https://developer.shopware.com/docs/products/cli/validation.html",[6069],{"type":56,"value":6034},{"type":56,"value":6071},")",{"type":29,"tag":90,"props":6073,"children":6075},{"id":6074},"code-qualität",[6076],{"type":56,"value":6077},"Code-Qualität",{"type":29,"tag":48,"props":6079,"children":6080},{},[6081,6083,6088],{"type":56,"value":6082},"Fangen wir mit der Code-Qualität an, da es einfacher ist, diese außerhalb einer ",{"type":29,"tag":520,"props":6084,"children":6086},{"className":6085},[],[6087],{"type":56,"value":3932},{"type":56,"value":6089},"-Umgebung auszuführen.",{"type":29,"tag":48,"props":6091,"children":6092},{},[6093,6095,6100],{"type":56,"value":6094},"Wir werden wieder das ",{"type":29,"tag":520,"props":6096,"children":6098},{"className":6097},[],[6099],{"type":56,"value":547},{"type":56,"value":6101}," verwenden.",{"type":29,"tag":584,"props":6103,"children":6105},{"code":6104,"language":1673,"meta":7,"className":1671,"style":7},"shopware-cli extension validate --full --reporter summary .\n",[6106],{"type":29,"tag":520,"props":6107,"children":6108},{"__ignoreMap":7},[6109],{"type":29,"tag":127,"props":6110,"children":6111},{"class":600,"line":601},[6112,6116,6120,6125,6130,6135,6140],{"type":29,"tag":127,"props":6113,"children":6114},{"style":1683},[6115],{"type":56,"value":547},{"type":29,"tag":127,"props":6117,"children":6118},{"style":1688},[6119],{"type":56,"value":4986},{"type":29,"tag":127,"props":6121,"children":6122},{"style":1688},[6123],{"type":56,"value":6124}," validate",{"type":29,"tag":127,"props":6126,"children":6127},{"style":943},[6128],{"type":56,"value":6129}," --full",{"type":29,"tag":127,"props":6131,"children":6132},{"style":943},[6133],{"type":56,"value":6134}," --reporter",{"type":29,"tag":127,"props":6136,"children":6137},{"style":1688},[6138],{"type":56,"value":6139}," summary",{"type":29,"tag":127,"props":6141,"children":6142},{"style":1688},[6143],{"type":56,"value":4996},{"type":29,"tag":48,"props":6145,"children":6146},{},[6147,6149,6155],{"type":56,"value":6148},"Dies wird alle Tests ausführen, die ",{"type":29,"tag":491,"props":6150,"children":6152},{"href":6151},"https://developer.shopware.com/docs/products/cli/validation.html#running-all-validation-tools",[6153],{"type":56,"value":6154},"hier",{"type":56,"value":6156}," beschrieben sind,\nund hoffentlich eine Ausgabe wie diese erzeugen:",{"type":29,"tag":584,"props":6158,"children":6160},{"code":6159},"✖ 0 problems (0 errors, 0 warnings)\n",[6161],{"type":29,"tag":520,"props":6162,"children":6163},{"__ignoreMap":7},[6164],{"type":56,"value":6159},{"type":29,"tag":48,"props":6166,"children":6167},{},[6168,6170,6175],{"type":56,"value":6169},"Falls Fehler auftreten, schaue in der Shopware-Dokumentation nach, wie diese zu beheben sind, und führe nur die fehlgeschlagenen Tests erneut aus, wie ",{"type":29,"tag":491,"props":6171,"children":6173},{"href":6172},"https://developer.shopware.com/docs/products/cli/validation.html#running-specific-tools",[6174],{"type":56,"value":6154},{"type":56,"value":6176}," beschrieben.",{"type":29,"tag":122,"props":6178,"children":6180},{"id":6179},"code-qualität-pipeline",[6181],{"type":56,"value":6182},"Code-Qualität Pipeline",{"type":29,"tag":48,"props":6184,"children":6185},{},[6186],{"type":56,"value":6187},"Nun werden wir das Ganze in GitLab ausführen.",{"type":29,"tag":584,"props":6189,"children":6192},{"code":6190,"filename":4233,"highlights":6191,"language":4040,"meta":7,"className":4037,"style":7},"stages:\n  - test\n\ncode-quality:\n   image:\n      name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n      entrypoint: [\"\"]\n   stage: test\n   script:\n      - shopware-cli extension validate --full . | tee report.json\n   artifacts:\n      reports:\n         codequality: report.json\n   rules:\n      - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n      - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n        when: never\n      - if: $CI_COMMIT_BRANCH\n",[694,850,864,873,895,917],[6193],{"type":29,"tag":520,"props":6194,"children":6195},{"__ignoreMap":7},[6196,6207,6219,6226,6238,6250,6267,6287,6303,6315,6327,6339,6351,6368,6381,6402,6422,6439],{"type":29,"tag":127,"props":6197,"children":6198},{"class":600,"line":601},[6199,6203],{"type":29,"tag":127,"props":6200,"children":6201},{"style":4050},[6202],{"type":56,"value":4053},{"type":29,"tag":127,"props":6204,"children":6205},{"style":605},[6206],{"type":56,"value":4058},{"type":29,"tag":127,"props":6208,"children":6209},{"class":600,"line":271},[6210,6214],{"type":29,"tag":127,"props":6211,"children":6212},{"style":605},[6213],{"type":56,"value":4066},{"type":29,"tag":127,"props":6215,"children":6216},{"style":1688},[6217],{"type":56,"value":6218},"test\n",{"type":29,"tag":127,"props":6220,"children":6221},{"class":600,"line":636},[6222],{"type":29,"tag":127,"props":6223,"children":6224},{"emptyLinePlaceholder":1857},[6225],{"type":56,"value":1860},{"type":29,"tag":127,"props":6227,"children":6228},{"class":600,"line":658},[6229,6234],{"type":29,"tag":127,"props":6230,"children":6231},{"style":4050},[6232],{"type":56,"value":6233},"code-quality",{"type":29,"tag":127,"props":6235,"children":6236},{"style":605},[6237],{"type":56,"value":4058},{"type":29,"tag":127,"props":6239,"children":6240},{"class":600,"line":680},[6241,6246],{"type":29,"tag":127,"props":6242,"children":6243},{"style":4050},[6244],{"type":56,"value":6245},"   image",{"type":29,"tag":127,"props":6247,"children":6248},{"style":605},[6249],{"type":56,"value":4058},{"type":29,"tag":127,"props":6251,"children":6253},{"class":6252,"line":694},[600,1154],[6254,6259,6263],{"type":29,"tag":127,"props":6255,"children":6256},{"style":4050},[6257],{"type":56,"value":6258},"      name",{"type":29,"tag":127,"props":6260,"children":6261},{"style":605},[6262],{"type":56,"value":622},{"type":29,"tag":127,"props":6264,"children":6265},{"style":1688},[6266],{"type":56,"value":5166},{"type":29,"tag":127,"props":6268,"children":6269},{"class":600,"line":716},[6270,6275,6279,6283],{"type":29,"tag":127,"props":6271,"children":6272},{"style":4050},[6273],{"type":56,"value":6274},"      entrypoint",{"type":29,"tag":127,"props":6276,"children":6277},{"style":605},[6278],{"type":56,"value":4334},{"type":29,"tag":127,"props":6280,"children":6281},{"style":1688},[6282],{"type":56,"value":4339},{"type":29,"tag":127,"props":6284,"children":6285},{"style":605},[6286],{"type":56,"value":4344},{"type":29,"tag":127,"props":6288,"children":6289},{"class":600,"line":738},[6290,6295,6299],{"type":29,"tag":127,"props":6291,"children":6292},{"style":4050},[6293],{"type":56,"value":6294},"   stage",{"type":29,"tag":127,"props":6296,"children":6297},{"style":605},[6298],{"type":56,"value":622},{"type":29,"tag":127,"props":6300,"children":6301},{"style":1688},[6302],{"type":56,"value":6218},{"type":29,"tag":127,"props":6304,"children":6305},{"class":600,"line":760},[6306,6311],{"type":29,"tag":127,"props":6307,"children":6308},{"style":4050},[6309],{"type":56,"value":6310},"   script",{"type":29,"tag":127,"props":6312,"children":6313},{"style":605},[6314],{"type":56,"value":4058},{"type":29,"tag":127,"props":6316,"children":6317},{"class":600,"line":782},[6318,6322],{"type":29,"tag":127,"props":6319,"children":6320},{"style":605},[6321],{"type":56,"value":5703},{"type":29,"tag":127,"props":6323,"children":6324},{"style":1688},[6325],{"type":56,"value":6326},"shopware-cli extension validate --full . | tee report.json\n",{"type":29,"tag":127,"props":6328,"children":6329},{"class":600,"line":803},[6330,6335],{"type":29,"tag":127,"props":6331,"children":6332},{"style":4050},[6333],{"type":56,"value":6334},"   artifacts",{"type":29,"tag":127,"props":6336,"children":6337},{"style":605},[6338],{"type":56,"value":4058},{"type":29,"tag":127,"props":6340,"children":6341},{"class":600,"line":118},[6342,6347],{"type":29,"tag":127,"props":6343,"children":6344},{"style":4050},[6345],{"type":56,"value":6346},"      reports",{"type":29,"tag":127,"props":6348,"children":6349},{"style":605},[6350],{"type":56,"value":4058},{"type":29,"tag":127,"props":6352,"children":6353},{"class":600,"line":841},[6354,6359,6363],{"type":29,"tag":127,"props":6355,"children":6356},{"style":4050},[6357],{"type":56,"value":6358},"         codequality",{"type":29,"tag":127,"props":6360,"children":6361},{"style":605},[6362],{"type":56,"value":622},{"type":29,"tag":127,"props":6364,"children":6365},{"style":1688},[6366],{"type":56,"value":6367},"report.json\n",{"type":29,"tag":127,"props":6369,"children":6371},{"class":6370,"line":850},[600,1154],[6372,6377],{"type":29,"tag":127,"props":6373,"children":6374},{"style":4050},[6375],{"type":56,"value":6376},"   rules",{"type":29,"tag":127,"props":6378,"children":6379},{"style":605},[6380],{"type":56,"value":4058},{"type":29,"tag":127,"props":6382,"children":6384},{"class":6383,"line":864},[600,1154],[6385,6389,6393,6397],{"type":29,"tag":127,"props":6386,"children":6387},{"style":605},[6388],{"type":56,"value":5703},{"type":29,"tag":127,"props":6390,"children":6391},{"style":4050},[6392],{"type":56,"value":4406},{"type":29,"tag":127,"props":6394,"children":6395},{"style":605},[6396],{"type":56,"value":622},{"type":29,"tag":127,"props":6398,"children":6399},{"style":1688},[6400],{"type":56,"value":6401},"$CI_PIPELINE_SOURCE == \"merge_request_event\"\n",{"type":29,"tag":127,"props":6403,"children":6405},{"class":6404,"line":873},[600,1154],[6406,6410,6414,6418],{"type":29,"tag":127,"props":6407,"children":6408},{"style":605},[6409],{"type":56,"value":5703},{"type":29,"tag":127,"props":6411,"children":6412},{"style":4050},[6413],{"type":56,"value":4406},{"type":29,"tag":127,"props":6415,"children":6416},{"style":605},[6417],{"type":56,"value":622},{"type":29,"tag":127,"props":6419,"children":6420},{"style":1688},[6421],{"type":56,"value":4415},{"type":29,"tag":127,"props":6423,"children":6425},{"class":6424,"line":895},[600,1154],[6426,6431,6435],{"type":29,"tag":127,"props":6427,"children":6428},{"style":4050},[6429],{"type":56,"value":6430},"        when",{"type":29,"tag":127,"props":6432,"children":6433},{"style":605},[6434],{"type":56,"value":622},{"type":29,"tag":127,"props":6436,"children":6437},{"style":1688},[6438],{"type":56,"value":4432},{"type":29,"tag":127,"props":6440,"children":6442},{"class":6441,"line":917},[600,1154],[6443,6447,6451,6455],{"type":29,"tag":127,"props":6444,"children":6445},{"style":605},[6446],{"type":56,"value":5703},{"type":29,"tag":127,"props":6448,"children":6449},{"style":4050},[6450],{"type":56,"value":4406},{"type":29,"tag":127,"props":6452,"children":6453},{"style":605},[6454],{"type":56,"value":622},{"type":29,"tag":127,"props":6456,"children":6457},{"style":1688},[6458],{"type":56,"value":4452},{"type":29,"tag":48,"props":6460,"children":6461},{},[6462],{"type":56,"value":6463},"Diese Pipeline wird auf dem Standard-Branch und bei Merge-Request-Pipelines ausgeführt.",{"type":29,"tag":48,"props":6465,"children":6466},{},[6467],{"type":56,"value":6468},"Das Ausführen auf dem Standard-Branch vor dem Bauen und Veröffentlichen verhindert, dass versehentlich ein Release mit geringer Qualität erstellt wird.",{"type":29,"tag":48,"props":6470,"children":6471},{},[6472],{"type":56,"value":6473},"Ein nettes Extra für die MR-Pipeline ist die Integration des Code-Quality-Reports!",{"type":29,"tag":90,"props":6475,"children":6477},{"id":6476},"php-unit-tests",[6478],{"type":56,"value":6044},{"type":29,"tag":48,"props":6480,"children":6481},{},[6482,6484,6490],{"type":56,"value":6483},"Zuerst müssen wir PHPUnit konfigurieren, indem wir der ",{"type":29,"tag":491,"props":6485,"children":6487},{"href":6486},"https://developer.shopware.com/docs/guides/plugins/plugins/testing/php-unit.html",[6488],{"type":56,"value":6489},"offiziellen Shopware-Dokumentation",{"type":56,"value":6491}," folgen.",{"type":29,"tag":48,"props":6493,"children":6494},{},[6495],{"type":56,"value":6496},"Wir werden uns hier nicht auf diesen Prozess konzentrieren. Wenn alles eingerichtet ist, sollten wir in der Lage sein, unseren Test wie folgt im Root-Verzeichnis unseres Shopware-Projekts auszuführen:",{"type":29,"tag":584,"props":6498,"children":6500},{"code":6499,"language":1673,"meta":7,"className":1671,"style":7},"./vendor/bin/phpunit --configuration=\"custom/static-plugins/SwagBasicExample\"\n",[6501],{"type":29,"tag":520,"props":6502,"children":6503},{"__ignoreMap":7},[6504],{"type":29,"tag":127,"props":6505,"children":6506},{"class":600,"line":601},[6507,6512,6517],{"type":29,"tag":127,"props":6508,"children":6509},{"style":1683},[6510],{"type":56,"value":6511},"./vendor/bin/phpunit",{"type":29,"tag":127,"props":6513,"children":6514},{"style":943},[6515],{"type":56,"value":6516}," --configuration=",{"type":29,"tag":127,"props":6518,"children":6519},{"style":1688},[6520],{"type":56,"value":6521},"\"custom/static-plugins/SwagBasicExample\"\n",{"type":29,"tag":122,"props":6523,"children":6525},{"id":6524},"phpunit-pipeline",[6526],{"type":56,"value":6527},"PHPUnit Pipeline",{"type":29,"tag":48,"props":6529,"children":6530},{},[6531,6533,6538],{"type":56,"value":6532},"Das Ausführen von PHPUnit für ein Plugin erfordert eine vollständige Shopware-Instanz. Glücklicherweise kann uns das ",{"type":29,"tag":520,"props":6534,"children":6536},{"className":6535},[],[6537],{"type":56,"value":547},{"type":56,"value":6539}," dabei helfen.",{"type":29,"tag":584,"props":6541,"children":6544},{"code":6542,"filename":4233,"highlights":6543,"language":4040,"meta":7,"className":4037,"style":7},"stages:\n   - test\n\nphpunit:\n  stage: test\n  image:\n    name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n    entrypoint: [\"\"]\n  services:\n    - name: mysql:8.3.0\n      alias: test_database\n      variables:\n        MYSQL_SKIP_TEST_DB: 'yes'\n        MYSQL_ALLOW_EMPTY_PASSWORD: yes\n  variables:\n    GIT_STRATEGY: none\n    SHOPWARE_ROOT: ${CI_PROJECT_DIR}/shopware\n    SHOPWARE_VERSION: 6.6.10.13\n    \n    APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48\n    MESSENGER_TRANSPORT_DSN: sync://\n    DATABASE_URL: mysql://root@test_database/shopware\n    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer\n\n    XDEBUG_MODE: coverage\n  before_script:\n    - apk add --no-cache php-8.2-xdebug\n    - shopware-cli project create shopware ${SHOPWARE_VERSION}\n    - cd $SHOPWARE_ROOT\n    - composer req --dev shopware/dev-tools phpunit/phpunit\n    - git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"custom/plugins/${CI_PROJECT_NAME}\"\n    - cd custom/plugins/${CI_PROJECT_NAME}\n    - git checkout ${CI_COMMIT_SHA}\n    - cd ${SHOPWARE_ROOT}\n    - composer require $(composer -d custom/plugins/${CI_PROJECT_NAME} config name)\n    - cd custom/plugins/${CI_PROJECT_NAME}\n  script:\n    - ${SHOPWARE_ROOT}/vendor/bin/phpunit --coverage-text --coverage-cobertura=coverage.cobertura.xml\n\n  cache:\n    - key: $CI_JOB_NAME\n      paths:\n        - $COMPOSER_CACHE_DIR\n  coverage: /^\\s*Lines:\\s*\\d+.\\d+\\%/\n  artifacts:\n    reports:\n      coverage_report:\n        coverage_format: cobertura\n        path: coverage.cobertura.xml\n  rules:\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n",[760,782,803,118,841,850,873,949,958,967,975,1044,1052,1060,1068,1088,1109,1121,1137,1145,590,592],[6545],{"type":29,"tag":520,"props":6546,"children":6547},{"__ignoreMap":7},[6548,6559,6571,6578,6590,6605,6616,6631,6650,6663,6685,6703,6716,6734,6752,6763,6781,6798,6815,6823,6841,6859,6877,6893,6900,6917,6929,6942,6955,6968,6981,6994,7007,7020,7033,7046,7058,7069,7082,7089,7100,7119,7130,7141,7158,7169,7181,7193,7210,7227,7238,7257,7276,7291],{"type":29,"tag":127,"props":6549,"children":6550},{"class":600,"line":601},[6551,6555],{"type":29,"tag":127,"props":6552,"children":6553},{"style":4050},[6554],{"type":56,"value":4053},{"type":29,"tag":127,"props":6556,"children":6557},{"style":605},[6558],{"type":56,"value":4058},{"type":29,"tag":127,"props":6560,"children":6561},{"class":600,"line":271},[6562,6567],{"type":29,"tag":127,"props":6563,"children":6564},{"style":605},[6565],{"type":56,"value":6566},"   - ",{"type":29,"tag":127,"props":6568,"children":6569},{"style":1688},[6570],{"type":56,"value":6218},{"type":29,"tag":127,"props":6572,"children":6573},{"class":600,"line":636},[6574],{"type":29,"tag":127,"props":6575,"children":6576},{"emptyLinePlaceholder":1857},[6577],{"type":56,"value":1860},{"type":29,"tag":127,"props":6579,"children":6580},{"class":600,"line":658},[6581,6586],{"type":29,"tag":127,"props":6582,"children":6583},{"style":4050},[6584],{"type":56,"value":6585},"phpunit",{"type":29,"tag":127,"props":6587,"children":6588},{"style":605},[6589],{"type":56,"value":4058},{"type":29,"tag":127,"props":6591,"children":6592},{"class":600,"line":680},[6593,6597,6601],{"type":29,"tag":127,"props":6594,"children":6595},{"style":4050},[6596],{"type":56,"value":4115},{"type":29,"tag":127,"props":6598,"children":6599},{"style":605},[6600],{"type":56,"value":622},{"type":29,"tag":127,"props":6602,"children":6603},{"style":1688},[6604],{"type":56,"value":6218},{"type":29,"tag":127,"props":6606,"children":6607},{"class":600,"line":694},[6608,6612],{"type":29,"tag":127,"props":6609,"children":6610},{"style":4050},[6611],{"type":56,"value":4098},{"type":29,"tag":127,"props":6613,"children":6614},{"style":605},[6615],{"type":56,"value":4058},{"type":29,"tag":127,"props":6617,"children":6618},{"class":600,"line":716},[6619,6623,6627],{"type":29,"tag":127,"props":6620,"children":6621},{"style":4050},[6622],{"type":56,"value":4312},{"type":29,"tag":127,"props":6624,"children":6625},{"style":605},[6626],{"type":56,"value":622},{"type":29,"tag":127,"props":6628,"children":6629},{"style":1688},[6630],{"type":56,"value":5166},{"type":29,"tag":127,"props":6632,"children":6633},{"class":600,"line":738},[6634,6638,6642,6646],{"type":29,"tag":127,"props":6635,"children":6636},{"style":4050},[6637],{"type":56,"value":4329},{"type":29,"tag":127,"props":6639,"children":6640},{"style":605},[6641],{"type":56,"value":4334},{"type":29,"tag":127,"props":6643,"children":6644},{"style":1688},[6645],{"type":56,"value":4339},{"type":29,"tag":127,"props":6647,"children":6648},{"style":605},[6649],{"type":56,"value":4344},{"type":29,"tag":127,"props":6651,"children":6653},{"class":6652,"line":760},[600,1154],[6654,6659],{"type":29,"tag":127,"props":6655,"children":6656},{"style":4050},[6657],{"type":56,"value":6658},"  services",{"type":29,"tag":127,"props":6660,"children":6661},{"style":605},[6662],{"type":56,"value":4058},{"type":29,"tag":127,"props":6664,"children":6666},{"class":6665,"line":782},[600,1154],[6667,6671,6676,6680],{"type":29,"tag":127,"props":6668,"children":6669},{"style":605},[6670],{"type":56,"value":4143},{"type":29,"tag":127,"props":6672,"children":6673},{"style":4050},[6674],{"type":56,"value":6675},"name",{"type":29,"tag":127,"props":6677,"children":6678},{"style":605},[6679],{"type":56,"value":622},{"type":29,"tag":127,"props":6681,"children":6682},{"style":1688},[6683],{"type":56,"value":6684},"mysql:8.3.0\n",{"type":29,"tag":127,"props":6686,"children":6688},{"class":6687,"line":803},[600,1154],[6689,6694,6698],{"type":29,"tag":127,"props":6690,"children":6691},{"style":4050},[6692],{"type":56,"value":6693},"      alias",{"type":29,"tag":127,"props":6695,"children":6696},{"style":605},[6697],{"type":56,"value":622},{"type":29,"tag":127,"props":6699,"children":6700},{"style":1688},[6701],{"type":56,"value":6702},"test_database\n",{"type":29,"tag":127,"props":6704,"children":6706},{"class":6705,"line":118},[600,1154],[6707,6712],{"type":29,"tag":127,"props":6708,"children":6709},{"style":4050},[6710],{"type":56,"value":6711},"      variables",{"type":29,"tag":127,"props":6713,"children":6714},{"style":605},[6715],{"type":56,"value":4058},{"type":29,"tag":127,"props":6717,"children":6719},{"class":6718,"line":841},[600,1154],[6720,6725,6729],{"type":29,"tag":127,"props":6721,"children":6722},{"style":4050},[6723],{"type":56,"value":6724},"        MYSQL_SKIP_TEST_DB",{"type":29,"tag":127,"props":6726,"children":6727},{"style":605},[6728],{"type":56,"value":622},{"type":29,"tag":127,"props":6730,"children":6731},{"style":1688},[6732],{"type":56,"value":6733},"'yes'\n",{"type":29,"tag":127,"props":6735,"children":6737},{"class":6736,"line":850},[600,1154],[6738,6743,6747],{"type":29,"tag":127,"props":6739,"children":6740},{"style":4050},[6741],{"type":56,"value":6742},"        MYSQL_ALLOW_EMPTY_PASSWORD",{"type":29,"tag":127,"props":6744,"children":6745},{"style":605},[6746],{"type":56,"value":622},{"type":29,"tag":127,"props":6748,"children":6749},{"style":943},[6750],{"type":56,"value":6751},"yes\n",{"type":29,"tag":127,"props":6753,"children":6754},{"class":600,"line":864},[6755,6759],{"type":29,"tag":127,"props":6756,"children":6757},{"style":4050},[6758],{"type":56,"value":5208},{"type":29,"tag":127,"props":6760,"children":6761},{"style":605},[6762],{"type":56,"value":4058},{"type":29,"tag":127,"props":6764,"children":6766},{"class":6765,"line":873},[600,1154],[6767,6772,6776],{"type":29,"tag":127,"props":6768,"children":6769},{"style":4050},[6770],{"type":56,"value":6771},"    GIT_STRATEGY",{"type":29,"tag":127,"props":6773,"children":6774},{"style":605},[6775],{"type":56,"value":622},{"type":29,"tag":127,"props":6777,"children":6778},{"style":1688},[6779],{"type":56,"value":6780},"none\n",{"type":29,"tag":127,"props":6782,"children":6783},{"class":600,"line":895},[6784,6789,6793],{"type":29,"tag":127,"props":6785,"children":6786},{"style":4050},[6787],{"type":56,"value":6788},"    SHOPWARE_ROOT",{"type":29,"tag":127,"props":6790,"children":6791},{"style":605},[6792],{"type":56,"value":622},{"type":29,"tag":127,"props":6794,"children":6795},{"style":1688},[6796],{"type":56,"value":6797},"${CI_PROJECT_DIR}/shopware\n",{"type":29,"tag":127,"props":6799,"children":6800},{"class":600,"line":917},[6801,6806,6810],{"type":29,"tag":127,"props":6802,"children":6803},{"style":4050},[6804],{"type":56,"value":6805},"    SHOPWARE_VERSION",{"type":29,"tag":127,"props":6807,"children":6808},{"style":605},[6809],{"type":56,"value":622},{"type":29,"tag":127,"props":6811,"children":6812},{"style":943},[6813],{"type":56,"value":6814},"6.6.10.13\n",{"type":29,"tag":127,"props":6816,"children":6817},{"class":600,"line":930},[6818],{"type":29,"tag":127,"props":6819,"children":6820},{"style":605},[6821],{"type":56,"value":6822},"    \n",{"type":29,"tag":127,"props":6824,"children":6826},{"class":6825,"line":949},[600,1154],[6827,6832,6836],{"type":29,"tag":127,"props":6828,"children":6829},{"style":4050},[6830],{"type":56,"value":6831},"    APP_SECRET",{"type":29,"tag":127,"props":6833,"children":6834},{"style":605},[6835],{"type":56,"value":622},{"type":29,"tag":127,"props":6837,"children":6838},{"style":1688},[6839],{"type":56,"value":6840},"def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48\n",{"type":29,"tag":127,"props":6842,"children":6844},{"class":6843,"line":958},[600,1154],[6845,6850,6854],{"type":29,"tag":127,"props":6846,"children":6847},{"style":4050},[6848],{"type":56,"value":6849},"    MESSENGER_TRANSPORT_DSN",{"type":29,"tag":127,"props":6851,"children":6852},{"style":605},[6853],{"type":56,"value":622},{"type":29,"tag":127,"props":6855,"children":6856},{"style":1688},[6857],{"type":56,"value":6858},"sync://\n",{"type":29,"tag":127,"props":6860,"children":6862},{"class":6861,"line":967},[600,1154],[6863,6868,6872],{"type":29,"tag":127,"props":6864,"children":6865},{"style":4050},[6866],{"type":56,"value":6867},"    DATABASE_URL",{"type":29,"tag":127,"props":6869,"children":6870},{"style":605},[6871],{"type":56,"value":622},{"type":29,"tag":127,"props":6873,"children":6874},{"style":1688},[6875],{"type":56,"value":6876},"mysql://root@test_database/shopware\n",{"type":29,"tag":127,"props":6878,"children":6880},{"class":6879,"line":975},[600,1154],[6881,6885,6889],{"type":29,"tag":127,"props":6882,"children":6883},{"style":4050},[6884],{"type":56,"value":5220},{"type":29,"tag":127,"props":6886,"children":6887},{"style":605},[6888],{"type":56,"value":622},{"type":29,"tag":127,"props":6890,"children":6891},{"style":1688},[6892],{"type":56,"value":5229},{"type":29,"tag":127,"props":6894,"children":6895},{"class":600,"line":995},[6896],{"type":29,"tag":127,"props":6897,"children":6898},{"emptyLinePlaceholder":1857},[6899],{"type":56,"value":1860},{"type":29,"tag":127,"props":6901,"children":6902},{"class":600,"line":1016},[6903,6908,6912],{"type":29,"tag":127,"props":6904,"children":6905},{"style":4050},[6906],{"type":56,"value":6907},"    XDEBUG_MODE",{"type":29,"tag":127,"props":6909,"children":6910},{"style":605},[6911],{"type":56,"value":622},{"type":29,"tag":127,"props":6913,"children":6914},{"style":1688},[6915],{"type":56,"value":6916},"coverage\n",{"type":29,"tag":127,"props":6918,"children":6919},{"class":600,"line":1028},[6920,6925],{"type":29,"tag":127,"props":6921,"children":6922},{"style":4050},[6923],{"type":56,"value":6924},"  before_script",{"type":29,"tag":127,"props":6926,"children":6927},{"style":605},[6928],{"type":56,"value":4058},{"type":29,"tag":127,"props":6930,"children":6932},{"class":6931,"line":1044},[600,1154],[6933,6937],{"type":29,"tag":127,"props":6934,"children":6935},{"style":605},[6936],{"type":56,"value":4143},{"type":29,"tag":127,"props":6938,"children":6939},{"style":1688},[6940],{"type":56,"value":6941},"apk add --no-cache php-8.2-xdebug\n",{"type":29,"tag":127,"props":6943,"children":6945},{"class":6944,"line":1052},[600,1154],[6946,6950],{"type":29,"tag":127,"props":6947,"children":6948},{"style":605},[6949],{"type":56,"value":4143},{"type":29,"tag":127,"props":6951,"children":6952},{"style":1688},[6953],{"type":56,"value":6954},"shopware-cli project create shopware ${SHOPWARE_VERSION}\n",{"type":29,"tag":127,"props":6956,"children":6958},{"class":6957,"line":1060},[600,1154],[6959,6963],{"type":29,"tag":127,"props":6960,"children":6961},{"style":605},[6962],{"type":56,"value":4143},{"type":29,"tag":127,"props":6964,"children":6965},{"style":1688},[6966],{"type":56,"value":6967},"cd $SHOPWARE_ROOT\n",{"type":29,"tag":127,"props":6969,"children":6971},{"class":6970,"line":1068},[600,1154],[6972,6976],{"type":29,"tag":127,"props":6973,"children":6974},{"style":605},[6975],{"type":56,"value":4143},{"type":29,"tag":127,"props":6977,"children":6978},{"style":1688},[6979],{"type":56,"value":6980},"composer req --dev shopware/dev-tools phpunit/phpunit\n",{"type":29,"tag":127,"props":6982,"children":6984},{"class":6983,"line":1088},[600,1154],[6985,6989],{"type":29,"tag":127,"props":6986,"children":6987},{"style":605},[6988],{"type":56,"value":4143},{"type":29,"tag":127,"props":6990,"children":6991},{"style":1688},[6992],{"type":56,"value":6993},"git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"custom/plugins/${CI_PROJECT_NAME}\"\n",{"type":29,"tag":127,"props":6995,"children":6997},{"class":6996,"line":1109},[600,1154],[6998,7002],{"type":29,"tag":127,"props":6999,"children":7000},{"style":605},[7001],{"type":56,"value":4143},{"type":29,"tag":127,"props":7003,"children":7004},{"style":1688},[7005],{"type":56,"value":7006},"cd custom/plugins/${CI_PROJECT_NAME}\n",{"type":29,"tag":127,"props":7008,"children":7010},{"class":7009,"line":1121},[600,1154],[7011,7015],{"type":29,"tag":127,"props":7012,"children":7013},{"style":605},[7014],{"type":56,"value":4143},{"type":29,"tag":127,"props":7016,"children":7017},{"style":1688},[7018],{"type":56,"value":7019},"git checkout ${CI_COMMIT_SHA}\n",{"type":29,"tag":127,"props":7021,"children":7023},{"class":7022,"line":1137},[600,1154],[7024,7028],{"type":29,"tag":127,"props":7025,"children":7026},{"style":605},[7027],{"type":56,"value":4143},{"type":29,"tag":127,"props":7029,"children":7030},{"style":1688},[7031],{"type":56,"value":7032},"cd ${SHOPWARE_ROOT}\n",{"type":29,"tag":127,"props":7034,"children":7036},{"class":7035,"line":1145},[600,1154],[7037,7041],{"type":29,"tag":127,"props":7038,"children":7039},{"style":605},[7040],{"type":56,"value":4143},{"type":29,"tag":127,"props":7042,"children":7043},{"style":1688},[7044],{"type":56,"value":7045},"composer require $(composer -d custom/plugins/${CI_PROJECT_NAME} config name)\n",{"type":29,"tag":127,"props":7047,"children":7049},{"class":7048,"line":590},[600,1154],[7050,7054],{"type":29,"tag":127,"props":7051,"children":7052},{"style":605},[7053],{"type":56,"value":4143},{"type":29,"tag":127,"props":7055,"children":7056},{"style":1688},[7057],{"type":56,"value":7006},{"type":29,"tag":127,"props":7059,"children":7060},{"class":600,"line":591},[7061,7065],{"type":29,"tag":127,"props":7062,"children":7063},{"style":4050},[7064],{"type":56,"value":4131},{"type":29,"tag":127,"props":7066,"children":7067},{"style":605},[7068],{"type":56,"value":4058},{"type":29,"tag":127,"props":7070,"children":7072},{"class":7071,"line":592},[600,1154],[7073,7077],{"type":29,"tag":127,"props":7074,"children":7075},{"style":605},[7076],{"type":56,"value":4143},{"type":29,"tag":127,"props":7078,"children":7079},{"style":1688},[7080],{"type":56,"value":7081},"${SHOPWARE_ROOT}/vendor/bin/phpunit --coverage-text --coverage-cobertura=coverage.cobertura.xml\n",{"type":29,"tag":127,"props":7083,"children":7084},{"class":600,"line":593},[7085],{"type":29,"tag":127,"props":7086,"children":7087},{"emptyLinePlaceholder":1857},[7088],{"type":56,"value":1860},{"type":29,"tag":127,"props":7090,"children":7091},{"class":600,"line":1209},[7092,7096],{"type":29,"tag":127,"props":7093,"children":7094},{"style":4050},[7095],{"type":56,"value":5277},{"type":29,"tag":127,"props":7097,"children":7098},{"style":605},[7099],{"type":56,"value":4058},{"type":29,"tag":127,"props":7101,"children":7102},{"class":600,"line":1218},[7103,7107,7111,7115],{"type":29,"tag":127,"props":7104,"children":7105},{"style":605},[7106],{"type":56,"value":4143},{"type":29,"tag":127,"props":7108,"children":7109},{"style":4050},[7110],{"type":56,"value":5294},{"type":29,"tag":127,"props":7112,"children":7113},{"style":605},[7114],{"type":56,"value":622},{"type":29,"tag":127,"props":7116,"children":7117},{"style":1688},[7118],{"type":56,"value":5303},{"type":29,"tag":127,"props":7120,"children":7121},{"class":600,"line":1231},[7122,7126],{"type":29,"tag":127,"props":7123,"children":7124},{"style":4050},[7125],{"type":56,"value":5312},{"type":29,"tag":127,"props":7127,"children":7128},{"style":605},[7129],{"type":56,"value":4058},{"type":29,"tag":127,"props":7131,"children":7132},{"class":600,"line":1244},[7133,7137],{"type":29,"tag":127,"props":7134,"children":7135},{"style":605},[7136],{"type":56,"value":5325},{"type":29,"tag":127,"props":7138,"children":7139},{"style":1688},[7140],{"type":56,"value":5330},{"type":29,"tag":127,"props":7142,"children":7143},{"class":600,"line":1273},[7144,7149,7153],{"type":29,"tag":127,"props":7145,"children":7146},{"style":4050},[7147],{"type":56,"value":7148},"  coverage",{"type":29,"tag":127,"props":7150,"children":7151},{"style":605},[7152],{"type":56,"value":622},{"type":29,"tag":127,"props":7154,"children":7155},{"style":1688},[7156],{"type":56,"value":7157},"/^\\s*Lines:\\s*\\d+.\\d+\\%/\n",{"type":29,"tag":127,"props":7159,"children":7160},{"class":600,"line":1281},[7161,7165],{"type":29,"tag":127,"props":7162,"children":7163},{"style":4050},[7164],{"type":56,"value":5677},{"type":29,"tag":127,"props":7166,"children":7167},{"style":605},[7168],{"type":56,"value":4058},{"type":29,"tag":127,"props":7170,"children":7171},{"class":600,"line":1289},[7172,7177],{"type":29,"tag":127,"props":7173,"children":7174},{"style":4050},[7175],{"type":56,"value":7176},"    reports",{"type":29,"tag":127,"props":7178,"children":7179},{"style":605},[7180],{"type":56,"value":4058},{"type":29,"tag":127,"props":7182,"children":7183},{"class":600,"line":1310},[7184,7189],{"type":29,"tag":127,"props":7185,"children":7186},{"style":4050},[7187],{"type":56,"value":7188},"      coverage_report",{"type":29,"tag":127,"props":7190,"children":7191},{"style":605},[7192],{"type":56,"value":4058},{"type":29,"tag":127,"props":7194,"children":7195},{"class":600,"line":1323},[7196,7201,7205],{"type":29,"tag":127,"props":7197,"children":7198},{"style":4050},[7199],{"type":56,"value":7200},"        coverage_format",{"type":29,"tag":127,"props":7202,"children":7203},{"style":605},[7204],{"type":56,"value":622},{"type":29,"tag":127,"props":7206,"children":7207},{"style":1688},[7208],{"type":56,"value":7209},"cobertura\n",{"type":29,"tag":127,"props":7211,"children":7212},{"class":600,"line":1336},[7213,7218,7222],{"type":29,"tag":127,"props":7214,"children":7215},{"style":4050},[7216],{"type":56,"value":7217},"        path",{"type":29,"tag":127,"props":7219,"children":7220},{"style":605},[7221],{"type":56,"value":622},{"type":29,"tag":127,"props":7223,"children":7224},{"style":1688},[7225],{"type":56,"value":7226},"coverage.cobertura.xml\n",{"type":29,"tag":127,"props":7228,"children":7229},{"class":600,"line":1357},[7230,7234],{"type":29,"tag":127,"props":7231,"children":7232},{"style":4050},[7233],{"type":56,"value":4173},{"type":29,"tag":127,"props":7235,"children":7236},{"style":605},[7237],{"type":56,"value":4058},{"type":29,"tag":127,"props":7239,"children":7240},{"class":600,"line":1374},[7241,7245,7249,7253],{"type":29,"tag":127,"props":7242,"children":7243},{"style":605},[7244],{"type":56,"value":4143},{"type":29,"tag":127,"props":7246,"children":7247},{"style":4050},[7248],{"type":56,"value":4406},{"type":29,"tag":127,"props":7250,"children":7251},{"style":605},[7252],{"type":56,"value":622},{"type":29,"tag":127,"props":7254,"children":7255},{"style":1688},[7256],{"type":56,"value":6401},{"type":29,"tag":127,"props":7258,"children":7259},{"class":600,"line":1382},[7260,7264,7268,7272],{"type":29,"tag":127,"props":7261,"children":7262},{"style":605},[7263],{"type":56,"value":4143},{"type":29,"tag":127,"props":7265,"children":7266},{"style":4050},[7267],{"type":56,"value":4406},{"type":29,"tag":127,"props":7269,"children":7270},{"style":605},[7271],{"type":56,"value":622},{"type":29,"tag":127,"props":7273,"children":7274},{"style":1688},[7275],{"type":56,"value":4415},{"type":29,"tag":127,"props":7277,"children":7278},{"class":600,"line":1403},[7279,7283,7287],{"type":29,"tag":127,"props":7280,"children":7281},{"style":4050},[7282],{"type":56,"value":4423},{"type":29,"tag":127,"props":7284,"children":7285},{"style":605},[7286],{"type":56,"value":622},{"type":29,"tag":127,"props":7288,"children":7289},{"style":1688},[7290],{"type":56,"value":4432},{"type":29,"tag":127,"props":7292,"children":7293},{"class":600,"line":1420},[7294,7298,7302,7306],{"type":29,"tag":127,"props":7295,"children":7296},{"style":605},[7297],{"type":56,"value":4143},{"type":29,"tag":127,"props":7299,"children":7300},{"style":4050},[7301],{"type":56,"value":4406},{"type":29,"tag":127,"props":7303,"children":7304},{"style":605},[7305],{"type":56,"value":622},{"type":29,"tag":127,"props":7307,"children":7308},{"style":1688},[7309],{"type":56,"value":4452},{"type":29,"tag":48,"props":7311,"children":7312},{},[7313],{"type":56,"value":7314},"Lass uns das ein wenig erklären:",{"type":29,"tag":510,"props":7316,"children":7317},{},[7318,7323,7328,7333,7338],{"type":29,"tag":514,"props":7319,"children":7320},{},[7321],{"type":56,"value":7322},"Wir deaktivieren das automatische Klonen des Repositories (16)",{"type":29,"tag":514,"props":7324,"children":7325},{},[7326],{"type":56,"value":7327},"Wir binden einen Datenbank-Service ein (9-14)",{"type":29,"tag":514,"props":7329,"children":7330},{},[7331],{"type":56,"value":7332},"Wir setzen einige erforderliche Shopware-Umgebungsvariablen (20-23)",{"type":29,"tag":514,"props":7334,"children":7335},{},[7336],{"type":56,"value":7337},"Erstellen ein leeres Shopware-Projekt mit PHPUnit und Xdebug (27-36)",{"type":29,"tag":514,"props":7339,"children":7340},{},[7341],{"type":56,"value":7342},"Führen PHPUnit mit Code-Coverage-Generierung als Text und im Cobertura-Format aus (38)",{"type":29,"tag":48,"props":7344,"children":7345},{},[7346],{"type":56,"value":7347},"Wie die Code-Quality-Pipeline nutzt auch diese die Vorteile des GitLab-Coverage-Reportings voll aus.",{"type":29,"tag":90,"props":7349,"children":7351},{"id":7350},"alles-zusammenfügen",[7352],{"type":56,"value":7353},"Alles zusammenfügen",{"type":29,"tag":48,"props":7355,"children":7356},{},[7357],{"type":56,"value":7358},"Für diesen Teil lassen wir den Build- und Release-Teil weg.",{"type":29,"tag":584,"props":7360,"children":7362},{"code":7361,"filename":4233,"language":4040,"meta":7,"className":4037,"style":7},"stages:\n   - test\n\nphpunit:\n  stage: test\n  image:\n    name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n    entrypoint: [\"\"]\n  services:\n    - name: mysql:8.3.0\n      alias: test_database\n      variables:\n        MYSQL_SKIP_TEST_DB: 'yes'\n        MYSQL_ALLOW_EMPTY_PASSWORD: yes\n  variables:\n    GIT_STRATEGY: none\n    SHOPWARE_ROOT: ${CI_PROJECT_DIR}/shopware\n    SHOPWARE_VERSION: 6.6.10.13\n    \n    APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48\n    MESSENGER_TRANSPORT_DSN: sync://\n    DATABASE_URL: mysql://root@test_database/shopware\n    COMPOSER_CACHE_DIR: ${CI_PROJECT_DIR}/.composer\n\n    XDEBUG_MODE: coverage\n  before_script:\n    - apk add --no-cache php-8.2-xdebug\n    - shopware-cli project create shopware ${SHOPWARE_VERSION}\n    - cd $SHOPWARE_ROOT\n    - composer req --dev shopware/dev-tools phpunit/phpunit\n    - git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"custom/plugins/${CI_PROJECT_NAME}\"\n    - cd custom/plugins/${CI_PROJECT_NAME}\n    - git checkout ${CI_COMMIT_SHA}\n    - cd ${SHOPWARE_ROOT}\n    - composer require $(composer -d custom/plugins/${CI_PROJECT_NAME} config name)\n    - cd custom/plugins/${CI_PROJECT_NAME}\n  script:\n    - ${SHOPWARE_ROOT}/vendor/bin/phpunit --coverage-text --coverage-cobertura=coverage.cobertura.xml\n\n  cache:\n    - key: $CI_JOB_NAME\n      paths:\n        - $COMPOSER_CACHE_DIR\n  coverage: /^\\s*Lines:\\s*\\d+.\\d+\\%/\n  artifacts:\n    reports:\n      coverage_report:\n        coverage_format: cobertura\n        path: coverage.cobertura.xml\n  rules:\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n      when: never\n    - if: $CI_COMMIT_BRANCH\n\ncode-quality:\n   image:\n      name: ghcr.io/shopware/shopware-cli:latest-php-8.2\n      entrypoint: [\"\"]\n   stage: test\n   script:\n      - shopware-cli extension validate --full . | tee report.json\n   artifacts:\n      reports:\n         codequality: report.json\n   rules:\n      - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\n      - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n        when: never\n      - if: $CI_COMMIT_BRANCH\n",[7363],{"type":29,"tag":520,"props":7364,"children":7365},{"__ignoreMap":7},[7366,7377,7388,7395,7406,7421,7432,7447,7466,7477,7496,7511,7522,7537,7552,7563,7578,7593,7608,7615,7630,7645,7660,7675,7682,7697,7708,7719,7730,7741,7752,7763,7774,7785,7796,7807,7818,7829,7840,7847,7858,7877,7888,7899,7914,7925,7936,7947,7962,7977,7988,8007,8026,8041,8060,8067,8078,8089,8104,8123,8138,8149,8160,8171,8182,8197,8208,8227,8246,8261],{"type":29,"tag":127,"props":7367,"children":7368},{"class":600,"line":601},[7369,7373],{"type":29,"tag":127,"props":7370,"children":7371},{"style":4050},[7372],{"type":56,"value":4053},{"type":29,"tag":127,"props":7374,"children":7375},{"style":605},[7376],{"type":56,"value":4058},{"type":29,"tag":127,"props":7378,"children":7379},{"class":600,"line":271},[7380,7384],{"type":29,"tag":127,"props":7381,"children":7382},{"style":605},[7383],{"type":56,"value":6566},{"type":29,"tag":127,"props":7385,"children":7386},{"style":1688},[7387],{"type":56,"value":6218},{"type":29,"tag":127,"props":7389,"children":7390},{"class":600,"line":636},[7391],{"type":29,"tag":127,"props":7392,"children":7393},{"emptyLinePlaceholder":1857},[7394],{"type":56,"value":1860},{"type":29,"tag":127,"props":7396,"children":7397},{"class":600,"line":658},[7398,7402],{"type":29,"tag":127,"props":7399,"children":7400},{"style":4050},[7401],{"type":56,"value":6585},{"type":29,"tag":127,"props":7403,"children":7404},{"style":605},[7405],{"type":56,"value":4058},{"type":29,"tag":127,"props":7407,"children":7408},{"class":600,"line":680},[7409,7413,7417],{"type":29,"tag":127,"props":7410,"children":7411},{"style":4050},[7412],{"type":56,"value":4115},{"type":29,"tag":127,"props":7414,"children":7415},{"style":605},[7416],{"type":56,"value":622},{"type":29,"tag":127,"props":7418,"children":7419},{"style":1688},[7420],{"type":56,"value":6218},{"type":29,"tag":127,"props":7422,"children":7423},{"class":600,"line":694},[7424,7428],{"type":29,"tag":127,"props":7425,"children":7426},{"style":4050},[7427],{"type":56,"value":4098},{"type":29,"tag":127,"props":7429,"children":7430},{"style":605},[7431],{"type":56,"value":4058},{"type":29,"tag":127,"props":7433,"children":7434},{"class":600,"line":716},[7435,7439,7443],{"type":29,"tag":127,"props":7436,"children":7437},{"style":4050},[7438],{"type":56,"value":4312},{"type":29,"tag":127,"props":7440,"children":7441},{"style":605},[7442],{"type":56,"value":622},{"type":29,"tag":127,"props":7444,"children":7445},{"style":1688},[7446],{"type":56,"value":5166},{"type":29,"tag":127,"props":7448,"children":7449},{"class":600,"line":738},[7450,7454,7458,7462],{"type":29,"tag":127,"props":7451,"children":7452},{"style":4050},[7453],{"type":56,"value":4329},{"type":29,"tag":127,"props":7455,"children":7456},{"style":605},[7457],{"type":56,"value":4334},{"type":29,"tag":127,"props":7459,"children":7460},{"style":1688},[7461],{"type":56,"value":4339},{"type":29,"tag":127,"props":7463,"children":7464},{"style":605},[7465],{"type":56,"value":4344},{"type":29,"tag":127,"props":7467,"children":7468},{"class":600,"line":760},[7469,7473],{"type":29,"tag":127,"props":7470,"children":7471},{"style":4050},[7472],{"type":56,"value":6658},{"type":29,"tag":127,"props":7474,"children":7475},{"style":605},[7476],{"type":56,"value":4058},{"type":29,"tag":127,"props":7478,"children":7479},{"class":600,"line":782},[7480,7484,7488,7492],{"type":29,"tag":127,"props":7481,"children":7482},{"style":605},[7483],{"type":56,"value":4143},{"type":29,"tag":127,"props":7485,"children":7486},{"style":4050},[7487],{"type":56,"value":6675},{"type":29,"tag":127,"props":7489,"children":7490},{"style":605},[7491],{"type":56,"value":622},{"type":29,"tag":127,"props":7493,"children":7494},{"style":1688},[7495],{"type":56,"value":6684},{"type":29,"tag":127,"props":7497,"children":7498},{"class":600,"line":803},[7499,7503,7507],{"type":29,"tag":127,"props":7500,"children":7501},{"style":4050},[7502],{"type":56,"value":6693},{"type":29,"tag":127,"props":7504,"children":7505},{"style":605},[7506],{"type":56,"value":622},{"type":29,"tag":127,"props":7508,"children":7509},{"style":1688},[7510],{"type":56,"value":6702},{"type":29,"tag":127,"props":7512,"children":7513},{"class":600,"line":118},[7514,7518],{"type":29,"tag":127,"props":7515,"children":7516},{"style":4050},[7517],{"type":56,"value":6711},{"type":29,"tag":127,"props":7519,"children":7520},{"style":605},[7521],{"type":56,"value":4058},{"type":29,"tag":127,"props":7523,"children":7524},{"class":600,"line":841},[7525,7529,7533],{"type":29,"tag":127,"props":7526,"children":7527},{"style":4050},[7528],{"type":56,"value":6724},{"type":29,"tag":127,"props":7530,"children":7531},{"style":605},[7532],{"type":56,"value":622},{"type":29,"tag":127,"props":7534,"children":7535},{"style":1688},[7536],{"type":56,"value":6733},{"type":29,"tag":127,"props":7538,"children":7539},{"class":600,"line":850},[7540,7544,7548],{"type":29,"tag":127,"props":7541,"children":7542},{"style":4050},[7543],{"type":56,"value":6742},{"type":29,"tag":127,"props":7545,"children":7546},{"style":605},[7547],{"type":56,"value":622},{"type":29,"tag":127,"props":7549,"children":7550},{"style":943},[7551],{"type":56,"value":6751},{"type":29,"tag":127,"props":7553,"children":7554},{"class":600,"line":864},[7555,7559],{"type":29,"tag":127,"props":7556,"children":7557},{"style":4050},[7558],{"type":56,"value":5208},{"type":29,"tag":127,"props":7560,"children":7561},{"style":605},[7562],{"type":56,"value":4058},{"type":29,"tag":127,"props":7564,"children":7565},{"class":600,"line":873},[7566,7570,7574],{"type":29,"tag":127,"props":7567,"children":7568},{"style":4050},[7569],{"type":56,"value":6771},{"type":29,"tag":127,"props":7571,"children":7572},{"style":605},[7573],{"type":56,"value":622},{"type":29,"tag":127,"props":7575,"children":7576},{"style":1688},[7577],{"type":56,"value":6780},{"type":29,"tag":127,"props":7579,"children":7580},{"class":600,"line":895},[7581,7585,7589],{"type":29,"tag":127,"props":7582,"children":7583},{"style":4050},[7584],{"type":56,"value":6788},{"type":29,"tag":127,"props":7586,"children":7587},{"style":605},[7588],{"type":56,"value":622},{"type":29,"tag":127,"props":7590,"children":7591},{"style":1688},[7592],{"type":56,"value":6797},{"type":29,"tag":127,"props":7594,"children":7595},{"class":600,"line":917},[7596,7600,7604],{"type":29,"tag":127,"props":7597,"children":7598},{"style":4050},[7599],{"type":56,"value":6805},{"type":29,"tag":127,"props":7601,"children":7602},{"style":605},[7603],{"type":56,"value":622},{"type":29,"tag":127,"props":7605,"children":7606},{"style":943},[7607],{"type":56,"value":6814},{"type":29,"tag":127,"props":7609,"children":7610},{"class":600,"line":930},[7611],{"type":29,"tag":127,"props":7612,"children":7613},{"style":605},[7614],{"type":56,"value":6822},{"type":29,"tag":127,"props":7616,"children":7617},{"class":600,"line":949},[7618,7622,7626],{"type":29,"tag":127,"props":7619,"children":7620},{"style":4050},[7621],{"type":56,"value":6831},{"type":29,"tag":127,"props":7623,"children":7624},{"style":605},[7625],{"type":56,"value":622},{"type":29,"tag":127,"props":7627,"children":7628},{"style":1688},[7629],{"type":56,"value":6840},{"type":29,"tag":127,"props":7631,"children":7632},{"class":600,"line":958},[7633,7637,7641],{"type":29,"tag":127,"props":7634,"children":7635},{"style":4050},[7636],{"type":56,"value":6849},{"type":29,"tag":127,"props":7638,"children":7639},{"style":605},[7640],{"type":56,"value":622},{"type":29,"tag":127,"props":7642,"children":7643},{"style":1688},[7644],{"type":56,"value":6858},{"type":29,"tag":127,"props":7646,"children":7647},{"class":600,"line":967},[7648,7652,7656],{"type":29,"tag":127,"props":7649,"children":7650},{"style":4050},[7651],{"type":56,"value":6867},{"type":29,"tag":127,"props":7653,"children":7654},{"style":605},[7655],{"type":56,"value":622},{"type":29,"tag":127,"props":7657,"children":7658},{"style":1688},[7659],{"type":56,"value":6876},{"type":29,"tag":127,"props":7661,"children":7662},{"class":600,"line":975},[7663,7667,7671],{"type":29,"tag":127,"props":7664,"children":7665},{"style":4050},[7666],{"type":56,"value":5220},{"type":29,"tag":127,"props":7668,"children":7669},{"style":605},[7670],{"type":56,"value":622},{"type":29,"tag":127,"props":7672,"children":7673},{"style":1688},[7674],{"type":56,"value":5229},{"type":29,"tag":127,"props":7676,"children":7677},{"class":600,"line":995},[7678],{"type":29,"tag":127,"props":7679,"children":7680},{"emptyLinePlaceholder":1857},[7681],{"type":56,"value":1860},{"type":29,"tag":127,"props":7683,"children":7684},{"class":600,"line":1016},[7685,7689,7693],{"type":29,"tag":127,"props":7686,"children":7687},{"style":4050},[7688],{"type":56,"value":6907},{"type":29,"tag":127,"props":7690,"children":7691},{"style":605},[7692],{"type":56,"value":622},{"type":29,"tag":127,"props":7694,"children":7695},{"style":1688},[7696],{"type":56,"value":6916},{"type":29,"tag":127,"props":7698,"children":7699},{"class":600,"line":1028},[7700,7704],{"type":29,"tag":127,"props":7701,"children":7702},{"style":4050},[7703],{"type":56,"value":6924},{"type":29,"tag":127,"props":7705,"children":7706},{"style":605},[7707],{"type":56,"value":4058},{"type":29,"tag":127,"props":7709,"children":7710},{"class":600,"line":1044},[7711,7715],{"type":29,"tag":127,"props":7712,"children":7713},{"style":605},[7714],{"type":56,"value":4143},{"type":29,"tag":127,"props":7716,"children":7717},{"style":1688},[7718],{"type":56,"value":6941},{"type":29,"tag":127,"props":7720,"children":7721},{"class":600,"line":1052},[7722,7726],{"type":29,"tag":127,"props":7723,"children":7724},{"style":605},[7725],{"type":56,"value":4143},{"type":29,"tag":127,"props":7727,"children":7728},{"style":1688},[7729],{"type":56,"value":6954},{"type":29,"tag":127,"props":7731,"children":7732},{"class":600,"line":1060},[7733,7737],{"type":29,"tag":127,"props":7734,"children":7735},{"style":605},[7736],{"type":56,"value":4143},{"type":29,"tag":127,"props":7738,"children":7739},{"style":1688},[7740],{"type":56,"value":6967},{"type":29,"tag":127,"props":7742,"children":7743},{"class":600,"line":1068},[7744,7748],{"type":29,"tag":127,"props":7745,"children":7746},{"style":605},[7747],{"type":56,"value":4143},{"type":29,"tag":127,"props":7749,"children":7750},{"style":1688},[7751],{"type":56,"value":6980},{"type":29,"tag":127,"props":7753,"children":7754},{"class":600,"line":1088},[7755,7759],{"type":29,"tag":127,"props":7756,"children":7757},{"style":605},[7758],{"type":56,"value":4143},{"type":29,"tag":127,"props":7760,"children":7761},{"style":1688},[7762],{"type":56,"value":6993},{"type":29,"tag":127,"props":7764,"children":7765},{"class":600,"line":1109},[7766,7770],{"type":29,"tag":127,"props":7767,"children":7768},{"style":605},[7769],{"type":56,"value":4143},{"type":29,"tag":127,"props":7771,"children":7772},{"style":1688},[7773],{"type":56,"value":7006},{"type":29,"tag":127,"props":7775,"children":7776},{"class":600,"line":1121},[7777,7781],{"type":29,"tag":127,"props":7778,"children":7779},{"style":605},[7780],{"type":56,"value":4143},{"type":29,"tag":127,"props":7782,"children":7783},{"style":1688},[7784],{"type":56,"value":7019},{"type":29,"tag":127,"props":7786,"children":7787},{"class":600,"line":1137},[7788,7792],{"type":29,"tag":127,"props":7789,"children":7790},{"style":605},[7791],{"type":56,"value":4143},{"type":29,"tag":127,"props":7793,"children":7794},{"style":1688},[7795],{"type":56,"value":7032},{"type":29,"tag":127,"props":7797,"children":7798},{"class":600,"line":1145},[7799,7803],{"type":29,"tag":127,"props":7800,"children":7801},{"style":605},[7802],{"type":56,"value":4143},{"type":29,"tag":127,"props":7804,"children":7805},{"style":1688},[7806],{"type":56,"value":7045},{"type":29,"tag":127,"props":7808,"children":7809},{"class":600,"line":590},[7810,7814],{"type":29,"tag":127,"props":7811,"children":7812},{"style":605},[7813],{"type":56,"value":4143},{"type":29,"tag":127,"props":7815,"children":7816},{"style":1688},[7817],{"type":56,"value":7006},{"type":29,"tag":127,"props":7819,"children":7820},{"class":600,"line":591},[7821,7825],{"type":29,"tag":127,"props":7822,"children":7823},{"style":4050},[7824],{"type":56,"value":4131},{"type":29,"tag":127,"props":7826,"children":7827},{"style":605},[7828],{"type":56,"value":4058},{"type":29,"tag":127,"props":7830,"children":7831},{"class":600,"line":592},[7832,7836],{"type":29,"tag":127,"props":7833,"children":7834},{"style":605},[7835],{"type":56,"value":4143},{"type":29,"tag":127,"props":7837,"children":7838},{"style":1688},[7839],{"type":56,"value":7081},{"type":29,"tag":127,"props":7841,"children":7842},{"class":600,"line":593},[7843],{"type":29,"tag":127,"props":7844,"children":7845},{"emptyLinePlaceholder":1857},[7846],{"type":56,"value":1860},{"type":29,"tag":127,"props":7848,"children":7849},{"class":600,"line":1209},[7850,7854],{"type":29,"tag":127,"props":7851,"children":7852},{"style":4050},[7853],{"type":56,"value":5277},{"type":29,"tag":127,"props":7855,"children":7856},{"style":605},[7857],{"type":56,"value":4058},{"type":29,"tag":127,"props":7859,"children":7860},{"class":600,"line":1218},[7861,7865,7869,7873],{"type":29,"tag":127,"props":7862,"children":7863},{"style":605},[7864],{"type":56,"value":4143},{"type":29,"tag":127,"props":7866,"children":7867},{"style":4050},[7868],{"type":56,"value":5294},{"type":29,"tag":127,"props":7870,"children":7871},{"style":605},[7872],{"type":56,"value":622},{"type":29,"tag":127,"props":7874,"children":7875},{"style":1688},[7876],{"type":56,"value":5303},{"type":29,"tag":127,"props":7878,"children":7879},{"class":600,"line":1231},[7880,7884],{"type":29,"tag":127,"props":7881,"children":7882},{"style":4050},[7883],{"type":56,"value":5312},{"type":29,"tag":127,"props":7885,"children":7886},{"style":605},[7887],{"type":56,"value":4058},{"type":29,"tag":127,"props":7889,"children":7890},{"class":600,"line":1244},[7891,7895],{"type":29,"tag":127,"props":7892,"children":7893},{"style":605},[7894],{"type":56,"value":5325},{"type":29,"tag":127,"props":7896,"children":7897},{"style":1688},[7898],{"type":56,"value":5330},{"type":29,"tag":127,"props":7900,"children":7901},{"class":600,"line":1273},[7902,7906,7910],{"type":29,"tag":127,"props":7903,"children":7904},{"style":4050},[7905],{"type":56,"value":7148},{"type":29,"tag":127,"props":7907,"children":7908},{"style":605},[7909],{"type":56,"value":622},{"type":29,"tag":127,"props":7911,"children":7912},{"style":1688},[7913],{"type":56,"value":7157},{"type":29,"tag":127,"props":7915,"children":7916},{"class":600,"line":1281},[7917,7921],{"type":29,"tag":127,"props":7918,"children":7919},{"style":4050},[7920],{"type":56,"value":5677},{"type":29,"tag":127,"props":7922,"children":7923},{"style":605},[7924],{"type":56,"value":4058},{"type":29,"tag":127,"props":7926,"children":7927},{"class":600,"line":1289},[7928,7932],{"type":29,"tag":127,"props":7929,"children":7930},{"style":4050},[7931],{"type":56,"value":7176},{"type":29,"tag":127,"props":7933,"children":7934},{"style":605},[7935],{"type":56,"value":4058},{"type":29,"tag":127,"props":7937,"children":7938},{"class":600,"line":1310},[7939,7943],{"type":29,"tag":127,"props":7940,"children":7941},{"style":4050},[7942],{"type":56,"value":7188},{"type":29,"tag":127,"props":7944,"children":7945},{"style":605},[7946],{"type":56,"value":4058},{"type":29,"tag":127,"props":7948,"children":7949},{"class":600,"line":1323},[7950,7954,7958],{"type":29,"tag":127,"props":7951,"children":7952},{"style":4050},[7953],{"type":56,"value":7200},{"type":29,"tag":127,"props":7955,"children":7956},{"style":605},[7957],{"type":56,"value":622},{"type":29,"tag":127,"props":7959,"children":7960},{"style":1688},[7961],{"type":56,"value":7209},{"type":29,"tag":127,"props":7963,"children":7964},{"class":600,"line":1336},[7965,7969,7973],{"type":29,"tag":127,"props":7966,"children":7967},{"style":4050},[7968],{"type":56,"value":7217},{"type":29,"tag":127,"props":7970,"children":7971},{"style":605},[7972],{"type":56,"value":622},{"type":29,"tag":127,"props":7974,"children":7975},{"style":1688},[7976],{"type":56,"value":7226},{"type":29,"tag":127,"props":7978,"children":7979},{"class":600,"line":1357},[7980,7984],{"type":29,"tag":127,"props":7981,"children":7982},{"style":4050},[7983],{"type":56,"value":4173},{"type":29,"tag":127,"props":7985,"children":7986},{"style":605},[7987],{"type":56,"value":4058},{"type":29,"tag":127,"props":7989,"children":7990},{"class":600,"line":1374},[7991,7995,7999,8003],{"type":29,"tag":127,"props":7992,"children":7993},{"style":605},[7994],{"type":56,"value":4143},{"type":29,"tag":127,"props":7996,"children":7997},{"style":4050},[7998],{"type":56,"value":4406},{"type":29,"tag":127,"props":8000,"children":8001},{"style":605},[8002],{"type":56,"value":622},{"type":29,"tag":127,"props":8004,"children":8005},{"style":1688},[8006],{"type":56,"value":6401},{"type":29,"tag":127,"props":8008,"children":8009},{"class":600,"line":1382},[8010,8014,8018,8022],{"type":29,"tag":127,"props":8011,"children":8012},{"style":605},[8013],{"type":56,"value":4143},{"type":29,"tag":127,"props":8015,"children":8016},{"style":4050},[8017],{"type":56,"value":4406},{"type":29,"tag":127,"props":8019,"children":8020},{"style":605},[8021],{"type":56,"value":622},{"type":29,"tag":127,"props":8023,"children":8024},{"style":1688},[8025],{"type":56,"value":4415},{"type":29,"tag":127,"props":8027,"children":8028},{"class":600,"line":1403},[8029,8033,8037],{"type":29,"tag":127,"props":8030,"children":8031},{"style":4050},[8032],{"type":56,"value":4423},{"type":29,"tag":127,"props":8034,"children":8035},{"style":605},[8036],{"type":56,"value":622},{"type":29,"tag":127,"props":8038,"children":8039},{"style":1688},[8040],{"type":56,"value":4432},{"type":29,"tag":127,"props":8042,"children":8043},{"class":600,"line":1420},[8044,8048,8052,8056],{"type":29,"tag":127,"props":8045,"children":8046},{"style":605},[8047],{"type":56,"value":4143},{"type":29,"tag":127,"props":8049,"children":8050},{"style":4050},[8051],{"type":56,"value":4406},{"type":29,"tag":127,"props":8053,"children":8054},{"style":605},[8055],{"type":56,"value":622},{"type":29,"tag":127,"props":8057,"children":8058},{"style":1688},[8059],{"type":56,"value":4452},{"type":29,"tag":127,"props":8061,"children":8062},{"class":600,"line":1428},[8063],{"type":29,"tag":127,"props":8064,"children":8065},{"emptyLinePlaceholder":1857},[8066],{"type":56,"value":1860},{"type":29,"tag":127,"props":8068,"children":8069},{"class":600,"line":1441},[8070,8074],{"type":29,"tag":127,"props":8071,"children":8072},{"style":4050},[8073],{"type":56,"value":6233},{"type":29,"tag":127,"props":8075,"children":8076},{"style":605},[8077],{"type":56,"value":4058},{"type":29,"tag":127,"props":8079,"children":8080},{"class":600,"line":1454},[8081,8085],{"type":29,"tag":127,"props":8082,"children":8083},{"style":4050},[8084],{"type":56,"value":6245},{"type":29,"tag":127,"props":8086,"children":8087},{"style":605},[8088],{"type":56,"value":4058},{"type":29,"tag":127,"props":8090,"children":8091},{"class":600,"line":1472},[8092,8096,8100],{"type":29,"tag":127,"props":8093,"children":8094},{"style":4050},[8095],{"type":56,"value":6258},{"type":29,"tag":127,"props":8097,"children":8098},{"style":605},[8099],{"type":56,"value":622},{"type":29,"tag":127,"props":8101,"children":8102},{"style":1688},[8103],{"type":56,"value":5166},{"type":29,"tag":127,"props":8105,"children":8106},{"class":600,"line":1480},[8107,8111,8115,8119],{"type":29,"tag":127,"props":8108,"children":8109},{"style":4050},[8110],{"type":56,"value":6274},{"type":29,"tag":127,"props":8112,"children":8113},{"style":605},[8114],{"type":56,"value":4334},{"type":29,"tag":127,"props":8116,"children":8117},{"style":1688},[8118],{"type":56,"value":4339},{"type":29,"tag":127,"props":8120,"children":8121},{"style":605},[8122],{"type":56,"value":4344},{"type":29,"tag":127,"props":8124,"children":8125},{"class":600,"line":1493},[8126,8130,8134],{"type":29,"tag":127,"props":8127,"children":8128},{"style":4050},[8129],{"type":56,"value":6294},{"type":29,"tag":127,"props":8131,"children":8132},{"style":605},[8133],{"type":56,"value":622},{"type":29,"tag":127,"props":8135,"children":8136},{"style":1688},[8137],{"type":56,"value":6218},{"type":29,"tag":127,"props":8139,"children":8140},{"class":600,"line":1502},[8141,8145],{"type":29,"tag":127,"props":8142,"children":8143},{"style":4050},[8144],{"type":56,"value":6310},{"type":29,"tag":127,"props":8146,"children":8147},{"style":605},[8148],{"type":56,"value":4058},{"type":29,"tag":127,"props":8150,"children":8151},{"class":600,"line":1511},[8152,8156],{"type":29,"tag":127,"props":8153,"children":8154},{"style":605},[8155],{"type":56,"value":5703},{"type":29,"tag":127,"props":8157,"children":8158},{"style":1688},[8159],{"type":56,"value":6326},{"type":29,"tag":127,"props":8161,"children":8162},{"class":600,"line":1524},[8163,8167],{"type":29,"tag":127,"props":8164,"children":8165},{"style":4050},[8166],{"type":56,"value":6334},{"type":29,"tag":127,"props":8168,"children":8169},{"style":605},[8170],{"type":56,"value":4058},{"type":29,"tag":127,"props":8172,"children":8173},{"class":600,"line":1532},[8174,8178],{"type":29,"tag":127,"props":8175,"children":8176},{"style":4050},[8177],{"type":56,"value":6346},{"type":29,"tag":127,"props":8179,"children":8180},{"style":605},[8181],{"type":56,"value":4058},{"type":29,"tag":127,"props":8183,"children":8184},{"class":600,"line":1541},[8185,8189,8193],{"type":29,"tag":127,"props":8186,"children":8187},{"style":4050},[8188],{"type":56,"value":6358},{"type":29,"tag":127,"props":8190,"children":8191},{"style":605},[8192],{"type":56,"value":622},{"type":29,"tag":127,"props":8194,"children":8195},{"style":1688},[8196],{"type":56,"value":6367},{"type":29,"tag":127,"props":8198,"children":8199},{"class":600,"line":1549},[8200,8204],{"type":29,"tag":127,"props":8201,"children":8202},{"style":4050},[8203],{"type":56,"value":6376},{"type":29,"tag":127,"props":8205,"children":8206},{"style":605},[8207],{"type":56,"value":4058},{"type":29,"tag":127,"props":8209,"children":8210},{"class":600,"line":1562},[8211,8215,8219,8223],{"type":29,"tag":127,"props":8212,"children":8213},{"style":605},[8214],{"type":56,"value":5703},{"type":29,"tag":127,"props":8216,"children":8217},{"style":4050},[8218],{"type":56,"value":4406},{"type":29,"tag":127,"props":8220,"children":8221},{"style":605},[8222],{"type":56,"value":622},{"type":29,"tag":127,"props":8224,"children":8225},{"style":1688},[8226],{"type":56,"value":6401},{"type":29,"tag":127,"props":8228,"children":8229},{"class":600,"line":1575},[8230,8234,8238,8242],{"type":29,"tag":127,"props":8231,"children":8232},{"style":605},[8233],{"type":56,"value":5703},{"type":29,"tag":127,"props":8235,"children":8236},{"style":4050},[8237],{"type":56,"value":4406},{"type":29,"tag":127,"props":8239,"children":8240},{"style":605},[8241],{"type":56,"value":622},{"type":29,"tag":127,"props":8243,"children":8244},{"style":1688},[8245],{"type":56,"value":4415},{"type":29,"tag":127,"props":8247,"children":8248},{"class":600,"line":1596},[8249,8253,8257],{"type":29,"tag":127,"props":8250,"children":8251},{"style":4050},[8252],{"type":56,"value":6430},{"type":29,"tag":127,"props":8254,"children":8255},{"style":605},[8256],{"type":56,"value":622},{"type":29,"tag":127,"props":8258,"children":8259},{"style":1688},[8260],{"type":56,"value":4432},{"type":29,"tag":127,"props":8262,"children":8263},{"class":600,"line":1609},[8264,8268,8272,8276],{"type":29,"tag":127,"props":8265,"children":8266},{"style":605},[8267],{"type":56,"value":5703},{"type":29,"tag":127,"props":8269,"children":8270},{"style":4050},[8271],{"type":56,"value":4406},{"type":29,"tag":127,"props":8273,"children":8274},{"style":605},[8275],{"type":56,"value":622},{"type":29,"tag":127,"props":8277,"children":8278},{"style":1688},[8279],{"type":56,"value":4452},{"type":29,"tag":4906,"props":8281,"children":8282},{},[8283],{"type":56,"value":4910},{"title":7,"searchDepth":271,"depth":271,"links":8285},[8286,8289,8292],{"id":6074,"depth":271,"text":6077,"children":8287},[8288],{"id":6179,"depth":636,"text":6182},{"id":6476,"depth":271,"text":6044,"children":8290},[8291],{"id":6524,"depth":636,"text":6527},{"id":7350,"depth":271,"text":7353},{"_path":429,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":430,"description":431,"author":394,"image":395,"releaseDate":432,"blogCategories":8294,"articleTags":8295,"tags":8296,"body":8297,"_type":275,"_id":437,"_source":277,"_file":438,"_stem":439,"_extension":280},[434,399],[399,401],[23,404],{"type":26,"children":8298,"toc":8826},[8299,8303,8314,8320,8333,8342,8373,8379,8407,8412,8442,8751,8756,8822],{"type":29,"tag":66,"props":8300,"children":8302},{"alt":7,"aspect-ratio":475,"height":476,"object-fit":477,"src":8301},"/blog/shopware-renovate.png",[],{"type":29,"tag":48,"props":8304,"children":8305},{},[8306,8312],{"type":29,"tag":491,"props":8307,"children":8309},{"href":8308},"https://docs.renovatebot.com/",[8310],{"type":56,"value":8311},"Renovate",{"type":56,"value":8313}," ist ein Tool zur Verfolgung von Projektabhängigkeiten und zur Erstellung von Merge-/Pull-Requests für diese. Es funktioniert perfekt für die meisten gängigen Paketmanager, aber...",{"type":29,"tag":90,"props":8315,"children":8317},{"id":8316},"shopware-versionierungsschema",[8318],{"type":56,"value":8319},"Shopware Versionierungsschema",{"type":29,"tag":48,"props":8321,"children":8322},{},[8323,8325,8331],{"type":56,"value":8324},"Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Sie können den ",{"type":29,"tag":491,"props":8326,"children":8328},{"href":8327},"https://www.shopware.com/de/news/shopware-6-versionierungs-strategie/",[8329],{"type":56,"value":8330},"offiziellen Artikel",{"type":56,"value":8332}," lesen, aber kurz gesagt:",{"type":29,"tag":8334,"props":8335,"children":8336},"blockquote",{},[8337],{"type":29,"tag":48,"props":8338,"children":8339},{},[8340],{"type":56,"value":8341},"Shopware implementierte SemVer als \"SemVer with benefits\".",{"type":29,"tag":8334,"props":8343,"children":8344},{},[8345,8350,8368],{"type":29,"tag":48,"props":8346,"children":8347},{},[8348],{"type":56,"value":8349},"Eine SemVer-konforme Version hat drei Zahlen: Major, Minor und Patch. Diese werden nach folgendem Regelsatz erhöht:",{"type":29,"tag":5008,"props":8351,"children":8352},{},[8353,8358,8363],{"type":29,"tag":514,"props":8354,"children":8355},{},[8356],{"type":56,"value":8357},"MAJOR: Inkompatible API-Änderungen werden vorgenommen",{"type":29,"tag":514,"props":8359,"children":8360},{},[8361],{"type":56,"value":8362},"MINOR: Funktionalität wird auf rückwärtskompatible Weise hinzugefügt",{"type":29,"tag":514,"props":8364,"children":8365},{},[8366],{"type":56,"value":8367},"PATCH: Rückwärtskompatible Fehlerbehebungen werden vorgenommen",{"type":29,"tag":48,"props":8369,"children":8370},{},[8371],{"type":56,"value":8372},"Der \"with benefits\"-Teil ist: Wir behalten die große Marketing-Nummer. Also ist Shopware 6 immer noch das Produkt, aber es gibt eine Shopware 6.3.0.0. Wobei 3.0.0 der SemVer-Teil ist.",{"type":29,"tag":90,"props":8374,"children":8376},{"id":8375},"renovate-konfiguration",[8377],{"type":56,"value":8378},"Renovate-Konfiguration",{"type":29,"tag":48,"props":8380,"children":8381},{},[8382,8383,8389,8391,8397,8399,8405],{"type":56,"value":4887},{"type":29,"tag":520,"props":8384,"children":8386},{"className":8385},[],[8387],{"type":56,"value":8388},"\"große Marketing-Nummer\"",{"type":56,"value":8390}," oder ",{"type":29,"tag":520,"props":8392,"children":8394},{"className":8393},[],[8395],{"type":56,"value":8396},"\"Generation\"",{"type":56,"value":8398}," wird in Renovate als ",{"type":29,"tag":520,"props":8400,"children":8402},{"className":8401},[],[8403],{"type":56,"value":8404},"compatibility",{"type":56,"value":8406}," dargestellt.",{"type":29,"tag":48,"props":8408,"children":8409},{},[8410],{"type":56,"value":8411},"Die folgende Konfiguration wird:",{"type":29,"tag":510,"props":8413,"children":8414},{},[8415,8420,8432,8437],{"type":29,"tag":514,"props":8416,"children":8417},{},[8418],{"type":56,"value":8419},"Alle shopware-spezifischen Updates gruppieren",{"type":29,"tag":514,"props":8421,"children":8422},{},[8423,8425,8430],{"type":56,"value":8424},"Die Updates als ",{"type":29,"tag":520,"props":8426,"children":8428},{"className":8427},[],[8429],{"type":56,"value":23},{"type":56,"value":8431}," gruppieren",{"type":29,"tag":514,"props":8433,"children":8434},{},[8435],{"type":56,"value":8436},"Renovate mitteilen, wie die Version extrahiert werden soll",{"type":29,"tag":514,"props":8438,"children":8439},{},[8440],{"type":56,"value":8441},"Renovate mitteilen, wo Changelog-Informationen zu finden sind",{"type":29,"tag":584,"props":8443,"children":8446},{"className":586,"code":8444,"filename":8445,"language":384,"meta":7,"style":7},"{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"packageRules\": [\n    {\n      \"description\": \"Follow Shopware version schema\",\n      \"matchDatasources\": [\n        \"packagist\"\n      ],\n      \"matchPackageNames\": [\n        \"shopware/core\",\n        \"shopware/administration\",\n        \"shopware/elasticsearch\",\n        \"shopware/storefront\"\n      ],\n      \"groupName\": \"shopware\",\n      \"versioning\": \"regex:(?\u003Ccompatibility>\\\\d+)\\\\.(?\u003Cmajor>\\\\d+)(\\\\.(?\u003Cminor>\\\\d+))?(\\\\.(?\u003Cpatch>\\\\d+))?$\",\n      \"sourceUrl\": \"https://github.com/shopware/shopware\"\n    }\n  ]\n}\n","renovate.json",[8447],{"type":29,"tag":520,"props":8448,"children":8449},{"__ignoreMap":7},[8450,8457,8478,8490,8497,8518,8530,8538,8546,8558,8569,8581,8593,8601,8608,8629,8713,8730,8737,8744],{"type":29,"tag":127,"props":8451,"children":8452},{"class":600,"line":601},[8453],{"type":29,"tag":127,"props":8454,"children":8455},{"style":605},[8456],{"type":56,"value":608},{"type":29,"tag":127,"props":8458,"children":8459},{"class":600,"line":271},[8460,8465,8469,8474],{"type":29,"tag":127,"props":8461,"children":8462},{"style":614},[8463],{"type":56,"value":8464},"  \"$schema\"",{"type":29,"tag":127,"props":8466,"children":8467},{"style":605},[8468],{"type":56,"value":622},{"type":29,"tag":127,"props":8470,"children":8471},{"style":625},[8472],{"type":56,"value":8473},"\"https://docs.renovatebot.com/renovate-schema.json\"",{"type":29,"tag":127,"props":8475,"children":8476},{"style":605},[8477],{"type":56,"value":633},{"type":29,"tag":127,"props":8479,"children":8480},{"class":600,"line":636},[8481,8486],{"type":29,"tag":127,"props":8482,"children":8483},{"style":614},[8484],{"type":56,"value":8485},"  \"packageRules\"",{"type":29,"tag":127,"props":8487,"children":8488},{"style":605},[8489],{"type":56,"value":861},{"type":29,"tag":127,"props":8491,"children":8492},{"class":600,"line":658},[8493],{"type":29,"tag":127,"props":8494,"children":8495},{"style":605},[8496],{"type":56,"value":870},{"type":29,"tag":127,"props":8498,"children":8499},{"class":600,"line":680},[8500,8505,8509,8514],{"type":29,"tag":127,"props":8501,"children":8502},{"style":614},[8503],{"type":56,"value":8504},"      \"description\"",{"type":29,"tag":127,"props":8506,"children":8507},{"style":605},[8508],{"type":56,"value":622},{"type":29,"tag":127,"props":8510,"children":8511},{"style":625},[8512],{"type":56,"value":8513},"\"Follow Shopware version schema\"",{"type":29,"tag":127,"props":8515,"children":8516},{"style":605},[8517],{"type":56,"value":633},{"type":29,"tag":127,"props":8519,"children":8520},{"class":600,"line":694},[8521,8526],{"type":29,"tag":127,"props":8522,"children":8523},{"style":614},[8524],{"type":56,"value":8525},"      \"matchDatasources\"",{"type":29,"tag":127,"props":8527,"children":8528},{"style":605},[8529],{"type":56,"value":861},{"type":29,"tag":127,"props":8531,"children":8532},{"class":600,"line":716},[8533],{"type":29,"tag":127,"props":8534,"children":8535},{"style":625},[8536],{"type":56,"value":8537},"        \"packagist\"\n",{"type":29,"tag":127,"props":8539,"children":8540},{"class":600,"line":738},[8541],{"type":29,"tag":127,"props":8542,"children":8543},{"style":605},[8544],{"type":56,"value":8545},"      ],\n",{"type":29,"tag":127,"props":8547,"children":8548},{"class":600,"line":760},[8549,8554],{"type":29,"tag":127,"props":8550,"children":8551},{"style":614},[8552],{"type":56,"value":8553},"      \"matchPackageNames\"",{"type":29,"tag":127,"props":8555,"children":8556},{"style":605},[8557],{"type":56,"value":861},{"type":29,"tag":127,"props":8559,"children":8560},{"class":600,"line":782},[8561,8565],{"type":29,"tag":127,"props":8562,"children":8563},{"style":625},[8564],{"type":56,"value":2080},{"type":29,"tag":127,"props":8566,"children":8567},{"style":605},[8568],{"type":56,"value":633},{"type":29,"tag":127,"props":8570,"children":8571},{"class":600,"line":803},[8572,8577],{"type":29,"tag":127,"props":8573,"children":8574},{"style":625},[8575],{"type":56,"value":8576},"        \"shopware/administration\"",{"type":29,"tag":127,"props":8578,"children":8579},{"style":605},[8580],{"type":56,"value":633},{"type":29,"tag":127,"props":8582,"children":8583},{"class":600,"line":118},[8584,8589],{"type":29,"tag":127,"props":8585,"children":8586},{"style":625},[8587],{"type":56,"value":8588},"        \"shopware/elasticsearch\"",{"type":29,"tag":127,"props":8590,"children":8591},{"style":605},[8592],{"type":56,"value":633},{"type":29,"tag":127,"props":8594,"children":8595},{"class":600,"line":841},[8596],{"type":29,"tag":127,"props":8597,"children":8598},{"style":625},[8599],{"type":56,"value":8600},"        \"shopware/storefront\"\n",{"type":29,"tag":127,"props":8602,"children":8603},{"class":600,"line":850},[8604],{"type":29,"tag":127,"props":8605,"children":8606},{"style":605},[8607],{"type":56,"value":8545},{"type":29,"tag":127,"props":8609,"children":8610},{"class":600,"line":864},[8611,8616,8620,8625],{"type":29,"tag":127,"props":8612,"children":8613},{"style":614},[8614],{"type":56,"value":8615},"      \"groupName\"",{"type":29,"tag":127,"props":8617,"children":8618},{"style":605},[8619],{"type":56,"value":622},{"type":29,"tag":127,"props":8621,"children":8622},{"style":625},[8623],{"type":56,"value":8624},"\"shopware\"",{"type":29,"tag":127,"props":8626,"children":8627},{"style":605},[8628],{"type":56,"value":633},{"type":29,"tag":127,"props":8630,"children":8631},{"class":600,"line":873},[8632,8637,8641,8646,8650,8655,8659,8664,8668,8673,8677,8682,8686,8691,8695,8700,8704,8709],{"type":29,"tag":127,"props":8633,"children":8634},{"style":614},[8635],{"type":56,"value":8636},"      \"versioning\"",{"type":29,"tag":127,"props":8638,"children":8639},{"style":605},[8640],{"type":56,"value":622},{"type":29,"tag":127,"props":8642,"children":8643},{"style":625},[8644],{"type":56,"value":8645},"\"regex:(?\u003Ccompatibility>",{"type":29,"tag":127,"props":8647,"children":8648},{"style":943},[8649],{"type":56,"value":1256},{"type":29,"tag":127,"props":8651,"children":8652},{"style":625},[8653],{"type":56,"value":8654},"d+)",{"type":29,"tag":127,"props":8656,"children":8657},{"style":943},[8658],{"type":56,"value":1256},{"type":29,"tag":127,"props":8660,"children":8661},{"style":625},[8662],{"type":56,"value":8663},".(?\u003Cmajor>",{"type":29,"tag":127,"props":8665,"children":8666},{"style":943},[8667],{"type":56,"value":1256},{"type":29,"tag":127,"props":8669,"children":8670},{"style":625},[8671],{"type":56,"value":8672},"d+)(",{"type":29,"tag":127,"props":8674,"children":8675},{"style":943},[8676],{"type":56,"value":1256},{"type":29,"tag":127,"props":8678,"children":8679},{"style":625},[8680],{"type":56,"value":8681},".(?\u003Cminor>",{"type":29,"tag":127,"props":8683,"children":8684},{"style":943},[8685],{"type":56,"value":1256},{"type":29,"tag":127,"props":8687,"children":8688},{"style":625},[8689],{"type":56,"value":8690},"d+))?(",{"type":29,"tag":127,"props":8692,"children":8693},{"style":943},[8694],{"type":56,"value":1256},{"type":29,"tag":127,"props":8696,"children":8697},{"style":625},[8698],{"type":56,"value":8699},".(?\u003Cpatch>",{"type":29,"tag":127,"props":8701,"children":8702},{"style":943},[8703],{"type":56,"value":1256},{"type":29,"tag":127,"props":8705,"children":8706},{"style":625},[8707],{"type":56,"value":8708},"d+))?$\"",{"type":29,"tag":127,"props":8710,"children":8711},{"style":605},[8712],{"type":56,"value":633},{"type":29,"tag":127,"props":8714,"children":8715},{"class":600,"line":895},[8716,8721,8725],{"type":29,"tag":127,"props":8717,"children":8718},{"style":614},[8719],{"type":56,"value":8720},"      \"sourceUrl\"",{"type":29,"tag":127,"props":8722,"children":8723},{"style":605},[8724],{"type":56,"value":622},{"type":29,"tag":127,"props":8726,"children":8727},{"style":625},[8728],{"type":56,"value":8729},"\"https://github.com/shopware/shopware\"\n",{"type":29,"tag":127,"props":8731,"children":8732},{"class":600,"line":917},[8733],{"type":29,"tag":127,"props":8734,"children":8735},{"style":605},[8736],{"type":56,"value":1206},{"type":29,"tag":127,"props":8738,"children":8739},{"class":600,"line":930},[8740],{"type":29,"tag":127,"props":8741,"children":8742},{"style":605},[8743],{"type":56,"value":4850},{"type":29,"tag":127,"props":8745,"children":8746},{"class":600,"line":949},[8747],{"type":29,"tag":127,"props":8748,"children":8749},{"style":605},[8750],{"type":56,"value":1663},{"type":29,"tag":48,"props":8752,"children":8753},{},[8754],{"type":56,"value":8755},"Dies sollte zur Erstellung folgender Merge-/Pull-Requests führen:",{"type":29,"tag":5008,"props":8757,"children":8758},{},[8759,8793],{"type":29,"tag":514,"props":8760,"children":8761},{},[8762,8764,8770,8772,8778,8779,8785,8786,8792],{"type":56,"value":8763},"fix(deps): update shopware (",{"type":29,"tag":520,"props":8765,"children":8767},{"className":8766},[],[8768],{"type":56,"value":8769},"shopware/administration",{"type":56,"value":8771},", ",{"type":29,"tag":520,"props":8773,"children":8775},{"className":8774},[],[8776],{"type":56,"value":8777},"shopware/core",{"type":56,"value":8771},{"type":29,"tag":520,"props":8780,"children":8782},{"className":8781},[],[8783],{"type":56,"value":8784},"shopware/elasticsearch",{"type":56,"value":8771},{"type":29,"tag":520,"props":8787,"children":8789},{"className":8788},[],[8790],{"type":56,"value":8791},"shopware/storefront",{"type":56,"value":6071},{"type":29,"tag":514,"props":8794,"children":8795},{},[8796,8798,8803,8804,8809,8810,8815,8816,8821],{"type":56,"value":8797},"fix(deps): update shopware to v7 (major) (",{"type":29,"tag":520,"props":8799,"children":8801},{"className":8800},[],[8802],{"type":56,"value":8769},{"type":56,"value":8771},{"type":29,"tag":520,"props":8805,"children":8807},{"className":8806},[],[8808],{"type":56,"value":8777},{"type":56,"value":8771},{"type":29,"tag":520,"props":8811,"children":8813},{"className":8812},[],[8814],{"type":56,"value":8784},{"type":56,"value":8771},{"type":29,"tag":520,"props":8817,"children":8819},{"className":8818},[],[8820],{"type":56,"value":8791},{"type":56,"value":6071},{"type":29,"tag":4906,"props":8823,"children":8824},{},[8825],{"type":56,"value":4910},{"title":7,"searchDepth":271,"depth":271,"links":8827},[8828,8829],{"id":8316,"depth":271,"text":8319},{"id":8375,"depth":271,"text":8378},{"_path":441,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":442,"description":443,"author":170,"image":444,"releaseDate":445,"blogCategories":8831,"articleTags":8832,"tags":8833,"body":8834,"_type":275,"_id":451,"_source":277,"_file":452,"_stem":453,"_extension":280},[434,399],[448,401],[24,450],{"type":26,"children":8835,"toc":8901},[8836,8842,8863,8868,8873,8879,8891,8896],{"type":29,"tag":90,"props":8837,"children":8839},{"id":8838},"was-ist-das",[8840],{"type":56,"value":8841},"Was ist das?",{"type":29,"tag":48,"props":8843,"children":8844},{},[8845,8847,8853,8855,8861],{"type":56,"value":8846},"Dieser Wrapper dient als einfache und kosteneffiziente Brücke, die Aufrufe von der\n",{"type":29,"tag":491,"props":8848,"children":8850},{"href":8849},"https://docs.developer.amazonservices.com/en_US/dev_guide/index.html",[8851],{"type":56,"value":8852},"Amazon Marketplace Web Service (MWS)",{"type":56,"value":8854},"\nAPI zu ",{"type":29,"tag":491,"props":8856,"children":8858},{"href":8857},"https://developer-docs.amazon.com/sp-api",[8859],{"type":56,"value":8860},"Selling Partner (SP) API",{"type":56,"value":8862}," Aufrufen übersetzt. Er wurde speziell für Kunden mit veralteten Systemen und begrenztem\nBudget entwickelt, für die eine komplette Neuentwicklung der Amazon-Schnittstelle wirtschaftlich untragbar wäre. Der\nWrapper ermöglicht es diesen Kunden, ihr Geschäft auch nach der Abschaltung der MWS-Schnittstelle fortzuführen.",{"type":29,"tag":48,"props":8864,"children":8865},{},[8866],{"type":56,"value":8867},"Technisch basiert das Projekt auf einem Docker-Container, der als Webserver fungiert. Dieser nimmt MWS-API-Aufrufe\nentgegen, übersetzt sie in SP-API-Aufrufe und wandelt die Antworten der SP-API wieder in das Format der MWS-API um.",{"type":29,"tag":48,"props":8869,"children":8870},{},[8871],{"type":56,"value":8872},"Die Idee für diesen Wrapper entstand aus einem Proof of Concept, mit dem Ziel zu überprüfen, ob die Schnittstellen\nausreichend ähnlich sind, um eine direkte Übersetzung zu ermöglichen. Trotz der Befürchtung, dass der Teufel im Detail\nliegen könnte, erwiesen sich die Aufrufe als relativ einfach zu übersetzen. Es war lediglich notwendig, einige\nFeed-Namen anzupassen und gelegentlich aus einem API-Aufruf zwei zu machen, um alle notwendigen Informationen zu erhalten.\nInsgesamt gestaltete sich das Projekt überraschend problemlos.",{"type":29,"tag":90,"props":8874,"children":8876},{"id":8875},"download",[8877],{"type":56,"value":8878},"Download",{"type":29,"tag":48,"props":8880,"children":8881},{},[8882,8884,8890],{"type":56,"value":8883},"Interesse geweckt? Das Projekt wurde als Open-Source auf Github veröffentlicht:\n",{"type":29,"tag":491,"props":8885,"children":8887},{"href":8886},"https://github.com/bhelm/Amazon-MWS-SP-Wrapper",[8888],{"type":56,"value":8889},"Amazon-MWS-SP-API-Wrapper",{"type":56,"value":498},{"type":29,"tag":48,"props":8892,"children":8893},{},[8894],{"type":56,"value":8895},"Mit diesem Angebot streben wir danach, zur Open-Source-Kultur beizutragen und erhoffen uns konstruktives Feedback von\nanderen Entwicklern.",{"type":29,"tag":48,"props":8897,"children":8898},{},[8899],{"type":56,"value":8900},"Bei Bedarf an Unterstützung bei der Integration in Ihre Anwendung oder falls Anpassungen bzw. Erweiterungen am Wrapper\nnotwendig sind, stehen wir gerne zur Verfügung. Da der Wrapper bisher nur von einer begrenzten Anzahl an Kunden genutzt\nwird, deckt er momentan auch nur einen Teil der möglichen API-Aufrufe und Parameter ab.",{"title":7,"searchDepth":271,"depth":271,"links":8902},[8903,8904],{"id":8838,"depth":271,"text":8841},{"id":8875,"depth":271,"text":8878},{"_path":455,"_dir":391,"_draft":6,"_partial":6,"_locale":7,"title":456,"description":457,"author":170,"image":458,"releaseDate":459,"blogCategories":8906,"articleTags":8907,"tags":8908,"body":8909,"_type":275,"_id":464,"_source":277,"_file":465,"_stem":466,"_extension":280},[402,399],[462],[23],{"type":26,"children":8910,"toc":9431},[8911,8917,8922,8933,8966,8972,8977,8996,9005,9010,9015,9333,9338,9343,9348,9353,9365,9417,9421,9427],{"type":29,"tag":90,"props":8912,"children":8914},{"id":8913},"shopware-5-parallele-thumbnail-generierung-nach-dem-verschieben-eines-shopware-5-systems-auf-einen-anderen-server",[8915],{"type":56,"value":8916},"Shopware 5 - Parallele Thumbnail-Generierung nach dem Verschieben eines Shopware 5-Systems auf einen anderen Server",{"type":29,"tag":48,"props":8918,"children":8919},{},[8920],{"type":56,"value":8921},"Wir hatten einen Kunden mit 400k Bildern und 1600k Thumbnails, der von einem alten hdd-basierten Server auf einen neuen ssd-basierten umziehen musste. Das Problem war, dass der alte Server so langsam war, dass er bereits 2 Tage brauchte, um alle Bilder durchzuzählen, ganz zu schweigen vom Kopieren der Bilder.",{"type":29,"tag":48,"props":8923,"children":8924},{},[8925,8927],{"type":56,"value":8926},"Also haben wir beschlossen, nur die Originalbilder zu kopieren und die Thumbnails neu zu generieren. Um die Originalbilder zu kopieren, habe ich einen kleinen Konsolenbefehl erstellt, der alle Pfade der Originalbilder, die wir kopieren müssen, exportiert: ",{"type":29,"tag":491,"props":8928,"children":8930},{"href":8929},"https://gist.github.com/bhelm/2d30f0cebcf4a7d8ea41c532ec67cd62",[8931],{"type":56,"value":8932},"ExportImagesCommand.php",{"type":29,"tag":48,"props":8934,"children":8935},{},[8936,8938,8944,8945,8950,8952,8957,8959,8964],{"type":56,"value":8937},"Diese Dateiliste kann mit den Optionen ",{"type":29,"tag":8939,"props":8940,"children":8941},"em",{},[8942],{"type":56,"value":8943},"tar -T",{"type":56,"value":8390},{"type":29,"tag":8939,"props":8946,"children":8947},{},[8948],{"type":56,"value":8949},"rsync --files-from=",{"type":56,"value":8951}," verwendet werden, die diese Tools anweisen, nur die aufgelisteten Dateien zu verarbeiten. Für den anfänglichen Kopiervorgang ist ",{"type":29,"tag":8939,"props":8953,"children":8954},{},[8955],{"type":56,"value":8956},"tar",{"type":56,"value":8958}," sehr zu empfehlen, da es nur die aufgelisteten Dateien abholt, ohne irgendeine \"Berechnung\" wie bei ",{"type":29,"tag":8939,"props":8960,"children":8961},{},[8962],{"type":56,"value":8963},"rsync",{"type":56,"value":8965}," vorzunehmen.",{"type":29,"tag":90,"props":8967,"children":8969},{"id":8968},"sw5-standard-thumbnails-generieren-hätte-80-stunden-gedauert",[8970],{"type":56,"value":8971},"SW5 Standard-Thumbnails generieren hätte 80 Stunden gedauert",{"type":29,"tag":48,"props":8973,"children":8974},{},[8975],{"type":56,"value":8976},"... und würde nur die Hälfte eines Kerns nutzen.",{"type":29,"tag":48,"props":8978,"children":8979},{},[8980,8982,8987,8989,8994],{"type":56,"value":8981},"Ich war neugierig, ob ich diesen Generierungsprozess beschleunigen kann. Der Server selbst hat 32 Kerne zur Verfügung, also habe ich den Befehl ",{"type":29,"tag":8939,"props":8983,"children":8984},{},[8985],{"type":56,"value":8986},"generate thumbnail",{"type":56,"value":8988}," aus sw5 kopiert und ihn so modifiziert, dass er mit dem Parameter ",{"type":29,"tag":8939,"props":8990,"children":8991},{},[8992],{"type":56,"value":8993},"--batch",{"type":56,"value":8995}," in Batches arbeitet:",{"type":29,"tag":48,"props":8997,"children":8998},{},[8999],{"type":29,"tag":491,"props":9000,"children":9002},{"href":9001},"https://gist.github.com/bhelm/2015d3829d4a3f24f9760f6e4e1aac1f",[9003],{"type":56,"value":9004},"ParallelThumbnailGenerateCommand.php",{"type":29,"tag":48,"props":9006,"children":9007},{},[9008],{"type":56,"value":9009},"Damit es funktioniert, habe ich einfach den Shopware-Kern unter engine/Shopware/Models/Media/Repository.php geändert",{"type":29,"tag":48,"props":9011,"children":9012},{},[9013],{"type":56,"value":9014},"Ich habe einfach die getAlbumMediaQuery Funktion geändert in:",{"type":29,"tag":584,"props":9016,"children":9020},{"className":9017,"code":9018,"language":9019,"meta":7,"style":7},"language-cpp shiki shiki-themes github-dark github-dark monokai","public function getAlbumMediaQuery($albumId, $filter = null, $orderBy = null, $offset = null, $limit = null, $validTypes = null, $batch = null)\n{\n$builder = $this->getAlbumMediaQueryBuilder($albumId, $filter, $orderBy, $validTypes);\nif (is_numeric($batch)) {\n$builder->andWhere('MOD(media.id, 1000) = ?3');\n$builder->setParameter(3, $batch);\n}\n\n    if ($limit !== null) {\n        $builder->setFirstResult($offset)\n                ->setMaxResults($limit);\n    }\n\n    return $builder->getQuery();\n}\n","cpp",[9021],{"type":29,"tag":520,"props":9022,"children":9023},{"__ignoreMap":7},[9024,9097,9104,9142,9164,9192,9217,9224,9231,9253,9271,9289,9296,9303,9326],{"type":29,"tag":127,"props":9025,"children":9026},{"class":600,"line":601},[9027,9032,9037,9042,9047,9052,9056,9061,9065,9070,9074,9079,9083,9088,9092],{"type":29,"tag":127,"props":9028,"children":9029},{"style":605},[9030],{"type":56,"value":9031},"public function ",{"type":29,"tag":127,"props":9033,"children":9034},{"style":1683},[9035],{"type":56,"value":9036},"getAlbumMediaQuery",{"type":29,"tag":127,"props":9038,"children":9039},{"style":605},[9040],{"type":56,"value":9041},"($albumId, $filter ",{"type":29,"tag":127,"props":9043,"children":9044},{"style":3597},[9045],{"type":56,"value":9046},"=",{"type":29,"tag":127,"props":9048,"children":9049},{"style":605},[9050],{"type":56,"value":9051}," null, $orderBy ",{"type":29,"tag":127,"props":9053,"children":9054},{"style":3597},[9055],{"type":56,"value":9046},{"type":29,"tag":127,"props":9057,"children":9058},{"style":605},[9059],{"type":56,"value":9060}," null, $offset ",{"type":29,"tag":127,"props":9062,"children":9063},{"style":3597},[9064],{"type":56,"value":9046},{"type":29,"tag":127,"props":9066,"children":9067},{"style":605},[9068],{"type":56,"value":9069}," null, $limit ",{"type":29,"tag":127,"props":9071,"children":9072},{"style":3597},[9073],{"type":56,"value":9046},{"type":29,"tag":127,"props":9075,"children":9076},{"style":605},[9077],{"type":56,"value":9078}," null, $validTypes ",{"type":29,"tag":127,"props":9080,"children":9081},{"style":3597},[9082],{"type":56,"value":9046},{"type":29,"tag":127,"props":9084,"children":9085},{"style":605},[9086],{"type":56,"value":9087}," null, $batch ",{"type":29,"tag":127,"props":9089,"children":9090},{"style":3597},[9091],{"type":56,"value":9046},{"type":29,"tag":127,"props":9093,"children":9094},{"style":605},[9095],{"type":56,"value":9096}," null)\n",{"type":29,"tag":127,"props":9098,"children":9099},{"class":600,"line":271},[9100],{"type":29,"tag":127,"props":9101,"children":9102},{"style":605},[9103],{"type":56,"value":608},{"type":29,"tag":127,"props":9105,"children":9106},{"class":600,"line":636},[9107,9112,9116,9121,9127,9132,9137],{"type":29,"tag":127,"props":9108,"children":9109},{"style":605},[9110],{"type":56,"value":9111},"$builder ",{"type":29,"tag":127,"props":9113,"children":9114},{"style":3597},[9115],{"type":56,"value":9046},{"type":29,"tag":127,"props":9117,"children":9118},{"style":605},[9119],{"type":56,"value":9120}," $",{"type":29,"tag":127,"props":9122,"children":9124},{"style":9123},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#FD971F",[9125],{"type":56,"value":9126},"this",{"type":29,"tag":127,"props":9128,"children":9129},{"style":605},[9130],{"type":56,"value":9131},"->",{"type":29,"tag":127,"props":9133,"children":9134},{"style":1683},[9135],{"type":56,"value":9136},"getAlbumMediaQueryBuilder",{"type":29,"tag":127,"props":9138,"children":9139},{"style":605},[9140],{"type":56,"value":9141},"($albumId, $filter, $orderBy, $validTypes);\n",{"type":29,"tag":127,"props":9143,"children":9144},{"class":600,"line":658},[9145,9149,9154,9159],{"type":29,"tag":127,"props":9146,"children":9147},{"style":3597},[9148],{"type":56,"value":4406},{"type":29,"tag":127,"props":9150,"children":9151},{"style":605},[9152],{"type":56,"value":9153}," (",{"type":29,"tag":127,"props":9155,"children":9156},{"style":1683},[9157],{"type":56,"value":9158},"is_numeric",{"type":29,"tag":127,"props":9160,"children":9161},{"style":605},[9162],{"type":56,"value":9163},"($batch)) {\n",{"type":29,"tag":127,"props":9165,"children":9166},{"class":600,"line":680},[9167,9172,9177,9182,9187],{"type":29,"tag":127,"props":9168,"children":9169},{"style":605},[9170],{"type":56,"value":9171},"$builder->",{"type":29,"tag":127,"props":9173,"children":9174},{"style":1683},[9175],{"type":56,"value":9176},"andWhere",{"type":29,"tag":127,"props":9178,"children":9179},{"style":605},[9180],{"type":56,"value":9181},"(",{"type":29,"tag":127,"props":9183,"children":9184},{"style":1688},[9185],{"type":56,"value":9186},"'MOD(media.id, 1000) = ?3'",{"type":29,"tag":127,"props":9188,"children":9189},{"style":605},[9190],{"type":56,"value":9191},");\n",{"type":29,"tag":127,"props":9193,"children":9194},{"class":600,"line":694},[9195,9199,9204,9208,9212],{"type":29,"tag":127,"props":9196,"children":9197},{"style":605},[9198],{"type":56,"value":9171},{"type":29,"tag":127,"props":9200,"children":9201},{"style":1683},[9202],{"type":56,"value":9203},"setParameter",{"type":29,"tag":127,"props":9205,"children":9206},{"style":605},[9207],{"type":56,"value":9181},{"type":29,"tag":127,"props":9209,"children":9210},{"style":943},[9211],{"type":56,"value":69},{"type":29,"tag":127,"props":9213,"children":9214},{"style":605},[9215],{"type":56,"value":9216},", $batch);\n",{"type":29,"tag":127,"props":9218,"children":9219},{"class":600,"line":716},[9220],{"type":29,"tag":127,"props":9221,"children":9222},{"style":605},[9223],{"type":56,"value":1663},{"type":29,"tag":127,"props":9225,"children":9226},{"class":600,"line":738},[9227],{"type":29,"tag":127,"props":9228,"children":9229},{"emptyLinePlaceholder":1857},[9230],{"type":56,"value":1860},{"type":29,"tag":127,"props":9232,"children":9233},{"class":600,"line":760},[9234,9238,9243,9248],{"type":29,"tag":127,"props":9235,"children":9236},{"style":3597},[9237],{"type":56,"value":4185},{"type":29,"tag":127,"props":9239,"children":9240},{"style":605},[9241],{"type":56,"value":9242}," ($limit ",{"type":29,"tag":127,"props":9244,"children":9245},{"style":3597},[9246],{"type":56,"value":9247},"!==",{"type":29,"tag":127,"props":9249,"children":9250},{"style":605},[9251],{"type":56,"value":9252}," null) {\n",{"type":29,"tag":127,"props":9254,"children":9255},{"class":600,"line":782},[9256,9261,9266],{"type":29,"tag":127,"props":9257,"children":9258},{"style":605},[9259],{"type":56,"value":9260},"        $builder->",{"type":29,"tag":127,"props":9262,"children":9263},{"style":1683},[9264],{"type":56,"value":9265},"setFirstResult",{"type":29,"tag":127,"props":9267,"children":9268},{"style":605},[9269],{"type":56,"value":9270},"($offset)\n",{"type":29,"tag":127,"props":9272,"children":9273},{"class":600,"line":803},[9274,9279,9284],{"type":29,"tag":127,"props":9275,"children":9276},{"style":3597},[9277],{"type":56,"value":9278},"                ->",{"type":29,"tag":127,"props":9280,"children":9281},{"style":1683},[9282],{"type":56,"value":9283},"setMaxResults",{"type":29,"tag":127,"props":9285,"children":9286},{"style":605},[9287],{"type":56,"value":9288},"($limit);\n",{"type":29,"tag":127,"props":9290,"children":9291},{"class":600,"line":118},[9292],{"type":29,"tag":127,"props":9293,"children":9294},{"style":605},[9295],{"type":56,"value":1206},{"type":29,"tag":127,"props":9297,"children":9298},{"class":600,"line":841},[9299],{"type":29,"tag":127,"props":9300,"children":9301},{"emptyLinePlaceholder":1857},[9302],{"type":56,"value":1860},{"type":29,"tag":127,"props":9304,"children":9305},{"class":600,"line":850},[9306,9311,9316,9321],{"type":29,"tag":127,"props":9307,"children":9308},{"style":3597},[9309],{"type":56,"value":9310},"    return",{"type":29,"tag":127,"props":9312,"children":9313},{"style":605},[9314],{"type":56,"value":9315}," $builder->",{"type":29,"tag":127,"props":9317,"children":9318},{"style":1683},[9319],{"type":56,"value":9320},"getQuery",{"type":29,"tag":127,"props":9322,"children":9323},{"style":605},[9324],{"type":56,"value":9325},"();\n",{"type":29,"tag":127,"props":9327,"children":9328},{"class":600,"line":864},[9329],{"type":29,"tag":127,"props":9330,"children":9331},{"style":605},[9332],{"type":56,"value":1663},{"type":29,"tag":48,"props":9334,"children":9335},{},[9336],{"type":56,"value":9337},"Es ist ein optionaler Parameter und wird nichts kaputt machen. Wenn man ein Shopware-Update durchführt, würde dies verschwinden, aber da ich auf der Suche nach einer einmaligen Aufgabe war, um die Dinge zu beschleunigen, habe ich es einfach im Kern geändert, anstatt eine langfristige Lösung zu finden.",{"type":29,"tag":48,"props":9339,"children":9340},{},[9341],{"type":56,"value":9342},"Diese Funktion berechnet ein Modulo von 1000 auf der Medien-ID und vergleicht es mit der Chargen-ID. Wir haben also im Grunde 1000 Stapel zu verarbeiten, bis alle Arbeit erledigt ist.",{"type":29,"tag":48,"props":9344,"children":9345},{},[9346],{"type":56,"value":9347},"Jetzt müssen wir nur noch alle 1000 Stapel parallel starten. Dazu habe ich das sehr hilfreiche Tool parallel verwendet, das unter Linux verfügbar ist:",{"type":29,"tag":48,"props":9349,"children":9350},{},[9351],{"type":56,"value":9352},"Es startet 64 Batches parallel und setzt seine Arbeit fort, bis alle 1000 Batches fertig sind.",{"type":29,"tag":48,"props":9354,"children":9355},{},[9356,9358,9363],{"type":56,"value":9357},"Und so sieht es bei ",{"type":29,"tag":8939,"props":9359,"children":9360},{},[9361],{"type":56,"value":9362},"htop",{"type":56,"value":9364}," aus:",{"type":29,"tag":584,"props":9366,"children":9370},{"className":9367,"code":9368,"language":9369,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark github-dark monokai","parallel -j 64 ./bin/console my:image:generate:thumbnails --batch ::: {0..999}\n","bash",[9371],{"type":29,"tag":520,"props":9372,"children":9373},{"__ignoreMap":7},[9374],{"type":29,"tag":127,"props":9375,"children":9376},{"class":600,"line":601},[9377,9382,9387,9392,9397,9402,9407,9412],{"type":29,"tag":127,"props":9378,"children":9379},{"style":1683},[9380],{"type":56,"value":9381},"parallel",{"type":29,"tag":127,"props":9383,"children":9384},{"style":943},[9385],{"type":56,"value":9386}," -j",{"type":29,"tag":127,"props":9388,"children":9389},{"style":943},[9390],{"type":56,"value":9391}," 64",{"type":29,"tag":127,"props":9393,"children":9394},{"style":1688},[9395],{"type":56,"value":9396}," ./bin/console",{"type":29,"tag":127,"props":9398,"children":9399},{"style":1688},[9400],{"type":56,"value":9401}," my:image:generate:thumbnails",{"type":29,"tag":127,"props":9403,"children":9404},{"style":943},[9405],{"type":56,"value":9406}," --batch",{"type":29,"tag":127,"props":9408,"children":9409},{"style":1688},[9410],{"type":56,"value":9411}," :::",{"type":29,"tag":127,"props":9413,"children":9414},{"style":1688},[9415],{"type":56,"value":9416}," {0..999}\n",{"type":29,"tag":66,"props":9418,"children":9420},{"alt":9362,"aspect-ratio":191,"height":476,"object-fit":72,"src":9419},"/blog/htop.png",[],{"type":29,"tag":90,"props":9422,"children":9424},{"id":9423},"schließlich-ist-die-ganze-arbeit-jetzt-in-35-stunden-statt-in-80-stunden-erledigt",[9425],{"type":56,"value":9426},"Schließlich ist die ganze Arbeit jetzt in 3,5 Stunden statt in 80 Stunden erledigt.",{"type":29,"tag":4906,"props":9428,"children":9429},{},[9430],{"type":56,"value":4910},{"title":7,"searchDepth":271,"depth":271,"links":9432},[9433,9434,9435],{"id":8913,"depth":271,"text":8916},{"id":8968,"depth":271,"text":8971},{"id":9423,"depth":271,"text":9426},{"_path":9437,"_dir":283,"_draft":6,"_partial":6,"_locale":7,"slug":394,"teams":9438,"primaryTeam":286,"firstName":9440,"lastName":9441,"prefixTitle":7,"suffixTitle":9442,"education":9443,"role":9448,"workingSince":9450,"inTheCompanySince":9451,"techSkills":9452,"skills":9477,"projects":9490,"contactDetails":9499,"_image":9502,"image":9503,"_id":9504,"_type":384,"title":9505,"_source":283,"_file":9506,"_stem":9507,"_extension":384},"/employees/robert-juzak",[9439,286],"appDev","Robert","Juzak","B.Sc.",[9444],[9445,9446,9447],"Bachelor of Computer Science","Technische Universität Breslau","2016",[300,9449,299,302],"fullstackDeveloper","2015","2018",[9453,9454,9456,9459,9462,9465,9467,9470,9471,9472,9473,9474,9475],{"name":307,"level":308,"icon":309},{"name":9455,"level":308},"GitLab",{"name":9457,"level":308,"icon":9458},"Kubernetes","/images/Kubernetes.svg",{"name":9460,"level":308,"icon":9461},"PHPUnit","/images/PHP-Unit.svg",{"name":9463,"level":308,"icon":9464},"Portainer","/images/Portainer.svg",{"name":9466,"level":308},"Sentry",{"name":9468,"level":308,"icon":9469},"Sonarqube","/images/Sonarqube.svg",{"name":311,"level":308,"icon":312},{"name":340,"level":334,"icon":341},{"name":343,"level":334,"icon":344},{"name":324,"level":334},{"name":330,"level":334,"icon":331},{"name":9476,"level":334,"icon":350},"VueJS",[9478,9479,9480,9481,9483,9485,9487,9488,9489],{"name":3932,"level":308},{"name":363,"level":308},{"name":286,"level":308},{"name":9482,"level":308},"testDrivenBugfix",{"name":9484,"level":308},"testDrivenDevelopment",{"name":9486,"level":334},"accessibility",{"name":357,"level":334},{"name":359,"level":334},{"name":361,"level":334},[9491,9495,9497],{"project":369,"position":9492},[9493,9494],"Dev-Ops","Frontend Developer",{"project":9496,"position":9494},"Huawei-Calibration-aaS",{"project":9498,"position":9494},"Huawei-Inspect-3D",{"eMail":9500,"phone":9501,"visibility":380},"robert.juzak@helmundwalter.de","+49 351 799 035 26","images/employees/Portraits/robert_juzak.webp","images/employees/Portraits/RobertJuzak_MS.webp","employees:employees:6.robert-juzak.json","Robert Juzak","employees/6.robert-juzak.json","employees/6.robert-juzak",{"_path":282,"_dir":283,"_draft":6,"_partial":6,"_locale":7,"slug":170,"teams":9509,"primaryTeam":286,"firstName":287,"lastName":288,"prefixTitle":7,"suffixTitle":7,"education":9510,"executiveRole":294,"role":9512,"workingSince":303,"inTheCompanySince":304,"techSkills":9513,"skills":9530,"projects":9537,"contactDetails":9543,"_image":381,"image":382,"_id":383,"_type":384,"title":385,"_source":283,"_file":386,"_stem":387,"_extension":384},[285,286],[9511],[291,292,293],[296,297,286,298,299,300,301,302],[9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529],{"name":307,"level":308,"icon":309},{"name":311,"level":308,"icon":312},{"name":314,"level":308},{"name":316,"level":308,"icon":317},{"name":319,"level":308},{"name":321,"level":308,"icon":322},{"name":324,"level":308},{"name":326,"level":308},{"name":328,"level":308},{"name":330,"level":308,"icon":331},{"name":333,"level":334,"icon":335},{"name":337,"level":334,"icon":338},{"name":340,"level":334,"icon":341},{"name":343,"level":334,"icon":344},{"name":346,"level":334,"icon":347},{"name":349,"level":334,"icon":350},[9531,9532,9533,9534,9535,9536],{"name":353,"level":308},{"name":355,"level":308},{"name":357,"level":308},{"name":359,"level":308},{"name":361,"level":308},{"name":363,"level":334},[9538,9539,9540,9541,9542],{"project":366,"position":367},{"project":369,"position":367},{"project":371,"position":367},{"project":373,"position":374},{"project":376,"position":367},{"eMail":378,"phone":379,"visibility":380},[9545,9558],{"_path":9546,"_dir":9547,"_draft":6,"_partial":1857,"_locale":7,"name":9548,"slug":9547,"text":9549,"hoverText":9550,"image":9551,"customer":9552,"tags":9553,"_id":9554,"_type":4040,"title":9555,"_source":277,"_file":9556,"_stem":9557,"_extension":4040},"/portfolio/bitburger/_teaser","bitburger","Bitburger B2B- und Marken-Shops","Launch des B2B Shops und Migration der Markenshops auf eine neue Plattform","Die Bitburger Braugruppe modernisierte ihr digitales Angebot. Nach dem Start des B2B Shops wurden fünf Markenshops auf eine gemeinsame Plattform migriert und weiterentwickelt.","/images/portfolio/bitburger/Bitburger_HuW_Glaeser.jpg","Bitburger Braugruppe",[23,24],"common:portfolio:900.bitburger:_teaser.yaml","Teaser","portfolio/900.bitburger/_teaser.yaml","portfolio/900.bitburger/_teaser",{"_path":9559,"_dir":9560,"_draft":6,"_partial":1857,"_locale":7,"name":9561,"slug":9560,"text":9562,"hoverText":9563,"image":9564,"customer":9561,"tags":9565,"_id":9566,"_type":4040,"title":9555,"_source":277,"_file":9567,"_stem":9568,"_extension":4040},"/portfolio/werner-consulting/_teaser","werner-consulting","Werner Consulting","Individualsoftware für ein vertrauensvolles Business","Maßgeschneiderte Softwarelösungen als Desktopanwendungen und Entwicklung von PlugIns für Softwareframeworks für komplexe Consulting-Lösungen, E-Commerce-Plattformen und Warenwirtschaftssysteme.","/images/portfolio/werner_consulting/consulting_portfolio.jpg",[450,24],"common:portfolio:9030.werner-consulting:_teaser.yaml","portfolio/9030.werner-consulting/_teaser.yaml","portfolio/9030.werner-consulting/_teaser",1782284049673]