[{"data":1,"prerenderedAt":9388},["ShallowReactive",2],{"portfolio-de-bitburger":3,"related-refs-shopware_e-commerce-bitburger-de":129,"related-blog-shopware_e-commerce--de":157,"content-query-K9Z9yOwvGV":236,"content-query-G9vendBux1":4694,"content-query-hQiL1tjAhV":5777,"content-query-UKDfBsQuK3":8064,"content-query-YkijYFcsFd":8601,"content-query-ChH556dtBR":8676,"content-query-KtO3wftRle":9210,"content-query-1PFeYVQSzn":9307},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":7,"subtitle":9,"heroImage":10,"areaOfApplication":9,"industry":11,"technologies":12,"durationDescription":15,"period":16,"teamDescription":19,"budget":20,"tags":21,"body":24,"_type":123,"_id":124,"_source":125,"_file":126,"_stem":127,"_extension":128},"/portfolio/bitburger","portfolio",false,"","Bitburger","B2B-Shop","/images/portfolio/example.png","Getränke und Gastronomie",[13,14],"vuejs","threejs","bis heute Erweitern und Betreuen wir die Markenshops",{"from":17,"to":18},"2023-12","2024-01","1 UI/UX Designer, 3 Frontend-Entwickler, 1 Projektleiter, DevOps-Team","sechsstellig",[22,23],"shopware","e-commerce",{"type":25,"children":26,"toc":119},"root",[27,64],{"type":28,"tag":29,"props":30,"children":33},"element","section-component",{"className":31},[32],"no-pattern",[34,58],{"type":28,"tag":35,"props":36,"children":45},"v-card",{"className":37,"style":44},[38,39,40,41,42,43],"description__card","text-justify","px-4","px-md-18","py-4","py-md-14","background-color: rgba(var(--v-theme-primary), 0.1)",[46,53],{"type":28,"tag":47,"props":48,"children":49},"p",{},[50],{"type":51,"value":52},"text","Bitburger, eine führende deutsche Brauerei, hat sich im Laufe der Jahre als eine der beliebtesten Biermarken sowohl in\nDeutschland als auch international einen Namen gemacht.",{"type":28,"tag":47,"props":54,"children":55},{},[56],{"type":51,"value":57},"Im Rahmen dieses Projektes wurde der B2B-Shop \"DasGastroPortal\" für den Vertrieb von Werbemitteln der Bitburger Brauerei\nvon uns entwickelt. Als besondere Eigenschaft hebt sich die Integration des Single Sign-Ons hervor. Single Sign-On ist\neine Authentifizierungsmethode, die es Benutzern ermöglicht, sich einmalig anzumelden, um Zugriff auf das gesamte System\nzu erhalten. Dies trägt sowohl zur gesteigerten Effizienz als auch zur Verbesserung der User Experience bei.",{"type":28,"tag":59,"props":60,"children":63},"v-divider",{"className":61},[62],"hw-my",[],{"type":28,"tag":29,"props":65,"children":66},{},[67,80,115],{"type":28,"tag":68,"props":69,"children":77},"h2",{"className":70,"id":76},[71,72,73,74,75],"justify-center","mt-12","mb-4","mb-md-8","pt-0","unsere-leistungen",[78],{"type":51,"value":79}," Unsere Leistungen ",{"type":28,"tag":35,"props":81,"children":87},{"className":82},[83,84,40,41,42,43,85,86],"background","transparent-4","mb-8","mb-md-12",[88,95,100,104,110],{"type":28,"tag":89,"props":90,"children":92},"h3",{"id":91},"ui-design",[93],{"type":51,"value":94},"UI Design",{"type":28,"tag":47,"props":96,"children":97},{},[98],{"type":51,"value":99},"Design-Entwicklung einer Oberfläche mit 3D-Visualisierung",{"type":28,"tag":101,"props":102,"children":103},"br",{},[],{"type":28,"tag":89,"props":105,"children":107},{"id":106},"entwicklung-frontend",[108],{"type":51,"value":109},"Entwicklung Frontend",{"type":28,"tag":47,"props":111,"children":112},{},[113],{"type":51,"value":114},"Umsetzung des Designs als Nuxt/Vue-Projekt",{"type":28,"tag":59,"props":116,"children":118},{"className":117},[62],[],{"title":7,"searchDepth":120,"depth":120,"links":121},2,[122],{"id":76,"depth":120,"text":79},"markdown","common:portfolio:900.bitburger:index.md","common","portfolio/900.bitburger/index.md","portfolio/900.bitburger/index","md",[130,145],{"_path":131,"_dir":132,"_draft":6,"_partial":133,"_locale":7,"name":134,"slug":132,"text":135,"hoverText":136,"image":137,"customer":138,"tags":139,"_id":140,"_type":141,"title":142,"_source":125,"_file":143,"_stem":144,"_extension":141},"/portfolio/purize/_teaser","purize",true,"Purize Filters","E-Commerce für hochwertige Aktivkohlefilter","Wir unterstützen PURIZE® Filters mit einem vollständigen E-Commerce-Service inklusive Fulfillment-Lösung und Anbindung an Versanddienstleister. Unsere Expertise im Online-Handel ermöglicht dem Hersteller qualitativ hochwertiger Aktivkohlefilter \"Made in Germany\" eine reibungslose Abwicklung ihrer Bestellprozesse.","/images/portfolio/barcode-machine-verdandijpg.jpg","PURIZE® Filters",[22,23],"common:portfolio:9000.purize:_teaser.yaml","yaml","Teaser","portfolio/9000.purize/_teaser.yaml","portfolio/9000.purize/_teaser",{"_path":146,"_dir":147,"_draft":6,"_partial":133,"_locale":7,"name":148,"slug":147,"text":149,"hoverText":150,"image":151,"customer":148,"tags":152,"_id":154,"_type":141,"title":142,"_source":125,"_file":155,"_stem":156,"_extension":141},"/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",[153,23],"backend","common:portfolio:9030.werner-consulting:_teaser.yaml","portfolio/9030.werner-consulting/_teaser.yaml","portfolio/9030.werner-consulting/_teaser",[158,177,187,197,209,223],{"_path":159,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":161,"description":162,"author":163,"image":164,"releaseDate":165,"blogCategories":166,"articleTags":169,"tags":172,"_type":123,"_id":174,"_source":125,"_file":175,"_stem":176,"_extension":128},"/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",[167,168],"Was uns bewegt","DevOps",[168,170,171],"Open Source","Shopware",[22,173],"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":178,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":179,"description":180,"author":163,"image":164,"releaseDate":165,"blogCategories":181,"articleTags":182,"tags":183,"_type":123,"_id":184,"_source":125,"_file":185,"_stem":186,"_extension":128},"/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",[167,168],[168,170,171],[22,173],"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":188,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":189,"description":190,"author":163,"image":164,"releaseDate":165,"blogCategories":191,"articleTags":192,"tags":193,"_type":123,"_id":194,"_source":125,"_file":195,"_stem":196,"_extension":128},"/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",[167,168],[168,170,171],[22,173],"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":198,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":199,"description":200,"author":163,"image":164,"releaseDate":201,"blogCategories":202,"articleTags":204,"tags":205,"_type":123,"_id":206,"_source":125,"_file":207,"_stem":208,"_extension":128},"/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",[203,168],"Das bewegt uns",[168,170],[22,173],"common:blog:16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot",{"_path":210,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":211,"description":212,"author":213,"image":214,"releaseDate":215,"blogCategories":216,"articleTags":217,"tags":219,"_type":123,"_id":220,"_source":125,"_file":221,"_stem":222,"_extension":128},"/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.","bernd-helm","/blog/thumbnails/AWS.svg","2024-02-21",[203,168],[218,170],"Amazon",[23,153],"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":224,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":225,"description":226,"author":213,"image":227,"releaseDate":228,"blogCategories":229,"articleTags":230,"tags":232,"_type":123,"_id":233,"_source":125,"_file":234,"_stem":235,"_extension":128},"/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",[171,168],[231],"VPN",[22],"common:blog:9.shopware-5-parallele-miniaturbildererstellung.md","blog/9.shopware-5-parallele-miniaturbildererstellung.md","blog/9.shopware-5-parallele-miniaturbildererstellung",{"_path":159,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":161,"description":162,"author":163,"image":164,"releaseDate":165,"blogCategories":237,"articleTags":238,"tags":239,"body":240,"_type":123,"_id":174,"_source":125,"_file":175,"_stem":176,"_extension":128},[167,168],[168,170,171],[22,173],{"type":25,"children":241,"toc":4682},[242,250,255,269,274,279,318,323,329,334,340,353,1438,1443,1471,1481,1484,1497,1520,1656,1669,1674,1680,1692,1713,2115,2156,2161,2182,2324,2336,2342,2354,2359,2371,2406,2411,3338,3343,3442,3447,3506,3517,3522,3543,3678,3688,3694,3715,3718,3722,3728,3734,3739,3757,3807,3966,3972,3977,3988,4001,4224,4629,4634,4676],{"type":28,"tag":243,"props":244,"children":249},"img",{"alt":7,"aspect-ratio":245,"height":246,"object-fit":247,"src":248},"1.78",300,"fill","/blog/shopware-plugin-release.png",[],{"type":28,"tag":47,"props":251,"children":252},{},[253],{"type":51,"value":254},"Es gibt viele Möglichkeiten, Shopware 6 Plugins zu installieren. Sie können sie direkt im Admin-Panel herunterladen oder mit Composer installieren.",{"type":28,"tag":47,"props":256,"children":257},{},[258,260,267],{"type":51,"value":259},"Einen detaillierten Vergleich finden Sie in der ",{"type":28,"tag":261,"props":262,"children":264},"a",{"href":263},"https://developer.shopware.com/docs/guides/plugins/plugins/",[265],{"type":51,"value":266},"offiziellen Dokumentation",{"type":51,"value":268},".",{"type":28,"tag":47,"props":270,"children":271},{},[272],{"type":51,"value":273},"Als Entwickler und Betreuer von Themes, Anpassungen, Drittanbieter-APIs usw. konzentriere ich mich auf statische Plugins.",{"type":28,"tag":47,"props":275,"children":276},{},[277],{"type":51,"value":278},"Der Workflow ist einfach:",{"type":28,"tag":280,"props":281,"children":282},"ol",{},[283,296,307],{"type":28,"tag":284,"props":285,"children":286},"li",{},[287,289],{"type":51,"value":288},"Erstelle ein Plugin mit ",{"type":28,"tag":290,"props":291,"children":293},"code",{"className":292},[],[294],{"type":51,"value":295},"bin/console plugin:create --static",{"type":28,"tag":284,"props":297,"children":298},{},[299,301],{"type":51,"value":300},"Installiere es mit ",{"type":28,"tag":261,"props":302,"children":304},{"href":303},"https://developer.shopware.com/docs/guides/plugins/plugins/#static-plugins",[305],{"type":51,"value":306},"Composer",{"type":28,"tag":284,"props":308,"children":309},{},[310,312],{"type":51,"value":311},"Baue das Projekt mit ",{"type":28,"tag":261,"props":313,"children":315},{"href":314},"https://developer.shopware.com/docs/products/cli/project-commands/build.html#example-docker-image",[316],{"type":51,"value":317},"shopware-cli",{"type":28,"tag":47,"props":319,"children":320},{},[321],{"type":51,"value":322},"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":28,"tag":68,"props":324,"children":326},{"id":325},"das-plugin-extrahieren",[327],{"type":51,"value":328},"Das Plugin extrahieren",{"type":28,"tag":47,"props":330,"children":331},{},[332],{"type":51,"value":333},"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":28,"tag":89,"props":335,"children":337},{"id":336},"download-mit-git",[338],{"type":51,"value":339},"Download mit Git",{"type":28,"tag":47,"props":341,"children":342},{},[343,345,351],{"type":51,"value":344},"Wir müssen ",{"type":28,"tag":290,"props":346,"children":348},{"className":347},[],[349],{"type":51,"value":350},"composer",{"type":51,"value":352}," nur mitteilen, wo unser Plugin zu finden ist.",{"type":28,"tag":354,"props":355,"children":365},"pre",{"className":356,"code":357,"filename":358,"highlights":359,"language":364,"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",[360,361,362,363],36,37,38,39,"json",[366],{"type":28,"tag":290,"props":367,"children":368},{"__ignoreMap":7},[369,381,406,428,450,464,486,508,530,552,573,594,612,621,635,644,666,688,701,720,729,738,746,766,787,799,815,823,831,839,859,880,892,908,916,924,933,954,971,980,989,1002,1015,1044,1052,1060,1082,1095,1108,1129,1146,1154,1175,1192,1200,1213,1226,1244,1252,1265,1274,1283,1296,1304,1313,1321,1334,1347,1368,1381,1394,1403,1412,1420,1429],{"type":28,"tag":370,"props":371,"children":374},"span",{"class":372,"line":373},"line",1,[375],{"type":28,"tag":370,"props":376,"children":378},{"style":377},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[379],{"type":51,"value":380},"{\n",{"type":28,"tag":370,"props":382,"children":383},{"class":372,"line":120},[384,390,395,401],{"type":28,"tag":370,"props":385,"children":387},{"style":386},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[388],{"type":51,"value":389},"  \"name\"",{"type":28,"tag":370,"props":391,"children":392},{"style":377},[393],{"type":51,"value":394},": ",{"type":28,"tag":370,"props":396,"children":398},{"style":397},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[399],{"type":51,"value":400},"\"shopware/production\"",{"type":28,"tag":370,"props":402,"children":403},{"style":377},[404],{"type":51,"value":405},",\n",{"type":28,"tag":370,"props":407,"children":409},{"class":372,"line":408},3,[410,415,419,424],{"type":28,"tag":370,"props":411,"children":412},{"style":386},[413],{"type":51,"value":414},"  \"license\"",{"type":28,"tag":370,"props":416,"children":417},{"style":377},[418],{"type":51,"value":394},{"type":28,"tag":370,"props":420,"children":421},{"style":397},[422],{"type":51,"value":423},"\"MIT\"",{"type":28,"tag":370,"props":425,"children":426},{"style":377},[427],{"type":51,"value":405},{"type":28,"tag":370,"props":429,"children":431},{"class":372,"line":430},4,[432,437,441,446],{"type":28,"tag":370,"props":433,"children":434},{"style":386},[435],{"type":51,"value":436},"  \"type\"",{"type":28,"tag":370,"props":438,"children":439},{"style":377},[440],{"type":51,"value":394},{"type":28,"tag":370,"props":442,"children":443},{"style":397},[444],{"type":51,"value":445},"\"project\"",{"type":28,"tag":370,"props":447,"children":448},{"style":377},[449],{"type":51,"value":405},{"type":28,"tag":370,"props":451,"children":453},{"class":372,"line":452},5,[454,459],{"type":28,"tag":370,"props":455,"children":456},{"style":386},[457],{"type":51,"value":458},"  \"require\"",{"type":28,"tag":370,"props":460,"children":461},{"style":377},[462],{"type":51,"value":463},": {\n",{"type":28,"tag":370,"props":465,"children":467},{"class":372,"line":466},6,[468,473,477,482],{"type":28,"tag":370,"props":469,"children":470},{"style":386},[471],{"type":51,"value":472},"    \"composer-runtime-api\"",{"type":28,"tag":370,"props":474,"children":475},{"style":377},[476],{"type":51,"value":394},{"type":28,"tag":370,"props":478,"children":479},{"style":397},[480],{"type":51,"value":481},"\"^2.0\"",{"type":28,"tag":370,"props":483,"children":484},{"style":377},[485],{"type":51,"value":405},{"type":28,"tag":370,"props":487,"children":489},{"class":372,"line":488},7,[490,495,499,504],{"type":28,"tag":370,"props":491,"children":492},{"style":386},[493],{"type":51,"value":494},"    \"acme/sample-plugin\"",{"type":28,"tag":370,"props":496,"children":497},{"style":377},[498],{"type":51,"value":394},{"type":28,"tag":370,"props":500,"children":501},{"style":397},[502],{"type":51,"value":503},"\"^1.0\"",{"type":28,"tag":370,"props":505,"children":506},{"style":377},[507],{"type":51,"value":405},{"type":28,"tag":370,"props":509,"children":511},{"class":372,"line":510},8,[512,517,521,526],{"type":28,"tag":370,"props":513,"children":514},{"style":386},[515],{"type":51,"value":516},"    \"shopware/administration\"",{"type":28,"tag":370,"props":518,"children":519},{"style":377},[520],{"type":51,"value":394},{"type":28,"tag":370,"props":522,"children":523},{"style":397},[524],{"type":51,"value":525},"\"*\"",{"type":28,"tag":370,"props":527,"children":528},{"style":377},[529],{"type":51,"value":405},{"type":28,"tag":370,"props":531,"children":533},{"class":372,"line":532},9,[534,539,543,548],{"type":28,"tag":370,"props":535,"children":536},{"style":386},[537],{"type":51,"value":538},"    \"shopware/core\"",{"type":28,"tag":370,"props":540,"children":541},{"style":377},[542],{"type":51,"value":394},{"type":28,"tag":370,"props":544,"children":545},{"style":397},[546],{"type":51,"value":547},"\"6.6.10.2\"",{"type":28,"tag":370,"props":549,"children":550},{"style":377},[551],{"type":51,"value":405},{"type":28,"tag":370,"props":553,"children":555},{"class":372,"line":554},10,[556,561,565,569],{"type":28,"tag":370,"props":557,"children":558},{"style":386},[559],{"type":51,"value":560},"    \"shopware/elasticsearch\"",{"type":28,"tag":370,"props":562,"children":563},{"style":377},[564],{"type":51,"value":394},{"type":28,"tag":370,"props":566,"children":567},{"style":397},[568],{"type":51,"value":525},{"type":28,"tag":370,"props":570,"children":571},{"style":377},[572],{"type":51,"value":405},{"type":28,"tag":370,"props":574,"children":576},{"class":372,"line":575},11,[577,582,586,590],{"type":28,"tag":370,"props":578,"children":579},{"style":386},[580],{"type":51,"value":581},"    \"shopware/storefront\"",{"type":28,"tag":370,"props":583,"children":584},{"style":377},[585],{"type":51,"value":394},{"type":28,"tag":370,"props":587,"children":588},{"style":397},[589],{"type":51,"value":525},{"type":28,"tag":370,"props":591,"children":592},{"style":377},[593],{"type":51,"value":405},{"type":28,"tag":370,"props":595,"children":597},{"class":372,"line":596},12,[598,603,607],{"type":28,"tag":370,"props":599,"children":600},{"style":386},[601],{"type":51,"value":602},"    \"symfony/flex\"",{"type":28,"tag":370,"props":604,"children":605},{"style":377},[606],{"type":51,"value":394},{"type":28,"tag":370,"props":608,"children":609},{"style":397},[610],{"type":51,"value":611},"\"~2\"\n",{"type":28,"tag":370,"props":613,"children":615},{"class":372,"line":614},13,[616],{"type":28,"tag":370,"props":617,"children":618},{"style":377},[619],{"type":51,"value":620},"  },\n",{"type":28,"tag":370,"props":622,"children":624},{"class":372,"line":623},14,[625,630],{"type":28,"tag":370,"props":626,"children":627},{"style":386},[628],{"type":51,"value":629},"  \"repositories\"",{"type":28,"tag":370,"props":631,"children":632},{"style":377},[633],{"type":51,"value":634},": [\n",{"type":28,"tag":370,"props":636,"children":638},{"class":372,"line":637},15,[639],{"type":28,"tag":370,"props":640,"children":641},{"style":377},[642],{"type":51,"value":643},"    {\n",{"type":28,"tag":370,"props":645,"children":647},{"class":372,"line":646},16,[648,653,657,662],{"type":28,"tag":370,"props":649,"children":650},{"style":386},[651],{"type":51,"value":652},"      \"type\"",{"type":28,"tag":370,"props":654,"children":655},{"style":377},[656],{"type":51,"value":394},{"type":28,"tag":370,"props":658,"children":659},{"style":397},[660],{"type":51,"value":661},"\"path\"",{"type":28,"tag":370,"props":663,"children":664},{"style":377},[665],{"type":51,"value":405},{"type":28,"tag":370,"props":667,"children":669},{"class":372,"line":668},17,[670,675,679,684],{"type":28,"tag":370,"props":671,"children":672},{"style":386},[673],{"type":51,"value":674},"      \"url\"",{"type":28,"tag":370,"props":676,"children":677},{"style":377},[678],{"type":51,"value":394},{"type":28,"tag":370,"props":680,"children":681},{"style":397},[682],{"type":51,"value":683},"\"custom/plugins/*\"",{"type":28,"tag":370,"props":685,"children":686},{"style":377},[687],{"type":51,"value":405},{"type":28,"tag":370,"props":689,"children":691},{"class":372,"line":690},18,[692,697],{"type":28,"tag":370,"props":693,"children":694},{"style":386},[695],{"type":51,"value":696},"      \"options\"",{"type":28,"tag":370,"props":698,"children":699},{"style":377},[700],{"type":51,"value":463},{"type":28,"tag":370,"props":702,"children":704},{"class":372,"line":703},19,[705,710,714],{"type":28,"tag":370,"props":706,"children":707},{"style":386},[708],{"type":51,"value":709},"        \"symlink\"",{"type":28,"tag":370,"props":711,"children":712},{"style":377},[713],{"type":51,"value":394},{"type":28,"tag":370,"props":715,"children":717},{"style":716},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[718],{"type":51,"value":719},"true\n",{"type":28,"tag":370,"props":721,"children":723},{"class":372,"line":722},20,[724],{"type":28,"tag":370,"props":725,"children":726},{"style":377},[727],{"type":51,"value":728},"      }\n",{"type":28,"tag":370,"props":730,"children":732},{"class":372,"line":731},21,[733],{"type":28,"tag":370,"props":734,"children":735},{"style":377},[736],{"type":51,"value":737},"    },\n",{"type":28,"tag":370,"props":739,"children":741},{"class":372,"line":740},22,[742],{"type":28,"tag":370,"props":743,"children":744},{"style":377},[745],{"type":51,"value":643},{"type":28,"tag":370,"props":747,"children":749},{"class":372,"line":748},23,[750,754,758,762],{"type":28,"tag":370,"props":751,"children":752},{"style":386},[753],{"type":51,"value":652},{"type":28,"tag":370,"props":755,"children":756},{"style":377},[757],{"type":51,"value":394},{"type":28,"tag":370,"props":759,"children":760},{"style":397},[761],{"type":51,"value":661},{"type":28,"tag":370,"props":763,"children":764},{"style":377},[765],{"type":51,"value":405},{"type":28,"tag":370,"props":767,"children":769},{"class":372,"line":768},24,[770,774,778,783],{"type":28,"tag":370,"props":771,"children":772},{"style":386},[773],{"type":51,"value":674},{"type":28,"tag":370,"props":775,"children":776},{"style":377},[777],{"type":51,"value":394},{"type":28,"tag":370,"props":779,"children":780},{"style":397},[781],{"type":51,"value":782},"\"custom/plugins/*/packages/*\"",{"type":28,"tag":370,"props":784,"children":785},{"style":377},[786],{"type":51,"value":405},{"type":28,"tag":370,"props":788,"children":790},{"class":372,"line":789},25,[791,795],{"type":28,"tag":370,"props":792,"children":793},{"style":386},[794],{"type":51,"value":696},{"type":28,"tag":370,"props":796,"children":797},{"style":377},[798],{"type":51,"value":463},{"type":28,"tag":370,"props":800,"children":802},{"class":372,"line":801},26,[803,807,811],{"type":28,"tag":370,"props":804,"children":805},{"style":386},[806],{"type":51,"value":709},{"type":28,"tag":370,"props":808,"children":809},{"style":377},[810],{"type":51,"value":394},{"type":28,"tag":370,"props":812,"children":813},{"style":716},[814],{"type":51,"value":719},{"type":28,"tag":370,"props":816,"children":818},{"class":372,"line":817},27,[819],{"type":28,"tag":370,"props":820,"children":821},{"style":377},[822],{"type":51,"value":728},{"type":28,"tag":370,"props":824,"children":826},{"class":372,"line":825},28,[827],{"type":28,"tag":370,"props":828,"children":829},{"style":377},[830],{"type":51,"value":737},{"type":28,"tag":370,"props":832,"children":834},{"class":372,"line":833},29,[835],{"type":28,"tag":370,"props":836,"children":837},{"style":377},[838],{"type":51,"value":643},{"type":28,"tag":370,"props":840,"children":842},{"class":372,"line":841},30,[843,847,851,855],{"type":28,"tag":370,"props":844,"children":845},{"style":386},[846],{"type":51,"value":652},{"type":28,"tag":370,"props":848,"children":849},{"style":377},[850],{"type":51,"value":394},{"type":28,"tag":370,"props":852,"children":853},{"style":397},[854],{"type":51,"value":661},{"type":28,"tag":370,"props":856,"children":857},{"style":377},[858],{"type":51,"value":405},{"type":28,"tag":370,"props":860,"children":862},{"class":372,"line":861},31,[863,867,871,876],{"type":28,"tag":370,"props":864,"children":865},{"style":386},[866],{"type":51,"value":674},{"type":28,"tag":370,"props":868,"children":869},{"style":377},[870],{"type":51,"value":394},{"type":28,"tag":370,"props":872,"children":873},{"style":397},[874],{"type":51,"value":875},"\"custom/static-plugins/*\"",{"type":28,"tag":370,"props":877,"children":878},{"style":377},[879],{"type":51,"value":405},{"type":28,"tag":370,"props":881,"children":883},{"class":372,"line":882},32,[884,888],{"type":28,"tag":370,"props":885,"children":886},{"style":386},[887],{"type":51,"value":696},{"type":28,"tag":370,"props":889,"children":890},{"style":377},[891],{"type":51,"value":463},{"type":28,"tag":370,"props":893,"children":895},{"class":372,"line":894},33,[896,900,904],{"type":28,"tag":370,"props":897,"children":898},{"style":386},[899],{"type":51,"value":709},{"type":28,"tag":370,"props":901,"children":902},{"style":377},[903],{"type":51,"value":394},{"type":28,"tag":370,"props":905,"children":906},{"style":716},[907],{"type":51,"value":719},{"type":28,"tag":370,"props":909,"children":911},{"class":372,"line":910},34,[912],{"type":28,"tag":370,"props":913,"children":914},{"style":377},[915],{"type":51,"value":728},{"type":28,"tag":370,"props":917,"children":919},{"class":372,"line":918},35,[920],{"type":28,"tag":370,"props":921,"children":922},{"style":377},[923],{"type":51,"value":737},{"type":28,"tag":370,"props":925,"children":928},{"class":926,"line":360},[372,927],"highlight",[929],{"type":28,"tag":370,"props":930,"children":931},{"style":377},[932],{"type":51,"value":643},{"type":28,"tag":370,"props":934,"children":936},{"class":935,"line":361},[372,927],[937,941,945,950],{"type":28,"tag":370,"props":938,"children":939},{"style":386},[940],{"type":51,"value":652},{"type":28,"tag":370,"props":942,"children":943},{"style":377},[944],{"type":51,"value":394},{"type":28,"tag":370,"props":946,"children":947},{"style":397},[948],{"type":51,"value":949},"\"git\"",{"type":28,"tag":370,"props":951,"children":952},{"style":377},[953],{"type":51,"value":405},{"type":28,"tag":370,"props":955,"children":957},{"class":956,"line":362},[372,927],[958,962,966],{"type":28,"tag":370,"props":959,"children":960},{"style":386},[961],{"type":51,"value":674},{"type":28,"tag":370,"props":963,"children":964},{"style":377},[965],{"type":51,"value":394},{"type":28,"tag":370,"props":967,"children":968},{"style":397},[969],{"type":51,"value":970},"\"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n",{"type":28,"tag":370,"props":972,"children":974},{"class":973,"line":363},[372,927],[975],{"type":28,"tag":370,"props":976,"children":977},{"style":377},[978],{"type":51,"value":979},"    }\n",{"type":28,"tag":370,"props":981,"children":983},{"class":372,"line":982},40,[984],{"type":28,"tag":370,"props":985,"children":986},{"style":377},[987],{"type":51,"value":988},"  ],\n",{"type":28,"tag":370,"props":990,"children":992},{"class":372,"line":991},41,[993,998],{"type":28,"tag":370,"props":994,"children":995},{"style":386},[996],{"type":51,"value":997},"  \"autoload\"",{"type":28,"tag":370,"props":999,"children":1000},{"style":377},[1001],{"type":51,"value":463},{"type":28,"tag":370,"props":1003,"children":1005},{"class":372,"line":1004},42,[1006,1011],{"type":28,"tag":370,"props":1007,"children":1008},{"style":386},[1009],{"type":51,"value":1010},"    \"psr-4\"",{"type":28,"tag":370,"props":1012,"children":1013},{"style":377},[1014],{"type":51,"value":463},{"type":28,"tag":370,"props":1016,"children":1018},{"class":372,"line":1017},43,[1019,1024,1030,1035,1039],{"type":28,"tag":370,"props":1020,"children":1021},{"style":386},[1022],{"type":51,"value":1023},"      \"App",{"type":28,"tag":370,"props":1025,"children":1027},{"style":1026},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#AE81FF;--shiki-sepia-font-style:italic",[1028],{"type":51,"value":1029},"\\\\",{"type":28,"tag":370,"props":1031,"children":1032},{"style":386},[1033],{"type":51,"value":1034},"\"",{"type":28,"tag":370,"props":1036,"children":1037},{"style":377},[1038],{"type":51,"value":394},{"type":28,"tag":370,"props":1040,"children":1041},{"style":397},[1042],{"type":51,"value":1043},"\"src/\"\n",{"type":28,"tag":370,"props":1045,"children":1047},{"class":372,"line":1046},44,[1048],{"type":28,"tag":370,"props":1049,"children":1050},{"style":377},[1051],{"type":51,"value":979},{"type":28,"tag":370,"props":1053,"children":1055},{"class":372,"line":1054},45,[1056],{"type":28,"tag":370,"props":1057,"children":1058},{"style":377},[1059],{"type":51,"value":620},{"type":28,"tag":370,"props":1061,"children":1063},{"class":372,"line":1062},46,[1064,1069,1073,1078],{"type":28,"tag":370,"props":1065,"children":1066},{"style":386},[1067],{"type":51,"value":1068},"  \"prefer-stable\"",{"type":28,"tag":370,"props":1070,"children":1071},{"style":377},[1072],{"type":51,"value":394},{"type":28,"tag":370,"props":1074,"children":1075},{"style":716},[1076],{"type":51,"value":1077},"true",{"type":28,"tag":370,"props":1079,"children":1080},{"style":377},[1081],{"type":51,"value":405},{"type":28,"tag":370,"props":1083,"children":1085},{"class":372,"line":1084},47,[1086,1091],{"type":28,"tag":370,"props":1087,"children":1088},{"style":386},[1089],{"type":51,"value":1090},"  \"config\"",{"type":28,"tag":370,"props":1092,"children":1093},{"style":377},[1094],{"type":51,"value":463},{"type":28,"tag":370,"props":1096,"children":1098},{"class":372,"line":1097},48,[1099,1104],{"type":28,"tag":370,"props":1100,"children":1101},{"style":386},[1102],{"type":51,"value":1103},"    \"allow-plugins\"",{"type":28,"tag":370,"props":1105,"children":1106},{"style":377},[1107],{"type":51,"value":463},{"type":28,"tag":370,"props":1109,"children":1111},{"class":372,"line":1110},49,[1112,1117,1121,1125],{"type":28,"tag":370,"props":1113,"children":1114},{"style":386},[1115],{"type":51,"value":1116},"      \"symfony/flex\"",{"type":28,"tag":370,"props":1118,"children":1119},{"style":377},[1120],{"type":51,"value":394},{"type":28,"tag":370,"props":1122,"children":1123},{"style":716},[1124],{"type":51,"value":1077},{"type":28,"tag":370,"props":1126,"children":1127},{"style":377},[1128],{"type":51,"value":405},{"type":28,"tag":370,"props":1130,"children":1132},{"class":372,"line":1131},50,[1133,1138,1142],{"type":28,"tag":370,"props":1134,"children":1135},{"style":386},[1136],{"type":51,"value":1137},"      \"symfony/runtime\"",{"type":28,"tag":370,"props":1139,"children":1140},{"style":377},[1141],{"type":51,"value":394},{"type":28,"tag":370,"props":1143,"children":1144},{"style":716},[1145],{"type":51,"value":719},{"type":28,"tag":370,"props":1147,"children":1149},{"class":372,"line":1148},51,[1150],{"type":28,"tag":370,"props":1151,"children":1152},{"style":377},[1153],{"type":51,"value":737},{"type":28,"tag":370,"props":1155,"children":1157},{"class":372,"line":1156},52,[1158,1163,1167,1171],{"type":28,"tag":370,"props":1159,"children":1160},{"style":386},[1161],{"type":51,"value":1162},"    \"optimize-autoloader\"",{"type":28,"tag":370,"props":1164,"children":1165},{"style":377},[1166],{"type":51,"value":394},{"type":28,"tag":370,"props":1168,"children":1169},{"style":716},[1170],{"type":51,"value":1077},{"type":28,"tag":370,"props":1172,"children":1173},{"style":377},[1174],{"type":51,"value":405},{"type":28,"tag":370,"props":1176,"children":1178},{"class":372,"line":1177},53,[1179,1184,1188],{"type":28,"tag":370,"props":1180,"children":1181},{"style":386},[1182],{"type":51,"value":1183},"    \"sort-packages\"",{"type":28,"tag":370,"props":1185,"children":1186},{"style":377},[1187],{"type":51,"value":394},{"type":28,"tag":370,"props":1189,"children":1190},{"style":716},[1191],{"type":51,"value":719},{"type":28,"tag":370,"props":1193,"children":1195},{"class":372,"line":1194},54,[1196],{"type":28,"tag":370,"props":1197,"children":1198},{"style":377},[1199],{"type":51,"value":620},{"type":28,"tag":370,"props":1201,"children":1203},{"class":372,"line":1202},55,[1204,1209],{"type":28,"tag":370,"props":1205,"children":1206},{"style":386},[1207],{"type":51,"value":1208},"  \"scripts\"",{"type":28,"tag":370,"props":1210,"children":1211},{"style":377},[1212],{"type":51,"value":463},{"type":28,"tag":370,"props":1214,"children":1216},{"class":372,"line":1215},56,[1217,1222],{"type":28,"tag":370,"props":1218,"children":1219},{"style":386},[1220],{"type":51,"value":1221},"    \"auto-scripts\"",{"type":28,"tag":370,"props":1223,"children":1224},{"style":377},[1225],{"type":51,"value":463},{"type":28,"tag":370,"props":1227,"children":1229},{"class":372,"line":1228},57,[1230,1235,1239],{"type":28,"tag":370,"props":1231,"children":1232},{"style":386},[1233],{"type":51,"value":1234},"      \"assets:install\"",{"type":28,"tag":370,"props":1236,"children":1237},{"style":377},[1238],{"type":51,"value":394},{"type":28,"tag":370,"props":1240,"children":1241},{"style":397},[1242],{"type":51,"value":1243},"\"symfony-cmd\"\n",{"type":28,"tag":370,"props":1245,"children":1247},{"class":372,"line":1246},58,[1248],{"type":28,"tag":370,"props":1249,"children":1250},{"style":377},[1251],{"type":51,"value":737},{"type":28,"tag":370,"props":1253,"children":1255},{"class":372,"line":1254},59,[1256,1261],{"type":28,"tag":370,"props":1257,"children":1258},{"style":386},[1259],{"type":51,"value":1260},"    \"post-install-cmd\"",{"type":28,"tag":370,"props":1262,"children":1263},{"style":377},[1264],{"type":51,"value":634},{"type":28,"tag":370,"props":1266,"children":1268},{"class":372,"line":1267},60,[1269],{"type":28,"tag":370,"props":1270,"children":1271},{"style":397},[1272],{"type":51,"value":1273},"      \"@auto-scripts\"\n",{"type":28,"tag":370,"props":1275,"children":1277},{"class":372,"line":1276},61,[1278],{"type":28,"tag":370,"props":1279,"children":1280},{"style":377},[1281],{"type":51,"value":1282},"    ],\n",{"type":28,"tag":370,"props":1284,"children":1286},{"class":372,"line":1285},62,[1287,1292],{"type":28,"tag":370,"props":1288,"children":1289},{"style":386},[1290],{"type":51,"value":1291},"    \"post-update-cmd\"",{"type":28,"tag":370,"props":1293,"children":1294},{"style":377},[1295],{"type":51,"value":634},{"type":28,"tag":370,"props":1297,"children":1299},{"class":372,"line":1298},63,[1300],{"type":28,"tag":370,"props":1301,"children":1302},{"style":397},[1303],{"type":51,"value":1273},{"type":28,"tag":370,"props":1305,"children":1307},{"class":372,"line":1306},64,[1308],{"type":28,"tag":370,"props":1309,"children":1310},{"style":377},[1311],{"type":51,"value":1312},"    ]\n",{"type":28,"tag":370,"props":1314,"children":1316},{"class":372,"line":1315},65,[1317],{"type":28,"tag":370,"props":1318,"children":1319},{"style":377},[1320],{"type":51,"value":620},{"type":28,"tag":370,"props":1322,"children":1324},{"class":372,"line":1323},66,[1325,1330],{"type":28,"tag":370,"props":1326,"children":1327},{"style":386},[1328],{"type":51,"value":1329},"  \"extra\"",{"type":28,"tag":370,"props":1331,"children":1332},{"style":377},[1333],{"type":51,"value":463},{"type":28,"tag":370,"props":1335,"children":1337},{"class":372,"line":1336},67,[1338,1343],{"type":28,"tag":370,"props":1339,"children":1340},{"style":386},[1341],{"type":51,"value":1342},"    \"symfony\"",{"type":28,"tag":370,"props":1344,"children":1345},{"style":377},[1346],{"type":51,"value":463},{"type":28,"tag":370,"props":1348,"children":1350},{"class":372,"line":1349},68,[1351,1356,1360,1364],{"type":28,"tag":370,"props":1352,"children":1353},{"style":386},[1354],{"type":51,"value":1355},"      \"allow-contrib\"",{"type":28,"tag":370,"props":1357,"children":1358},{"style":377},[1359],{"type":51,"value":394},{"type":28,"tag":370,"props":1361,"children":1362},{"style":716},[1363],{"type":51,"value":1077},{"type":28,"tag":370,"props":1365,"children":1366},{"style":377},[1367],{"type":51,"value":405},{"type":28,"tag":370,"props":1369,"children":1371},{"class":372,"line":1370},69,[1372,1377],{"type":28,"tag":370,"props":1373,"children":1374},{"style":386},[1375],{"type":51,"value":1376},"      \"endpoint\"",{"type":28,"tag":370,"props":1378,"children":1379},{"style":377},[1380],{"type":51,"value":634},{"type":28,"tag":370,"props":1382,"children":1384},{"class":372,"line":1383},70,[1385,1390],{"type":28,"tag":370,"props":1386,"children":1387},{"style":397},[1388],{"type":51,"value":1389},"        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\"",{"type":28,"tag":370,"props":1391,"children":1392},{"style":377},[1393],{"type":51,"value":405},{"type":28,"tag":370,"props":1395,"children":1397},{"class":372,"line":1396},71,[1398],{"type":28,"tag":370,"props":1399,"children":1400},{"style":397},[1401],{"type":51,"value":1402},"        \"flex://defaults\"\n",{"type":28,"tag":370,"props":1404,"children":1406},{"class":372,"line":1405},72,[1407],{"type":28,"tag":370,"props":1408,"children":1409},{"style":377},[1410],{"type":51,"value":1411},"      ]\n",{"type":28,"tag":370,"props":1413,"children":1415},{"class":372,"line":1414},73,[1416],{"type":28,"tag":370,"props":1417,"children":1418},{"style":377},[1419],{"type":51,"value":979},{"type":28,"tag":370,"props":1421,"children":1423},{"class":372,"line":1422},74,[1424],{"type":28,"tag":370,"props":1425,"children":1426},{"style":377},[1427],{"type":51,"value":1428},"  }\n",{"type":28,"tag":370,"props":1430,"children":1432},{"class":372,"line":1431},75,[1433],{"type":28,"tag":370,"props":1434,"children":1435},{"style":377},[1436],{"type":51,"value":1437},"}\n",{"type":28,"tag":47,"props":1439,"children":1440},{},[1441],{"type":51,"value":1442},"und installieren es mit",{"type":28,"tag":354,"props":1444,"children":1448},{"className":1445,"code":1446,"language":1447,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai","composer req acme/sample-plugin\n","shell",[1449],{"type":28,"tag":290,"props":1450,"children":1451},{"__ignoreMap":7},[1452],{"type":28,"tag":370,"props":1453,"children":1454},{"class":372,"line":373},[1455,1460,1466],{"type":28,"tag":370,"props":1456,"children":1458},{"style":1457},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[1459],{"type":51,"value":350},{"type":28,"tag":370,"props":1461,"children":1463},{"style":1462},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[1464],{"type":51,"value":1465}," req",{"type":28,"tag":370,"props":1467,"children":1468},{"style":1462},[1469],{"type":51,"value":1470}," acme/sample-plugin\n",{"type":28,"tag":1472,"props":1473,"children":1475},"v-alert",{"type":1474},"error",[1476],{"type":28,"tag":47,"props":1477,"children":1478},{},[1479],{"type":51,"value":1480},"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":28,"tag":101,"props":1482,"children":1483},{},[],{"type":28,"tag":47,"props":1485,"children":1486},{},[1487,1489,1495],{"type":51,"value":1488},"Ja... das ist der Nachteil. Wir müssen ",{"type":28,"tag":290,"props":1490,"children":1492},{"className":1491},[],[1493],{"type":51,"value":1494},"dev-master",{"type":51,"value":1496}," als Version verwenden",{"type":28,"tag":354,"props":1498,"children":1500},{"className":1445,"code":1499,"language":1447,"meta":7,"style":7},"composer req acme/sample-plugin:dev-master\n",[1501],{"type":28,"tag":290,"props":1502,"children":1503},{"__ignoreMap":7},[1504],{"type":28,"tag":370,"props":1505,"children":1506},{"class":372,"line":373},[1507,1511,1515],{"type":28,"tag":370,"props":1508,"children":1509},{"style":1457},[1510],{"type":51,"value":350},{"type":28,"tag":370,"props":1512,"children":1513},{"style":1462},[1514],{"type":51,"value":1465},{"type":28,"tag":370,"props":1516,"children":1517},{"style":1462},[1518],{"type":51,"value":1519}," acme/sample-plugin:dev-master\n",{"type":28,"tag":354,"props":1521,"children":1525},{"className":1522,"code":1523,"language":1524,"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",[1526],{"type":28,"tag":290,"props":1527,"children":1528},{"__ignoreMap":7},[1529,1537,1545,1553,1561,1569,1577,1585,1593,1601,1609,1617,1625,1633,1641,1648],{"type":28,"tag":370,"props":1530,"children":1531},{"class":372,"line":373},[1532],{"type":28,"tag":370,"props":1533,"children":1534},{},[1535],{"type":51,"value":1536},"./composer.json has been updated\n",{"type":28,"tag":370,"props":1538,"children":1539},{"class":372,"line":120},[1540],{"type":28,"tag":370,"props":1541,"children":1542},{},[1543],{"type":51,"value":1544},"Running composer update acme/sample-plugin\n",{"type":28,"tag":370,"props":1546,"children":1547},{"class":372,"line":408},[1548],{"type":28,"tag":370,"props":1549,"children":1550},{},[1551],{"type":51,"value":1552},"Loading composer repositories with package information                                                                \n",{"type":28,"tag":370,"props":1554,"children":1555},{"class":372,"line":430},[1556],{"type":28,"tag":370,"props":1557,"children":1558},{},[1559],{"type":51,"value":1560},"Updating dependencies                                 \n",{"type":28,"tag":370,"props":1562,"children":1563},{"class":372,"line":452},[1564],{"type":28,"tag":370,"props":1565,"children":1566},{},[1567],{"type":51,"value":1568},"Lock file operations: 1 install, 0 updates, 0 removals\n",{"type":28,"tag":370,"props":1570,"children":1571},{"class":372,"line":466},[1572],{"type":28,"tag":370,"props":1573,"children":1574},{},[1575],{"type":51,"value":1576},"  - Locking acme/sample-plugin (dev-master 294414d)\n",{"type":28,"tag":370,"props":1578,"children":1579},{"class":372,"line":488},[1580],{"type":28,"tag":370,"props":1581,"children":1582},{},[1583],{"type":51,"value":1584},"Writing lock file\n",{"type":28,"tag":370,"props":1586,"children":1587},{"class":372,"line":510},[1588],{"type":28,"tag":370,"props":1589,"children":1590},{},[1591],{"type":51,"value":1592},"Installing dependencies from lock file (including require-dev)\n",{"type":28,"tag":370,"props":1594,"children":1595},{"class":372,"line":532},[1596],{"type":28,"tag":370,"props":1597,"children":1598},{},[1599],{"type":51,"value":1600},"Package operations: 1 install, 0 updates, 0 removals\n",{"type":28,"tag":370,"props":1602,"children":1603},{"class":372,"line":554},[1604],{"type":28,"tag":370,"props":1605,"children":1606},{},[1607],{"type":51,"value":1608},"  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n",{"type":28,"tag":370,"props":1610,"children":1611},{"class":372,"line":575},[1612],{"type":28,"tag":370,"props":1613,"children":1614},{},[1615],{"type":51,"value":1616},"  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\n",{"type":28,"tag":370,"props":1618,"children":1619},{"class":372,"line":596},[1620],{"type":28,"tag":370,"props":1621,"children":1622},{},[1623],{"type":51,"value":1624},"Generating optimized autoload files\n",{"type":28,"tag":370,"props":1626,"children":1627},{"class":372,"line":614},[1628],{"type":28,"tag":370,"props":1629,"children":1630},{"emptyLinePlaceholder":133},[1631],{"type":51,"value":1632},"\n",{"type":28,"tag":370,"props":1634,"children":1635},{"class":372,"line":623},[1636],{"type":28,"tag":370,"props":1637,"children":1638},{},[1639],{"type":51,"value":1640},"Run composer recipes at any time to see the status of your Symfony recipes.\n",{"type":28,"tag":370,"props":1642,"children":1643},{"class":372,"line":637},[1644],{"type":28,"tag":370,"props":1645,"children":1646},{"emptyLinePlaceholder":133},[1647],{"type":51,"value":1632},{"type":28,"tag":370,"props":1649,"children":1650},{"class":372,"line":646},[1651],{"type":28,"tag":370,"props":1652,"children":1653},{},[1654],{"type":51,"value":1655},"Executing script assets:install [OK]\n",{"type":28,"tag":47,"props":1657,"children":1658},{},[1659,1661,1667],{"type":51,"value":1660},"Composer wird ",{"type":28,"tag":290,"props":1662,"children":1664},{"className":1663},[],[1665],{"type":51,"value":1666},"git",{"type":51,"value":1668}," verwenden, um unser Repository zu klonen, und den Standard-Branch sowie den Commit-Hash verwenden, um den Release zu verfolgen.",{"type":28,"tag":47,"props":1670,"children":1671},{},[1672],{"type":51,"value":1673},"Das funktioniert, aber wir können es besser machen.",{"type":28,"tag":89,"props":1675,"children":1677},{"id":1676},"git-tags",[1678],{"type":51,"value":1679},"Git Tags",{"type":28,"tag":47,"props":1681,"children":1682},{},[1683,1685,1691],{"type":51,"value":1684},"Wir taggen nun unser Plugin als ",{"type":28,"tag":290,"props":1686,"children":1688},{"className":1687},[],[1689],{"type":51,"value":1690},"v1.0.0",{"type":51,"value":268},{"type":28,"tag":47,"props":1693,"children":1694},{},[1695,1697,1703,1705,1711],{"type":51,"value":1696},"Bitte beachten, dass Sie die ",{"type":28,"tag":290,"props":1698,"children":1700},{"className":1699},[],[1701],{"type":51,"value":1702},"version",{"type":51,"value":1704}," in der ",{"type":28,"tag":290,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":51,"value":1710},"composer.json",{"type":51,"value":1712}," gesetzt ist.",{"type":28,"tag":354,"props":1714,"children":1718},{"className":356,"code":1715,"filename":1716,"highlights":1717,"language":364,"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",[452],[1719],{"type":28,"tag":290,"props":1720,"children":1721},{"__ignoreMap":7},[1722,1729,1750,1770,1791,1813,1833,1845,1862,1869,1881,1911,1923,1944,1961,1969,1976,1988,2000,2024,2031,2038,2050,2061,2094,2101,2108],{"type":28,"tag":370,"props":1723,"children":1724},{"class":372,"line":373},[1725],{"type":28,"tag":370,"props":1726,"children":1727},{"style":377},[1728],{"type":51,"value":380},{"type":28,"tag":370,"props":1730,"children":1731},{"class":372,"line":120},[1732,1737,1741,1746],{"type":28,"tag":370,"props":1733,"children":1734},{"style":386},[1735],{"type":51,"value":1736},"    \"name\"",{"type":28,"tag":370,"props":1738,"children":1739},{"style":377},[1740],{"type":51,"value":394},{"type":28,"tag":370,"props":1742,"children":1743},{"style":397},[1744],{"type":51,"value":1745},"\"acme/sample-plugin\"",{"type":28,"tag":370,"props":1747,"children":1748},{"style":377},[1749],{"type":51,"value":405},{"type":28,"tag":370,"props":1751,"children":1752},{"class":372,"line":408},[1753,1758,1762,1766],{"type":28,"tag":370,"props":1754,"children":1755},{"style":386},[1756],{"type":51,"value":1757},"    \"description\"",{"type":28,"tag":370,"props":1759,"children":1760},{"style":377},[1761],{"type":51,"value":394},{"type":28,"tag":370,"props":1763,"children":1764},{"style":397},[1765],{"type":51,"value":1745},{"type":28,"tag":370,"props":1767,"children":1768},{"style":377},[1769],{"type":51,"value":405},{"type":28,"tag":370,"props":1771,"children":1772},{"class":372,"line":430},[1773,1778,1782,1787],{"type":28,"tag":370,"props":1774,"children":1775},{"style":386},[1776],{"type":51,"value":1777},"    \"type\"",{"type":28,"tag":370,"props":1779,"children":1780},{"style":377},[1781],{"type":51,"value":394},{"type":28,"tag":370,"props":1783,"children":1784},{"style":397},[1785],{"type":51,"value":1786},"\"shopware-platform-plugin\"",{"type":28,"tag":370,"props":1788,"children":1789},{"style":377},[1790],{"type":51,"value":405},{"type":28,"tag":370,"props":1792,"children":1794},{"class":1793,"line":452},[372,927],[1795,1800,1804,1809],{"type":28,"tag":370,"props":1796,"children":1797},{"style":386},[1798],{"type":51,"value":1799},"    \"version\"",{"type":28,"tag":370,"props":1801,"children":1802},{"style":377},[1803],{"type":51,"value":394},{"type":28,"tag":370,"props":1805,"children":1806},{"style":397},[1807],{"type":51,"value":1808},"\"1.0.0\"",{"type":28,"tag":370,"props":1810,"children":1811},{"style":377},[1812],{"type":51,"value":405},{"type":28,"tag":370,"props":1814,"children":1815},{"class":372,"line":466},[1816,1821,1825,1829],{"type":28,"tag":370,"props":1817,"children":1818},{"style":386},[1819],{"type":51,"value":1820},"    \"license\"",{"type":28,"tag":370,"props":1822,"children":1823},{"style":377},[1824],{"type":51,"value":394},{"type":28,"tag":370,"props":1826,"children":1827},{"style":397},[1828],{"type":51,"value":423},{"type":28,"tag":370,"props":1830,"children":1831},{"style":377},[1832],{"type":51,"value":405},{"type":28,"tag":370,"props":1834,"children":1835},{"class":372,"line":488},[1836,1841],{"type":28,"tag":370,"props":1837,"children":1838},{"style":386},[1839],{"type":51,"value":1840},"    \"require\"",{"type":28,"tag":370,"props":1842,"children":1843},{"style":377},[1844],{"type":51,"value":463},{"type":28,"tag":370,"props":1846,"children":1847},{"class":372,"line":510},[1848,1853,1857],{"type":28,"tag":370,"props":1849,"children":1850},{"style":386},[1851],{"type":51,"value":1852},"        \"shopware/core\"",{"type":28,"tag":370,"props":1854,"children":1855},{"style":377},[1856],{"type":51,"value":394},{"type":28,"tag":370,"props":1858,"children":1859},{"style":397},[1860],{"type":51,"value":1861},"\"~6.6.0\"\n",{"type":28,"tag":370,"props":1863,"children":1864},{"class":372,"line":532},[1865],{"type":28,"tag":370,"props":1866,"children":1867},{"style":377},[1868],{"type":51,"value":737},{"type":28,"tag":370,"props":1870,"children":1871},{"class":372,"line":554},[1872,1877],{"type":28,"tag":370,"props":1873,"children":1874},{"style":386},[1875],{"type":51,"value":1876},"    \"extra\"",{"type":28,"tag":370,"props":1878,"children":1879},{"style":377},[1880],{"type":51,"value":463},{"type":28,"tag":370,"props":1882,"children":1883},{"class":372,"line":575},[1884,1889,1893,1898,1902,1907],{"type":28,"tag":370,"props":1885,"children":1886},{"style":386},[1887],{"type":51,"value":1888},"        \"shopware-plugin-class\"",{"type":28,"tag":370,"props":1890,"children":1891},{"style":377},[1892],{"type":51,"value":394},{"type":28,"tag":370,"props":1894,"children":1895},{"style":397},[1896],{"type":51,"value":1897},"\"Acme",{"type":28,"tag":370,"props":1899,"children":1900},{"style":716},[1901],{"type":51,"value":1029},{"type":28,"tag":370,"props":1903,"children":1904},{"style":397},[1905],{"type":51,"value":1906},"SamplePlugin\"",{"type":28,"tag":370,"props":1908,"children":1909},{"style":377},[1910],{"type":51,"value":405},{"type":28,"tag":370,"props":1912,"children":1913},{"class":372,"line":596},[1914,1919],{"type":28,"tag":370,"props":1915,"children":1916},{"style":386},[1917],{"type":51,"value":1918},"        \"label\"",{"type":28,"tag":370,"props":1920,"children":1921},{"style":377},[1922],{"type":51,"value":463},{"type":28,"tag":370,"props":1924,"children":1925},{"class":372,"line":614},[1926,1931,1935,1940],{"type":28,"tag":370,"props":1927,"children":1928},{"style":386},[1929],{"type":51,"value":1930},"            \"de-DE\"",{"type":28,"tag":370,"props":1932,"children":1933},{"style":377},[1934],{"type":51,"value":394},{"type":28,"tag":370,"props":1936,"children":1937},{"style":397},[1938],{"type":51,"value":1939},"\"Skeleton plugin\"",{"type":28,"tag":370,"props":1941,"children":1942},{"style":377},[1943],{"type":51,"value":405},{"type":28,"tag":370,"props":1945,"children":1946},{"class":372,"line":623},[1947,1952,1956],{"type":28,"tag":370,"props":1948,"children":1949},{"style":386},[1950],{"type":51,"value":1951},"            \"en-GB\"",{"type":28,"tag":370,"props":1953,"children":1954},{"style":377},[1955],{"type":51,"value":394},{"type":28,"tag":370,"props":1957,"children":1958},{"style":397},[1959],{"type":51,"value":1960},"\"Skeleton plugin\"\n",{"type":28,"tag":370,"props":1962,"children":1963},{"class":372,"line":637},[1964],{"type":28,"tag":370,"props":1965,"children":1966},{"style":377},[1967],{"type":51,"value":1968},"        }\n",{"type":28,"tag":370,"props":1970,"children":1971},{"class":372,"line":646},[1972],{"type":28,"tag":370,"props":1973,"children":1974},{"style":377},[1975],{"type":51,"value":737},{"type":28,"tag":370,"props":1977,"children":1978},{"class":372,"line":668},[1979,1984],{"type":28,"tag":370,"props":1980,"children":1981},{"style":386},[1982],{"type":51,"value":1983},"    \"autoload\"",{"type":28,"tag":370,"props":1985,"children":1986},{"style":377},[1987],{"type":51,"value":463},{"type":28,"tag":370,"props":1989,"children":1990},{"class":372,"line":690},[1991,1996],{"type":28,"tag":370,"props":1992,"children":1993},{"style":386},[1994],{"type":51,"value":1995},"        \"psr-4\"",{"type":28,"tag":370,"props":1997,"children":1998},{"style":377},[1999],{"type":51,"value":463},{"type":28,"tag":370,"props":2001,"children":2002},{"class":372,"line":703},[2003,2008,2012,2016,2020],{"type":28,"tag":370,"props":2004,"children":2005},{"style":386},[2006],{"type":51,"value":2007},"            \"Acme",{"type":28,"tag":370,"props":2009,"children":2010},{"style":1026},[2011],{"type":51,"value":1029},{"type":28,"tag":370,"props":2013,"children":2014},{"style":386},[2015],{"type":51,"value":1034},{"type":28,"tag":370,"props":2017,"children":2018},{"style":377},[2019],{"type":51,"value":394},{"type":28,"tag":370,"props":2021,"children":2022},{"style":397},[2023],{"type":51,"value":1043},{"type":28,"tag":370,"props":2025,"children":2026},{"class":372,"line":722},[2027],{"type":28,"tag":370,"props":2028,"children":2029},{"style":377},[2030],{"type":51,"value":1968},{"type":28,"tag":370,"props":2032,"children":2033},{"class":372,"line":731},[2034],{"type":28,"tag":370,"props":2035,"children":2036},{"style":377},[2037],{"type":51,"value":737},{"type":28,"tag":370,"props":2039,"children":2040},{"class":372,"line":740},[2041,2046],{"type":28,"tag":370,"props":2042,"children":2043},{"style":386},[2044],{"type":51,"value":2045},"    \"autoload-dev\"",{"type":28,"tag":370,"props":2047,"children":2048},{"style":377},[2049],{"type":51,"value":463},{"type":28,"tag":370,"props":2051,"children":2052},{"class":372,"line":748},[2053,2057],{"type":28,"tag":370,"props":2054,"children":2055},{"style":386},[2056],{"type":51,"value":1995},{"type":28,"tag":370,"props":2058,"children":2059},{"style":377},[2060],{"type":51,"value":463},{"type":28,"tag":370,"props":2062,"children":2063},{"class":372,"line":768},[2064,2068,2072,2077,2081,2085,2089],{"type":28,"tag":370,"props":2065,"children":2066},{"style":386},[2067],{"type":51,"value":2007},{"type":28,"tag":370,"props":2069,"children":2070},{"style":1026},[2071],{"type":51,"value":1029},{"type":28,"tag":370,"props":2073,"children":2074},{"style":386},[2075],{"type":51,"value":2076},"Tests",{"type":28,"tag":370,"props":2078,"children":2079},{"style":1026},[2080],{"type":51,"value":1029},{"type":28,"tag":370,"props":2082,"children":2083},{"style":386},[2084],{"type":51,"value":1034},{"type":28,"tag":370,"props":2086,"children":2087},{"style":377},[2088],{"type":51,"value":394},{"type":28,"tag":370,"props":2090,"children":2091},{"style":397},[2092],{"type":51,"value":2093},"\"tests/\"\n",{"type":28,"tag":370,"props":2095,"children":2096},{"class":372,"line":789},[2097],{"type":28,"tag":370,"props":2098,"children":2099},{"style":377},[2100],{"type":51,"value":1968},{"type":28,"tag":370,"props":2102,"children":2103},{"class":372,"line":801},[2104],{"type":28,"tag":370,"props":2105,"children":2106},{"style":377},[2107],{"type":51,"value":979},{"type":28,"tag":370,"props":2109,"children":2110},{"class":372,"line":817},[2111],{"type":28,"tag":370,"props":2112,"children":2113},{"style":377},[2114],{"type":51,"value":1437},{"type":28,"tag":354,"props":2116,"children":2118},{"className":1445,"code":2117,"language":1447,"meta":7,"style":7},"git tag v1.0.0\ngit push --tags\n",[2119],{"type":28,"tag":290,"props":2120,"children":2121},{"__ignoreMap":7},[2122,2139],{"type":28,"tag":370,"props":2123,"children":2124},{"class":372,"line":373},[2125,2129,2134],{"type":28,"tag":370,"props":2126,"children":2127},{"style":1457},[2128],{"type":51,"value":1666},{"type":28,"tag":370,"props":2130,"children":2131},{"style":1462},[2132],{"type":51,"value":2133}," tag",{"type":28,"tag":370,"props":2135,"children":2136},{"style":1462},[2137],{"type":51,"value":2138}," v1.0.0\n",{"type":28,"tag":370,"props":2140,"children":2141},{"class":372,"line":120},[2142,2146,2151],{"type":28,"tag":370,"props":2143,"children":2144},{"style":1457},[2145],{"type":51,"value":1666},{"type":28,"tag":370,"props":2147,"children":2148},{"style":1462},[2149],{"type":51,"value":2150}," push",{"type":28,"tag":370,"props":2152,"children":2153},{"style":716},[2154],{"type":51,"value":2155}," --tags\n",{"type":28,"tag":47,"props":2157,"children":2158},{},[2159],{"type":51,"value":2160},"Nun wird dies funktionieren:",{"type":28,"tag":354,"props":2162,"children":2163},{"className":1445,"code":1446,"language":1447,"meta":7,"style":7},[2164],{"type":28,"tag":290,"props":2165,"children":2166},{"__ignoreMap":7},[2167],{"type":28,"tag":370,"props":2168,"children":2169},{"class":372,"line":373},[2170,2174,2178],{"type":28,"tag":370,"props":2171,"children":2172},{"style":1457},[2173],{"type":51,"value":350},{"type":28,"tag":370,"props":2175,"children":2176},{"style":1462},[2177],{"type":51,"value":1465},{"type":28,"tag":370,"props":2179,"children":2180},{"style":1462},[2181],{"type":51,"value":1470},{"type":28,"tag":354,"props":2183,"children":2187},{"className":2184,"code":2185,"language":2186,"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",[2188],{"type":28,"tag":290,"props":2189,"children":2190},{"__ignoreMap":7},[2191,2199,2206,2214,2222,2229,2237,2244,2251,2258,2266,2274,2281,2288,2295,2302,2309,2316],{"type":28,"tag":370,"props":2192,"children":2193},{"class":372,"line":373},[2194],{"type":28,"tag":370,"props":2195,"children":2196},{},[2197],{"type":51,"value":2198},"./composer.json has been updated                                                                                                            \n",{"type":28,"tag":370,"props":2200,"children":2201},{"class":372,"line":120},[2202],{"type":28,"tag":370,"props":2203,"children":2204},{},[2205],{"type":51,"value":1544},{"type":28,"tag":370,"props":2207,"children":2208},{"class":372,"line":408},[2209],{"type":28,"tag":370,"props":2210,"children":2211},{},[2212],{"type":51,"value":2213},"Loading composer repositories with package information\n",{"type":28,"tag":370,"props":2215,"children":2216},{"class":372,"line":430},[2217],{"type":28,"tag":370,"props":2218,"children":2219},{},[2220],{"type":51,"value":2221},"Updating dependencies\n",{"type":28,"tag":370,"props":2223,"children":2224},{"class":372,"line":452},[2225],{"type":28,"tag":370,"props":2226,"children":2227},{},[2228],{"type":51,"value":1568},{"type":28,"tag":370,"props":2230,"children":2231},{"class":372,"line":466},[2232],{"type":28,"tag":370,"props":2233,"children":2234},{},[2235],{"type":51,"value":2236},"  - Locking acme/sample-plugin (1.0.0)\n",{"type":28,"tag":370,"props":2238,"children":2239},{"class":372,"line":488},[2240],{"type":28,"tag":370,"props":2241,"children":2242},{},[2243],{"type":51,"value":1584},{"type":28,"tag":370,"props":2245,"children":2246},{"class":372,"line":510},[2247],{"type":28,"tag":370,"props":2248,"children":2249},{},[2250],{"type":51,"value":1592},{"type":28,"tag":370,"props":2252,"children":2253},{"class":372,"line":532},[2254],{"type":28,"tag":370,"props":2255,"children":2256},{},[2257],{"type":51,"value":1600},{"type":28,"tag":370,"props":2259,"children":2260},{"class":372,"line":554},[2261],{"type":28,"tag":370,"props":2262,"children":2263},{},[2264],{"type":51,"value":2265},"  - Syncing acme/sample-plugin (1.0.0) into cache\n",{"type":28,"tag":370,"props":2267,"children":2268},{"class":372,"line":575},[2269],{"type":28,"tag":370,"props":2270,"children":2271},{},[2272],{"type":51,"value":2273},"  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\n",{"type":28,"tag":370,"props":2275,"children":2276},{"class":372,"line":596},[2277],{"type":28,"tag":370,"props":2278,"children":2279},{},[2280],{"type":51,"value":1624},{"type":28,"tag":370,"props":2282,"children":2283},{"class":372,"line":614},[2284],{"type":28,"tag":370,"props":2285,"children":2286},{"emptyLinePlaceholder":133},[2287],{"type":51,"value":1632},{"type":28,"tag":370,"props":2289,"children":2290},{"class":372,"line":623},[2291],{"type":28,"tag":370,"props":2292,"children":2293},{},[2294],{"type":51,"value":1640},{"type":28,"tag":370,"props":2296,"children":2297},{"class":372,"line":637},[2298],{"type":28,"tag":370,"props":2299,"children":2300},{"emptyLinePlaceholder":133},[2301],{"type":51,"value":1632},{"type":28,"tag":370,"props":2303,"children":2304},{"class":372,"line":646},[2305],{"type":28,"tag":370,"props":2306,"children":2307},{},[2308],{"type":51,"value":1655},{"type":28,"tag":370,"props":2310,"children":2311},{"class":372,"line":668},[2312],{"type":28,"tag":370,"props":2313,"children":2314},{"emptyLinePlaceholder":133},[2315],{"type":51,"value":1632},{"type":28,"tag":370,"props":2317,"children":2318},{"class":372,"line":690},[2319],{"type":28,"tag":370,"props":2320,"children":2321},{},[2322],{"type":51,"value":2323},"Using version ^1.0 for acme/sample-plugin\n",{"type":28,"tag":47,"props":2325,"children":2326},{},[2327,2329,2334],{"type":51,"value":2328},"Das ist besser, aber wir verwenden immer noch ",{"type":28,"tag":290,"props":2330,"children":2332},{"className":2331},[],[2333],{"type":51,"value":1666},{"type":51,"value":2335},", um das Plugin abzurufen. Wir können es noch besser machen.",{"type":28,"tag":89,"props":2337,"children":2339},{"id":2338},"gitlab-package-registry",[2340],{"type":51,"value":2341},"GitLab Package Registry",{"type":28,"tag":47,"props":2343,"children":2344},{},[2345,2347,2352],{"type":51,"value":2346},"Hier beginnt der GitLab-Teil. Weitere Details sind in der ",{"type":28,"tag":261,"props":2348,"children":2350},{"href":2349},"https://docs.gitlab.com/18.3/user/packages/composer_repository/",[2351],{"type":51,"value":266},{"type":51,"value":2353}," zu finden.",{"type":28,"tag":47,"props":2355,"children":2356},{},[2357],{"type":51,"value":2358},"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":28,"tag":47,"props":2360,"children":2361},{},[2362,2364,2369],{"type":51,"value":2363},"Wir veröffentlichen unseren ",{"type":28,"tag":290,"props":2365,"children":2367},{"className":2366},[],[2368],{"type":51,"value":1690},{"type":51,"value":2370},"-Tag als Composer-Paket.",{"type":28,"tag":354,"props":2372,"children":2374},{"className":1445,"code":2373,"language":1447,"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",[2375],{"type":28,"tag":290,"props":2376,"children":2377},{"__ignoreMap":7},[2378],{"type":28,"tag":370,"props":2379,"children":2380},{"class":372,"line":373},[2381,2386,2391,2396,2401],{"type":28,"tag":370,"props":2382,"children":2383},{"style":1457},[2384],{"type":51,"value":2385},"curl",{"type":28,"tag":370,"props":2387,"children":2388},{"style":716},[2389],{"type":51,"value":2390}," --fail-with-body",{"type":28,"tag":370,"props":2392,"children":2393},{"style":716},[2394],{"type":51,"value":2395}," --data",{"type":28,"tag":370,"props":2397,"children":2398},{"style":1462},[2399],{"type":51,"value":2400}," tag=v1.0.0",{"type":28,"tag":370,"props":2402,"children":2403},{"style":1462},[2404],{"type":51,"value":2405}," \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",{"type":28,"tag":47,"props":2407,"children":2408},{},[2409],{"type":51,"value":2410},"Nun müssen wir die Repository-Informationen aktualisieren:",{"type":28,"tag":354,"props":2412,"children":2415},{"className":356,"code":2413,"filename":358,"highlights":2414,"language":364,"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",[360,361,362,363],[2416],{"type":28,"tag":290,"props":2417,"children":2418},{"__ignoreMap":7},[2419,2426,2445,2464,2483,2494,2513,2532,2551,2570,2589,2608,2623,2630,2641,2648,2667,2686,2697,2712,2719,2726,2733,2752,2771,2782,2797,2804,2811,2818,2837,2856,2867,2882,2889,2896,2904,2925,2942,2950,2957,2968,2979,3002,3009,3016,3035,3046,3057,3076,3091,3098,3117,3132,3139,3150,3161,3176,3183,3194,3201,3208,3219,3226,3233,3240,3251,3262,3281,3292,3303,3310,3317,3324,3331],{"type":28,"tag":370,"props":2420,"children":2421},{"class":372,"line":373},[2422],{"type":28,"tag":370,"props":2423,"children":2424},{"style":377},[2425],{"type":51,"value":380},{"type":28,"tag":370,"props":2427,"children":2428},{"class":372,"line":120},[2429,2433,2437,2441],{"type":28,"tag":370,"props":2430,"children":2431},{"style":386},[2432],{"type":51,"value":389},{"type":28,"tag":370,"props":2434,"children":2435},{"style":377},[2436],{"type":51,"value":394},{"type":28,"tag":370,"props":2438,"children":2439},{"style":397},[2440],{"type":51,"value":400},{"type":28,"tag":370,"props":2442,"children":2443},{"style":377},[2444],{"type":51,"value":405},{"type":28,"tag":370,"props":2446,"children":2447},{"class":372,"line":408},[2448,2452,2456,2460],{"type":28,"tag":370,"props":2449,"children":2450},{"style":386},[2451],{"type":51,"value":414},{"type":28,"tag":370,"props":2453,"children":2454},{"style":377},[2455],{"type":51,"value":394},{"type":28,"tag":370,"props":2457,"children":2458},{"style":397},[2459],{"type":51,"value":423},{"type":28,"tag":370,"props":2461,"children":2462},{"style":377},[2463],{"type":51,"value":405},{"type":28,"tag":370,"props":2465,"children":2466},{"class":372,"line":430},[2467,2471,2475,2479],{"type":28,"tag":370,"props":2468,"children":2469},{"style":386},[2470],{"type":51,"value":436},{"type":28,"tag":370,"props":2472,"children":2473},{"style":377},[2474],{"type":51,"value":394},{"type":28,"tag":370,"props":2476,"children":2477},{"style":397},[2478],{"type":51,"value":445},{"type":28,"tag":370,"props":2480,"children":2481},{"style":377},[2482],{"type":51,"value":405},{"type":28,"tag":370,"props":2484,"children":2485},{"class":372,"line":452},[2486,2490],{"type":28,"tag":370,"props":2487,"children":2488},{"style":386},[2489],{"type":51,"value":458},{"type":28,"tag":370,"props":2491,"children":2492},{"style":377},[2493],{"type":51,"value":463},{"type":28,"tag":370,"props":2495,"children":2496},{"class":372,"line":466},[2497,2501,2505,2509],{"type":28,"tag":370,"props":2498,"children":2499},{"style":386},[2500],{"type":51,"value":472},{"type":28,"tag":370,"props":2502,"children":2503},{"style":377},[2504],{"type":51,"value":394},{"type":28,"tag":370,"props":2506,"children":2507},{"style":397},[2508],{"type":51,"value":481},{"type":28,"tag":370,"props":2510,"children":2511},{"style":377},[2512],{"type":51,"value":405},{"type":28,"tag":370,"props":2514,"children":2515},{"class":372,"line":488},[2516,2520,2524,2528],{"type":28,"tag":370,"props":2517,"children":2518},{"style":386},[2519],{"type":51,"value":494},{"type":28,"tag":370,"props":2521,"children":2522},{"style":377},[2523],{"type":51,"value":394},{"type":28,"tag":370,"props":2525,"children":2526},{"style":397},[2527],{"type":51,"value":503},{"type":28,"tag":370,"props":2529,"children":2530},{"style":377},[2531],{"type":51,"value":405},{"type":28,"tag":370,"props":2533,"children":2534},{"class":372,"line":510},[2535,2539,2543,2547],{"type":28,"tag":370,"props":2536,"children":2537},{"style":386},[2538],{"type":51,"value":516},{"type":28,"tag":370,"props":2540,"children":2541},{"style":377},[2542],{"type":51,"value":394},{"type":28,"tag":370,"props":2544,"children":2545},{"style":397},[2546],{"type":51,"value":525},{"type":28,"tag":370,"props":2548,"children":2549},{"style":377},[2550],{"type":51,"value":405},{"type":28,"tag":370,"props":2552,"children":2553},{"class":372,"line":532},[2554,2558,2562,2566],{"type":28,"tag":370,"props":2555,"children":2556},{"style":386},[2557],{"type":51,"value":538},{"type":28,"tag":370,"props":2559,"children":2560},{"style":377},[2561],{"type":51,"value":394},{"type":28,"tag":370,"props":2563,"children":2564},{"style":397},[2565],{"type":51,"value":547},{"type":28,"tag":370,"props":2567,"children":2568},{"style":377},[2569],{"type":51,"value":405},{"type":28,"tag":370,"props":2571,"children":2572},{"class":372,"line":554},[2573,2577,2581,2585],{"type":28,"tag":370,"props":2574,"children":2575},{"style":386},[2576],{"type":51,"value":560},{"type":28,"tag":370,"props":2578,"children":2579},{"style":377},[2580],{"type":51,"value":394},{"type":28,"tag":370,"props":2582,"children":2583},{"style":397},[2584],{"type":51,"value":525},{"type":28,"tag":370,"props":2586,"children":2587},{"style":377},[2588],{"type":51,"value":405},{"type":28,"tag":370,"props":2590,"children":2591},{"class":372,"line":575},[2592,2596,2600,2604],{"type":28,"tag":370,"props":2593,"children":2594},{"style":386},[2595],{"type":51,"value":581},{"type":28,"tag":370,"props":2597,"children":2598},{"style":377},[2599],{"type":51,"value":394},{"type":28,"tag":370,"props":2601,"children":2602},{"style":397},[2603],{"type":51,"value":525},{"type":28,"tag":370,"props":2605,"children":2606},{"style":377},[2607],{"type":51,"value":405},{"type":28,"tag":370,"props":2609,"children":2610},{"class":372,"line":596},[2611,2615,2619],{"type":28,"tag":370,"props":2612,"children":2613},{"style":386},[2614],{"type":51,"value":602},{"type":28,"tag":370,"props":2616,"children":2617},{"style":377},[2618],{"type":51,"value":394},{"type":28,"tag":370,"props":2620,"children":2621},{"style":397},[2622],{"type":51,"value":611},{"type":28,"tag":370,"props":2624,"children":2625},{"class":372,"line":614},[2626],{"type":28,"tag":370,"props":2627,"children":2628},{"style":377},[2629],{"type":51,"value":620},{"type":28,"tag":370,"props":2631,"children":2632},{"class":372,"line":623},[2633,2637],{"type":28,"tag":370,"props":2634,"children":2635},{"style":386},[2636],{"type":51,"value":629},{"type":28,"tag":370,"props":2638,"children":2639},{"style":377},[2640],{"type":51,"value":634},{"type":28,"tag":370,"props":2642,"children":2643},{"class":372,"line":637},[2644],{"type":28,"tag":370,"props":2645,"children":2646},{"style":377},[2647],{"type":51,"value":643},{"type":28,"tag":370,"props":2649,"children":2650},{"class":372,"line":646},[2651,2655,2659,2663],{"type":28,"tag":370,"props":2652,"children":2653},{"style":386},[2654],{"type":51,"value":652},{"type":28,"tag":370,"props":2656,"children":2657},{"style":377},[2658],{"type":51,"value":394},{"type":28,"tag":370,"props":2660,"children":2661},{"style":397},[2662],{"type":51,"value":661},{"type":28,"tag":370,"props":2664,"children":2665},{"style":377},[2666],{"type":51,"value":405},{"type":28,"tag":370,"props":2668,"children":2669},{"class":372,"line":668},[2670,2674,2678,2682],{"type":28,"tag":370,"props":2671,"children":2672},{"style":386},[2673],{"type":51,"value":674},{"type":28,"tag":370,"props":2675,"children":2676},{"style":377},[2677],{"type":51,"value":394},{"type":28,"tag":370,"props":2679,"children":2680},{"style":397},[2681],{"type":51,"value":683},{"type":28,"tag":370,"props":2683,"children":2684},{"style":377},[2685],{"type":51,"value":405},{"type":28,"tag":370,"props":2687,"children":2688},{"class":372,"line":690},[2689,2693],{"type":28,"tag":370,"props":2690,"children":2691},{"style":386},[2692],{"type":51,"value":696},{"type":28,"tag":370,"props":2694,"children":2695},{"style":377},[2696],{"type":51,"value":463},{"type":28,"tag":370,"props":2698,"children":2699},{"class":372,"line":703},[2700,2704,2708],{"type":28,"tag":370,"props":2701,"children":2702},{"style":386},[2703],{"type":51,"value":709},{"type":28,"tag":370,"props":2705,"children":2706},{"style":377},[2707],{"type":51,"value":394},{"type":28,"tag":370,"props":2709,"children":2710},{"style":716},[2711],{"type":51,"value":719},{"type":28,"tag":370,"props":2713,"children":2714},{"class":372,"line":722},[2715],{"type":28,"tag":370,"props":2716,"children":2717},{"style":377},[2718],{"type":51,"value":728},{"type":28,"tag":370,"props":2720,"children":2721},{"class":372,"line":731},[2722],{"type":28,"tag":370,"props":2723,"children":2724},{"style":377},[2725],{"type":51,"value":737},{"type":28,"tag":370,"props":2727,"children":2728},{"class":372,"line":740},[2729],{"type":28,"tag":370,"props":2730,"children":2731},{"style":377},[2732],{"type":51,"value":643},{"type":28,"tag":370,"props":2734,"children":2735},{"class":372,"line":748},[2736,2740,2744,2748],{"type":28,"tag":370,"props":2737,"children":2738},{"style":386},[2739],{"type":51,"value":652},{"type":28,"tag":370,"props":2741,"children":2742},{"style":377},[2743],{"type":51,"value":394},{"type":28,"tag":370,"props":2745,"children":2746},{"style":397},[2747],{"type":51,"value":661},{"type":28,"tag":370,"props":2749,"children":2750},{"style":377},[2751],{"type":51,"value":405},{"type":28,"tag":370,"props":2753,"children":2754},{"class":372,"line":768},[2755,2759,2763,2767],{"type":28,"tag":370,"props":2756,"children":2757},{"style":386},[2758],{"type":51,"value":674},{"type":28,"tag":370,"props":2760,"children":2761},{"style":377},[2762],{"type":51,"value":394},{"type":28,"tag":370,"props":2764,"children":2765},{"style":397},[2766],{"type":51,"value":782},{"type":28,"tag":370,"props":2768,"children":2769},{"style":377},[2770],{"type":51,"value":405},{"type":28,"tag":370,"props":2772,"children":2773},{"class":372,"line":789},[2774,2778],{"type":28,"tag":370,"props":2775,"children":2776},{"style":386},[2777],{"type":51,"value":696},{"type":28,"tag":370,"props":2779,"children":2780},{"style":377},[2781],{"type":51,"value":463},{"type":28,"tag":370,"props":2783,"children":2784},{"class":372,"line":801},[2785,2789,2793],{"type":28,"tag":370,"props":2786,"children":2787},{"style":386},[2788],{"type":51,"value":709},{"type":28,"tag":370,"props":2790,"children":2791},{"style":377},[2792],{"type":51,"value":394},{"type":28,"tag":370,"props":2794,"children":2795},{"style":716},[2796],{"type":51,"value":719},{"type":28,"tag":370,"props":2798,"children":2799},{"class":372,"line":817},[2800],{"type":28,"tag":370,"props":2801,"children":2802},{"style":377},[2803],{"type":51,"value":728},{"type":28,"tag":370,"props":2805,"children":2806},{"class":372,"line":825},[2807],{"type":28,"tag":370,"props":2808,"children":2809},{"style":377},[2810],{"type":51,"value":737},{"type":28,"tag":370,"props":2812,"children":2813},{"class":372,"line":833},[2814],{"type":28,"tag":370,"props":2815,"children":2816},{"style":377},[2817],{"type":51,"value":643},{"type":28,"tag":370,"props":2819,"children":2820},{"class":372,"line":841},[2821,2825,2829,2833],{"type":28,"tag":370,"props":2822,"children":2823},{"style":386},[2824],{"type":51,"value":652},{"type":28,"tag":370,"props":2826,"children":2827},{"style":377},[2828],{"type":51,"value":394},{"type":28,"tag":370,"props":2830,"children":2831},{"style":397},[2832],{"type":51,"value":661},{"type":28,"tag":370,"props":2834,"children":2835},{"style":377},[2836],{"type":51,"value":405},{"type":28,"tag":370,"props":2838,"children":2839},{"class":372,"line":861},[2840,2844,2848,2852],{"type":28,"tag":370,"props":2841,"children":2842},{"style":386},[2843],{"type":51,"value":674},{"type":28,"tag":370,"props":2845,"children":2846},{"style":377},[2847],{"type":51,"value":394},{"type":28,"tag":370,"props":2849,"children":2850},{"style":397},[2851],{"type":51,"value":875},{"type":28,"tag":370,"props":2853,"children":2854},{"style":377},[2855],{"type":51,"value":405},{"type":28,"tag":370,"props":2857,"children":2858},{"class":372,"line":882},[2859,2863],{"type":28,"tag":370,"props":2860,"children":2861},{"style":386},[2862],{"type":51,"value":696},{"type":28,"tag":370,"props":2864,"children":2865},{"style":377},[2866],{"type":51,"value":463},{"type":28,"tag":370,"props":2868,"children":2869},{"class":372,"line":894},[2870,2874,2878],{"type":28,"tag":370,"props":2871,"children":2872},{"style":386},[2873],{"type":51,"value":709},{"type":28,"tag":370,"props":2875,"children":2876},{"style":377},[2877],{"type":51,"value":394},{"type":28,"tag":370,"props":2879,"children":2880},{"style":716},[2881],{"type":51,"value":719},{"type":28,"tag":370,"props":2883,"children":2884},{"class":372,"line":910},[2885],{"type":28,"tag":370,"props":2886,"children":2887},{"style":377},[2888],{"type":51,"value":728},{"type":28,"tag":370,"props":2890,"children":2891},{"class":372,"line":918},[2892],{"type":28,"tag":370,"props":2893,"children":2894},{"style":377},[2895],{"type":51,"value":737},{"type":28,"tag":370,"props":2897,"children":2899},{"class":2898,"line":360},[372,927],[2900],{"type":28,"tag":370,"props":2901,"children":2902},{"style":377},[2903],{"type":51,"value":643},{"type":28,"tag":370,"props":2905,"children":2907},{"class":2906,"line":361},[372,927],[2908,2912,2916,2921],{"type":28,"tag":370,"props":2909,"children":2910},{"style":386},[2911],{"type":51,"value":652},{"type":28,"tag":370,"props":2913,"children":2914},{"style":377},[2915],{"type":51,"value":394},{"type":28,"tag":370,"props":2917,"children":2918},{"style":397},[2919],{"type":51,"value":2920},"\"composer\"",{"type":28,"tag":370,"props":2922,"children":2923},{"style":377},[2924],{"type":51,"value":405},{"type":28,"tag":370,"props":2926,"children":2928},{"class":2927,"line":362},[372,927],[2929,2933,2937],{"type":28,"tag":370,"props":2930,"children":2931},{"style":386},[2932],{"type":51,"value":674},{"type":28,"tag":370,"props":2934,"children":2935},{"style":377},[2936],{"type":51,"value":394},{"type":28,"tag":370,"props":2938,"children":2939},{"style":397},[2940],{"type":51,"value":2941},"\"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n",{"type":28,"tag":370,"props":2943,"children":2945},{"class":2944,"line":363},[372,927],[2946],{"type":28,"tag":370,"props":2947,"children":2948},{"style":377},[2949],{"type":51,"value":979},{"type":28,"tag":370,"props":2951,"children":2952},{"class":372,"line":982},[2953],{"type":28,"tag":370,"props":2954,"children":2955},{"style":377},[2956],{"type":51,"value":988},{"type":28,"tag":370,"props":2958,"children":2959},{"class":372,"line":991},[2960,2964],{"type":28,"tag":370,"props":2961,"children":2962},{"style":386},[2963],{"type":51,"value":997},{"type":28,"tag":370,"props":2965,"children":2966},{"style":377},[2967],{"type":51,"value":463},{"type":28,"tag":370,"props":2969,"children":2970},{"class":372,"line":1004},[2971,2975],{"type":28,"tag":370,"props":2972,"children":2973},{"style":386},[2974],{"type":51,"value":1010},{"type":28,"tag":370,"props":2976,"children":2977},{"style":377},[2978],{"type":51,"value":463},{"type":28,"tag":370,"props":2980,"children":2981},{"class":372,"line":1017},[2982,2986,2990,2994,2998],{"type":28,"tag":370,"props":2983,"children":2984},{"style":386},[2985],{"type":51,"value":1023},{"type":28,"tag":370,"props":2987,"children":2988},{"style":1026},[2989],{"type":51,"value":1029},{"type":28,"tag":370,"props":2991,"children":2992},{"style":386},[2993],{"type":51,"value":1034},{"type":28,"tag":370,"props":2995,"children":2996},{"style":377},[2997],{"type":51,"value":394},{"type":28,"tag":370,"props":2999,"children":3000},{"style":397},[3001],{"type":51,"value":1043},{"type":28,"tag":370,"props":3003,"children":3004},{"class":372,"line":1046},[3005],{"type":28,"tag":370,"props":3006,"children":3007},{"style":377},[3008],{"type":51,"value":979},{"type":28,"tag":370,"props":3010,"children":3011},{"class":372,"line":1054},[3012],{"type":28,"tag":370,"props":3013,"children":3014},{"style":377},[3015],{"type":51,"value":620},{"type":28,"tag":370,"props":3017,"children":3018},{"class":372,"line":1062},[3019,3023,3027,3031],{"type":28,"tag":370,"props":3020,"children":3021},{"style":386},[3022],{"type":51,"value":1068},{"type":28,"tag":370,"props":3024,"children":3025},{"style":377},[3026],{"type":51,"value":394},{"type":28,"tag":370,"props":3028,"children":3029},{"style":716},[3030],{"type":51,"value":1077},{"type":28,"tag":370,"props":3032,"children":3033},{"style":377},[3034],{"type":51,"value":405},{"type":28,"tag":370,"props":3036,"children":3037},{"class":372,"line":1084},[3038,3042],{"type":28,"tag":370,"props":3039,"children":3040},{"style":386},[3041],{"type":51,"value":1090},{"type":28,"tag":370,"props":3043,"children":3044},{"style":377},[3045],{"type":51,"value":463},{"type":28,"tag":370,"props":3047,"children":3048},{"class":372,"line":1097},[3049,3053],{"type":28,"tag":370,"props":3050,"children":3051},{"style":386},[3052],{"type":51,"value":1103},{"type":28,"tag":370,"props":3054,"children":3055},{"style":377},[3056],{"type":51,"value":463},{"type":28,"tag":370,"props":3058,"children":3059},{"class":372,"line":1110},[3060,3064,3068,3072],{"type":28,"tag":370,"props":3061,"children":3062},{"style":386},[3063],{"type":51,"value":1116},{"type":28,"tag":370,"props":3065,"children":3066},{"style":377},[3067],{"type":51,"value":394},{"type":28,"tag":370,"props":3069,"children":3070},{"style":716},[3071],{"type":51,"value":1077},{"type":28,"tag":370,"props":3073,"children":3074},{"style":377},[3075],{"type":51,"value":405},{"type":28,"tag":370,"props":3077,"children":3078},{"class":372,"line":1131},[3079,3083,3087],{"type":28,"tag":370,"props":3080,"children":3081},{"style":386},[3082],{"type":51,"value":1137},{"type":28,"tag":370,"props":3084,"children":3085},{"style":377},[3086],{"type":51,"value":394},{"type":28,"tag":370,"props":3088,"children":3089},{"style":716},[3090],{"type":51,"value":719},{"type":28,"tag":370,"props":3092,"children":3093},{"class":372,"line":1148},[3094],{"type":28,"tag":370,"props":3095,"children":3096},{"style":377},[3097],{"type":51,"value":737},{"type":28,"tag":370,"props":3099,"children":3100},{"class":372,"line":1156},[3101,3105,3109,3113],{"type":28,"tag":370,"props":3102,"children":3103},{"style":386},[3104],{"type":51,"value":1162},{"type":28,"tag":370,"props":3106,"children":3107},{"style":377},[3108],{"type":51,"value":394},{"type":28,"tag":370,"props":3110,"children":3111},{"style":716},[3112],{"type":51,"value":1077},{"type":28,"tag":370,"props":3114,"children":3115},{"style":377},[3116],{"type":51,"value":405},{"type":28,"tag":370,"props":3118,"children":3119},{"class":372,"line":1177},[3120,3124,3128],{"type":28,"tag":370,"props":3121,"children":3122},{"style":386},[3123],{"type":51,"value":1183},{"type":28,"tag":370,"props":3125,"children":3126},{"style":377},[3127],{"type":51,"value":394},{"type":28,"tag":370,"props":3129,"children":3130},{"style":716},[3131],{"type":51,"value":719},{"type":28,"tag":370,"props":3133,"children":3134},{"class":372,"line":1194},[3135],{"type":28,"tag":370,"props":3136,"children":3137},{"style":377},[3138],{"type":51,"value":620},{"type":28,"tag":370,"props":3140,"children":3141},{"class":372,"line":1202},[3142,3146],{"type":28,"tag":370,"props":3143,"children":3144},{"style":386},[3145],{"type":51,"value":1208},{"type":28,"tag":370,"props":3147,"children":3148},{"style":377},[3149],{"type":51,"value":463},{"type":28,"tag":370,"props":3151,"children":3152},{"class":372,"line":1215},[3153,3157],{"type":28,"tag":370,"props":3154,"children":3155},{"style":386},[3156],{"type":51,"value":1221},{"type":28,"tag":370,"props":3158,"children":3159},{"style":377},[3160],{"type":51,"value":463},{"type":28,"tag":370,"props":3162,"children":3163},{"class":372,"line":1228},[3164,3168,3172],{"type":28,"tag":370,"props":3165,"children":3166},{"style":386},[3167],{"type":51,"value":1234},{"type":28,"tag":370,"props":3169,"children":3170},{"style":377},[3171],{"type":51,"value":394},{"type":28,"tag":370,"props":3173,"children":3174},{"style":397},[3175],{"type":51,"value":1243},{"type":28,"tag":370,"props":3177,"children":3178},{"class":372,"line":1246},[3179],{"type":28,"tag":370,"props":3180,"children":3181},{"style":377},[3182],{"type":51,"value":737},{"type":28,"tag":370,"props":3184,"children":3185},{"class":372,"line":1254},[3186,3190],{"type":28,"tag":370,"props":3187,"children":3188},{"style":386},[3189],{"type":51,"value":1260},{"type":28,"tag":370,"props":3191,"children":3192},{"style":377},[3193],{"type":51,"value":634},{"type":28,"tag":370,"props":3195,"children":3196},{"class":372,"line":1267},[3197],{"type":28,"tag":370,"props":3198,"children":3199},{"style":397},[3200],{"type":51,"value":1273},{"type":28,"tag":370,"props":3202,"children":3203},{"class":372,"line":1276},[3204],{"type":28,"tag":370,"props":3205,"children":3206},{"style":377},[3207],{"type":51,"value":1282},{"type":28,"tag":370,"props":3209,"children":3210},{"class":372,"line":1285},[3211,3215],{"type":28,"tag":370,"props":3212,"children":3213},{"style":386},[3214],{"type":51,"value":1291},{"type":28,"tag":370,"props":3216,"children":3217},{"style":377},[3218],{"type":51,"value":634},{"type":28,"tag":370,"props":3220,"children":3221},{"class":372,"line":1298},[3222],{"type":28,"tag":370,"props":3223,"children":3224},{"style":397},[3225],{"type":51,"value":1273},{"type":28,"tag":370,"props":3227,"children":3228},{"class":372,"line":1306},[3229],{"type":28,"tag":370,"props":3230,"children":3231},{"style":377},[3232],{"type":51,"value":1312},{"type":28,"tag":370,"props":3234,"children":3235},{"class":372,"line":1315},[3236],{"type":28,"tag":370,"props":3237,"children":3238},{"style":377},[3239],{"type":51,"value":620},{"type":28,"tag":370,"props":3241,"children":3242},{"class":372,"line":1323},[3243,3247],{"type":28,"tag":370,"props":3244,"children":3245},{"style":386},[3246],{"type":51,"value":1329},{"type":28,"tag":370,"props":3248,"children":3249},{"style":377},[3250],{"type":51,"value":463},{"type":28,"tag":370,"props":3252,"children":3253},{"class":372,"line":1336},[3254,3258],{"type":28,"tag":370,"props":3255,"children":3256},{"style":386},[3257],{"type":51,"value":1342},{"type":28,"tag":370,"props":3259,"children":3260},{"style":377},[3261],{"type":51,"value":463},{"type":28,"tag":370,"props":3263,"children":3264},{"class":372,"line":1349},[3265,3269,3273,3277],{"type":28,"tag":370,"props":3266,"children":3267},{"style":386},[3268],{"type":51,"value":1355},{"type":28,"tag":370,"props":3270,"children":3271},{"style":377},[3272],{"type":51,"value":394},{"type":28,"tag":370,"props":3274,"children":3275},{"style":716},[3276],{"type":51,"value":1077},{"type":28,"tag":370,"props":3278,"children":3279},{"style":377},[3280],{"type":51,"value":405},{"type":28,"tag":370,"props":3282,"children":3283},{"class":372,"line":1370},[3284,3288],{"type":28,"tag":370,"props":3285,"children":3286},{"style":386},[3287],{"type":51,"value":1376},{"type":28,"tag":370,"props":3289,"children":3290},{"style":377},[3291],{"type":51,"value":634},{"type":28,"tag":370,"props":3293,"children":3294},{"class":372,"line":1383},[3295,3299],{"type":28,"tag":370,"props":3296,"children":3297},{"style":397},[3298],{"type":51,"value":1389},{"type":28,"tag":370,"props":3300,"children":3301},{"style":377},[3302],{"type":51,"value":405},{"type":28,"tag":370,"props":3304,"children":3305},{"class":372,"line":1396},[3306],{"type":28,"tag":370,"props":3307,"children":3308},{"style":397},[3309],{"type":51,"value":1402},{"type":28,"tag":370,"props":3311,"children":3312},{"class":372,"line":1405},[3313],{"type":28,"tag":370,"props":3314,"children":3315},{"style":377},[3316],{"type":51,"value":1411},{"type":28,"tag":370,"props":3318,"children":3319},{"class":372,"line":1414},[3320],{"type":28,"tag":370,"props":3321,"children":3322},{"style":377},[3323],{"type":51,"value":979},{"type":28,"tag":370,"props":3325,"children":3326},{"class":372,"line":1422},[3327],{"type":28,"tag":370,"props":3328,"children":3329},{"style":377},[3330],{"type":51,"value":1428},{"type":28,"tag":370,"props":3332,"children":3333},{"class":372,"line":1431},[3334],{"type":28,"tag":370,"props":3335,"children":3336},{"style":377},[3337],{"type":51,"value":1437},{"type":28,"tag":47,"props":3339,"children":3340},{},[3341],{"type":51,"value":3342},"oder über das CLI:",{"type":28,"tag":354,"props":3344,"children":3346},{"className":1445,"code":3345,"language":1447,"meta":7,"style":7},"composer config repositories.\u003Cgroup_id> composer https://\u003CDOMAIN-NAME>/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\n",[3347],{"type":28,"tag":290,"props":3348,"children":3349},{"__ignoreMap":7},[3350],{"type":28,"tag":370,"props":3351,"children":3352},{"class":372,"line":373},[3353,3357,3362,3367,3373,3378,3383,3388,3393,3398,3402,3407,3412,3416,3421,3425,3429,3433,3437],{"type":28,"tag":370,"props":3354,"children":3355},{"style":1457},[3356],{"type":51,"value":350},{"type":28,"tag":370,"props":3358,"children":3359},{"style":1462},[3360],{"type":51,"value":3361}," config",{"type":28,"tag":370,"props":3363,"children":3364},{"style":1462},[3365],{"type":51,"value":3366}," repositories.",{"type":28,"tag":370,"props":3368,"children":3370},{"style":3369},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[3371],{"type":51,"value":3372},"\u003C",{"type":28,"tag":370,"props":3374,"children":3375},{"style":1462},[3376],{"type":51,"value":3377},"group_i",{"type":28,"tag":370,"props":3379,"children":3380},{"style":377},[3381],{"type":51,"value":3382},"d",{"type":28,"tag":370,"props":3384,"children":3385},{"style":3369},[3386],{"type":51,"value":3387},">",{"type":28,"tag":370,"props":3389,"children":3390},{"style":1462},[3391],{"type":51,"value":3392}," composer",{"type":28,"tag":370,"props":3394,"children":3395},{"style":1462},[3396],{"type":51,"value":3397}," https://",{"type":28,"tag":370,"props":3399,"children":3400},{"style":3369},[3401],{"type":51,"value":3372},{"type":28,"tag":370,"props":3403,"children":3404},{"style":1462},[3405],{"type":51,"value":3406},"DOMAIN-NAM",{"type":28,"tag":370,"props":3408,"children":3409},{"style":377},[3410],{"type":51,"value":3411},"E",{"type":28,"tag":370,"props":3413,"children":3414},{"style":3369},[3415],{"type":51,"value":3387},{"type":28,"tag":370,"props":3417,"children":3418},{"style":1462},[3419],{"type":51,"value":3420},"/api/v4/group/",{"type":28,"tag":370,"props":3422,"children":3423},{"style":3369},[3424],{"type":51,"value":3372},{"type":28,"tag":370,"props":3426,"children":3427},{"style":1462},[3428],{"type":51,"value":3377},{"type":28,"tag":370,"props":3430,"children":3431},{"style":377},[3432],{"type":51,"value":3382},{"type":28,"tag":370,"props":3434,"children":3435},{"style":3369},[3436],{"type":51,"value":3387},{"type":28,"tag":370,"props":3438,"children":3439},{"style":1462},[3440],{"type":51,"value":3441},"/-/packages/composer/packages.json\n",{"type":28,"tag":47,"props":3443,"children":3444},{},[3445],{"type":51,"value":3446},"Und die GitLab-Anmeldeinformationen einrichten:",{"type":28,"tag":354,"props":3448,"children":3450},{"className":1445,"code":3449,"language":1447,"meta":7,"style":7},"composer config gitlab-token.\u003CDOMAIN-NAME> \u003Cpersonal_access_token>\n",[3451],{"type":28,"tag":290,"props":3452,"children":3453},{"__ignoreMap":7},[3454],{"type":28,"tag":370,"props":3455,"children":3456},{"class":372,"line":373},[3457,3461,3465,3470,3474,3478,3482,3486,3491,3496,3501],{"type":28,"tag":370,"props":3458,"children":3459},{"style":1457},[3460],{"type":51,"value":350},{"type":28,"tag":370,"props":3462,"children":3463},{"style":1462},[3464],{"type":51,"value":3361},{"type":28,"tag":370,"props":3466,"children":3467},{"style":1462},[3468],{"type":51,"value":3469}," gitlab-token.",{"type":28,"tag":370,"props":3471,"children":3472},{"style":3369},[3473],{"type":51,"value":3372},{"type":28,"tag":370,"props":3475,"children":3476},{"style":1462},[3477],{"type":51,"value":3406},{"type":28,"tag":370,"props":3479,"children":3480},{"style":377},[3481],{"type":51,"value":3411},{"type":28,"tag":370,"props":3483,"children":3484},{"style":3369},[3485],{"type":51,"value":3387},{"type":28,"tag":370,"props":3487,"children":3488},{"style":3369},[3489],{"type":51,"value":3490}," \u003C",{"type":28,"tag":370,"props":3492,"children":3493},{"style":1462},[3494],{"type":51,"value":3495},"personal_access_toke",{"type":28,"tag":370,"props":3497,"children":3498},{"style":377},[3499],{"type":51,"value":3500},"n",{"type":28,"tag":370,"props":3502,"children":3503},{"style":3369},[3504],{"type":51,"value":3505},">\n",{"type":28,"tag":47,"props":3507,"children":3508},{},[3509,3511,3516],{"type":51,"value":3510},"Mehr über diesen Prozess in der ",{"type":28,"tag":261,"props":3512,"children":3514},{"href":3513},"https://docs.gitlab.com/user/packages/composer_repository/#install-a-composer-package",[3515],{"type":51,"value":266},{"type":51,"value":2353},{"type":28,"tag":47,"props":3518,"children":3519},{},[3520],{"type":51,"value":3521},"Jetzt installieren wir unser Paket wie gewohnt:",{"type":28,"tag":354,"props":3523,"children":3524},{"className":1445,"code":1446,"language":1447,"meta":7,"style":7},[3525],{"type":28,"tag":290,"props":3526,"children":3527},{"__ignoreMap":7},[3528],{"type":28,"tag":370,"props":3529,"children":3530},{"class":372,"line":373},[3531,3535,3539],{"type":28,"tag":370,"props":3532,"children":3533},{"style":1457},[3534],{"type":51,"value":350},{"type":28,"tag":370,"props":3536,"children":3537},{"style":1462},[3538],{"type":51,"value":1465},{"type":28,"tag":370,"props":3540,"children":3541},{"style":1462},[3542],{"type":51,"value":1470},{"type":28,"tag":354,"props":3544,"children":3546},{"className":2184,"code":3545,"language":2186,"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",[3547],{"type":28,"tag":290,"props":3548,"children":3549},{"__ignoreMap":7},[3550,3557,3564,3571,3578,3585,3592,3599,3606,3613,3621,3629,3636,3643,3650,3657,3664,3671],{"type":28,"tag":370,"props":3551,"children":3552},{"class":372,"line":373},[3553],{"type":28,"tag":370,"props":3554,"children":3555},{},[3556],{"type":51,"value":1536},{"type":28,"tag":370,"props":3558,"children":3559},{"class":372,"line":120},[3560],{"type":28,"tag":370,"props":3561,"children":3562},{},[3563],{"type":51,"value":1544},{"type":28,"tag":370,"props":3565,"children":3566},{"class":372,"line":408},[3567],{"type":28,"tag":370,"props":3568,"children":3569},{},[3570],{"type":51,"value":2213},{"type":28,"tag":370,"props":3572,"children":3573},{"class":372,"line":430},[3574],{"type":28,"tag":370,"props":3575,"children":3576},{},[3577],{"type":51,"value":2221},{"type":28,"tag":370,"props":3579,"children":3580},{"class":372,"line":452},[3581],{"type":28,"tag":370,"props":3582,"children":3583},{},[3584],{"type":51,"value":1568},{"type":28,"tag":370,"props":3586,"children":3587},{"class":372,"line":466},[3588],{"type":28,"tag":370,"props":3589,"children":3590},{},[3591],{"type":51,"value":2236},{"type":28,"tag":370,"props":3593,"children":3594},{"class":372,"line":488},[3595],{"type":28,"tag":370,"props":3596,"children":3597},{},[3598],{"type":51,"value":1584},{"type":28,"tag":370,"props":3600,"children":3601},{"class":372,"line":510},[3602],{"type":28,"tag":370,"props":3603,"children":3604},{},[3605],{"type":51,"value":1592},{"type":28,"tag":370,"props":3607,"children":3608},{"class":372,"line":532},[3609],{"type":28,"tag":370,"props":3610,"children":3611},{},[3612],{"type":51,"value":1600},{"type":28,"tag":370,"props":3614,"children":3615},{"class":372,"line":554},[3616],{"type":28,"tag":370,"props":3617,"children":3618},{},[3619],{"type":51,"value":3620},"  - Downloading acme/sample-plugin (1.0.0)\n",{"type":28,"tag":370,"props":3622,"children":3623},{"class":372,"line":575},[3624],{"type":28,"tag":370,"props":3625,"children":3626},{},[3627],{"type":51,"value":3628},"  - Installing acme/sample-plugin (1.0.0): Extracting archive\n",{"type":28,"tag":370,"props":3630,"children":3631},{"class":372,"line":596},[3632],{"type":28,"tag":370,"props":3633,"children":3634},{},[3635],{"type":51,"value":1624},{"type":28,"tag":370,"props":3637,"children":3638},{"class":372,"line":614},[3639],{"type":28,"tag":370,"props":3640,"children":3641},{"emptyLinePlaceholder":133},[3642],{"type":51,"value":1632},{"type":28,"tag":370,"props":3644,"children":3645},{"class":372,"line":623},[3646],{"type":28,"tag":370,"props":3647,"children":3648},{},[3649],{"type":51,"value":1640},{"type":28,"tag":370,"props":3651,"children":3652},{"class":372,"line":637},[3653],{"type":28,"tag":370,"props":3654,"children":3655},{"emptyLinePlaceholder":133},[3656],{"type":51,"value":1632},{"type":28,"tag":370,"props":3658,"children":3659},{"class":372,"line":646},[3660],{"type":28,"tag":370,"props":3661,"children":3662},{},[3663],{"type":51,"value":1655},{"type":28,"tag":370,"props":3665,"children":3666},{"class":372,"line":668},[3667],{"type":28,"tag":370,"props":3668,"children":3669},{"emptyLinePlaceholder":133},[3670],{"type":51,"value":1632},{"type":28,"tag":370,"props":3672,"children":3673},{"class":372,"line":690},[3674],{"type":28,"tag":370,"props":3675,"children":3676},{},[3677],{"type":51,"value":2323},{"type":28,"tag":47,"props":3679,"children":3680},{},[3681],{"type":28,"tag":370,"props":3682,"children":3685},{"className":3683},[3684],"text-h2",[3686],{"type":51,"value":3687},"Großartig. Direkter Paket-Download!",{"type":28,"tag":89,"props":3689,"children":3691},{"id":3690},"warum-die-mühe",[3692],{"type":51,"value":3693},"Warum die Mühe?",{"type":28,"tag":47,"props":3695,"children":3696},{},[3697,3699,3705,3707,3713],{"type":51,"value":3698},"Das ist eine sehr gute Frage. Der Hauptgrund ist das Paket-Caching. Bei der Ausführung in einer ",{"type":28,"tag":290,"props":3700,"children":3702},{"className":3701},[],[3703],{"type":51,"value":3704},"CI/CD",{"type":51,"value":3706},"-Umgebung oder einem ",{"type":28,"tag":290,"props":3708,"children":3710},{"className":3709},[],[3711],{"type":51,"value":3712},"docker build",{"type":51,"value":3714}," kann das Caching von Paketen einen massiven Leistungsschub bewirken.",{"type":28,"tag":101,"props":3716,"children":3717},{},[],{"type":28,"tag":3719,"props":3720,"children":3721},"hr",{},[],{"type":28,"tag":68,"props":3723,"children":3725},{"id":3724},"release-pipeline",[3726],{"type":51,"value":3727},"Release-Pipeline",{"type":28,"tag":89,"props":3729,"children":3731},{"id":3730},"mit-manuellem-tagging",[3732],{"type":51,"value":3733},"Mit manuellem Tagging",{"type":28,"tag":47,"props":3735,"children":3736},{},[3737],{"type":51,"value":3738},"Dies ist eine einfache Pipeline, in der ein Git-Tag manuell erstellt und pushen wird.",{"type":28,"tag":47,"props":3740,"children":3741},{},[3742,3744,3749,3750,3755],{"type":51,"value":3743},"Bitte sicherstellen, dass Sie die ",{"type":28,"tag":290,"props":3745,"children":3747},{"className":3746},[],[3748],{"type":51,"value":1702},{"type":51,"value":1704},{"type":28,"tag":290,"props":3751,"children":3753},{"className":3752},[],[3754],{"type":51,"value":1710},{"type":51,"value":3756}," immer aktualisiert wird.",{"type":28,"tag":354,"props":3758,"children":3760},{"className":1445,"code":3759,"language":1447,"meta":7,"style":7},"git tag \u003Cversion>\ngit push --tags\n",[3761],{"type":28,"tag":290,"props":3762,"children":3763},{"__ignoreMap":7},[3764,3792],{"type":28,"tag":370,"props":3765,"children":3766},{"class":372,"line":373},[3767,3771,3775,3779,3784,3788],{"type":28,"tag":370,"props":3768,"children":3769},{"style":1457},[3770],{"type":51,"value":1666},{"type":28,"tag":370,"props":3772,"children":3773},{"style":1462},[3774],{"type":51,"value":2133},{"type":28,"tag":370,"props":3776,"children":3777},{"style":3369},[3778],{"type":51,"value":3490},{"type":28,"tag":370,"props":3780,"children":3781},{"style":1462},[3782],{"type":51,"value":3783},"versio",{"type":28,"tag":370,"props":3785,"children":3786},{"style":377},[3787],{"type":51,"value":3500},{"type":28,"tag":370,"props":3789,"children":3790},{"style":3369},[3791],{"type":51,"value":3505},{"type":28,"tag":370,"props":3793,"children":3794},{"class":372,"line":120},[3795,3799,3803],{"type":28,"tag":370,"props":3796,"children":3797},{"style":1457},[3798],{"type":51,"value":1666},{"type":28,"tag":370,"props":3800,"children":3801},{"style":1462},[3802],{"type":51,"value":2150},{"type":28,"tag":370,"props":3804,"children":3805},{"style":716},[3806],{"type":51,"value":2155},{"type":28,"tag":354,"props":3808,"children":3812},{"className":3809,"code":3810,"filename":3811,"language":141,"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",[3813],{"type":28,"tag":290,"props":3814,"children":3815},{"__ignoreMap":7},[3816,3830,3843,3850,3862,3879,3895,3907,3920,3937,3949],{"type":28,"tag":370,"props":3817,"children":3818},{"class":372,"line":373},[3819,3825],{"type":28,"tag":370,"props":3820,"children":3822},{"style":3821},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[3823],{"type":51,"value":3824},"stages",{"type":28,"tag":370,"props":3826,"children":3827},{"style":377},[3828],{"type":51,"value":3829},":\n",{"type":28,"tag":370,"props":3831,"children":3832},{"class":372,"line":120},[3833,3838],{"type":28,"tag":370,"props":3834,"children":3835},{"style":377},[3836],{"type":51,"value":3837},"  - ",{"type":28,"tag":370,"props":3839,"children":3840},{"style":1462},[3841],{"type":51,"value":3842},"release\n",{"type":28,"tag":370,"props":3844,"children":3845},{"class":372,"line":408},[3846],{"type":28,"tag":370,"props":3847,"children":3848},{"emptyLinePlaceholder":133},[3849],{"type":51,"value":1632},{"type":28,"tag":370,"props":3851,"children":3852},{"class":372,"line":430},[3853,3858],{"type":28,"tag":370,"props":3854,"children":3855},{"style":3821},[3856],{"type":51,"value":3857},"deploy",{"type":28,"tag":370,"props":3859,"children":3860},{"style":377},[3861],{"type":51,"value":3829},{"type":28,"tag":370,"props":3863,"children":3864},{"class":372,"line":452},[3865,3870,3874],{"type":28,"tag":370,"props":3866,"children":3867},{"style":3821},[3868],{"type":51,"value":3869},"  image",{"type":28,"tag":370,"props":3871,"children":3872},{"style":377},[3873],{"type":51,"value":394},{"type":28,"tag":370,"props":3875,"children":3876},{"style":1462},[3877],{"type":51,"value":3878},"alpine/curl\n",{"type":28,"tag":370,"props":3880,"children":3881},{"class":372,"line":466},[3882,3887,3891],{"type":28,"tag":370,"props":3883,"children":3884},{"style":3821},[3885],{"type":51,"value":3886},"  stage",{"type":28,"tag":370,"props":3888,"children":3889},{"style":377},[3890],{"type":51,"value":394},{"type":28,"tag":370,"props":3892,"children":3893},{"style":1462},[3894],{"type":51,"value":3842},{"type":28,"tag":370,"props":3896,"children":3897},{"class":372,"line":488},[3898,3903],{"type":28,"tag":370,"props":3899,"children":3900},{"style":3821},[3901],{"type":51,"value":3902},"  script",{"type":28,"tag":370,"props":3904,"children":3905},{"style":377},[3906],{"type":51,"value":3829},{"type":28,"tag":370,"props":3908,"children":3909},{"class":372,"line":510},[3910,3915],{"type":28,"tag":370,"props":3911,"children":3912},{"style":377},[3913],{"type":51,"value":3914},"    - ",{"type":28,"tag":370,"props":3916,"children":3917},{"style":1462},[3918],{"type":51,"value":3919},"'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":28,"tag":370,"props":3921,"children":3922},{"class":372,"line":532},[3923,3928,3932],{"type":28,"tag":370,"props":3924,"children":3925},{"style":3821},[3926],{"type":51,"value":3927},"  environment",{"type":28,"tag":370,"props":3929,"children":3930},{"style":377},[3931],{"type":51,"value":394},{"type":28,"tag":370,"props":3933,"children":3934},{"style":1462},[3935],{"type":51,"value":3936},"production\n",{"type":28,"tag":370,"props":3938,"children":3939},{"class":372,"line":554},[3940,3945],{"type":28,"tag":370,"props":3941,"children":3942},{"style":3821},[3943],{"type":51,"value":3944},"  rules",{"type":28,"tag":370,"props":3946,"children":3947},{"style":377},[3948],{"type":51,"value":3829},{"type":28,"tag":370,"props":3950,"children":3951},{"class":372,"line":575},[3952,3957,3961],{"type":28,"tag":370,"props":3953,"children":3954},{"style":3821},[3955],{"type":51,"value":3956},"    if",{"type":28,"tag":370,"props":3958,"children":3959},{"style":377},[3960],{"type":51,"value":394},{"type":28,"tag":370,"props":3962,"children":3963},{"style":1462},[3964],{"type":51,"value":3965},"$CI_COMMIT_TAG\n",{"type":28,"tag":89,"props":3967,"children":3969},{"id":3968},"mit-semantic-release",[3970],{"type":51,"value":3971},"Mit semantic-release",{"type":28,"tag":47,"props":3973,"children":3974},{},[3975],{"type":51,"value":3976},"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":28,"tag":47,"props":3978,"children":3979},{},[3980,3986],{"type":28,"tag":261,"props":3981,"children":3983},{"href":3982},"https://github.com/semantic-release/semantic-release",[3984],{"type":51,"value":3985},"semantic-release",{"type":51,"value":3987}," automatisiert den gesamten Workflow für Paket-Releases.",{"type":28,"tag":47,"props":3989,"children":3990},{},[3991,3993,3999],{"type":51,"value":3992},"Bitte befolgen Sie der ",{"type":28,"tag":261,"props":3994,"children":3996},{"href":3995},"https://github.com/semantic-release/gitlab?tab=readme-ov-file#gitlab-authentication",[3997],{"type":51,"value":3998},"Anleitung zur GitLab-Authentifizierung",{"type":51,"value":4000},", bevor Sie weiterlesen.",{"type":28,"tag":354,"props":4002,"children":4005},{"className":3809,"code":4003,"filename":4004,"language":141,"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",[4006],{"type":28,"tag":290,"props":4007,"children":4008},{"__ignoreMap":7},[4009,4020,4031,4038,4050,4065,4076,4093,4116,4132,4143,4155,4166,4187,4204],{"type":28,"tag":370,"props":4010,"children":4011},{"class":372,"line":373},[4012,4016],{"type":28,"tag":370,"props":4013,"children":4014},{"style":3821},[4015],{"type":51,"value":3824},{"type":28,"tag":370,"props":4017,"children":4018},{"style":377},[4019],{"type":51,"value":3829},{"type":28,"tag":370,"props":4021,"children":4022},{"class":372,"line":120},[4023,4027],{"type":28,"tag":370,"props":4024,"children":4025},{"style":377},[4026],{"type":51,"value":3837},{"type":28,"tag":370,"props":4028,"children":4029},{"style":1462},[4030],{"type":51,"value":3842},{"type":28,"tag":370,"props":4032,"children":4033},{"class":372,"line":408},[4034],{"type":28,"tag":370,"props":4035,"children":4036},{"emptyLinePlaceholder":133},[4037],{"type":51,"value":1632},{"type":28,"tag":370,"props":4039,"children":4040},{"class":372,"line":430},[4041,4046],{"type":28,"tag":370,"props":4042,"children":4043},{"style":3821},[4044],{"type":51,"value":4045},"release",{"type":28,"tag":370,"props":4047,"children":4048},{"style":377},[4049],{"type":51,"value":3829},{"type":28,"tag":370,"props":4051,"children":4052},{"class":372,"line":452},[4053,4057,4061],{"type":28,"tag":370,"props":4054,"children":4055},{"style":3821},[4056],{"type":51,"value":3886},{"type":28,"tag":370,"props":4058,"children":4059},{"style":377},[4060],{"type":51,"value":394},{"type":28,"tag":370,"props":4062,"children":4063},{"style":1462},[4064],{"type":51,"value":3842},{"type":28,"tag":370,"props":4066,"children":4067},{"class":372,"line":466},[4068,4072],{"type":28,"tag":370,"props":4069,"children":4070},{"style":3821},[4071],{"type":51,"value":3869},{"type":28,"tag":370,"props":4073,"children":4074},{"style":377},[4075],{"type":51,"value":3829},{"type":28,"tag":370,"props":4077,"children":4078},{"class":372,"line":488},[4079,4084,4088],{"type":28,"tag":370,"props":4080,"children":4081},{"style":3821},[4082],{"type":51,"value":4083},"    name",{"type":28,"tag":370,"props":4085,"children":4086},{"style":377},[4087],{"type":51,"value":394},{"type":28,"tag":370,"props":4089,"children":4090},{"style":1462},[4091],{"type":51,"value":4092},"ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n",{"type":28,"tag":370,"props":4094,"children":4095},{"class":372,"line":510},[4096,4101,4106,4111],{"type":28,"tag":370,"props":4097,"children":4098},{"style":3821},[4099],{"type":51,"value":4100},"    entrypoint",{"type":28,"tag":370,"props":4102,"children":4103},{"style":377},[4104],{"type":51,"value":4105},": [",{"type":28,"tag":370,"props":4107,"children":4108},{"style":1462},[4109],{"type":51,"value":4110},"\"\"",{"type":28,"tag":370,"props":4112,"children":4113},{"style":377},[4114],{"type":51,"value":4115},"]\n",{"type":28,"tag":370,"props":4117,"children":4118},{"class":372,"line":532},[4119,4124,4128],{"type":28,"tag":370,"props":4120,"children":4121},{"style":3821},[4122],{"type":51,"value":4123},"  interruptible",{"type":28,"tag":370,"props":4125,"children":4126},{"style":377},[4127],{"type":51,"value":394},{"type":28,"tag":370,"props":4129,"children":4130},{"style":716},[4131],{"type":51,"value":719},{"type":28,"tag":370,"props":4133,"children":4134},{"class":372,"line":554},[4135,4139],{"type":28,"tag":370,"props":4136,"children":4137},{"style":3821},[4138],{"type":51,"value":3902},{"type":28,"tag":370,"props":4140,"children":4141},{"style":377},[4142],{"type":51,"value":3829},{"type":28,"tag":370,"props":4144,"children":4145},{"class":372,"line":575},[4146,4150],{"type":28,"tag":370,"props":4147,"children":4148},{"style":377},[4149],{"type":51,"value":3914},{"type":28,"tag":370,"props":4151,"children":4152},{"style":1462},[4153],{"type":51,"value":4154},"/container-entrypoint.sh\n",{"type":28,"tag":370,"props":4156,"children":4157},{"class":372,"line":596},[4158,4162],{"type":28,"tag":370,"props":4159,"children":4160},{"style":3821},[4161],{"type":51,"value":3944},{"type":28,"tag":370,"props":4163,"children":4164},{"style":377},[4165],{"type":51,"value":3829},{"type":28,"tag":370,"props":4167,"children":4168},{"class":372,"line":614},[4169,4173,4178,4182],{"type":28,"tag":370,"props":4170,"children":4171},{"style":377},[4172],{"type":51,"value":3914},{"type":28,"tag":370,"props":4174,"children":4175},{"style":3821},[4176],{"type":51,"value":4177},"if",{"type":28,"tag":370,"props":4179,"children":4180},{"style":377},[4181],{"type":51,"value":394},{"type":28,"tag":370,"props":4183,"children":4184},{"style":1462},[4185],{"type":51,"value":4186},"$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n",{"type":28,"tag":370,"props":4188,"children":4189},{"class":372,"line":623},[4190,4195,4199],{"type":28,"tag":370,"props":4191,"children":4192},{"style":3821},[4193],{"type":51,"value":4194},"      when",{"type":28,"tag":370,"props":4196,"children":4197},{"style":377},[4198],{"type":51,"value":394},{"type":28,"tag":370,"props":4200,"children":4201},{"style":1462},[4202],{"type":51,"value":4203},"never\n",{"type":28,"tag":370,"props":4205,"children":4206},{"class":372,"line":637},[4207,4211,4215,4219],{"type":28,"tag":370,"props":4208,"children":4209},{"style":377},[4210],{"type":51,"value":3914},{"type":28,"tag":370,"props":4212,"children":4213},{"style":3821},[4214],{"type":51,"value":4177},{"type":28,"tag":370,"props":4216,"children":4217},{"style":377},[4218],{"type":51,"value":394},{"type":28,"tag":370,"props":4220,"children":4221},{"style":1462},[4222],{"type":51,"value":4223},"$CI_COMMIT_BRANCH\n",{"type":28,"tag":354,"props":4225,"children":4228},{"className":356,"code":4226,"filename":4227,"language":364,"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",[4229],{"type":28,"tag":290,"props":4230,"children":4231},{"__ignoreMap":7},[4232,4239,4251,4263,4271,4283,4291,4303,4311,4333,4380,4422,4430,4438,4445,4452,4459,4471,4478,4498,4525,4532,4539,4546,4558,4565,4600,4607,4614,4622],{"type":28,"tag":370,"props":4233,"children":4234},{"class":372,"line":373},[4235],{"type":28,"tag":370,"props":4236,"children":4237},{"style":377},[4238],{"type":51,"value":380},{"type":28,"tag":370,"props":4240,"children":4241},{"class":372,"line":120},[4242,4247],{"type":28,"tag":370,"props":4243,"children":4244},{"style":386},[4245],{"type":51,"value":4246},"  \"plugins\"",{"type":28,"tag":370,"props":4248,"children":4249},{"style":377},[4250],{"type":51,"value":634},{"type":28,"tag":370,"props":4252,"children":4253},{"class":372,"line":408},[4254,4259],{"type":28,"tag":370,"props":4255,"children":4256},{"style":397},[4257],{"type":51,"value":4258},"    \"@semantic-release/commit-analyzer\"",{"type":28,"tag":370,"props":4260,"children":4261},{"style":377},[4262],{"type":51,"value":405},{"type":28,"tag":370,"props":4264,"children":4265},{"class":372,"line":430},[4266],{"type":28,"tag":370,"props":4267,"children":4268},{"style":377},[4269],{"type":51,"value":4270},"    [\n",{"type":28,"tag":370,"props":4272,"children":4273},{"class":372,"line":452},[4274,4279],{"type":28,"tag":370,"props":4275,"children":4276},{"style":397},[4277],{"type":51,"value":4278},"      \"semantic-release-replace-plugin\"",{"type":28,"tag":370,"props":4280,"children":4281},{"style":377},[4282],{"type":51,"value":405},{"type":28,"tag":370,"props":4284,"children":4285},{"class":372,"line":466},[4286],{"type":28,"tag":370,"props":4287,"children":4288},{"style":377},[4289],{"type":51,"value":4290},"      {\n",{"type":28,"tag":370,"props":4292,"children":4293},{"class":372,"line":488},[4294,4299],{"type":28,"tag":370,"props":4295,"children":4296},{"style":386},[4297],{"type":51,"value":4298},"        \"replacements\"",{"type":28,"tag":370,"props":4300,"children":4301},{"style":377},[4302],{"type":51,"value":634},{"type":28,"tag":370,"props":4304,"children":4305},{"class":372,"line":510},[4306],{"type":28,"tag":370,"props":4307,"children":4308},{"style":377},[4309],{"type":51,"value":4310},"          {\n",{"type":28,"tag":370,"props":4312,"children":4313},{"class":372,"line":532},[4314,4319,4323,4328],{"type":28,"tag":370,"props":4315,"children":4316},{"style":386},[4317],{"type":51,"value":4318},"            \"files\"",{"type":28,"tag":370,"props":4320,"children":4321},{"style":377},[4322],{"type":51,"value":4105},{"type":28,"tag":370,"props":4324,"children":4325},{"style":397},[4326],{"type":51,"value":4327},"\"composer.json\"",{"type":28,"tag":370,"props":4329,"children":4330},{"style":377},[4331],{"type":51,"value":4332},"],\n",{"type":28,"tag":370,"props":4334,"children":4335},{"class":372,"line":554},[4336,4341,4345,4350,4355,4359,4363,4368,4372,4376],{"type":28,"tag":370,"props":4337,"children":4338},{"style":386},[4339],{"type":51,"value":4340},"            \"from\"",{"type":28,"tag":370,"props":4342,"children":4343},{"style":377},[4344],{"type":51,"value":394},{"type":28,"tag":370,"props":4346,"children":4347},{"style":397},[4348],{"type":51,"value":4349},"\"version",{"type":28,"tag":370,"props":4351,"children":4352},{"style":716},[4353],{"type":51,"value":4354},"\\\"",{"type":28,"tag":370,"props":4356,"children":4357},{"style":397},[4358],{"type":51,"value":394},{"type":28,"tag":370,"props":4360,"children":4361},{"style":716},[4362],{"type":51,"value":4354},{"type":28,"tag":370,"props":4364,"children":4365},{"style":397},[4366],{"type":51,"value":4367},".*",{"type":28,"tag":370,"props":4369,"children":4370},{"style":716},[4371],{"type":51,"value":4354},{"type":28,"tag":370,"props":4373,"children":4374},{"style":397},[4375],{"type":51,"value":1034},{"type":28,"tag":370,"props":4377,"children":4378},{"style":377},[4379],{"type":51,"value":405},{"type":28,"tag":370,"props":4381,"children":4382},{"class":372,"line":575},[4383,4388,4392,4396,4400,4404,4408,4413,4417],{"type":28,"tag":370,"props":4384,"children":4385},{"style":386},[4386],{"type":51,"value":4387},"            \"to\"",{"type":28,"tag":370,"props":4389,"children":4390},{"style":377},[4391],{"type":51,"value":394},{"type":28,"tag":370,"props":4393,"children":4394},{"style":397},[4395],{"type":51,"value":4349},{"type":28,"tag":370,"props":4397,"children":4398},{"style":716},[4399],{"type":51,"value":4354},{"type":28,"tag":370,"props":4401,"children":4402},{"style":397},[4403],{"type":51,"value":394},{"type":28,"tag":370,"props":4405,"children":4406},{"style":716},[4407],{"type":51,"value":4354},{"type":28,"tag":370,"props":4409,"children":4410},{"style":397},[4411],{"type":51,"value":4412},"${nextRelease.version}",{"type":28,"tag":370,"props":4414,"children":4415},{"style":716},[4416],{"type":51,"value":4354},{"type":28,"tag":370,"props":4418,"children":4419},{"style":397},[4420],{"type":51,"value":4421},"\"\n",{"type":28,"tag":370,"props":4423,"children":4424},{"class":372,"line":596},[4425],{"type":28,"tag":370,"props":4426,"children":4427},{"style":377},[4428],{"type":51,"value":4429},"          }\n",{"type":28,"tag":370,"props":4431,"children":4432},{"class":372,"line":614},[4433],{"type":28,"tag":370,"props":4434,"children":4435},{"style":377},[4436],{"type":51,"value":4437},"        ]\n",{"type":28,"tag":370,"props":4439,"children":4440},{"class":372,"line":623},[4441],{"type":28,"tag":370,"props":4442,"children":4443},{"style":377},[4444],{"type":51,"value":728},{"type":28,"tag":370,"props":4446,"children":4447},{"class":372,"line":637},[4448],{"type":28,"tag":370,"props":4449,"children":4450},{"style":377},[4451],{"type":51,"value":1282},{"type":28,"tag":370,"props":4453,"children":4454},{"class":372,"line":646},[4455],{"type":28,"tag":370,"props":4456,"children":4457},{"style":377},[4458],{"type":51,"value":4270},{"type":28,"tag":370,"props":4460,"children":4461},{"class":372,"line":668},[4462,4467],{"type":28,"tag":370,"props":4463,"children":4464},{"style":397},[4465],{"type":51,"value":4466},"      \"@semantic-release/git\"",{"type":28,"tag":370,"props":4468,"children":4469},{"style":377},[4470],{"type":51,"value":405},{"type":28,"tag":370,"props":4472,"children":4473},{"class":372,"line":690},[4474],{"type":28,"tag":370,"props":4475,"children":4476},{"style":377},[4477],{"type":51,"value":4290},{"type":28,"tag":370,"props":4479,"children":4480},{"class":372,"line":703},[4481,4486,4490,4494],{"type":28,"tag":370,"props":4482,"children":4483},{"style":386},[4484],{"type":51,"value":4485},"        \"assets\"",{"type":28,"tag":370,"props":4487,"children":4488},{"style":377},[4489],{"type":51,"value":4105},{"type":28,"tag":370,"props":4491,"children":4492},{"style":397},[4493],{"type":51,"value":4327},{"type":28,"tag":370,"props":4495,"children":4496},{"style":377},[4497],{"type":51,"value":4332},{"type":28,"tag":370,"props":4499,"children":4500},{"class":372,"line":722},[4501,4506,4510,4515,4520],{"type":28,"tag":370,"props":4502,"children":4503},{"style":386},[4504],{"type":51,"value":4505},"        \"message\"",{"type":28,"tag":370,"props":4507,"children":4508},{"style":377},[4509],{"type":51,"value":394},{"type":28,"tag":370,"props":4511,"children":4512},{"style":397},[4513],{"type":51,"value":4514},"\"chore(release): ${nextRelease.version} [skip ci]",{"type":28,"tag":370,"props":4516,"children":4517},{"style":716},[4518],{"type":51,"value":4519},"\\n\\n",{"type":28,"tag":370,"props":4521,"children":4522},{"style":397},[4523],{"type":51,"value":4524},"${nextRelease.notes}\"\n",{"type":28,"tag":370,"props":4526,"children":4527},{"class":372,"line":731},[4528],{"type":28,"tag":370,"props":4529,"children":4530},{"style":377},[4531],{"type":51,"value":728},{"type":28,"tag":370,"props":4533,"children":4534},{"class":372,"line":740},[4535],{"type":28,"tag":370,"props":4536,"children":4537},{"style":377},[4538],{"type":51,"value":1282},{"type":28,"tag":370,"props":4540,"children":4541},{"class":372,"line":748},[4542],{"type":28,"tag":370,"props":4543,"children":4544},{"style":377},[4545],{"type":51,"value":4270},{"type":28,"tag":370,"props":4547,"children":4548},{"class":372,"line":768},[4549,4554],{"type":28,"tag":370,"props":4550,"children":4551},{"style":397},[4552],{"type":51,"value":4553},"      \"@semantic-release/exec\"",{"type":28,"tag":370,"props":4555,"children":4556},{"style":377},[4557],{"type":51,"value":405},{"type":28,"tag":370,"props":4559,"children":4560},{"class":372,"line":789},[4561],{"type":28,"tag":370,"props":4562,"children":4563},{"style":377},[4564],{"type":51,"value":4290},{"type":28,"tag":370,"props":4566,"children":4567},{"class":372,"line":801},[4568,4573,4577,4582,4586,4591,4595],{"type":28,"tag":370,"props":4569,"children":4570},{"style":386},[4571],{"type":51,"value":4572},"        \"publishCmd\"",{"type":28,"tag":370,"props":4574,"children":4575},{"style":377},[4576],{"type":51,"value":394},{"type":28,"tag":370,"props":4578,"children":4579},{"style":397},[4580],{"type":51,"value":4581},"\"curl --fail-with-body --header ",{"type":28,"tag":370,"props":4583,"children":4584},{"style":716},[4585],{"type":51,"value":4354},{"type":28,"tag":370,"props":4587,"children":4588},{"style":397},[4589],{"type":51,"value":4590},"Job-Token: ${process.env.CI_JOB_TOKEN}",{"type":28,"tag":370,"props":4592,"children":4593},{"style":716},[4594],{"type":51,"value":4354},{"type":28,"tag":370,"props":4596,"children":4597},{"style":397},[4598],{"type":51,"value":4599}," --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n",{"type":28,"tag":370,"props":4601,"children":4602},{"class":372,"line":817},[4603],{"type":28,"tag":370,"props":4604,"children":4605},{"style":377},[4606],{"type":51,"value":728},{"type":28,"tag":370,"props":4608,"children":4609},{"class":372,"line":825},[4610],{"type":28,"tag":370,"props":4611,"children":4612},{"style":377},[4613],{"type":51,"value":1312},{"type":28,"tag":370,"props":4615,"children":4616},{"class":372,"line":833},[4617],{"type":28,"tag":370,"props":4618,"children":4619},{"style":377},[4620],{"type":51,"value":4621},"  ]\n",{"type":28,"tag":370,"props":4623,"children":4624},{"class":372,"line":841},[4625],{"type":28,"tag":370,"props":4626,"children":4627},{"style":377},[4628],{"type":51,"value":1437},{"type":28,"tag":47,"props":4630,"children":4631},{},[4632],{"type":51,"value":4633},"Dies wird:",{"type":28,"tag":280,"props":4635,"children":4636},{},[4637,4642,4654,4666,4671],{"type":28,"tag":284,"props":4638,"children":4639},{},[4640],{"type":51,"value":4641},"Die Commits seit dem letzten Release analysieren, um zu entscheiden, ob eine neue Version veröffentlicht werden soll",{"type":28,"tag":284,"props":4643,"children":4644},{},[4645,4647,4652],{"type":51,"value":4646},"Die Version in der ",{"type":28,"tag":290,"props":4648,"children":4650},{"className":4649},[],[4651],{"type":51,"value":1710},{"type":51,"value":4653}," aktualisieren",{"type":28,"tag":284,"props":4655,"children":4656},{},[4657,4659,4664],{"type":51,"value":4658},"Die ",{"type":28,"tag":290,"props":4660,"children":4662},{"className":4661},[],[4663],{"type":51,"value":1710},{"type":51,"value":4665}," zurück in das Repository committen",{"type":28,"tag":284,"props":4667,"children":4668},{},[4669],{"type":51,"value":4670},"Einen Tag erstellen",{"type":28,"tag":284,"props":4672,"children":4673},{},[4674],{"type":51,"value":4675},"Ein Composer-Paket von diesem Tag releasen",{"type":28,"tag":4677,"props":4678,"children":4679},"style",{},[4680],{"type":51,"value":4681},"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":120,"depth":120,"links":4683},[4684,4690],{"id":325,"depth":120,"text":328,"children":4685},[4686,4687,4688,4689],{"id":336,"depth":408,"text":339},{"id":1676,"depth":408,"text":1679},{"id":2338,"depth":408,"text":2341},{"id":3690,"depth":408,"text":3693},{"id":3724,"depth":120,"text":3727,"children":4691},[4692,4693],{"id":3730,"depth":408,"text":3733},{"id":3968,"depth":408,"text":3971},{"_path":178,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":179,"description":180,"author":163,"image":164,"releaseDate":165,"blogCategories":4695,"articleTags":4696,"tags":4697,"body":4698,"_type":123,"_id":184,"_source":125,"_file":185,"_stem":186,"_extension":128},[167,168],[168,170,171],[22,173],{"type":25,"children":4699,"toc":5773},[4700,4704,4716,4728,4734,4739,4768,4773,4778,4797,4808,4813,4834,4840,4860,5179,5190,5195,5738,5747,5751,5769],{"type":28,"tag":243,"props":4701,"children":4703},{"alt":7,"aspect-ratio":245,"height":246,"object-fit":247,"src":4702},"/blog/shopware-plugin-build+release.png",[],{"type":28,"tag":47,"props":4705,"children":4706},{},[4707,4709,4714],{"type":51,"value":4708},"In meinem ",{"type":28,"tag":261,"props":4710,"children":4711},{"href":159},[4712],{"type":51,"value":4713},"vorherigen Post",{"type":51,"value":4715}," habe ich beschrieben, wie man ein Shopware 6 Plugin über die GitLab Package Registry ausliefert.",{"type":28,"tag":47,"props":4717,"children":4718},{},[4719,4721,4726],{"type":51,"value":4720},"Wenn wir unser Projekt mit dem ",{"type":28,"tag":261,"props":4722,"children":4724},{"href":4723},"https://developer.shopware.com/docs/products/cli/extension-commands/build.html#building-an-extension",[4725],{"type":51,"value":317},{"type":51,"value":4727}," 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":28,"tag":68,"props":4729,"children":4731},{"id":4730},"manuelles-bauen",[4732],{"type":51,"value":4733},"Manuelles Bauen",{"type":28,"tag":47,"props":4735,"children":4736},{},[4737],{"type":51,"value":4738},"Das Bauen eines Plugins ist so einfach wie das Ausführen von:",{"type":28,"tag":354,"props":4740,"children":4742},{"className":1445,"code":4741,"language":1447,"meta":7,"style":7},"shopware-cli extension build .\n",[4743],{"type":28,"tag":290,"props":4744,"children":4745},{"__ignoreMap":7},[4746],{"type":28,"tag":370,"props":4747,"children":4748},{"class":372,"line":373},[4749,4753,4758,4763],{"type":28,"tag":370,"props":4750,"children":4751},{"style":1457},[4752],{"type":51,"value":317},{"type":28,"tag":370,"props":4754,"children":4755},{"style":1462},[4756],{"type":51,"value":4757}," extension",{"type":28,"tag":370,"props":4759,"children":4760},{"style":1462},[4761],{"type":51,"value":4762}," build",{"type":28,"tag":370,"props":4764,"children":4765},{"style":1462},[4766],{"type":51,"value":4767}," .\n",{"type":28,"tag":47,"props":4769,"children":4770},{},[4771],{"type":51,"value":4772},"Im Plugin-Root-Verzeichnis.",{"type":28,"tag":47,"props":4774,"children":4775},{},[4776],{"type":51,"value":4777},"Es gibt einige Anpassungen, die Sie vornehmen können, wie zum Beispiel:",{"type":28,"tag":4779,"props":4780,"children":4781},"ul",{},[4782,4787,4792],{"type":28,"tag":284,"props":4783,"children":4784},{},[4785],{"type":51,"value":4786},"Einschränkung einer Shopware-Version",{"type":28,"tag":284,"props":4788,"children":4789},{},[4790],{"type":51,"value":4791},"Angabe zusätzlicher Bundles",{"type":28,"tag":284,"props":4793,"children":4794},{},[4795],{"type":51,"value":4796},"Verwendung von esbuild",{"type":28,"tag":47,"props":4798,"children":4799},{},[4800,4802,4807],{"type":51,"value":4801},"Detaillierte Konfigurationen finden Sie in der ",{"type":28,"tag":261,"props":4803,"children":4805},{"href":4804},"https://developer.shopware.com/docs/products/cli/extension-commands/build.html",[4806],{"type":51,"value":266},{"type":51,"value":268},{"type":28,"tag":47,"props":4809,"children":4810},{},[4811],{"type":51,"value":4812},"Der Build-Prozess erstellt die folgenden Verzeichnisse, die die kompilierten Dateien enthalten:",{"type":28,"tag":4779,"props":4814,"children":4815},{},[4816,4825],{"type":28,"tag":284,"props":4817,"children":4818},{},[4819],{"type":28,"tag":290,"props":4820,"children":4822},{"className":4821},[],[4823],{"type":51,"value":4824},"src/Resources/app/storefront/dist/",{"type":28,"tag":284,"props":4826,"children":4827},{},[4828],{"type":28,"tag":290,"props":4829,"children":4831},{"className":4830},[],[4832],{"type":51,"value":4833},"src/Resources/public/static/",{"type":28,"tag":68,"props":4835,"children":4837},{"id":4836},"build-pipeline",[4838],{"type":51,"value":4839},"Build-Pipeline",{"type":28,"tag":47,"props":4841,"children":4842},{},[4843,4845,4850,4852,4858],{"type":51,"value":4844},"Wir verwenden das offizielle ",{"type":28,"tag":290,"props":4846,"children":4848},{"className":4847},[],[4849],{"type":51,"value":317},{"type":51,"value":4851}," Docker-Image. Um den Prozess zu beschleunigen, nutzen wir das ",{"type":28,"tag":290,"props":4853,"children":4855},{"className":4854},[],[4856],{"type":51,"value":4857},"CI",{"type":51,"value":4859},"-Caching-System.",{"type":28,"tag":354,"props":4861,"children":4864},{"className":3809,"code":4862,"filename":4004,"highlights":4863,"language":141,"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",[466,623,637,646,668,690],[4865],{"type":28,"tag":290,"props":4866,"children":4867},{"__ignoreMap":7},[4868,4879,4891,4898,4910,4921,4938,4957,4972,4984,5001,5018,5029,5040,5053,5075,5088,5102,5115,5126,5145,5160],{"type":28,"tag":370,"props":4869,"children":4870},{"class":372,"line":373},[4871,4875],{"type":28,"tag":370,"props":4872,"children":4873},{"style":3821},[4874],{"type":51,"value":3824},{"type":28,"tag":370,"props":4876,"children":4877},{"style":377},[4878],{"type":51,"value":3829},{"type":28,"tag":370,"props":4880,"children":4881},{"class":372,"line":120},[4882,4886],{"type":28,"tag":370,"props":4883,"children":4884},{"style":377},[4885],{"type":51,"value":3837},{"type":28,"tag":370,"props":4887,"children":4888},{"style":1462},[4889],{"type":51,"value":4890},"build\n",{"type":28,"tag":370,"props":4892,"children":4893},{"class":372,"line":408},[4894],{"type":28,"tag":370,"props":4895,"children":4896},{"emptyLinePlaceholder":133},[4897],{"type":51,"value":1632},{"type":28,"tag":370,"props":4899,"children":4900},{"class":372,"line":430},[4901,4906],{"type":28,"tag":370,"props":4902,"children":4903},{"style":3821},[4904],{"type":51,"value":4905},"build",{"type":28,"tag":370,"props":4907,"children":4908},{"style":377},[4909],{"type":51,"value":3829},{"type":28,"tag":370,"props":4911,"children":4912},{"class":372,"line":452},[4913,4917],{"type":28,"tag":370,"props":4914,"children":4915},{"style":3821},[4916],{"type":51,"value":3869},{"type":28,"tag":370,"props":4918,"children":4919},{"style":377},[4920],{"type":51,"value":3829},{"type":28,"tag":370,"props":4922,"children":4924},{"class":4923,"line":466},[372,927],[4925,4929,4933],{"type":28,"tag":370,"props":4926,"children":4927},{"style":3821},[4928],{"type":51,"value":4083},{"type":28,"tag":370,"props":4930,"children":4931},{"style":377},[4932],{"type":51,"value":394},{"type":28,"tag":370,"props":4934,"children":4935},{"style":1462},[4936],{"type":51,"value":4937},"ghcr.io/shopware/shopware-cli:latest-php-8.2\n",{"type":28,"tag":370,"props":4939,"children":4940},{"class":372,"line":488},[4941,4945,4949,4953],{"type":28,"tag":370,"props":4942,"children":4943},{"style":3821},[4944],{"type":51,"value":4100},{"type":28,"tag":370,"props":4946,"children":4947},{"style":377},[4948],{"type":51,"value":4105},{"type":28,"tag":370,"props":4950,"children":4951},{"style":1462},[4952],{"type":51,"value":4110},{"type":28,"tag":370,"props":4954,"children":4955},{"style":377},[4956],{"type":51,"value":4115},{"type":28,"tag":370,"props":4958,"children":4959},{"class":372,"line":510},[4960,4964,4968],{"type":28,"tag":370,"props":4961,"children":4962},{"style":3821},[4963],{"type":51,"value":3886},{"type":28,"tag":370,"props":4965,"children":4966},{"style":377},[4967],{"type":51,"value":394},{"type":28,"tag":370,"props":4969,"children":4970},{"style":1462},[4971],{"type":51,"value":4890},{"type":28,"tag":370,"props":4973,"children":4974},{"class":372,"line":532},[4975,4980],{"type":28,"tag":370,"props":4976,"children":4977},{"style":3821},[4978],{"type":51,"value":4979},"  variables",{"type":28,"tag":370,"props":4981,"children":4982},{"style":377},[4983],{"type":51,"value":3829},{"type":28,"tag":370,"props":4985,"children":4986},{"class":372,"line":554},[4987,4992,4996],{"type":28,"tag":370,"props":4988,"children":4989},{"style":3821},[4990],{"type":51,"value":4991},"    COMPOSER_CACHE_DIR",{"type":28,"tag":370,"props":4993,"children":4994},{"style":377},[4995],{"type":51,"value":394},{"type":28,"tag":370,"props":4997,"children":4998},{"style":1462},[4999],{"type":51,"value":5000},"${CI_PROJECT_DIR}/.composer\n",{"type":28,"tag":370,"props":5002,"children":5003},{"class":372,"line":575},[5004,5009,5013],{"type":28,"tag":370,"props":5005,"children":5006},{"style":3821},[5007],{"type":51,"value":5008},"    npm_config_cache",{"type":28,"tag":370,"props":5010,"children":5011},{"style":377},[5012],{"type":51,"value":394},{"type":28,"tag":370,"props":5014,"children":5015},{"style":1462},[5016],{"type":51,"value":5017},"${CI_PROJECT_DIR}/.npm\n",{"type":28,"tag":370,"props":5019,"children":5020},{"class":372,"line":596},[5021,5025],{"type":28,"tag":370,"props":5022,"children":5023},{"style":3821},[5024],{"type":51,"value":3902},{"type":28,"tag":370,"props":5026,"children":5027},{"style":377},[5028],{"type":51,"value":3829},{"type":28,"tag":370,"props":5030,"children":5031},{"class":372,"line":614},[5032,5036],{"type":28,"tag":370,"props":5033,"children":5034},{"style":377},[5035],{"type":51,"value":3914},{"type":28,"tag":370,"props":5037,"children":5038},{"style":1462},[5039],{"type":51,"value":4741},{"type":28,"tag":370,"props":5041,"children":5043},{"class":5042,"line":623},[372,927],[5044,5049],{"type":28,"tag":370,"props":5045,"children":5046},{"style":3821},[5047],{"type":51,"value":5048},"  cache",{"type":28,"tag":370,"props":5050,"children":5051},{"style":377},[5052],{"type":51,"value":3829},{"type":28,"tag":370,"props":5054,"children":5056},{"class":5055,"line":637},[372,927],[5057,5061,5066,5070],{"type":28,"tag":370,"props":5058,"children":5059},{"style":377},[5060],{"type":51,"value":3914},{"type":28,"tag":370,"props":5062,"children":5063},{"style":3821},[5064],{"type":51,"value":5065},"key",{"type":28,"tag":370,"props":5067,"children":5068},{"style":377},[5069],{"type":51,"value":394},{"type":28,"tag":370,"props":5071,"children":5072},{"style":1462},[5073],{"type":51,"value":5074},"$CI_JOB_NAME\n",{"type":28,"tag":370,"props":5076,"children":5078},{"class":5077,"line":646},[372,927],[5079,5084],{"type":28,"tag":370,"props":5080,"children":5081},{"style":3821},[5082],{"type":51,"value":5083},"      paths",{"type":28,"tag":370,"props":5085,"children":5086},{"style":377},[5087],{"type":51,"value":3829},{"type":28,"tag":370,"props":5089,"children":5091},{"class":5090,"line":668},[372,927],[5092,5097],{"type":28,"tag":370,"props":5093,"children":5094},{"style":377},[5095],{"type":51,"value":5096},"        - ",{"type":28,"tag":370,"props":5098,"children":5099},{"style":1462},[5100],{"type":51,"value":5101},"$COMPOSER_CACHE_DIR\n",{"type":28,"tag":370,"props":5103,"children":5105},{"class":5104,"line":690},[372,927],[5106,5110],{"type":28,"tag":370,"props":5107,"children":5108},{"style":377},[5109],{"type":51,"value":5096},{"type":28,"tag":370,"props":5111,"children":5112},{"style":1462},[5113],{"type":51,"value":5114},"$npm_config_cache\n",{"type":28,"tag":370,"props":5116,"children":5117},{"class":372,"line":703},[5118,5122],{"type":28,"tag":370,"props":5119,"children":5120},{"style":3821},[5121],{"type":51,"value":3944},{"type":28,"tag":370,"props":5123,"children":5124},{"style":377},[5125],{"type":51,"value":3829},{"type":28,"tag":370,"props":5127,"children":5128},{"class":372,"line":722},[5129,5133,5137,5141],{"type":28,"tag":370,"props":5130,"children":5131},{"style":377},[5132],{"type":51,"value":3914},{"type":28,"tag":370,"props":5134,"children":5135},{"style":3821},[5136],{"type":51,"value":4177},{"type":28,"tag":370,"props":5138,"children":5139},{"style":377},[5140],{"type":51,"value":394},{"type":28,"tag":370,"props":5142,"children":5143},{"style":1462},[5144],{"type":51,"value":4186},{"type":28,"tag":370,"props":5146,"children":5147},{"class":372,"line":731},[5148,5152,5156],{"type":28,"tag":370,"props":5149,"children":5150},{"style":3821},[5151],{"type":51,"value":4194},{"type":28,"tag":370,"props":5153,"children":5154},{"style":377},[5155],{"type":51,"value":394},{"type":28,"tag":370,"props":5157,"children":5158},{"style":1462},[5159],{"type":51,"value":4203},{"type":28,"tag":370,"props":5161,"children":5162},{"class":372,"line":740},[5163,5167,5171,5175],{"type":28,"tag":370,"props":5164,"children":5165},{"style":377},[5166],{"type":51,"value":3914},{"type":28,"tag":370,"props":5168,"children":5169},{"style":3821},[5170],{"type":51,"value":4177},{"type":28,"tag":370,"props":5172,"children":5173},{"style":377},[5174],{"type":51,"value":394},{"type":28,"tag":370,"props":5176,"children":5177},{"style":1462},[5178],{"type":51,"value":4223},{"type":28,"tag":47,"props":5180,"children":5181},{},[5182,5184,5189],{"type":51,"value":5183},"Kombinieren wir dies mit unserer Release-Pipeline aus dem ",{"type":28,"tag":261,"props":5185,"children":5187},{"href":5186},"/blog/shopware-plugin-gitlab-pipeline-release#mit-semantic-release",[5188],{"type":51,"value":4713},{"type":51,"value":268},{"type":28,"tag":47,"props":5191,"children":5192},{},[5193],{"type":51,"value":5194},"Es ist wichtig, die gebauten Artefakte an den nächsten Job zu übergeben.",{"type":28,"tag":354,"props":5196,"children":5199},{"className":3809,"code":5197,"filename":4004,"highlights":5198,"language":141,"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",[722,731,740,748],[5200],{"type":28,"tag":290,"props":5201,"children":5202},{"__ignoreMap":7},[5203,5214,5225,5236,5243,5254,5265,5280,5299,5314,5325,5340,5355,5366,5377,5388,5407,5418,5429,5440,5453,5466,5480,5493,5504,5523,5538,5557,5564,5575,5590,5601,5617,5636,5651,5662,5674,5685,5704,5719],{"type":28,"tag":370,"props":5204,"children":5205},{"class":372,"line":373},[5206,5210],{"type":28,"tag":370,"props":5207,"children":5208},{"style":3821},[5209],{"type":51,"value":3824},{"type":28,"tag":370,"props":5211,"children":5212},{"style":377},[5213],{"type":51,"value":3829},{"type":28,"tag":370,"props":5215,"children":5216},{"class":372,"line":120},[5217,5221],{"type":28,"tag":370,"props":5218,"children":5219},{"style":377},[5220],{"type":51,"value":3837},{"type":28,"tag":370,"props":5222,"children":5223},{"style":1462},[5224],{"type":51,"value":3842},{"type":28,"tag":370,"props":5226,"children":5227},{"class":372,"line":408},[5228,5232],{"type":28,"tag":370,"props":5229,"children":5230},{"style":377},[5231],{"type":51,"value":3837},{"type":28,"tag":370,"props":5233,"children":5234},{"style":1462},[5235],{"type":51,"value":4890},{"type":28,"tag":370,"props":5237,"children":5238},{"class":372,"line":430},[5239],{"type":28,"tag":370,"props":5240,"children":5241},{"emptyLinePlaceholder":133},[5242],{"type":51,"value":1632},{"type":28,"tag":370,"props":5244,"children":5245},{"class":372,"line":452},[5246,5250],{"type":28,"tag":370,"props":5247,"children":5248},{"style":3821},[5249],{"type":51,"value":4905},{"type":28,"tag":370,"props":5251,"children":5252},{"style":377},[5253],{"type":51,"value":3829},{"type":28,"tag":370,"props":5255,"children":5256},{"class":372,"line":466},[5257,5261],{"type":28,"tag":370,"props":5258,"children":5259},{"style":3821},[5260],{"type":51,"value":3869},{"type":28,"tag":370,"props":5262,"children":5263},{"style":377},[5264],{"type":51,"value":3829},{"type":28,"tag":370,"props":5266,"children":5267},{"class":372,"line":488},[5268,5272,5276],{"type":28,"tag":370,"props":5269,"children":5270},{"style":3821},[5271],{"type":51,"value":4083},{"type":28,"tag":370,"props":5273,"children":5274},{"style":377},[5275],{"type":51,"value":394},{"type":28,"tag":370,"props":5277,"children":5278},{"style":1462},[5279],{"type":51,"value":4937},{"type":28,"tag":370,"props":5281,"children":5282},{"class":372,"line":510},[5283,5287,5291,5295],{"type":28,"tag":370,"props":5284,"children":5285},{"style":3821},[5286],{"type":51,"value":4100},{"type":28,"tag":370,"props":5288,"children":5289},{"style":377},[5290],{"type":51,"value":4105},{"type":28,"tag":370,"props":5292,"children":5293},{"style":1462},[5294],{"type":51,"value":4110},{"type":28,"tag":370,"props":5296,"children":5297},{"style":377},[5298],{"type":51,"value":4115},{"type":28,"tag":370,"props":5300,"children":5301},{"class":372,"line":532},[5302,5306,5310],{"type":28,"tag":370,"props":5303,"children":5304},{"style":3821},[5305],{"type":51,"value":3886},{"type":28,"tag":370,"props":5307,"children":5308},{"style":377},[5309],{"type":51,"value":394},{"type":28,"tag":370,"props":5311,"children":5312},{"style":1462},[5313],{"type":51,"value":4890},{"type":28,"tag":370,"props":5315,"children":5316},{"class":372,"line":554},[5317,5321],{"type":28,"tag":370,"props":5318,"children":5319},{"style":3821},[5320],{"type":51,"value":4979},{"type":28,"tag":370,"props":5322,"children":5323},{"style":377},[5324],{"type":51,"value":3829},{"type":28,"tag":370,"props":5326,"children":5327},{"class":372,"line":575},[5328,5332,5336],{"type":28,"tag":370,"props":5329,"children":5330},{"style":3821},[5331],{"type":51,"value":4991},{"type":28,"tag":370,"props":5333,"children":5334},{"style":377},[5335],{"type":51,"value":394},{"type":28,"tag":370,"props":5337,"children":5338},{"style":1462},[5339],{"type":51,"value":5000},{"type":28,"tag":370,"props":5341,"children":5342},{"class":372,"line":596},[5343,5347,5351],{"type":28,"tag":370,"props":5344,"children":5345},{"style":3821},[5346],{"type":51,"value":5008},{"type":28,"tag":370,"props":5348,"children":5349},{"style":377},[5350],{"type":51,"value":394},{"type":28,"tag":370,"props":5352,"children":5353},{"style":1462},[5354],{"type":51,"value":5017},{"type":28,"tag":370,"props":5356,"children":5357},{"class":372,"line":614},[5358,5362],{"type":28,"tag":370,"props":5359,"children":5360},{"style":3821},[5361],{"type":51,"value":3902},{"type":28,"tag":370,"props":5363,"children":5364},{"style":377},[5365],{"type":51,"value":3829},{"type":28,"tag":370,"props":5367,"children":5368},{"class":372,"line":623},[5369,5373],{"type":28,"tag":370,"props":5370,"children":5371},{"style":377},[5372],{"type":51,"value":3914},{"type":28,"tag":370,"props":5374,"children":5375},{"style":1462},[5376],{"type":51,"value":4741},{"type":28,"tag":370,"props":5378,"children":5379},{"class":372,"line":637},[5380,5384],{"type":28,"tag":370,"props":5381,"children":5382},{"style":3821},[5383],{"type":51,"value":5048},{"type":28,"tag":370,"props":5385,"children":5386},{"style":377},[5387],{"type":51,"value":3829},{"type":28,"tag":370,"props":5389,"children":5390},{"class":372,"line":646},[5391,5395,5399,5403],{"type":28,"tag":370,"props":5392,"children":5393},{"style":377},[5394],{"type":51,"value":3914},{"type":28,"tag":370,"props":5396,"children":5397},{"style":3821},[5398],{"type":51,"value":5065},{"type":28,"tag":370,"props":5400,"children":5401},{"style":377},[5402],{"type":51,"value":394},{"type":28,"tag":370,"props":5404,"children":5405},{"style":1462},[5406],{"type":51,"value":5074},{"type":28,"tag":370,"props":5408,"children":5409},{"class":372,"line":668},[5410,5414],{"type":28,"tag":370,"props":5411,"children":5412},{"style":3821},[5413],{"type":51,"value":5083},{"type":28,"tag":370,"props":5415,"children":5416},{"style":377},[5417],{"type":51,"value":3829},{"type":28,"tag":370,"props":5419,"children":5420},{"class":372,"line":690},[5421,5425],{"type":28,"tag":370,"props":5422,"children":5423},{"style":377},[5424],{"type":51,"value":5096},{"type":28,"tag":370,"props":5426,"children":5427},{"style":1462},[5428],{"type":51,"value":5101},{"type":28,"tag":370,"props":5430,"children":5431},{"class":372,"line":703},[5432,5436],{"type":28,"tag":370,"props":5433,"children":5434},{"style":377},[5435],{"type":51,"value":5096},{"type":28,"tag":370,"props":5437,"children":5438},{"style":1462},[5439],{"type":51,"value":5114},{"type":28,"tag":370,"props":5441,"children":5443},{"class":5442,"line":722},[372,927],[5444,5449],{"type":28,"tag":370,"props":5445,"children":5446},{"style":3821},[5447],{"type":51,"value":5448},"  artifacts",{"type":28,"tag":370,"props":5450,"children":5451},{"style":377},[5452],{"type":51,"value":3829},{"type":28,"tag":370,"props":5454,"children":5456},{"class":5455,"line":731},[372,927],[5457,5462],{"type":28,"tag":370,"props":5458,"children":5459},{"style":3821},[5460],{"type":51,"value":5461},"    paths",{"type":28,"tag":370,"props":5463,"children":5464},{"style":377},[5465],{"type":51,"value":3829},{"type":28,"tag":370,"props":5467,"children":5469},{"class":5468,"line":740},[372,927],[5470,5475],{"type":28,"tag":370,"props":5471,"children":5472},{"style":377},[5473],{"type":51,"value":5474},"      - ",{"type":28,"tag":370,"props":5476,"children":5477},{"style":1462},[5478],{"type":51,"value":5479},"src/Resources/public\n",{"type":28,"tag":370,"props":5481,"children":5483},{"class":5482,"line":748},[372,927],[5484,5488],{"type":28,"tag":370,"props":5485,"children":5486},{"style":377},[5487],{"type":51,"value":5474},{"type":28,"tag":370,"props":5489,"children":5490},{"style":1462},[5491],{"type":51,"value":5492},"src/Storefront/Resources/public\n",{"type":28,"tag":370,"props":5494,"children":5495},{"class":372,"line":768},[5496,5500],{"type":28,"tag":370,"props":5497,"children":5498},{"style":3821},[5499],{"type":51,"value":3944},{"type":28,"tag":370,"props":5501,"children":5502},{"style":377},[5503],{"type":51,"value":3829},{"type":28,"tag":370,"props":5505,"children":5506},{"class":372,"line":789},[5507,5511,5515,5519],{"type":28,"tag":370,"props":5508,"children":5509},{"style":377},[5510],{"type":51,"value":3914},{"type":28,"tag":370,"props":5512,"children":5513},{"style":3821},[5514],{"type":51,"value":4177},{"type":28,"tag":370,"props":5516,"children":5517},{"style":377},[5518],{"type":51,"value":394},{"type":28,"tag":370,"props":5520,"children":5521},{"style":1462},[5522],{"type":51,"value":4186},{"type":28,"tag":370,"props":5524,"children":5525},{"class":372,"line":801},[5526,5530,5534],{"type":28,"tag":370,"props":5527,"children":5528},{"style":3821},[5529],{"type":51,"value":4194},{"type":28,"tag":370,"props":5531,"children":5532},{"style":377},[5533],{"type":51,"value":394},{"type":28,"tag":370,"props":5535,"children":5536},{"style":1462},[5537],{"type":51,"value":4203},{"type":28,"tag":370,"props":5539,"children":5540},{"class":372,"line":817},[5541,5545,5549,5553],{"type":28,"tag":370,"props":5542,"children":5543},{"style":377},[5544],{"type":51,"value":3914},{"type":28,"tag":370,"props":5546,"children":5547},{"style":3821},[5548],{"type":51,"value":4177},{"type":28,"tag":370,"props":5550,"children":5551},{"style":377},[5552],{"type":51,"value":394},{"type":28,"tag":370,"props":5554,"children":5555},{"style":1462},[5556],{"type":51,"value":4223},{"type":28,"tag":370,"props":5558,"children":5559},{"class":372,"line":825},[5560],{"type":28,"tag":370,"props":5561,"children":5562},{"emptyLinePlaceholder":133},[5563],{"type":51,"value":1632},{"type":28,"tag":370,"props":5565,"children":5566},{"class":372,"line":833},[5567,5571],{"type":28,"tag":370,"props":5568,"children":5569},{"style":3821},[5570],{"type":51,"value":4045},{"type":28,"tag":370,"props":5572,"children":5573},{"style":377},[5574],{"type":51,"value":3829},{"type":28,"tag":370,"props":5576,"children":5577},{"class":372,"line":841},[5578,5582,5586],{"type":28,"tag":370,"props":5579,"children":5580},{"style":3821},[5581],{"type":51,"value":3886},{"type":28,"tag":370,"props":5583,"children":5584},{"style":377},[5585],{"type":51,"value":394},{"type":28,"tag":370,"props":5587,"children":5588},{"style":1462},[5589],{"type":51,"value":3842},{"type":28,"tag":370,"props":5591,"children":5592},{"class":372,"line":861},[5593,5597],{"type":28,"tag":370,"props":5594,"children":5595},{"style":3821},[5596],{"type":51,"value":3869},{"type":28,"tag":370,"props":5598,"children":5599},{"style":377},[5600],{"type":51,"value":3829},{"type":28,"tag":370,"props":5602,"children":5603},{"class":372,"line":882},[5604,5608,5612],{"type":28,"tag":370,"props":5605,"children":5606},{"style":3821},[5607],{"type":51,"value":4083},{"type":28,"tag":370,"props":5609,"children":5610},{"style":377},[5611],{"type":51,"value":394},{"type":28,"tag":370,"props":5613,"children":5614},{"style":1462},[5615],{"type":51,"value":5616},"ghcr.io/voxpupuli/semantic-release:latest\n",{"type":28,"tag":370,"props":5618,"children":5619},{"class":372,"line":894},[5620,5624,5628,5632],{"type":28,"tag":370,"props":5621,"children":5622},{"style":3821},[5623],{"type":51,"value":4100},{"type":28,"tag":370,"props":5625,"children":5626},{"style":377},[5627],{"type":51,"value":4105},{"type":28,"tag":370,"props":5629,"children":5630},{"style":1462},[5631],{"type":51,"value":4110},{"type":28,"tag":370,"props":5633,"children":5634},{"style":377},[5635],{"type":51,"value":4115},{"type":28,"tag":370,"props":5637,"children":5638},{"class":372,"line":910},[5639,5643,5647],{"type":28,"tag":370,"props":5640,"children":5641},{"style":3821},[5642],{"type":51,"value":4123},{"type":28,"tag":370,"props":5644,"children":5645},{"style":377},[5646],{"type":51,"value":394},{"type":28,"tag":370,"props":5648,"children":5649},{"style":716},[5650],{"type":51,"value":719},{"type":28,"tag":370,"props":5652,"children":5653},{"class":372,"line":918},[5654,5658],{"type":28,"tag":370,"props":5655,"children":5656},{"style":3821},[5657],{"type":51,"value":3902},{"type":28,"tag":370,"props":5659,"children":5660},{"style":377},[5661],{"type":51,"value":3829},{"type":28,"tag":370,"props":5663,"children":5664},{"class":372,"line":360},[5665,5669],{"type":28,"tag":370,"props":5666,"children":5667},{"style":377},[5668],{"type":51,"value":3914},{"type":28,"tag":370,"props":5670,"children":5671},{"style":1462},[5672],{"type":51,"value":5673},"/docker-entrypoint.sh\n",{"type":28,"tag":370,"props":5675,"children":5676},{"class":372,"line":361},[5677,5681],{"type":28,"tag":370,"props":5678,"children":5679},{"style":3821},[5680],{"type":51,"value":3944},{"type":28,"tag":370,"props":5682,"children":5683},{"style":377},[5684],{"type":51,"value":3829},{"type":28,"tag":370,"props":5686,"children":5687},{"class":372,"line":362},[5688,5692,5696,5700],{"type":28,"tag":370,"props":5689,"children":5690},{"style":377},[5691],{"type":51,"value":3914},{"type":28,"tag":370,"props":5693,"children":5694},{"style":3821},[5695],{"type":51,"value":4177},{"type":28,"tag":370,"props":5697,"children":5698},{"style":377},[5699],{"type":51,"value":394},{"type":28,"tag":370,"props":5701,"children":5702},{"style":1462},[5703],{"type":51,"value":4186},{"type":28,"tag":370,"props":5705,"children":5706},{"class":372,"line":363},[5707,5711,5715],{"type":28,"tag":370,"props":5708,"children":5709},{"style":3821},[5710],{"type":51,"value":4194},{"type":28,"tag":370,"props":5712,"children":5713},{"style":377},[5714],{"type":51,"value":394},{"type":28,"tag":370,"props":5716,"children":5717},{"style":1462},[5718],{"type":51,"value":4203},{"type":28,"tag":370,"props":5720,"children":5721},{"class":372,"line":982},[5722,5726,5730,5734],{"type":28,"tag":370,"props":5723,"children":5724},{"style":377},[5725],{"type":51,"value":3914},{"type":28,"tag":370,"props":5727,"children":5728},{"style":3821},[5729],{"type":51,"value":4177},{"type":28,"tag":370,"props":5731,"children":5732},{"style":377},[5733],{"type":51,"value":394},{"type":28,"tag":370,"props":5735,"children":5736},{"style":1462},[5737],{"type":51,"value":4223},{"type":28,"tag":47,"props":5739,"children":5740},{},[5741],{"type":28,"tag":370,"props":5742,"children":5744},{"className":5743},[3684],[5745],{"type":51,"value":5746},"Das war's!",{"type":28,"tag":47,"props":5748,"children":5749},{},[5750],{"type":51,"value":4633},{"type":28,"tag":280,"props":5752,"children":5753},{},[5754,5759,5764],{"type":28,"tag":284,"props":5755,"children":5756},{},[5757],{"type":51,"value":5758},"Alle Assets bauen",{"type":28,"tag":284,"props":5760,"children":5761},{},[5762],{"type":51,"value":5763},"Sie an den zweiten Job übergeben",{"type":28,"tag":284,"props":5765,"children":5766},{},[5767],{"type":51,"value":5768},"Den Release-Prozess wie zuvor beschrieben ausführen",{"type":28,"tag":4677,"props":5770,"children":5771},{},[5772],{"type":51,"value":4681},{"title":7,"searchDepth":120,"depth":120,"links":5774},[5775,5776],{"id":4730,"depth":120,"text":4733},{"id":4836,"depth":120,"text":4839},{"_path":188,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":189,"description":190,"author":163,"image":164,"releaseDate":165,"blogCategories":5778,"articleTags":5779,"tags":5780,"body":5781,"_type":123,"_id":194,"_source":125,"_file":195,"_stem":196,"_extension":128},[167,168],[168,170,171],[22,173],{"type":25,"children":5782,"toc":8055},[5783,5787,5792,5843,5849,5861,5873,5915,5928,5936,5948,5954,5959,6230,6235,6240,6245,6250,6263,6268,6293,6299,6311,7081,7086,7114,7119,7125,7130,8051],{"type":28,"tag":243,"props":5784,"children":5786},{"alt":7,"aspect-ratio":245,"height":246,"object-fit":247,"src":5785},"/blog/shopware-plugin-test.png",[],{"type":28,"tag":47,"props":5788,"children":5789},{},[5790],{"type":51,"value":5791},"Wenn es um das Testen eines Shopware 6 Plugins geht, gibt es zwei Arten von Tests, die durchgeführt werden können:",{"type":28,"tag":280,"props":5793,"children":5794},{},[5795,5831],{"type":28,"tag":284,"props":5796,"children":5797},{},[5798,5800,5806,5808],{"type":51,"value":5799},"Testen des Codes selbst (",{"type":28,"tag":261,"props":5801,"children":5803},{"href":5802},"https://developer.shopware.com/docs/guides/plugins/plugins/testing/",[5804],{"type":51,"value":5805},"mehr in der offiziellen Dokumentation",{"type":51,"value":5807},")\n",{"type":28,"tag":280,"props":5809,"children":5810},{},[5811,5816,5821,5826],{"type":28,"tag":284,"props":5812,"children":5813},{},[5814],{"type":51,"value":5815},"PHP-Unit-Tests",{"type":28,"tag":284,"props":5817,"children":5818},{},[5819],{"type":51,"value":5820},"Jest-Unit-Tests in Shopwares Storefront",{"type":28,"tag":284,"props":5822,"children":5823},{},[5824],{"type":51,"value":5825},"Jest-Unit-Tests in Shopwares Administration",{"type":28,"tag":284,"props":5827,"children":5828},{},[5829],{"type":51,"value":5830},"End-to-End (E2E) Testing",{"type":28,"tag":284,"props":5832,"children":5833},{},[5834,5836,5841],{"type":51,"value":5835},"Sicherstellen einer hohen Code-Qualität (",{"type":28,"tag":261,"props":5837,"children":5839},{"href":5838},"https://developer.shopware.com/docs/products/cli/validation.html",[5840],{"type":51,"value":5805},{"type":51,"value":5842},")",{"type":28,"tag":68,"props":5844,"children":5846},{"id":5845},"code-qualität",[5847],{"type":51,"value":5848},"Code-Qualität",{"type":28,"tag":47,"props":5850,"children":5851},{},[5852,5854,5859],{"type":51,"value":5853},"Fangen wir mit der Code-Qualität an, da es einfacher ist, diese außerhalb einer ",{"type":28,"tag":290,"props":5855,"children":5857},{"className":5856},[],[5858],{"type":51,"value":3704},{"type":51,"value":5860},"-Umgebung auszuführen.",{"type":28,"tag":47,"props":5862,"children":5863},{},[5864,5866,5871],{"type":51,"value":5865},"Wir werden wieder das ",{"type":28,"tag":290,"props":5867,"children":5869},{"className":5868},[],[5870],{"type":51,"value":317},{"type":51,"value":5872}," verwenden.",{"type":28,"tag":354,"props":5874,"children":5876},{"code":5875,"language":1447,"meta":7,"className":1445,"style":7},"shopware-cli extension validate --full --reporter summary .\n",[5877],{"type":28,"tag":290,"props":5878,"children":5879},{"__ignoreMap":7},[5880],{"type":28,"tag":370,"props":5881,"children":5882},{"class":372,"line":373},[5883,5887,5891,5896,5901,5906,5911],{"type":28,"tag":370,"props":5884,"children":5885},{"style":1457},[5886],{"type":51,"value":317},{"type":28,"tag":370,"props":5888,"children":5889},{"style":1462},[5890],{"type":51,"value":4757},{"type":28,"tag":370,"props":5892,"children":5893},{"style":1462},[5894],{"type":51,"value":5895}," validate",{"type":28,"tag":370,"props":5897,"children":5898},{"style":716},[5899],{"type":51,"value":5900}," --full",{"type":28,"tag":370,"props":5902,"children":5903},{"style":716},[5904],{"type":51,"value":5905}," --reporter",{"type":28,"tag":370,"props":5907,"children":5908},{"style":1462},[5909],{"type":51,"value":5910}," summary",{"type":28,"tag":370,"props":5912,"children":5913},{"style":1462},[5914],{"type":51,"value":4767},{"type":28,"tag":47,"props":5916,"children":5917},{},[5918,5920,5926],{"type":51,"value":5919},"Dies wird alle Tests ausführen, die ",{"type":28,"tag":261,"props":5921,"children":5923},{"href":5922},"https://developer.shopware.com/docs/products/cli/validation.html#running-all-validation-tools",[5924],{"type":51,"value":5925},"hier",{"type":51,"value":5927}," beschrieben sind,\nund hoffentlich eine Ausgabe wie diese erzeugen:",{"type":28,"tag":354,"props":5929,"children":5931},{"code":5930},"✖ 0 problems (0 errors, 0 warnings)\n",[5932],{"type":28,"tag":290,"props":5933,"children":5934},{"__ignoreMap":7},[5935],{"type":51,"value":5930},{"type":28,"tag":47,"props":5937,"children":5938},{},[5939,5941,5946],{"type":51,"value":5940},"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":28,"tag":261,"props":5942,"children":5944},{"href":5943},"https://developer.shopware.com/docs/products/cli/validation.html#running-specific-tools",[5945],{"type":51,"value":5925},{"type":51,"value":5947}," beschrieben.",{"type":28,"tag":89,"props":5949,"children":5951},{"id":5950},"code-qualität-pipeline",[5952],{"type":51,"value":5953},"Code-Qualität Pipeline",{"type":28,"tag":47,"props":5955,"children":5956},{},[5957],{"type":51,"value":5958},"Nun werden wir das Ganze in GitLab ausführen.",{"type":28,"tag":354,"props":5960,"children":5963},{"code":5961,"filename":4004,"highlights":5962,"language":141,"meta":7,"className":3809,"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",[466,623,637,646,668,690],[5964],{"type":28,"tag":290,"props":5965,"children":5966},{"__ignoreMap":7},[5967,5978,5990,5997,6009,6021,6038,6058,6074,6086,6098,6110,6122,6139,6152,6173,6193,6210],{"type":28,"tag":370,"props":5968,"children":5969},{"class":372,"line":373},[5970,5974],{"type":28,"tag":370,"props":5971,"children":5972},{"style":3821},[5973],{"type":51,"value":3824},{"type":28,"tag":370,"props":5975,"children":5976},{"style":377},[5977],{"type":51,"value":3829},{"type":28,"tag":370,"props":5979,"children":5980},{"class":372,"line":120},[5981,5985],{"type":28,"tag":370,"props":5982,"children":5983},{"style":377},[5984],{"type":51,"value":3837},{"type":28,"tag":370,"props":5986,"children":5987},{"style":1462},[5988],{"type":51,"value":5989},"test\n",{"type":28,"tag":370,"props":5991,"children":5992},{"class":372,"line":408},[5993],{"type":28,"tag":370,"props":5994,"children":5995},{"emptyLinePlaceholder":133},[5996],{"type":51,"value":1632},{"type":28,"tag":370,"props":5998,"children":5999},{"class":372,"line":430},[6000,6005],{"type":28,"tag":370,"props":6001,"children":6002},{"style":3821},[6003],{"type":51,"value":6004},"code-quality",{"type":28,"tag":370,"props":6006,"children":6007},{"style":377},[6008],{"type":51,"value":3829},{"type":28,"tag":370,"props":6010,"children":6011},{"class":372,"line":452},[6012,6017],{"type":28,"tag":370,"props":6013,"children":6014},{"style":3821},[6015],{"type":51,"value":6016},"   image",{"type":28,"tag":370,"props":6018,"children":6019},{"style":377},[6020],{"type":51,"value":3829},{"type":28,"tag":370,"props":6022,"children":6024},{"class":6023,"line":466},[372,927],[6025,6030,6034],{"type":28,"tag":370,"props":6026,"children":6027},{"style":3821},[6028],{"type":51,"value":6029},"      name",{"type":28,"tag":370,"props":6031,"children":6032},{"style":377},[6033],{"type":51,"value":394},{"type":28,"tag":370,"props":6035,"children":6036},{"style":1462},[6037],{"type":51,"value":4937},{"type":28,"tag":370,"props":6039,"children":6040},{"class":372,"line":488},[6041,6046,6050,6054],{"type":28,"tag":370,"props":6042,"children":6043},{"style":3821},[6044],{"type":51,"value":6045},"      entrypoint",{"type":28,"tag":370,"props":6047,"children":6048},{"style":377},[6049],{"type":51,"value":4105},{"type":28,"tag":370,"props":6051,"children":6052},{"style":1462},[6053],{"type":51,"value":4110},{"type":28,"tag":370,"props":6055,"children":6056},{"style":377},[6057],{"type":51,"value":4115},{"type":28,"tag":370,"props":6059,"children":6060},{"class":372,"line":510},[6061,6066,6070],{"type":28,"tag":370,"props":6062,"children":6063},{"style":3821},[6064],{"type":51,"value":6065},"   stage",{"type":28,"tag":370,"props":6067,"children":6068},{"style":377},[6069],{"type":51,"value":394},{"type":28,"tag":370,"props":6071,"children":6072},{"style":1462},[6073],{"type":51,"value":5989},{"type":28,"tag":370,"props":6075,"children":6076},{"class":372,"line":532},[6077,6082],{"type":28,"tag":370,"props":6078,"children":6079},{"style":3821},[6080],{"type":51,"value":6081},"   script",{"type":28,"tag":370,"props":6083,"children":6084},{"style":377},[6085],{"type":51,"value":3829},{"type":28,"tag":370,"props":6087,"children":6088},{"class":372,"line":554},[6089,6093],{"type":28,"tag":370,"props":6090,"children":6091},{"style":377},[6092],{"type":51,"value":5474},{"type":28,"tag":370,"props":6094,"children":6095},{"style":1462},[6096],{"type":51,"value":6097},"shopware-cli extension validate --full . | tee report.json\n",{"type":28,"tag":370,"props":6099,"children":6100},{"class":372,"line":575},[6101,6106],{"type":28,"tag":370,"props":6102,"children":6103},{"style":3821},[6104],{"type":51,"value":6105},"   artifacts",{"type":28,"tag":370,"props":6107,"children":6108},{"style":377},[6109],{"type":51,"value":3829},{"type":28,"tag":370,"props":6111,"children":6112},{"class":372,"line":596},[6113,6118],{"type":28,"tag":370,"props":6114,"children":6115},{"style":3821},[6116],{"type":51,"value":6117},"      reports",{"type":28,"tag":370,"props":6119,"children":6120},{"style":377},[6121],{"type":51,"value":3829},{"type":28,"tag":370,"props":6123,"children":6124},{"class":372,"line":614},[6125,6130,6134],{"type":28,"tag":370,"props":6126,"children":6127},{"style":3821},[6128],{"type":51,"value":6129},"         codequality",{"type":28,"tag":370,"props":6131,"children":6132},{"style":377},[6133],{"type":51,"value":394},{"type":28,"tag":370,"props":6135,"children":6136},{"style":1462},[6137],{"type":51,"value":6138},"report.json\n",{"type":28,"tag":370,"props":6140,"children":6142},{"class":6141,"line":623},[372,927],[6143,6148],{"type":28,"tag":370,"props":6144,"children":6145},{"style":3821},[6146],{"type":51,"value":6147},"   rules",{"type":28,"tag":370,"props":6149,"children":6150},{"style":377},[6151],{"type":51,"value":3829},{"type":28,"tag":370,"props":6153,"children":6155},{"class":6154,"line":637},[372,927],[6156,6160,6164,6168],{"type":28,"tag":370,"props":6157,"children":6158},{"style":377},[6159],{"type":51,"value":5474},{"type":28,"tag":370,"props":6161,"children":6162},{"style":3821},[6163],{"type":51,"value":4177},{"type":28,"tag":370,"props":6165,"children":6166},{"style":377},[6167],{"type":51,"value":394},{"type":28,"tag":370,"props":6169,"children":6170},{"style":1462},[6171],{"type":51,"value":6172},"$CI_PIPELINE_SOURCE == \"merge_request_event\"\n",{"type":28,"tag":370,"props":6174,"children":6176},{"class":6175,"line":646},[372,927],[6177,6181,6185,6189],{"type":28,"tag":370,"props":6178,"children":6179},{"style":377},[6180],{"type":51,"value":5474},{"type":28,"tag":370,"props":6182,"children":6183},{"style":3821},[6184],{"type":51,"value":4177},{"type":28,"tag":370,"props":6186,"children":6187},{"style":377},[6188],{"type":51,"value":394},{"type":28,"tag":370,"props":6190,"children":6191},{"style":1462},[6192],{"type":51,"value":4186},{"type":28,"tag":370,"props":6194,"children":6196},{"class":6195,"line":668},[372,927],[6197,6202,6206],{"type":28,"tag":370,"props":6198,"children":6199},{"style":3821},[6200],{"type":51,"value":6201},"        when",{"type":28,"tag":370,"props":6203,"children":6204},{"style":377},[6205],{"type":51,"value":394},{"type":28,"tag":370,"props":6207,"children":6208},{"style":1462},[6209],{"type":51,"value":4203},{"type":28,"tag":370,"props":6211,"children":6213},{"class":6212,"line":690},[372,927],[6214,6218,6222,6226],{"type":28,"tag":370,"props":6215,"children":6216},{"style":377},[6217],{"type":51,"value":5474},{"type":28,"tag":370,"props":6219,"children":6220},{"style":3821},[6221],{"type":51,"value":4177},{"type":28,"tag":370,"props":6223,"children":6224},{"style":377},[6225],{"type":51,"value":394},{"type":28,"tag":370,"props":6227,"children":6228},{"style":1462},[6229],{"type":51,"value":4223},{"type":28,"tag":47,"props":6231,"children":6232},{},[6233],{"type":51,"value":6234},"Diese Pipeline wird auf dem Standard-Branch und bei Merge-Request-Pipelines ausgeführt.",{"type":28,"tag":47,"props":6236,"children":6237},{},[6238],{"type":51,"value":6239},"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":28,"tag":47,"props":6241,"children":6242},{},[6243],{"type":51,"value":6244},"Ein nettes Extra für die MR-Pipeline ist die Integration des Code-Quality-Reports!",{"type":28,"tag":68,"props":6246,"children":6248},{"id":6247},"php-unit-tests",[6249],{"type":51,"value":5815},{"type":28,"tag":47,"props":6251,"children":6252},{},[6253,6255,6261],{"type":51,"value":6254},"Zuerst müssen wir PHPUnit konfigurieren, indem wir der ",{"type":28,"tag":261,"props":6256,"children":6258},{"href":6257},"https://developer.shopware.com/docs/guides/plugins/plugins/testing/php-unit.html",[6259],{"type":51,"value":6260},"offiziellen Shopware-Dokumentation",{"type":51,"value":6262}," folgen.",{"type":28,"tag":47,"props":6264,"children":6265},{},[6266],{"type":51,"value":6267},"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":28,"tag":354,"props":6269,"children":6271},{"code":6270,"language":1447,"meta":7,"className":1445,"style":7},"./vendor/bin/phpunit --configuration=\"custom/static-plugins/SwagBasicExample\"\n",[6272],{"type":28,"tag":290,"props":6273,"children":6274},{"__ignoreMap":7},[6275],{"type":28,"tag":370,"props":6276,"children":6277},{"class":372,"line":373},[6278,6283,6288],{"type":28,"tag":370,"props":6279,"children":6280},{"style":1457},[6281],{"type":51,"value":6282},"./vendor/bin/phpunit",{"type":28,"tag":370,"props":6284,"children":6285},{"style":716},[6286],{"type":51,"value":6287}," --configuration=",{"type":28,"tag":370,"props":6289,"children":6290},{"style":1462},[6291],{"type":51,"value":6292},"\"custom/static-plugins/SwagBasicExample\"\n",{"type":28,"tag":89,"props":6294,"children":6296},{"id":6295},"phpunit-pipeline",[6297],{"type":51,"value":6298},"PHPUnit Pipeline",{"type":28,"tag":47,"props":6300,"children":6301},{},[6302,6304,6309],{"type":51,"value":6303},"Das Ausführen von PHPUnit für ein Plugin erfordert eine vollständige Shopware-Instanz. Glücklicherweise kann uns das ",{"type":28,"tag":290,"props":6305,"children":6307},{"className":6306},[],[6308],{"type":51,"value":317},{"type":51,"value":6310}," dabei helfen.",{"type":28,"tag":354,"props":6312,"children":6315},{"code":6313,"filename":4004,"highlights":6314,"language":141,"meta":7,"className":3809,"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",[532,554,575,596,614,623,646,722,731,740,748,817,825,833,841,861,882,894,910,918,360,362],[6316],{"type":28,"tag":290,"props":6317,"children":6318},{"__ignoreMap":7},[6319,6330,6342,6349,6361,6376,6387,6402,6421,6434,6456,6474,6487,6505,6523,6534,6552,6569,6586,6594,6612,6630,6648,6664,6671,6688,6700,6713,6726,6739,6752,6765,6778,6791,6804,6817,6829,6840,6853,6860,6871,6890,6901,6912,6929,6940,6952,6964,6981,6998,7009,7028,7047,7062],{"type":28,"tag":370,"props":6320,"children":6321},{"class":372,"line":373},[6322,6326],{"type":28,"tag":370,"props":6323,"children":6324},{"style":3821},[6325],{"type":51,"value":3824},{"type":28,"tag":370,"props":6327,"children":6328},{"style":377},[6329],{"type":51,"value":3829},{"type":28,"tag":370,"props":6331,"children":6332},{"class":372,"line":120},[6333,6338],{"type":28,"tag":370,"props":6334,"children":6335},{"style":377},[6336],{"type":51,"value":6337},"   - ",{"type":28,"tag":370,"props":6339,"children":6340},{"style":1462},[6341],{"type":51,"value":5989},{"type":28,"tag":370,"props":6343,"children":6344},{"class":372,"line":408},[6345],{"type":28,"tag":370,"props":6346,"children":6347},{"emptyLinePlaceholder":133},[6348],{"type":51,"value":1632},{"type":28,"tag":370,"props":6350,"children":6351},{"class":372,"line":430},[6352,6357],{"type":28,"tag":370,"props":6353,"children":6354},{"style":3821},[6355],{"type":51,"value":6356},"phpunit",{"type":28,"tag":370,"props":6358,"children":6359},{"style":377},[6360],{"type":51,"value":3829},{"type":28,"tag":370,"props":6362,"children":6363},{"class":372,"line":452},[6364,6368,6372],{"type":28,"tag":370,"props":6365,"children":6366},{"style":3821},[6367],{"type":51,"value":3886},{"type":28,"tag":370,"props":6369,"children":6370},{"style":377},[6371],{"type":51,"value":394},{"type":28,"tag":370,"props":6373,"children":6374},{"style":1462},[6375],{"type":51,"value":5989},{"type":28,"tag":370,"props":6377,"children":6378},{"class":372,"line":466},[6379,6383],{"type":28,"tag":370,"props":6380,"children":6381},{"style":3821},[6382],{"type":51,"value":3869},{"type":28,"tag":370,"props":6384,"children":6385},{"style":377},[6386],{"type":51,"value":3829},{"type":28,"tag":370,"props":6388,"children":6389},{"class":372,"line":488},[6390,6394,6398],{"type":28,"tag":370,"props":6391,"children":6392},{"style":3821},[6393],{"type":51,"value":4083},{"type":28,"tag":370,"props":6395,"children":6396},{"style":377},[6397],{"type":51,"value":394},{"type":28,"tag":370,"props":6399,"children":6400},{"style":1462},[6401],{"type":51,"value":4937},{"type":28,"tag":370,"props":6403,"children":6404},{"class":372,"line":510},[6405,6409,6413,6417],{"type":28,"tag":370,"props":6406,"children":6407},{"style":3821},[6408],{"type":51,"value":4100},{"type":28,"tag":370,"props":6410,"children":6411},{"style":377},[6412],{"type":51,"value":4105},{"type":28,"tag":370,"props":6414,"children":6415},{"style":1462},[6416],{"type":51,"value":4110},{"type":28,"tag":370,"props":6418,"children":6419},{"style":377},[6420],{"type":51,"value":4115},{"type":28,"tag":370,"props":6422,"children":6424},{"class":6423,"line":532},[372,927],[6425,6430],{"type":28,"tag":370,"props":6426,"children":6427},{"style":3821},[6428],{"type":51,"value":6429},"  services",{"type":28,"tag":370,"props":6431,"children":6432},{"style":377},[6433],{"type":51,"value":3829},{"type":28,"tag":370,"props":6435,"children":6437},{"class":6436,"line":554},[372,927],[6438,6442,6447,6451],{"type":28,"tag":370,"props":6439,"children":6440},{"style":377},[6441],{"type":51,"value":3914},{"type":28,"tag":370,"props":6443,"children":6444},{"style":3821},[6445],{"type":51,"value":6446},"name",{"type":28,"tag":370,"props":6448,"children":6449},{"style":377},[6450],{"type":51,"value":394},{"type":28,"tag":370,"props":6452,"children":6453},{"style":1462},[6454],{"type":51,"value":6455},"mysql:8.3.0\n",{"type":28,"tag":370,"props":6457,"children":6459},{"class":6458,"line":575},[372,927],[6460,6465,6469],{"type":28,"tag":370,"props":6461,"children":6462},{"style":3821},[6463],{"type":51,"value":6464},"      alias",{"type":28,"tag":370,"props":6466,"children":6467},{"style":377},[6468],{"type":51,"value":394},{"type":28,"tag":370,"props":6470,"children":6471},{"style":1462},[6472],{"type":51,"value":6473},"test_database\n",{"type":28,"tag":370,"props":6475,"children":6477},{"class":6476,"line":596},[372,927],[6478,6483],{"type":28,"tag":370,"props":6479,"children":6480},{"style":3821},[6481],{"type":51,"value":6482},"      variables",{"type":28,"tag":370,"props":6484,"children":6485},{"style":377},[6486],{"type":51,"value":3829},{"type":28,"tag":370,"props":6488,"children":6490},{"class":6489,"line":614},[372,927],[6491,6496,6500],{"type":28,"tag":370,"props":6492,"children":6493},{"style":3821},[6494],{"type":51,"value":6495},"        MYSQL_SKIP_TEST_DB",{"type":28,"tag":370,"props":6497,"children":6498},{"style":377},[6499],{"type":51,"value":394},{"type":28,"tag":370,"props":6501,"children":6502},{"style":1462},[6503],{"type":51,"value":6504},"'yes'\n",{"type":28,"tag":370,"props":6506,"children":6508},{"class":6507,"line":623},[372,927],[6509,6514,6518],{"type":28,"tag":370,"props":6510,"children":6511},{"style":3821},[6512],{"type":51,"value":6513},"        MYSQL_ALLOW_EMPTY_PASSWORD",{"type":28,"tag":370,"props":6515,"children":6516},{"style":377},[6517],{"type":51,"value":394},{"type":28,"tag":370,"props":6519,"children":6520},{"style":716},[6521],{"type":51,"value":6522},"yes\n",{"type":28,"tag":370,"props":6524,"children":6525},{"class":372,"line":637},[6526,6530],{"type":28,"tag":370,"props":6527,"children":6528},{"style":3821},[6529],{"type":51,"value":4979},{"type":28,"tag":370,"props":6531,"children":6532},{"style":377},[6533],{"type":51,"value":3829},{"type":28,"tag":370,"props":6535,"children":6537},{"class":6536,"line":646},[372,927],[6538,6543,6547],{"type":28,"tag":370,"props":6539,"children":6540},{"style":3821},[6541],{"type":51,"value":6542},"    GIT_STRATEGY",{"type":28,"tag":370,"props":6544,"children":6545},{"style":377},[6546],{"type":51,"value":394},{"type":28,"tag":370,"props":6548,"children":6549},{"style":1462},[6550],{"type":51,"value":6551},"none\n",{"type":28,"tag":370,"props":6553,"children":6554},{"class":372,"line":668},[6555,6560,6564],{"type":28,"tag":370,"props":6556,"children":6557},{"style":3821},[6558],{"type":51,"value":6559},"    SHOPWARE_ROOT",{"type":28,"tag":370,"props":6561,"children":6562},{"style":377},[6563],{"type":51,"value":394},{"type":28,"tag":370,"props":6565,"children":6566},{"style":1462},[6567],{"type":51,"value":6568},"${CI_PROJECT_DIR}/shopware\n",{"type":28,"tag":370,"props":6570,"children":6571},{"class":372,"line":690},[6572,6577,6581],{"type":28,"tag":370,"props":6573,"children":6574},{"style":3821},[6575],{"type":51,"value":6576},"    SHOPWARE_VERSION",{"type":28,"tag":370,"props":6578,"children":6579},{"style":377},[6580],{"type":51,"value":394},{"type":28,"tag":370,"props":6582,"children":6583},{"style":716},[6584],{"type":51,"value":6585},"6.6.10.13\n",{"type":28,"tag":370,"props":6587,"children":6588},{"class":372,"line":703},[6589],{"type":28,"tag":370,"props":6590,"children":6591},{"style":377},[6592],{"type":51,"value":6593},"    \n",{"type":28,"tag":370,"props":6595,"children":6597},{"class":6596,"line":722},[372,927],[6598,6603,6607],{"type":28,"tag":370,"props":6599,"children":6600},{"style":3821},[6601],{"type":51,"value":6602},"    APP_SECRET",{"type":28,"tag":370,"props":6604,"children":6605},{"style":377},[6606],{"type":51,"value":394},{"type":28,"tag":370,"props":6608,"children":6609},{"style":1462},[6610],{"type":51,"value":6611},"def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48\n",{"type":28,"tag":370,"props":6613,"children":6615},{"class":6614,"line":731},[372,927],[6616,6621,6625],{"type":28,"tag":370,"props":6617,"children":6618},{"style":3821},[6619],{"type":51,"value":6620},"    MESSENGER_TRANSPORT_DSN",{"type":28,"tag":370,"props":6622,"children":6623},{"style":377},[6624],{"type":51,"value":394},{"type":28,"tag":370,"props":6626,"children":6627},{"style":1462},[6628],{"type":51,"value":6629},"sync://\n",{"type":28,"tag":370,"props":6631,"children":6633},{"class":6632,"line":740},[372,927],[6634,6639,6643],{"type":28,"tag":370,"props":6635,"children":6636},{"style":3821},[6637],{"type":51,"value":6638},"    DATABASE_URL",{"type":28,"tag":370,"props":6640,"children":6641},{"style":377},[6642],{"type":51,"value":394},{"type":28,"tag":370,"props":6644,"children":6645},{"style":1462},[6646],{"type":51,"value":6647},"mysql://root@test_database/shopware\n",{"type":28,"tag":370,"props":6649,"children":6651},{"class":6650,"line":748},[372,927],[6652,6656,6660],{"type":28,"tag":370,"props":6653,"children":6654},{"style":3821},[6655],{"type":51,"value":4991},{"type":28,"tag":370,"props":6657,"children":6658},{"style":377},[6659],{"type":51,"value":394},{"type":28,"tag":370,"props":6661,"children":6662},{"style":1462},[6663],{"type":51,"value":5000},{"type":28,"tag":370,"props":6665,"children":6666},{"class":372,"line":768},[6667],{"type":28,"tag":370,"props":6668,"children":6669},{"emptyLinePlaceholder":133},[6670],{"type":51,"value":1632},{"type":28,"tag":370,"props":6672,"children":6673},{"class":372,"line":789},[6674,6679,6683],{"type":28,"tag":370,"props":6675,"children":6676},{"style":3821},[6677],{"type":51,"value":6678},"    XDEBUG_MODE",{"type":28,"tag":370,"props":6680,"children":6681},{"style":377},[6682],{"type":51,"value":394},{"type":28,"tag":370,"props":6684,"children":6685},{"style":1462},[6686],{"type":51,"value":6687},"coverage\n",{"type":28,"tag":370,"props":6689,"children":6690},{"class":372,"line":801},[6691,6696],{"type":28,"tag":370,"props":6692,"children":6693},{"style":3821},[6694],{"type":51,"value":6695},"  before_script",{"type":28,"tag":370,"props":6697,"children":6698},{"style":377},[6699],{"type":51,"value":3829},{"type":28,"tag":370,"props":6701,"children":6703},{"class":6702,"line":817},[372,927],[6704,6708],{"type":28,"tag":370,"props":6705,"children":6706},{"style":377},[6707],{"type":51,"value":3914},{"type":28,"tag":370,"props":6709,"children":6710},{"style":1462},[6711],{"type":51,"value":6712},"apk add --no-cache php-8.2-xdebug\n",{"type":28,"tag":370,"props":6714,"children":6716},{"class":6715,"line":825},[372,927],[6717,6721],{"type":28,"tag":370,"props":6718,"children":6719},{"style":377},[6720],{"type":51,"value":3914},{"type":28,"tag":370,"props":6722,"children":6723},{"style":1462},[6724],{"type":51,"value":6725},"shopware-cli project create shopware ${SHOPWARE_VERSION}\n",{"type":28,"tag":370,"props":6727,"children":6729},{"class":6728,"line":833},[372,927],[6730,6734],{"type":28,"tag":370,"props":6731,"children":6732},{"style":377},[6733],{"type":51,"value":3914},{"type":28,"tag":370,"props":6735,"children":6736},{"style":1462},[6737],{"type":51,"value":6738},"cd $SHOPWARE_ROOT\n",{"type":28,"tag":370,"props":6740,"children":6742},{"class":6741,"line":841},[372,927],[6743,6747],{"type":28,"tag":370,"props":6744,"children":6745},{"style":377},[6746],{"type":51,"value":3914},{"type":28,"tag":370,"props":6748,"children":6749},{"style":1462},[6750],{"type":51,"value":6751},"composer req --dev shopware/dev-tools phpunit/phpunit\n",{"type":28,"tag":370,"props":6753,"children":6755},{"class":6754,"line":861},[372,927],[6756,6760],{"type":28,"tag":370,"props":6757,"children":6758},{"style":377},[6759],{"type":51,"value":3914},{"type":28,"tag":370,"props":6761,"children":6762},{"style":1462},[6763],{"type":51,"value":6764},"git clone \"https://${GITLAB_USERNAME}:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git\" \"custom/plugins/${CI_PROJECT_NAME}\"\n",{"type":28,"tag":370,"props":6766,"children":6768},{"class":6767,"line":882},[372,927],[6769,6773],{"type":28,"tag":370,"props":6770,"children":6771},{"style":377},[6772],{"type":51,"value":3914},{"type":28,"tag":370,"props":6774,"children":6775},{"style":1462},[6776],{"type":51,"value":6777},"cd custom/plugins/${CI_PROJECT_NAME}\n",{"type":28,"tag":370,"props":6779,"children":6781},{"class":6780,"line":894},[372,927],[6782,6786],{"type":28,"tag":370,"props":6783,"children":6784},{"style":377},[6785],{"type":51,"value":3914},{"type":28,"tag":370,"props":6787,"children":6788},{"style":1462},[6789],{"type":51,"value":6790},"git checkout ${CI_COMMIT_SHA}\n",{"type":28,"tag":370,"props":6792,"children":6794},{"class":6793,"line":910},[372,927],[6795,6799],{"type":28,"tag":370,"props":6796,"children":6797},{"style":377},[6798],{"type":51,"value":3914},{"type":28,"tag":370,"props":6800,"children":6801},{"style":1462},[6802],{"type":51,"value":6803},"cd ${SHOPWARE_ROOT}\n",{"type":28,"tag":370,"props":6805,"children":6807},{"class":6806,"line":918},[372,927],[6808,6812],{"type":28,"tag":370,"props":6809,"children":6810},{"style":377},[6811],{"type":51,"value":3914},{"type":28,"tag":370,"props":6813,"children":6814},{"style":1462},[6815],{"type":51,"value":6816},"composer require $(composer -d custom/plugins/${CI_PROJECT_NAME} config name)\n",{"type":28,"tag":370,"props":6818,"children":6820},{"class":6819,"line":360},[372,927],[6821,6825],{"type":28,"tag":370,"props":6822,"children":6823},{"style":377},[6824],{"type":51,"value":3914},{"type":28,"tag":370,"props":6826,"children":6827},{"style":1462},[6828],{"type":51,"value":6777},{"type":28,"tag":370,"props":6830,"children":6831},{"class":372,"line":361},[6832,6836],{"type":28,"tag":370,"props":6833,"children":6834},{"style":3821},[6835],{"type":51,"value":3902},{"type":28,"tag":370,"props":6837,"children":6838},{"style":377},[6839],{"type":51,"value":3829},{"type":28,"tag":370,"props":6841,"children":6843},{"class":6842,"line":362},[372,927],[6844,6848],{"type":28,"tag":370,"props":6845,"children":6846},{"style":377},[6847],{"type":51,"value":3914},{"type":28,"tag":370,"props":6849,"children":6850},{"style":1462},[6851],{"type":51,"value":6852},"${SHOPWARE_ROOT}/vendor/bin/phpunit --coverage-text --coverage-cobertura=coverage.cobertura.xml\n",{"type":28,"tag":370,"props":6854,"children":6855},{"class":372,"line":363},[6856],{"type":28,"tag":370,"props":6857,"children":6858},{"emptyLinePlaceholder":133},[6859],{"type":51,"value":1632},{"type":28,"tag":370,"props":6861,"children":6862},{"class":372,"line":982},[6863,6867],{"type":28,"tag":370,"props":6864,"children":6865},{"style":3821},[6866],{"type":51,"value":5048},{"type":28,"tag":370,"props":6868,"children":6869},{"style":377},[6870],{"type":51,"value":3829},{"type":28,"tag":370,"props":6872,"children":6873},{"class":372,"line":991},[6874,6878,6882,6886],{"type":28,"tag":370,"props":6875,"children":6876},{"style":377},[6877],{"type":51,"value":3914},{"type":28,"tag":370,"props":6879,"children":6880},{"style":3821},[6881],{"type":51,"value":5065},{"type":28,"tag":370,"props":6883,"children":6884},{"style":377},[6885],{"type":51,"value":394},{"type":28,"tag":370,"props":6887,"children":6888},{"style":1462},[6889],{"type":51,"value":5074},{"type":28,"tag":370,"props":6891,"children":6892},{"class":372,"line":1004},[6893,6897],{"type":28,"tag":370,"props":6894,"children":6895},{"style":3821},[6896],{"type":51,"value":5083},{"type":28,"tag":370,"props":6898,"children":6899},{"style":377},[6900],{"type":51,"value":3829},{"type":28,"tag":370,"props":6902,"children":6903},{"class":372,"line":1017},[6904,6908],{"type":28,"tag":370,"props":6905,"children":6906},{"style":377},[6907],{"type":51,"value":5096},{"type":28,"tag":370,"props":6909,"children":6910},{"style":1462},[6911],{"type":51,"value":5101},{"type":28,"tag":370,"props":6913,"children":6914},{"class":372,"line":1046},[6915,6920,6924],{"type":28,"tag":370,"props":6916,"children":6917},{"style":3821},[6918],{"type":51,"value":6919},"  coverage",{"type":28,"tag":370,"props":6921,"children":6922},{"style":377},[6923],{"type":51,"value":394},{"type":28,"tag":370,"props":6925,"children":6926},{"style":1462},[6927],{"type":51,"value":6928},"/^\\s*Lines:\\s*\\d+.\\d+\\%/\n",{"type":28,"tag":370,"props":6930,"children":6931},{"class":372,"line":1054},[6932,6936],{"type":28,"tag":370,"props":6933,"children":6934},{"style":3821},[6935],{"type":51,"value":5448},{"type":28,"tag":370,"props":6937,"children":6938},{"style":377},[6939],{"type":51,"value":3829},{"type":28,"tag":370,"props":6941,"children":6942},{"class":372,"line":1062},[6943,6948],{"type":28,"tag":370,"props":6944,"children":6945},{"style":3821},[6946],{"type":51,"value":6947},"    reports",{"type":28,"tag":370,"props":6949,"children":6950},{"style":377},[6951],{"type":51,"value":3829},{"type":28,"tag":370,"props":6953,"children":6954},{"class":372,"line":1084},[6955,6960],{"type":28,"tag":370,"props":6956,"children":6957},{"style":3821},[6958],{"type":51,"value":6959},"      coverage_report",{"type":28,"tag":370,"props":6961,"children":6962},{"style":377},[6963],{"type":51,"value":3829},{"type":28,"tag":370,"props":6965,"children":6966},{"class":372,"line":1097},[6967,6972,6976],{"type":28,"tag":370,"props":6968,"children":6969},{"style":3821},[6970],{"type":51,"value":6971},"        coverage_format",{"type":28,"tag":370,"props":6973,"children":6974},{"style":377},[6975],{"type":51,"value":394},{"type":28,"tag":370,"props":6977,"children":6978},{"style":1462},[6979],{"type":51,"value":6980},"cobertura\n",{"type":28,"tag":370,"props":6982,"children":6983},{"class":372,"line":1110},[6984,6989,6993],{"type":28,"tag":370,"props":6985,"children":6986},{"style":3821},[6987],{"type":51,"value":6988},"        path",{"type":28,"tag":370,"props":6990,"children":6991},{"style":377},[6992],{"type":51,"value":394},{"type":28,"tag":370,"props":6994,"children":6995},{"style":1462},[6996],{"type":51,"value":6997},"coverage.cobertura.xml\n",{"type":28,"tag":370,"props":6999,"children":7000},{"class":372,"line":1131},[7001,7005],{"type":28,"tag":370,"props":7002,"children":7003},{"style":3821},[7004],{"type":51,"value":3944},{"type":28,"tag":370,"props":7006,"children":7007},{"style":377},[7008],{"type":51,"value":3829},{"type":28,"tag":370,"props":7010,"children":7011},{"class":372,"line":1148},[7012,7016,7020,7024],{"type":28,"tag":370,"props":7013,"children":7014},{"style":377},[7015],{"type":51,"value":3914},{"type":28,"tag":370,"props":7017,"children":7018},{"style":3821},[7019],{"type":51,"value":4177},{"type":28,"tag":370,"props":7021,"children":7022},{"style":377},[7023],{"type":51,"value":394},{"type":28,"tag":370,"props":7025,"children":7026},{"style":1462},[7027],{"type":51,"value":6172},{"type":28,"tag":370,"props":7029,"children":7030},{"class":372,"line":1156},[7031,7035,7039,7043],{"type":28,"tag":370,"props":7032,"children":7033},{"style":377},[7034],{"type":51,"value":3914},{"type":28,"tag":370,"props":7036,"children":7037},{"style":3821},[7038],{"type":51,"value":4177},{"type":28,"tag":370,"props":7040,"children":7041},{"style":377},[7042],{"type":51,"value":394},{"type":28,"tag":370,"props":7044,"children":7045},{"style":1462},[7046],{"type":51,"value":4186},{"type":28,"tag":370,"props":7048,"children":7049},{"class":372,"line":1177},[7050,7054,7058],{"type":28,"tag":370,"props":7051,"children":7052},{"style":3821},[7053],{"type":51,"value":4194},{"type":28,"tag":370,"props":7055,"children":7056},{"style":377},[7057],{"type":51,"value":394},{"type":28,"tag":370,"props":7059,"children":7060},{"style":1462},[7061],{"type":51,"value":4203},{"type":28,"tag":370,"props":7063,"children":7064},{"class":372,"line":1194},[7065,7069,7073,7077],{"type":28,"tag":370,"props":7066,"children":7067},{"style":377},[7068],{"type":51,"value":3914},{"type":28,"tag":370,"props":7070,"children":7071},{"style":3821},[7072],{"type":51,"value":4177},{"type":28,"tag":370,"props":7074,"children":7075},{"style":377},[7076],{"type":51,"value":394},{"type":28,"tag":370,"props":7078,"children":7079},{"style":1462},[7080],{"type":51,"value":4223},{"type":28,"tag":47,"props":7082,"children":7083},{},[7084],{"type":51,"value":7085},"Lass uns das ein wenig erklären:",{"type":28,"tag":280,"props":7087,"children":7088},{},[7089,7094,7099,7104,7109],{"type":28,"tag":284,"props":7090,"children":7091},{},[7092],{"type":51,"value":7093},"Wir deaktivieren das automatische Klonen des Repositories (16)",{"type":28,"tag":284,"props":7095,"children":7096},{},[7097],{"type":51,"value":7098},"Wir binden einen Datenbank-Service ein (9-14)",{"type":28,"tag":284,"props":7100,"children":7101},{},[7102],{"type":51,"value":7103},"Wir setzen einige erforderliche Shopware-Umgebungsvariablen (20-23)",{"type":28,"tag":284,"props":7105,"children":7106},{},[7107],{"type":51,"value":7108},"Erstellen ein leeres Shopware-Projekt mit PHPUnit und Xdebug (27-36)",{"type":28,"tag":284,"props":7110,"children":7111},{},[7112],{"type":51,"value":7113},"Führen PHPUnit mit Code-Coverage-Generierung als Text und im Cobertura-Format aus (38)",{"type":28,"tag":47,"props":7115,"children":7116},{},[7117],{"type":51,"value":7118},"Wie die Code-Quality-Pipeline nutzt auch diese die Vorteile des GitLab-Coverage-Reportings voll aus.",{"type":28,"tag":68,"props":7120,"children":7122},{"id":7121},"alles-zusammenfügen",[7123],{"type":51,"value":7124},"Alles zusammenfügen",{"type":28,"tag":47,"props":7126,"children":7127},{},[7128],{"type":51,"value":7129},"Für diesen Teil lassen wir den Build- und Release-Teil weg.",{"type":28,"tag":354,"props":7131,"children":7133},{"code":7132,"filename":4004,"language":141,"meta":7,"className":3809,"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",[7134],{"type":28,"tag":290,"props":7135,"children":7136},{"__ignoreMap":7},[7137,7148,7159,7166,7177,7192,7203,7218,7237,7248,7267,7282,7293,7308,7323,7334,7349,7364,7379,7386,7401,7416,7431,7446,7453,7468,7479,7490,7501,7512,7523,7534,7545,7556,7567,7578,7589,7600,7611,7618,7629,7648,7659,7670,7685,7696,7707,7718,7733,7748,7759,7778,7797,7812,7831,7838,7849,7860,7875,7894,7909,7920,7931,7942,7953,7968,7979,7998,8017,8032],{"type":28,"tag":370,"props":7138,"children":7139},{"class":372,"line":373},[7140,7144],{"type":28,"tag":370,"props":7141,"children":7142},{"style":3821},[7143],{"type":51,"value":3824},{"type":28,"tag":370,"props":7145,"children":7146},{"style":377},[7147],{"type":51,"value":3829},{"type":28,"tag":370,"props":7149,"children":7150},{"class":372,"line":120},[7151,7155],{"type":28,"tag":370,"props":7152,"children":7153},{"style":377},[7154],{"type":51,"value":6337},{"type":28,"tag":370,"props":7156,"children":7157},{"style":1462},[7158],{"type":51,"value":5989},{"type":28,"tag":370,"props":7160,"children":7161},{"class":372,"line":408},[7162],{"type":28,"tag":370,"props":7163,"children":7164},{"emptyLinePlaceholder":133},[7165],{"type":51,"value":1632},{"type":28,"tag":370,"props":7167,"children":7168},{"class":372,"line":430},[7169,7173],{"type":28,"tag":370,"props":7170,"children":7171},{"style":3821},[7172],{"type":51,"value":6356},{"type":28,"tag":370,"props":7174,"children":7175},{"style":377},[7176],{"type":51,"value":3829},{"type":28,"tag":370,"props":7178,"children":7179},{"class":372,"line":452},[7180,7184,7188],{"type":28,"tag":370,"props":7181,"children":7182},{"style":3821},[7183],{"type":51,"value":3886},{"type":28,"tag":370,"props":7185,"children":7186},{"style":377},[7187],{"type":51,"value":394},{"type":28,"tag":370,"props":7189,"children":7190},{"style":1462},[7191],{"type":51,"value":5989},{"type":28,"tag":370,"props":7193,"children":7194},{"class":372,"line":466},[7195,7199],{"type":28,"tag":370,"props":7196,"children":7197},{"style":3821},[7198],{"type":51,"value":3869},{"type":28,"tag":370,"props":7200,"children":7201},{"style":377},[7202],{"type":51,"value":3829},{"type":28,"tag":370,"props":7204,"children":7205},{"class":372,"line":488},[7206,7210,7214],{"type":28,"tag":370,"props":7207,"children":7208},{"style":3821},[7209],{"type":51,"value":4083},{"type":28,"tag":370,"props":7211,"children":7212},{"style":377},[7213],{"type":51,"value":394},{"type":28,"tag":370,"props":7215,"children":7216},{"style":1462},[7217],{"type":51,"value":4937},{"type":28,"tag":370,"props":7219,"children":7220},{"class":372,"line":510},[7221,7225,7229,7233],{"type":28,"tag":370,"props":7222,"children":7223},{"style":3821},[7224],{"type":51,"value":4100},{"type":28,"tag":370,"props":7226,"children":7227},{"style":377},[7228],{"type":51,"value":4105},{"type":28,"tag":370,"props":7230,"children":7231},{"style":1462},[7232],{"type":51,"value":4110},{"type":28,"tag":370,"props":7234,"children":7235},{"style":377},[7236],{"type":51,"value":4115},{"type":28,"tag":370,"props":7238,"children":7239},{"class":372,"line":532},[7240,7244],{"type":28,"tag":370,"props":7241,"children":7242},{"style":3821},[7243],{"type":51,"value":6429},{"type":28,"tag":370,"props":7245,"children":7246},{"style":377},[7247],{"type":51,"value":3829},{"type":28,"tag":370,"props":7249,"children":7250},{"class":372,"line":554},[7251,7255,7259,7263],{"type":28,"tag":370,"props":7252,"children":7253},{"style":377},[7254],{"type":51,"value":3914},{"type":28,"tag":370,"props":7256,"children":7257},{"style":3821},[7258],{"type":51,"value":6446},{"type":28,"tag":370,"props":7260,"children":7261},{"style":377},[7262],{"type":51,"value":394},{"type":28,"tag":370,"props":7264,"children":7265},{"style":1462},[7266],{"type":51,"value":6455},{"type":28,"tag":370,"props":7268,"children":7269},{"class":372,"line":575},[7270,7274,7278],{"type":28,"tag":370,"props":7271,"children":7272},{"style":3821},[7273],{"type":51,"value":6464},{"type":28,"tag":370,"props":7275,"children":7276},{"style":377},[7277],{"type":51,"value":394},{"type":28,"tag":370,"props":7279,"children":7280},{"style":1462},[7281],{"type":51,"value":6473},{"type":28,"tag":370,"props":7283,"children":7284},{"class":372,"line":596},[7285,7289],{"type":28,"tag":370,"props":7286,"children":7287},{"style":3821},[7288],{"type":51,"value":6482},{"type":28,"tag":370,"props":7290,"children":7291},{"style":377},[7292],{"type":51,"value":3829},{"type":28,"tag":370,"props":7294,"children":7295},{"class":372,"line":614},[7296,7300,7304],{"type":28,"tag":370,"props":7297,"children":7298},{"style":3821},[7299],{"type":51,"value":6495},{"type":28,"tag":370,"props":7301,"children":7302},{"style":377},[7303],{"type":51,"value":394},{"type":28,"tag":370,"props":7305,"children":7306},{"style":1462},[7307],{"type":51,"value":6504},{"type":28,"tag":370,"props":7309,"children":7310},{"class":372,"line":623},[7311,7315,7319],{"type":28,"tag":370,"props":7312,"children":7313},{"style":3821},[7314],{"type":51,"value":6513},{"type":28,"tag":370,"props":7316,"children":7317},{"style":377},[7318],{"type":51,"value":394},{"type":28,"tag":370,"props":7320,"children":7321},{"style":716},[7322],{"type":51,"value":6522},{"type":28,"tag":370,"props":7324,"children":7325},{"class":372,"line":637},[7326,7330],{"type":28,"tag":370,"props":7327,"children":7328},{"style":3821},[7329],{"type":51,"value":4979},{"type":28,"tag":370,"props":7331,"children":7332},{"style":377},[7333],{"type":51,"value":3829},{"type":28,"tag":370,"props":7335,"children":7336},{"class":372,"line":646},[7337,7341,7345],{"type":28,"tag":370,"props":7338,"children":7339},{"style":3821},[7340],{"type":51,"value":6542},{"type":28,"tag":370,"props":7342,"children":7343},{"style":377},[7344],{"type":51,"value":394},{"type":28,"tag":370,"props":7346,"children":7347},{"style":1462},[7348],{"type":51,"value":6551},{"type":28,"tag":370,"props":7350,"children":7351},{"class":372,"line":668},[7352,7356,7360],{"type":28,"tag":370,"props":7353,"children":7354},{"style":3821},[7355],{"type":51,"value":6559},{"type":28,"tag":370,"props":7357,"children":7358},{"style":377},[7359],{"type":51,"value":394},{"type":28,"tag":370,"props":7361,"children":7362},{"style":1462},[7363],{"type":51,"value":6568},{"type":28,"tag":370,"props":7365,"children":7366},{"class":372,"line":690},[7367,7371,7375],{"type":28,"tag":370,"props":7368,"children":7369},{"style":3821},[7370],{"type":51,"value":6576},{"type":28,"tag":370,"props":7372,"children":7373},{"style":377},[7374],{"type":51,"value":394},{"type":28,"tag":370,"props":7376,"children":7377},{"style":716},[7378],{"type":51,"value":6585},{"type":28,"tag":370,"props":7380,"children":7381},{"class":372,"line":703},[7382],{"type":28,"tag":370,"props":7383,"children":7384},{"style":377},[7385],{"type":51,"value":6593},{"type":28,"tag":370,"props":7387,"children":7388},{"class":372,"line":722},[7389,7393,7397],{"type":28,"tag":370,"props":7390,"children":7391},{"style":3821},[7392],{"type":51,"value":6602},{"type":28,"tag":370,"props":7394,"children":7395},{"style":377},[7396],{"type":51,"value":394},{"type":28,"tag":370,"props":7398,"children":7399},{"style":1462},[7400],{"type":51,"value":6611},{"type":28,"tag":370,"props":7402,"children":7403},{"class":372,"line":731},[7404,7408,7412],{"type":28,"tag":370,"props":7405,"children":7406},{"style":3821},[7407],{"type":51,"value":6620},{"type":28,"tag":370,"props":7409,"children":7410},{"style":377},[7411],{"type":51,"value":394},{"type":28,"tag":370,"props":7413,"children":7414},{"style":1462},[7415],{"type":51,"value":6629},{"type":28,"tag":370,"props":7417,"children":7418},{"class":372,"line":740},[7419,7423,7427],{"type":28,"tag":370,"props":7420,"children":7421},{"style":3821},[7422],{"type":51,"value":6638},{"type":28,"tag":370,"props":7424,"children":7425},{"style":377},[7426],{"type":51,"value":394},{"type":28,"tag":370,"props":7428,"children":7429},{"style":1462},[7430],{"type":51,"value":6647},{"type":28,"tag":370,"props":7432,"children":7433},{"class":372,"line":748},[7434,7438,7442],{"type":28,"tag":370,"props":7435,"children":7436},{"style":3821},[7437],{"type":51,"value":4991},{"type":28,"tag":370,"props":7439,"children":7440},{"style":377},[7441],{"type":51,"value":394},{"type":28,"tag":370,"props":7443,"children":7444},{"style":1462},[7445],{"type":51,"value":5000},{"type":28,"tag":370,"props":7447,"children":7448},{"class":372,"line":768},[7449],{"type":28,"tag":370,"props":7450,"children":7451},{"emptyLinePlaceholder":133},[7452],{"type":51,"value":1632},{"type":28,"tag":370,"props":7454,"children":7455},{"class":372,"line":789},[7456,7460,7464],{"type":28,"tag":370,"props":7457,"children":7458},{"style":3821},[7459],{"type":51,"value":6678},{"type":28,"tag":370,"props":7461,"children":7462},{"style":377},[7463],{"type":51,"value":394},{"type":28,"tag":370,"props":7465,"children":7466},{"style":1462},[7467],{"type":51,"value":6687},{"type":28,"tag":370,"props":7469,"children":7470},{"class":372,"line":801},[7471,7475],{"type":28,"tag":370,"props":7472,"children":7473},{"style":3821},[7474],{"type":51,"value":6695},{"type":28,"tag":370,"props":7476,"children":7477},{"style":377},[7478],{"type":51,"value":3829},{"type":28,"tag":370,"props":7480,"children":7481},{"class":372,"line":817},[7482,7486],{"type":28,"tag":370,"props":7483,"children":7484},{"style":377},[7485],{"type":51,"value":3914},{"type":28,"tag":370,"props":7487,"children":7488},{"style":1462},[7489],{"type":51,"value":6712},{"type":28,"tag":370,"props":7491,"children":7492},{"class":372,"line":825},[7493,7497],{"type":28,"tag":370,"props":7494,"children":7495},{"style":377},[7496],{"type":51,"value":3914},{"type":28,"tag":370,"props":7498,"children":7499},{"style":1462},[7500],{"type":51,"value":6725},{"type":28,"tag":370,"props":7502,"children":7503},{"class":372,"line":833},[7504,7508],{"type":28,"tag":370,"props":7505,"children":7506},{"style":377},[7507],{"type":51,"value":3914},{"type":28,"tag":370,"props":7509,"children":7510},{"style":1462},[7511],{"type":51,"value":6738},{"type":28,"tag":370,"props":7513,"children":7514},{"class":372,"line":841},[7515,7519],{"type":28,"tag":370,"props":7516,"children":7517},{"style":377},[7518],{"type":51,"value":3914},{"type":28,"tag":370,"props":7520,"children":7521},{"style":1462},[7522],{"type":51,"value":6751},{"type":28,"tag":370,"props":7524,"children":7525},{"class":372,"line":861},[7526,7530],{"type":28,"tag":370,"props":7527,"children":7528},{"style":377},[7529],{"type":51,"value":3914},{"type":28,"tag":370,"props":7531,"children":7532},{"style":1462},[7533],{"type":51,"value":6764},{"type":28,"tag":370,"props":7535,"children":7536},{"class":372,"line":882},[7537,7541],{"type":28,"tag":370,"props":7538,"children":7539},{"style":377},[7540],{"type":51,"value":3914},{"type":28,"tag":370,"props":7542,"children":7543},{"style":1462},[7544],{"type":51,"value":6777},{"type":28,"tag":370,"props":7546,"children":7547},{"class":372,"line":894},[7548,7552],{"type":28,"tag":370,"props":7549,"children":7550},{"style":377},[7551],{"type":51,"value":3914},{"type":28,"tag":370,"props":7553,"children":7554},{"style":1462},[7555],{"type":51,"value":6790},{"type":28,"tag":370,"props":7557,"children":7558},{"class":372,"line":910},[7559,7563],{"type":28,"tag":370,"props":7560,"children":7561},{"style":377},[7562],{"type":51,"value":3914},{"type":28,"tag":370,"props":7564,"children":7565},{"style":1462},[7566],{"type":51,"value":6803},{"type":28,"tag":370,"props":7568,"children":7569},{"class":372,"line":918},[7570,7574],{"type":28,"tag":370,"props":7571,"children":7572},{"style":377},[7573],{"type":51,"value":3914},{"type":28,"tag":370,"props":7575,"children":7576},{"style":1462},[7577],{"type":51,"value":6816},{"type":28,"tag":370,"props":7579,"children":7580},{"class":372,"line":360},[7581,7585],{"type":28,"tag":370,"props":7582,"children":7583},{"style":377},[7584],{"type":51,"value":3914},{"type":28,"tag":370,"props":7586,"children":7587},{"style":1462},[7588],{"type":51,"value":6777},{"type":28,"tag":370,"props":7590,"children":7591},{"class":372,"line":361},[7592,7596],{"type":28,"tag":370,"props":7593,"children":7594},{"style":3821},[7595],{"type":51,"value":3902},{"type":28,"tag":370,"props":7597,"children":7598},{"style":377},[7599],{"type":51,"value":3829},{"type":28,"tag":370,"props":7601,"children":7602},{"class":372,"line":362},[7603,7607],{"type":28,"tag":370,"props":7604,"children":7605},{"style":377},[7606],{"type":51,"value":3914},{"type":28,"tag":370,"props":7608,"children":7609},{"style":1462},[7610],{"type":51,"value":6852},{"type":28,"tag":370,"props":7612,"children":7613},{"class":372,"line":363},[7614],{"type":28,"tag":370,"props":7615,"children":7616},{"emptyLinePlaceholder":133},[7617],{"type":51,"value":1632},{"type":28,"tag":370,"props":7619,"children":7620},{"class":372,"line":982},[7621,7625],{"type":28,"tag":370,"props":7622,"children":7623},{"style":3821},[7624],{"type":51,"value":5048},{"type":28,"tag":370,"props":7626,"children":7627},{"style":377},[7628],{"type":51,"value":3829},{"type":28,"tag":370,"props":7630,"children":7631},{"class":372,"line":991},[7632,7636,7640,7644],{"type":28,"tag":370,"props":7633,"children":7634},{"style":377},[7635],{"type":51,"value":3914},{"type":28,"tag":370,"props":7637,"children":7638},{"style":3821},[7639],{"type":51,"value":5065},{"type":28,"tag":370,"props":7641,"children":7642},{"style":377},[7643],{"type":51,"value":394},{"type":28,"tag":370,"props":7645,"children":7646},{"style":1462},[7647],{"type":51,"value":5074},{"type":28,"tag":370,"props":7649,"children":7650},{"class":372,"line":1004},[7651,7655],{"type":28,"tag":370,"props":7652,"children":7653},{"style":3821},[7654],{"type":51,"value":5083},{"type":28,"tag":370,"props":7656,"children":7657},{"style":377},[7658],{"type":51,"value":3829},{"type":28,"tag":370,"props":7660,"children":7661},{"class":372,"line":1017},[7662,7666],{"type":28,"tag":370,"props":7663,"children":7664},{"style":377},[7665],{"type":51,"value":5096},{"type":28,"tag":370,"props":7667,"children":7668},{"style":1462},[7669],{"type":51,"value":5101},{"type":28,"tag":370,"props":7671,"children":7672},{"class":372,"line":1046},[7673,7677,7681],{"type":28,"tag":370,"props":7674,"children":7675},{"style":3821},[7676],{"type":51,"value":6919},{"type":28,"tag":370,"props":7678,"children":7679},{"style":377},[7680],{"type":51,"value":394},{"type":28,"tag":370,"props":7682,"children":7683},{"style":1462},[7684],{"type":51,"value":6928},{"type":28,"tag":370,"props":7686,"children":7687},{"class":372,"line":1054},[7688,7692],{"type":28,"tag":370,"props":7689,"children":7690},{"style":3821},[7691],{"type":51,"value":5448},{"type":28,"tag":370,"props":7693,"children":7694},{"style":377},[7695],{"type":51,"value":3829},{"type":28,"tag":370,"props":7697,"children":7698},{"class":372,"line":1062},[7699,7703],{"type":28,"tag":370,"props":7700,"children":7701},{"style":3821},[7702],{"type":51,"value":6947},{"type":28,"tag":370,"props":7704,"children":7705},{"style":377},[7706],{"type":51,"value":3829},{"type":28,"tag":370,"props":7708,"children":7709},{"class":372,"line":1084},[7710,7714],{"type":28,"tag":370,"props":7711,"children":7712},{"style":3821},[7713],{"type":51,"value":6959},{"type":28,"tag":370,"props":7715,"children":7716},{"style":377},[7717],{"type":51,"value":3829},{"type":28,"tag":370,"props":7719,"children":7720},{"class":372,"line":1097},[7721,7725,7729],{"type":28,"tag":370,"props":7722,"children":7723},{"style":3821},[7724],{"type":51,"value":6971},{"type":28,"tag":370,"props":7726,"children":7727},{"style":377},[7728],{"type":51,"value":394},{"type":28,"tag":370,"props":7730,"children":7731},{"style":1462},[7732],{"type":51,"value":6980},{"type":28,"tag":370,"props":7734,"children":7735},{"class":372,"line":1110},[7736,7740,7744],{"type":28,"tag":370,"props":7737,"children":7738},{"style":3821},[7739],{"type":51,"value":6988},{"type":28,"tag":370,"props":7741,"children":7742},{"style":377},[7743],{"type":51,"value":394},{"type":28,"tag":370,"props":7745,"children":7746},{"style":1462},[7747],{"type":51,"value":6997},{"type":28,"tag":370,"props":7749,"children":7750},{"class":372,"line":1131},[7751,7755],{"type":28,"tag":370,"props":7752,"children":7753},{"style":3821},[7754],{"type":51,"value":3944},{"type":28,"tag":370,"props":7756,"children":7757},{"style":377},[7758],{"type":51,"value":3829},{"type":28,"tag":370,"props":7760,"children":7761},{"class":372,"line":1148},[7762,7766,7770,7774],{"type":28,"tag":370,"props":7763,"children":7764},{"style":377},[7765],{"type":51,"value":3914},{"type":28,"tag":370,"props":7767,"children":7768},{"style":3821},[7769],{"type":51,"value":4177},{"type":28,"tag":370,"props":7771,"children":7772},{"style":377},[7773],{"type":51,"value":394},{"type":28,"tag":370,"props":7775,"children":7776},{"style":1462},[7777],{"type":51,"value":6172},{"type":28,"tag":370,"props":7779,"children":7780},{"class":372,"line":1156},[7781,7785,7789,7793],{"type":28,"tag":370,"props":7782,"children":7783},{"style":377},[7784],{"type":51,"value":3914},{"type":28,"tag":370,"props":7786,"children":7787},{"style":3821},[7788],{"type":51,"value":4177},{"type":28,"tag":370,"props":7790,"children":7791},{"style":377},[7792],{"type":51,"value":394},{"type":28,"tag":370,"props":7794,"children":7795},{"style":1462},[7796],{"type":51,"value":4186},{"type":28,"tag":370,"props":7798,"children":7799},{"class":372,"line":1177},[7800,7804,7808],{"type":28,"tag":370,"props":7801,"children":7802},{"style":3821},[7803],{"type":51,"value":4194},{"type":28,"tag":370,"props":7805,"children":7806},{"style":377},[7807],{"type":51,"value":394},{"type":28,"tag":370,"props":7809,"children":7810},{"style":1462},[7811],{"type":51,"value":4203},{"type":28,"tag":370,"props":7813,"children":7814},{"class":372,"line":1194},[7815,7819,7823,7827],{"type":28,"tag":370,"props":7816,"children":7817},{"style":377},[7818],{"type":51,"value":3914},{"type":28,"tag":370,"props":7820,"children":7821},{"style":3821},[7822],{"type":51,"value":4177},{"type":28,"tag":370,"props":7824,"children":7825},{"style":377},[7826],{"type":51,"value":394},{"type":28,"tag":370,"props":7828,"children":7829},{"style":1462},[7830],{"type":51,"value":4223},{"type":28,"tag":370,"props":7832,"children":7833},{"class":372,"line":1202},[7834],{"type":28,"tag":370,"props":7835,"children":7836},{"emptyLinePlaceholder":133},[7837],{"type":51,"value":1632},{"type":28,"tag":370,"props":7839,"children":7840},{"class":372,"line":1215},[7841,7845],{"type":28,"tag":370,"props":7842,"children":7843},{"style":3821},[7844],{"type":51,"value":6004},{"type":28,"tag":370,"props":7846,"children":7847},{"style":377},[7848],{"type":51,"value":3829},{"type":28,"tag":370,"props":7850,"children":7851},{"class":372,"line":1228},[7852,7856],{"type":28,"tag":370,"props":7853,"children":7854},{"style":3821},[7855],{"type":51,"value":6016},{"type":28,"tag":370,"props":7857,"children":7858},{"style":377},[7859],{"type":51,"value":3829},{"type":28,"tag":370,"props":7861,"children":7862},{"class":372,"line":1246},[7863,7867,7871],{"type":28,"tag":370,"props":7864,"children":7865},{"style":3821},[7866],{"type":51,"value":6029},{"type":28,"tag":370,"props":7868,"children":7869},{"style":377},[7870],{"type":51,"value":394},{"type":28,"tag":370,"props":7872,"children":7873},{"style":1462},[7874],{"type":51,"value":4937},{"type":28,"tag":370,"props":7876,"children":7877},{"class":372,"line":1254},[7878,7882,7886,7890],{"type":28,"tag":370,"props":7879,"children":7880},{"style":3821},[7881],{"type":51,"value":6045},{"type":28,"tag":370,"props":7883,"children":7884},{"style":377},[7885],{"type":51,"value":4105},{"type":28,"tag":370,"props":7887,"children":7888},{"style":1462},[7889],{"type":51,"value":4110},{"type":28,"tag":370,"props":7891,"children":7892},{"style":377},[7893],{"type":51,"value":4115},{"type":28,"tag":370,"props":7895,"children":7896},{"class":372,"line":1267},[7897,7901,7905],{"type":28,"tag":370,"props":7898,"children":7899},{"style":3821},[7900],{"type":51,"value":6065},{"type":28,"tag":370,"props":7902,"children":7903},{"style":377},[7904],{"type":51,"value":394},{"type":28,"tag":370,"props":7906,"children":7907},{"style":1462},[7908],{"type":51,"value":5989},{"type":28,"tag":370,"props":7910,"children":7911},{"class":372,"line":1276},[7912,7916],{"type":28,"tag":370,"props":7913,"children":7914},{"style":3821},[7915],{"type":51,"value":6081},{"type":28,"tag":370,"props":7917,"children":7918},{"style":377},[7919],{"type":51,"value":3829},{"type":28,"tag":370,"props":7921,"children":7922},{"class":372,"line":1285},[7923,7927],{"type":28,"tag":370,"props":7924,"children":7925},{"style":377},[7926],{"type":51,"value":5474},{"type":28,"tag":370,"props":7928,"children":7929},{"style":1462},[7930],{"type":51,"value":6097},{"type":28,"tag":370,"props":7932,"children":7933},{"class":372,"line":1298},[7934,7938],{"type":28,"tag":370,"props":7935,"children":7936},{"style":3821},[7937],{"type":51,"value":6105},{"type":28,"tag":370,"props":7939,"children":7940},{"style":377},[7941],{"type":51,"value":3829},{"type":28,"tag":370,"props":7943,"children":7944},{"class":372,"line":1306},[7945,7949],{"type":28,"tag":370,"props":7946,"children":7947},{"style":3821},[7948],{"type":51,"value":6117},{"type":28,"tag":370,"props":7950,"children":7951},{"style":377},[7952],{"type":51,"value":3829},{"type":28,"tag":370,"props":7954,"children":7955},{"class":372,"line":1315},[7956,7960,7964],{"type":28,"tag":370,"props":7957,"children":7958},{"style":3821},[7959],{"type":51,"value":6129},{"type":28,"tag":370,"props":7961,"children":7962},{"style":377},[7963],{"type":51,"value":394},{"type":28,"tag":370,"props":7965,"children":7966},{"style":1462},[7967],{"type":51,"value":6138},{"type":28,"tag":370,"props":7969,"children":7970},{"class":372,"line":1323},[7971,7975],{"type":28,"tag":370,"props":7972,"children":7973},{"style":3821},[7974],{"type":51,"value":6147},{"type":28,"tag":370,"props":7976,"children":7977},{"style":377},[7978],{"type":51,"value":3829},{"type":28,"tag":370,"props":7980,"children":7981},{"class":372,"line":1336},[7982,7986,7990,7994],{"type":28,"tag":370,"props":7983,"children":7984},{"style":377},[7985],{"type":51,"value":5474},{"type":28,"tag":370,"props":7987,"children":7988},{"style":3821},[7989],{"type":51,"value":4177},{"type":28,"tag":370,"props":7991,"children":7992},{"style":377},[7993],{"type":51,"value":394},{"type":28,"tag":370,"props":7995,"children":7996},{"style":1462},[7997],{"type":51,"value":6172},{"type":28,"tag":370,"props":7999,"children":8000},{"class":372,"line":1349},[8001,8005,8009,8013],{"type":28,"tag":370,"props":8002,"children":8003},{"style":377},[8004],{"type":51,"value":5474},{"type":28,"tag":370,"props":8006,"children":8007},{"style":3821},[8008],{"type":51,"value":4177},{"type":28,"tag":370,"props":8010,"children":8011},{"style":377},[8012],{"type":51,"value":394},{"type":28,"tag":370,"props":8014,"children":8015},{"style":1462},[8016],{"type":51,"value":4186},{"type":28,"tag":370,"props":8018,"children":8019},{"class":372,"line":1370},[8020,8024,8028],{"type":28,"tag":370,"props":8021,"children":8022},{"style":3821},[8023],{"type":51,"value":6201},{"type":28,"tag":370,"props":8025,"children":8026},{"style":377},[8027],{"type":51,"value":394},{"type":28,"tag":370,"props":8029,"children":8030},{"style":1462},[8031],{"type":51,"value":4203},{"type":28,"tag":370,"props":8033,"children":8034},{"class":372,"line":1383},[8035,8039,8043,8047],{"type":28,"tag":370,"props":8036,"children":8037},{"style":377},[8038],{"type":51,"value":5474},{"type":28,"tag":370,"props":8040,"children":8041},{"style":3821},[8042],{"type":51,"value":4177},{"type":28,"tag":370,"props":8044,"children":8045},{"style":377},[8046],{"type":51,"value":394},{"type":28,"tag":370,"props":8048,"children":8049},{"style":1462},[8050],{"type":51,"value":4223},{"type":28,"tag":4677,"props":8052,"children":8053},{},[8054],{"type":51,"value":4681},{"title":7,"searchDepth":120,"depth":120,"links":8056},[8057,8060,8063],{"id":5845,"depth":120,"text":5848,"children":8058},[8059],{"id":5950,"depth":408,"text":5953},{"id":6247,"depth":120,"text":5815,"children":8061},[8062],{"id":6295,"depth":408,"text":6298},{"id":7121,"depth":120,"text":7124},{"_path":198,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":199,"description":200,"author":163,"image":164,"releaseDate":201,"blogCategories":8065,"articleTags":8066,"tags":8067,"body":8068,"_type":123,"_id":206,"_source":125,"_file":207,"_stem":208,"_extension":128},[203,168],[168,170],[22,173],{"type":25,"children":8069,"toc":8597},[8070,8074,8085,8091,8104,8113,8144,8150,8178,8183,8213,8522,8527,8593],{"type":28,"tag":243,"props":8071,"children":8073},{"alt":7,"aspect-ratio":245,"height":246,"object-fit":247,"src":8072},"/blog/shopware-renovate.png",[],{"type":28,"tag":47,"props":8075,"children":8076},{},[8077,8083],{"type":28,"tag":261,"props":8078,"children":8080},{"href":8079},"https://docs.renovatebot.com/",[8081],{"type":51,"value":8082},"Renovate",{"type":51,"value":8084}," 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":28,"tag":68,"props":8086,"children":8088},{"id":8087},"shopware-versionierungsschema",[8089],{"type":51,"value":8090},"Shopware Versionierungsschema",{"type":28,"tag":47,"props":8092,"children":8093},{},[8094,8096,8102],{"type":51,"value":8095},"Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Sie können den ",{"type":28,"tag":261,"props":8097,"children":8099},{"href":8098},"https://www.shopware.com/de/news/shopware-6-versionierungs-strategie/",[8100],{"type":51,"value":8101},"offiziellen Artikel",{"type":51,"value":8103}," lesen, aber kurz gesagt:",{"type":28,"tag":8105,"props":8106,"children":8107},"blockquote",{},[8108],{"type":28,"tag":47,"props":8109,"children":8110},{},[8111],{"type":51,"value":8112},"Shopware implementierte SemVer als \"SemVer with benefits\".",{"type":28,"tag":8105,"props":8114,"children":8115},{},[8116,8121,8139],{"type":28,"tag":47,"props":8117,"children":8118},{},[8119],{"type":51,"value":8120},"Eine SemVer-konforme Version hat drei Zahlen: Major, Minor und Patch. Diese werden nach folgendem Regelsatz erhöht:",{"type":28,"tag":4779,"props":8122,"children":8123},{},[8124,8129,8134],{"type":28,"tag":284,"props":8125,"children":8126},{},[8127],{"type":51,"value":8128},"MAJOR: Inkompatible API-Änderungen werden vorgenommen",{"type":28,"tag":284,"props":8130,"children":8131},{},[8132],{"type":51,"value":8133},"MINOR: Funktionalität wird auf rückwärtskompatible Weise hinzugefügt",{"type":28,"tag":284,"props":8135,"children":8136},{},[8137],{"type":51,"value":8138},"PATCH: Rückwärtskompatible Fehlerbehebungen werden vorgenommen",{"type":28,"tag":47,"props":8140,"children":8141},{},[8142],{"type":51,"value":8143},"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":28,"tag":68,"props":8145,"children":8147},{"id":8146},"renovate-konfiguration",[8148],{"type":51,"value":8149},"Renovate-Konfiguration",{"type":28,"tag":47,"props":8151,"children":8152},{},[8153,8154,8160,8162,8168,8170,8176],{"type":51,"value":4658},{"type":28,"tag":290,"props":8155,"children":8157},{"className":8156},[],[8158],{"type":51,"value":8159},"\"große Marketing-Nummer\"",{"type":51,"value":8161}," oder ",{"type":28,"tag":290,"props":8163,"children":8165},{"className":8164},[],[8166],{"type":51,"value":8167},"\"Generation\"",{"type":51,"value":8169}," wird in Renovate als ",{"type":28,"tag":290,"props":8171,"children":8173},{"className":8172},[],[8174],{"type":51,"value":8175},"compatibility",{"type":51,"value":8177}," dargestellt.",{"type":28,"tag":47,"props":8179,"children":8180},{},[8181],{"type":51,"value":8182},"Die folgende Konfiguration wird:",{"type":28,"tag":280,"props":8184,"children":8185},{},[8186,8191,8203,8208],{"type":28,"tag":284,"props":8187,"children":8188},{},[8189],{"type":51,"value":8190},"Alle shopware-spezifischen Updates gruppieren",{"type":28,"tag":284,"props":8192,"children":8193},{},[8194,8196,8201],{"type":51,"value":8195},"Die Updates als ",{"type":28,"tag":290,"props":8197,"children":8199},{"className":8198},[],[8200],{"type":51,"value":22},{"type":51,"value":8202}," gruppieren",{"type":28,"tag":284,"props":8204,"children":8205},{},[8206],{"type":51,"value":8207},"Renovate mitteilen, wie die Version extrahiert werden soll",{"type":28,"tag":284,"props":8209,"children":8210},{},[8211],{"type":51,"value":8212},"Renovate mitteilen, wo Changelog-Informationen zu finden sind",{"type":28,"tag":354,"props":8214,"children":8217},{"className":356,"code":8215,"filename":8216,"language":364,"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",[8218],{"type":28,"tag":290,"props":8219,"children":8220},{"__ignoreMap":7},[8221,8228,8249,8261,8268,8289,8301,8309,8317,8329,8340,8352,8364,8372,8379,8400,8484,8501,8508,8515],{"type":28,"tag":370,"props":8222,"children":8223},{"class":372,"line":373},[8224],{"type":28,"tag":370,"props":8225,"children":8226},{"style":377},[8227],{"type":51,"value":380},{"type":28,"tag":370,"props":8229,"children":8230},{"class":372,"line":120},[8231,8236,8240,8245],{"type":28,"tag":370,"props":8232,"children":8233},{"style":386},[8234],{"type":51,"value":8235},"  \"$schema\"",{"type":28,"tag":370,"props":8237,"children":8238},{"style":377},[8239],{"type":51,"value":394},{"type":28,"tag":370,"props":8241,"children":8242},{"style":397},[8243],{"type":51,"value":8244},"\"https://docs.renovatebot.com/renovate-schema.json\"",{"type":28,"tag":370,"props":8246,"children":8247},{"style":377},[8248],{"type":51,"value":405},{"type":28,"tag":370,"props":8250,"children":8251},{"class":372,"line":408},[8252,8257],{"type":28,"tag":370,"props":8253,"children":8254},{"style":386},[8255],{"type":51,"value":8256},"  \"packageRules\"",{"type":28,"tag":370,"props":8258,"children":8259},{"style":377},[8260],{"type":51,"value":634},{"type":28,"tag":370,"props":8262,"children":8263},{"class":372,"line":430},[8264],{"type":28,"tag":370,"props":8265,"children":8266},{"style":377},[8267],{"type":51,"value":643},{"type":28,"tag":370,"props":8269,"children":8270},{"class":372,"line":452},[8271,8276,8280,8285],{"type":28,"tag":370,"props":8272,"children":8273},{"style":386},[8274],{"type":51,"value":8275},"      \"description\"",{"type":28,"tag":370,"props":8277,"children":8278},{"style":377},[8279],{"type":51,"value":394},{"type":28,"tag":370,"props":8281,"children":8282},{"style":397},[8283],{"type":51,"value":8284},"\"Follow Shopware version schema\"",{"type":28,"tag":370,"props":8286,"children":8287},{"style":377},[8288],{"type":51,"value":405},{"type":28,"tag":370,"props":8290,"children":8291},{"class":372,"line":466},[8292,8297],{"type":28,"tag":370,"props":8293,"children":8294},{"style":386},[8295],{"type":51,"value":8296},"      \"matchDatasources\"",{"type":28,"tag":370,"props":8298,"children":8299},{"style":377},[8300],{"type":51,"value":634},{"type":28,"tag":370,"props":8302,"children":8303},{"class":372,"line":488},[8304],{"type":28,"tag":370,"props":8305,"children":8306},{"style":397},[8307],{"type":51,"value":8308},"        \"packagist\"\n",{"type":28,"tag":370,"props":8310,"children":8311},{"class":372,"line":510},[8312],{"type":28,"tag":370,"props":8313,"children":8314},{"style":377},[8315],{"type":51,"value":8316},"      ],\n",{"type":28,"tag":370,"props":8318,"children":8319},{"class":372,"line":532},[8320,8325],{"type":28,"tag":370,"props":8321,"children":8322},{"style":386},[8323],{"type":51,"value":8324},"      \"matchPackageNames\"",{"type":28,"tag":370,"props":8326,"children":8327},{"style":377},[8328],{"type":51,"value":634},{"type":28,"tag":370,"props":8330,"children":8331},{"class":372,"line":554},[8332,8336],{"type":28,"tag":370,"props":8333,"children":8334},{"style":397},[8335],{"type":51,"value":1852},{"type":28,"tag":370,"props":8337,"children":8338},{"style":377},[8339],{"type":51,"value":405},{"type":28,"tag":370,"props":8341,"children":8342},{"class":372,"line":575},[8343,8348],{"type":28,"tag":370,"props":8344,"children":8345},{"style":397},[8346],{"type":51,"value":8347},"        \"shopware/administration\"",{"type":28,"tag":370,"props":8349,"children":8350},{"style":377},[8351],{"type":51,"value":405},{"type":28,"tag":370,"props":8353,"children":8354},{"class":372,"line":596},[8355,8360],{"type":28,"tag":370,"props":8356,"children":8357},{"style":397},[8358],{"type":51,"value":8359},"        \"shopware/elasticsearch\"",{"type":28,"tag":370,"props":8361,"children":8362},{"style":377},[8363],{"type":51,"value":405},{"type":28,"tag":370,"props":8365,"children":8366},{"class":372,"line":614},[8367],{"type":28,"tag":370,"props":8368,"children":8369},{"style":397},[8370],{"type":51,"value":8371},"        \"shopware/storefront\"\n",{"type":28,"tag":370,"props":8373,"children":8374},{"class":372,"line":623},[8375],{"type":28,"tag":370,"props":8376,"children":8377},{"style":377},[8378],{"type":51,"value":8316},{"type":28,"tag":370,"props":8380,"children":8381},{"class":372,"line":637},[8382,8387,8391,8396],{"type":28,"tag":370,"props":8383,"children":8384},{"style":386},[8385],{"type":51,"value":8386},"      \"groupName\"",{"type":28,"tag":370,"props":8388,"children":8389},{"style":377},[8390],{"type":51,"value":394},{"type":28,"tag":370,"props":8392,"children":8393},{"style":397},[8394],{"type":51,"value":8395},"\"shopware\"",{"type":28,"tag":370,"props":8397,"children":8398},{"style":377},[8399],{"type":51,"value":405},{"type":28,"tag":370,"props":8401,"children":8402},{"class":372,"line":646},[8403,8408,8412,8417,8421,8426,8430,8435,8439,8444,8448,8453,8457,8462,8466,8471,8475,8480],{"type":28,"tag":370,"props":8404,"children":8405},{"style":386},[8406],{"type":51,"value":8407},"      \"versioning\"",{"type":28,"tag":370,"props":8409,"children":8410},{"style":377},[8411],{"type":51,"value":394},{"type":28,"tag":370,"props":8413,"children":8414},{"style":397},[8415],{"type":51,"value":8416},"\"regex:(?\u003Ccompatibility>",{"type":28,"tag":370,"props":8418,"children":8419},{"style":716},[8420],{"type":51,"value":1029},{"type":28,"tag":370,"props":8422,"children":8423},{"style":397},[8424],{"type":51,"value":8425},"d+)",{"type":28,"tag":370,"props":8427,"children":8428},{"style":716},[8429],{"type":51,"value":1029},{"type":28,"tag":370,"props":8431,"children":8432},{"style":397},[8433],{"type":51,"value":8434},".(?\u003Cmajor>",{"type":28,"tag":370,"props":8436,"children":8437},{"style":716},[8438],{"type":51,"value":1029},{"type":28,"tag":370,"props":8440,"children":8441},{"style":397},[8442],{"type":51,"value":8443},"d+)(",{"type":28,"tag":370,"props":8445,"children":8446},{"style":716},[8447],{"type":51,"value":1029},{"type":28,"tag":370,"props":8449,"children":8450},{"style":397},[8451],{"type":51,"value":8452},".(?\u003Cminor>",{"type":28,"tag":370,"props":8454,"children":8455},{"style":716},[8456],{"type":51,"value":1029},{"type":28,"tag":370,"props":8458,"children":8459},{"style":397},[8460],{"type":51,"value":8461},"d+))?(",{"type":28,"tag":370,"props":8463,"children":8464},{"style":716},[8465],{"type":51,"value":1029},{"type":28,"tag":370,"props":8467,"children":8468},{"style":397},[8469],{"type":51,"value":8470},".(?\u003Cpatch>",{"type":28,"tag":370,"props":8472,"children":8473},{"style":716},[8474],{"type":51,"value":1029},{"type":28,"tag":370,"props":8476,"children":8477},{"style":397},[8478],{"type":51,"value":8479},"d+))?$\"",{"type":28,"tag":370,"props":8481,"children":8482},{"style":377},[8483],{"type":51,"value":405},{"type":28,"tag":370,"props":8485,"children":8486},{"class":372,"line":668},[8487,8492,8496],{"type":28,"tag":370,"props":8488,"children":8489},{"style":386},[8490],{"type":51,"value":8491},"      \"sourceUrl\"",{"type":28,"tag":370,"props":8493,"children":8494},{"style":377},[8495],{"type":51,"value":394},{"type":28,"tag":370,"props":8497,"children":8498},{"style":397},[8499],{"type":51,"value":8500},"\"https://github.com/shopware/shopware\"\n",{"type":28,"tag":370,"props":8502,"children":8503},{"class":372,"line":690},[8504],{"type":28,"tag":370,"props":8505,"children":8506},{"style":377},[8507],{"type":51,"value":979},{"type":28,"tag":370,"props":8509,"children":8510},{"class":372,"line":703},[8511],{"type":28,"tag":370,"props":8512,"children":8513},{"style":377},[8514],{"type":51,"value":4621},{"type":28,"tag":370,"props":8516,"children":8517},{"class":372,"line":722},[8518],{"type":28,"tag":370,"props":8519,"children":8520},{"style":377},[8521],{"type":51,"value":1437},{"type":28,"tag":47,"props":8523,"children":8524},{},[8525],{"type":51,"value":8526},"Dies sollte zur Erstellung folgender Merge-/Pull-Requests führen:",{"type":28,"tag":4779,"props":8528,"children":8529},{},[8530,8564],{"type":28,"tag":284,"props":8531,"children":8532},{},[8533,8535,8541,8543,8549,8550,8556,8557,8563],{"type":51,"value":8534},"fix(deps): update shopware (",{"type":28,"tag":290,"props":8536,"children":8538},{"className":8537},[],[8539],{"type":51,"value":8540},"shopware/administration",{"type":51,"value":8542},", ",{"type":28,"tag":290,"props":8544,"children":8546},{"className":8545},[],[8547],{"type":51,"value":8548},"shopware/core",{"type":51,"value":8542},{"type":28,"tag":290,"props":8551,"children":8553},{"className":8552},[],[8554],{"type":51,"value":8555},"shopware/elasticsearch",{"type":51,"value":8542},{"type":28,"tag":290,"props":8558,"children":8560},{"className":8559},[],[8561],{"type":51,"value":8562},"shopware/storefront",{"type":51,"value":5842},{"type":28,"tag":284,"props":8565,"children":8566},{},[8567,8569,8574,8575,8580,8581,8586,8587,8592],{"type":51,"value":8568},"fix(deps): update shopware to v7 (major) (",{"type":28,"tag":290,"props":8570,"children":8572},{"className":8571},[],[8573],{"type":51,"value":8540},{"type":51,"value":8542},{"type":28,"tag":290,"props":8576,"children":8578},{"className":8577},[],[8579],{"type":51,"value":8548},{"type":51,"value":8542},{"type":28,"tag":290,"props":8582,"children":8584},{"className":8583},[],[8585],{"type":51,"value":8555},{"type":51,"value":8542},{"type":28,"tag":290,"props":8588,"children":8590},{"className":8589},[],[8591],{"type":51,"value":8562},{"type":51,"value":5842},{"type":28,"tag":4677,"props":8594,"children":8595},{},[8596],{"type":51,"value":4681},{"title":7,"searchDepth":120,"depth":120,"links":8598},[8599,8600],{"id":8087,"depth":120,"text":8090},{"id":8146,"depth":120,"text":8149},{"_path":210,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":211,"description":212,"author":213,"image":214,"releaseDate":215,"blogCategories":8602,"articleTags":8603,"tags":8604,"body":8605,"_type":123,"_id":220,"_source":125,"_file":221,"_stem":222,"_extension":128},[203,168],[218,170],[23,153],{"type":25,"children":8606,"toc":8672},[8607,8613,8634,8639,8644,8650,8662,8667],{"type":28,"tag":68,"props":8608,"children":8610},{"id":8609},"was-ist-das",[8611],{"type":51,"value":8612},"Was ist das?",{"type":28,"tag":47,"props":8614,"children":8615},{},[8616,8618,8624,8626,8632],{"type":51,"value":8617},"Dieser Wrapper dient als einfache und kosteneffiziente Brücke, die Aufrufe von der\n",{"type":28,"tag":261,"props":8619,"children":8621},{"href":8620},"https://docs.developer.amazonservices.com/en_US/dev_guide/index.html",[8622],{"type":51,"value":8623},"Amazon Marketplace Web Service (MWS)",{"type":51,"value":8625},"\nAPI zu ",{"type":28,"tag":261,"props":8627,"children":8629},{"href":8628},"https://developer-docs.amazon.com/sp-api",[8630],{"type":51,"value":8631},"Selling Partner (SP) API",{"type":51,"value":8633}," 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":28,"tag":47,"props":8635,"children":8636},{},[8637],{"type":51,"value":8638},"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":28,"tag":47,"props":8640,"children":8641},{},[8642],{"type":51,"value":8643},"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":28,"tag":68,"props":8645,"children":8647},{"id":8646},"download",[8648],{"type":51,"value":8649},"Download",{"type":28,"tag":47,"props":8651,"children":8652},{},[8653,8655,8661],{"type":51,"value":8654},"Interesse geweckt? Das Projekt wurde als Open-Source auf Github veröffentlicht:\n",{"type":28,"tag":261,"props":8656,"children":8658},{"href":8657},"https://github.com/bhelm/Amazon-MWS-SP-Wrapper",[8659],{"type":51,"value":8660},"Amazon-MWS-SP-API-Wrapper",{"type":51,"value":268},{"type":28,"tag":47,"props":8663,"children":8664},{},[8665],{"type":51,"value":8666},"Mit diesem Angebot streben wir danach, zur Open-Source-Kultur beizutragen und erhoffen uns konstruktives Feedback von\nanderen Entwicklern.",{"type":28,"tag":47,"props":8668,"children":8669},{},[8670],{"type":51,"value":8671},"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":120,"depth":120,"links":8673},[8674,8675],{"id":8609,"depth":120,"text":8612},{"id":8646,"depth":120,"text":8649},{"_path":224,"_dir":160,"_draft":6,"_partial":6,"_locale":7,"title":225,"description":226,"author":213,"image":227,"releaseDate":228,"blogCategories":8677,"articleTags":8678,"tags":8679,"body":8680,"_type":123,"_id":233,"_source":125,"_file":234,"_stem":235,"_extension":128},[171,168],[231],[22],{"type":25,"children":8681,"toc":9205},[8682,8688,8693,8704,8737,8743,8748,8767,8776,8781,8786,9105,9110,9115,9120,9125,9137,9189,9195,9201],{"type":28,"tag":68,"props":8683,"children":8685},{"id":8684},"shopware-5-parallele-thumbnail-generierung-nach-dem-verschieben-eines-shopware-5-systems-auf-einen-anderen-server",[8686],{"type":51,"value":8687},"Shopware 5 - Parallele Thumbnail-Generierung nach dem Verschieben eines Shopware 5-Systems auf einen anderen Server",{"type":28,"tag":47,"props":8689,"children":8690},{},[8691],{"type":51,"value":8692},"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":28,"tag":47,"props":8694,"children":8695},{},[8696,8698],{"type":51,"value":8697},"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":28,"tag":261,"props":8699,"children":8701},{"href":8700},"https://gist.github.com/bhelm/2d30f0cebcf4a7d8ea41c532ec67cd62",[8702],{"type":51,"value":8703},"ExportImagesCommand.php",{"type":28,"tag":47,"props":8705,"children":8706},{},[8707,8709,8715,8716,8721,8723,8728,8730,8735],{"type":51,"value":8708},"Diese Dateiliste kann mit den Optionen ",{"type":28,"tag":8710,"props":8711,"children":8712},"em",{},[8713],{"type":51,"value":8714},"tar -T",{"type":51,"value":8161},{"type":28,"tag":8710,"props":8717,"children":8718},{},[8719],{"type":51,"value":8720},"rsync --files-from=",{"type":51,"value":8722}," verwendet werden, die diese Tools anweisen, nur die aufgelisteten Dateien zu verarbeiten. Für den anfänglichen Kopiervorgang ist ",{"type":28,"tag":8710,"props":8724,"children":8725},{},[8726],{"type":51,"value":8727},"tar",{"type":51,"value":8729}," sehr zu empfehlen, da es nur die aufgelisteten Dateien abholt, ohne irgendeine \"Berechnung\" wie bei ",{"type":28,"tag":8710,"props":8731,"children":8732},{},[8733],{"type":51,"value":8734},"rsync",{"type":51,"value":8736}," vorzunehmen.",{"type":28,"tag":68,"props":8738,"children":8740},{"id":8739},"sw5-standard-thumbnails-generieren-hätte-80-stunden-gedauert",[8741],{"type":51,"value":8742},"SW5 Standard-Thumbnails generieren hätte 80 Stunden gedauert",{"type":28,"tag":47,"props":8744,"children":8745},{},[8746],{"type":51,"value":8747},"... und würde nur die Hälfte eines Kerns nutzen.",{"type":28,"tag":47,"props":8749,"children":8750},{},[8751,8753,8758,8760,8765],{"type":51,"value":8752},"Ich war neugierig, ob ich diesen Generierungsprozess beschleunigen kann. Der Server selbst hat 32 Kerne zur Verfügung, also habe ich den Befehl ",{"type":28,"tag":8710,"props":8754,"children":8755},{},[8756],{"type":51,"value":8757},"generate thumbnail",{"type":51,"value":8759}," aus sw5 kopiert und ihn so modifiziert, dass er mit dem Parameter ",{"type":28,"tag":8710,"props":8761,"children":8762},{},[8763],{"type":51,"value":8764},"--batch",{"type":51,"value":8766}," in Batches arbeitet:",{"type":28,"tag":47,"props":8768,"children":8769},{},[8770],{"type":28,"tag":261,"props":8771,"children":8773},{"href":8772},"https://gist.github.com/bhelm/2015d3829d4a3f24f9760f6e4e1aac1f",[8774],{"type":51,"value":8775},"ParallelThumbnailGenerateCommand.php",{"type":28,"tag":47,"props":8777,"children":8778},{},[8779],{"type":51,"value":8780},"Damit es funktioniert, habe ich einfach den Shopware-Kern unter engine/Shopware/Models/Media/Repository.php geändert",{"type":28,"tag":47,"props":8782,"children":8783},{},[8784],{"type":51,"value":8785},"Ich habe einfach die getAlbumMediaQuery Funktion geändert in:",{"type":28,"tag":354,"props":8787,"children":8791},{"className":8788,"code":8789,"language":8790,"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",[8792],{"type":28,"tag":290,"props":8793,"children":8794},{"__ignoreMap":7},[8795,8868,8875,8913,8935,8963,8989,8996,9003,9025,9043,9061,9068,9075,9098],{"type":28,"tag":370,"props":8796,"children":8797},{"class":372,"line":373},[8798,8803,8808,8813,8818,8823,8827,8832,8836,8841,8845,8850,8854,8859,8863],{"type":28,"tag":370,"props":8799,"children":8800},{"style":377},[8801],{"type":51,"value":8802},"public function ",{"type":28,"tag":370,"props":8804,"children":8805},{"style":1457},[8806],{"type":51,"value":8807},"getAlbumMediaQuery",{"type":28,"tag":370,"props":8809,"children":8810},{"style":377},[8811],{"type":51,"value":8812},"($albumId, $filter ",{"type":28,"tag":370,"props":8814,"children":8815},{"style":3369},[8816],{"type":51,"value":8817},"=",{"type":28,"tag":370,"props":8819,"children":8820},{"style":377},[8821],{"type":51,"value":8822}," null, $orderBy ",{"type":28,"tag":370,"props":8824,"children":8825},{"style":3369},[8826],{"type":51,"value":8817},{"type":28,"tag":370,"props":8828,"children":8829},{"style":377},[8830],{"type":51,"value":8831}," null, $offset ",{"type":28,"tag":370,"props":8833,"children":8834},{"style":3369},[8835],{"type":51,"value":8817},{"type":28,"tag":370,"props":8837,"children":8838},{"style":377},[8839],{"type":51,"value":8840}," null, $limit ",{"type":28,"tag":370,"props":8842,"children":8843},{"style":3369},[8844],{"type":51,"value":8817},{"type":28,"tag":370,"props":8846,"children":8847},{"style":377},[8848],{"type":51,"value":8849}," null, $validTypes ",{"type":28,"tag":370,"props":8851,"children":8852},{"style":3369},[8853],{"type":51,"value":8817},{"type":28,"tag":370,"props":8855,"children":8856},{"style":377},[8857],{"type":51,"value":8858}," null, $batch ",{"type":28,"tag":370,"props":8860,"children":8861},{"style":3369},[8862],{"type":51,"value":8817},{"type":28,"tag":370,"props":8864,"children":8865},{"style":377},[8866],{"type":51,"value":8867}," null)\n",{"type":28,"tag":370,"props":8869,"children":8870},{"class":372,"line":120},[8871],{"type":28,"tag":370,"props":8872,"children":8873},{"style":377},[8874],{"type":51,"value":380},{"type":28,"tag":370,"props":8876,"children":8877},{"class":372,"line":408},[8878,8883,8887,8892,8898,8903,8908],{"type":28,"tag":370,"props":8879,"children":8880},{"style":377},[8881],{"type":51,"value":8882},"$builder ",{"type":28,"tag":370,"props":8884,"children":8885},{"style":3369},[8886],{"type":51,"value":8817},{"type":28,"tag":370,"props":8888,"children":8889},{"style":377},[8890],{"type":51,"value":8891}," $",{"type":28,"tag":370,"props":8893,"children":8895},{"style":8894},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#FD971F",[8896],{"type":51,"value":8897},"this",{"type":28,"tag":370,"props":8899,"children":8900},{"style":377},[8901],{"type":51,"value":8902},"->",{"type":28,"tag":370,"props":8904,"children":8905},{"style":1457},[8906],{"type":51,"value":8907},"getAlbumMediaQueryBuilder",{"type":28,"tag":370,"props":8909,"children":8910},{"style":377},[8911],{"type":51,"value":8912},"($albumId, $filter, $orderBy, $validTypes);\n",{"type":28,"tag":370,"props":8914,"children":8915},{"class":372,"line":430},[8916,8920,8925,8930],{"type":28,"tag":370,"props":8917,"children":8918},{"style":3369},[8919],{"type":51,"value":4177},{"type":28,"tag":370,"props":8921,"children":8922},{"style":377},[8923],{"type":51,"value":8924}," (",{"type":28,"tag":370,"props":8926,"children":8927},{"style":1457},[8928],{"type":51,"value":8929},"is_numeric",{"type":28,"tag":370,"props":8931,"children":8932},{"style":377},[8933],{"type":51,"value":8934},"($batch)) {\n",{"type":28,"tag":370,"props":8936,"children":8937},{"class":372,"line":452},[8938,8943,8948,8953,8958],{"type":28,"tag":370,"props":8939,"children":8940},{"style":377},[8941],{"type":51,"value":8942},"$builder->",{"type":28,"tag":370,"props":8944,"children":8945},{"style":1457},[8946],{"type":51,"value":8947},"andWhere",{"type":28,"tag":370,"props":8949,"children":8950},{"style":377},[8951],{"type":51,"value":8952},"(",{"type":28,"tag":370,"props":8954,"children":8955},{"style":1462},[8956],{"type":51,"value":8957},"'MOD(media.id, 1000) = ?3'",{"type":28,"tag":370,"props":8959,"children":8960},{"style":377},[8961],{"type":51,"value":8962},");\n",{"type":28,"tag":370,"props":8964,"children":8965},{"class":372,"line":466},[8966,8970,8975,8979,8984],{"type":28,"tag":370,"props":8967,"children":8968},{"style":377},[8969],{"type":51,"value":8942},{"type":28,"tag":370,"props":8971,"children":8972},{"style":1457},[8973],{"type":51,"value":8974},"setParameter",{"type":28,"tag":370,"props":8976,"children":8977},{"style":377},[8978],{"type":51,"value":8952},{"type":28,"tag":370,"props":8980,"children":8981},{"style":716},[8982],{"type":51,"value":8983},"3",{"type":28,"tag":370,"props":8985,"children":8986},{"style":377},[8987],{"type":51,"value":8988},", $batch);\n",{"type":28,"tag":370,"props":8990,"children":8991},{"class":372,"line":488},[8992],{"type":28,"tag":370,"props":8993,"children":8994},{"style":377},[8995],{"type":51,"value":1437},{"type":28,"tag":370,"props":8997,"children":8998},{"class":372,"line":510},[8999],{"type":28,"tag":370,"props":9000,"children":9001},{"emptyLinePlaceholder":133},[9002],{"type":51,"value":1632},{"type":28,"tag":370,"props":9004,"children":9005},{"class":372,"line":532},[9006,9010,9015,9020],{"type":28,"tag":370,"props":9007,"children":9008},{"style":3369},[9009],{"type":51,"value":3956},{"type":28,"tag":370,"props":9011,"children":9012},{"style":377},[9013],{"type":51,"value":9014}," ($limit ",{"type":28,"tag":370,"props":9016,"children":9017},{"style":3369},[9018],{"type":51,"value":9019},"!==",{"type":28,"tag":370,"props":9021,"children":9022},{"style":377},[9023],{"type":51,"value":9024}," null) {\n",{"type":28,"tag":370,"props":9026,"children":9027},{"class":372,"line":554},[9028,9033,9038],{"type":28,"tag":370,"props":9029,"children":9030},{"style":377},[9031],{"type":51,"value":9032},"        $builder->",{"type":28,"tag":370,"props":9034,"children":9035},{"style":1457},[9036],{"type":51,"value":9037},"setFirstResult",{"type":28,"tag":370,"props":9039,"children":9040},{"style":377},[9041],{"type":51,"value":9042},"($offset)\n",{"type":28,"tag":370,"props":9044,"children":9045},{"class":372,"line":575},[9046,9051,9056],{"type":28,"tag":370,"props":9047,"children":9048},{"style":3369},[9049],{"type":51,"value":9050},"                ->",{"type":28,"tag":370,"props":9052,"children":9053},{"style":1457},[9054],{"type":51,"value":9055},"setMaxResults",{"type":28,"tag":370,"props":9057,"children":9058},{"style":377},[9059],{"type":51,"value":9060},"($limit);\n",{"type":28,"tag":370,"props":9062,"children":9063},{"class":372,"line":596},[9064],{"type":28,"tag":370,"props":9065,"children":9066},{"style":377},[9067],{"type":51,"value":979},{"type":28,"tag":370,"props":9069,"children":9070},{"class":372,"line":614},[9071],{"type":28,"tag":370,"props":9072,"children":9073},{"emptyLinePlaceholder":133},[9074],{"type":51,"value":1632},{"type":28,"tag":370,"props":9076,"children":9077},{"class":372,"line":623},[9078,9083,9088,9093],{"type":28,"tag":370,"props":9079,"children":9080},{"style":3369},[9081],{"type":51,"value":9082},"    return",{"type":28,"tag":370,"props":9084,"children":9085},{"style":377},[9086],{"type":51,"value":9087}," $builder->",{"type":28,"tag":370,"props":9089,"children":9090},{"style":1457},[9091],{"type":51,"value":9092},"getQuery",{"type":28,"tag":370,"props":9094,"children":9095},{"style":377},[9096],{"type":51,"value":9097},"();\n",{"type":28,"tag":370,"props":9099,"children":9100},{"class":372,"line":637},[9101],{"type":28,"tag":370,"props":9102,"children":9103},{"style":377},[9104],{"type":51,"value":1437},{"type":28,"tag":47,"props":9106,"children":9107},{},[9108],{"type":51,"value":9109},"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":28,"tag":47,"props":9111,"children":9112},{},[9113],{"type":51,"value":9114},"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":28,"tag":47,"props":9116,"children":9117},{},[9118],{"type":51,"value":9119},"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":28,"tag":47,"props":9121,"children":9122},{},[9123],{"type":51,"value":9124},"Es startet 64 Batches parallel und setzt seine Arbeit fort, bis alle 1000 Batches fertig sind.",{"type":28,"tag":47,"props":9126,"children":9127},{},[9128,9130,9135],{"type":51,"value":9129},"Und so sieht es bei ",{"type":28,"tag":8710,"props":9131,"children":9132},{},[9133],{"type":51,"value":9134},"htop",{"type":51,"value":9136}," aus:",{"type":28,"tag":354,"props":9138,"children":9142},{"className":9139,"code":9140,"language":9141,"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",[9143],{"type":28,"tag":290,"props":9144,"children":9145},{"__ignoreMap":7},[9146],{"type":28,"tag":370,"props":9147,"children":9148},{"class":372,"line":373},[9149,9154,9159,9164,9169,9174,9179,9184],{"type":28,"tag":370,"props":9150,"children":9151},{"style":1457},[9152],{"type":51,"value":9153},"parallel",{"type":28,"tag":370,"props":9155,"children":9156},{"style":716},[9157],{"type":51,"value":9158}," -j",{"type":28,"tag":370,"props":9160,"children":9161},{"style":716},[9162],{"type":51,"value":9163}," 64",{"type":28,"tag":370,"props":9165,"children":9166},{"style":1462},[9167],{"type":51,"value":9168}," ./bin/console",{"type":28,"tag":370,"props":9170,"children":9171},{"style":1462},[9172],{"type":51,"value":9173}," my:image:generate:thumbnails",{"type":28,"tag":370,"props":9175,"children":9176},{"style":716},[9177],{"type":51,"value":9178}," --batch",{"type":28,"tag":370,"props":9180,"children":9181},{"style":1462},[9182],{"type":51,"value":9183}," :::",{"type":28,"tag":370,"props":9185,"children":9186},{"style":1462},[9187],{"type":51,"value":9188}," {0..999}\n",{"type":28,"tag":243,"props":9190,"children":9194},{"alt":9134,"aspect-ratio":9191,"height":246,"object-fit":9192,"src":9193},"2","contain","/blog/htop.png",[],{"type":28,"tag":68,"props":9196,"children":9198},{"id":9197},"schließlich-ist-die-ganze-arbeit-jetzt-in-35-stunden-statt-in-80-stunden-erledigt",[9199],{"type":51,"value":9200},"Schließlich ist die ganze Arbeit jetzt in 3,5 Stunden statt in 80 Stunden erledigt.",{"type":28,"tag":4677,"props":9202,"children":9203},{},[9204],{"type":51,"value":4681},{"title":7,"searchDepth":120,"depth":120,"links":9206},[9207,9208,9209],{"id":8684,"depth":120,"text":8687},{"id":8739,"depth":120,"text":8742},{"id":9197,"depth":120,"text":9200},{"_path":9211,"_dir":9212,"_draft":6,"_partial":6,"_locale":7,"slug":163,"teams":9213,"primaryTeam":9215,"firstName":9216,"lastName":9217,"prefixTitle":7,"suffixTitle":9218,"education":9219,"role":9224,"workingSince":9229,"inTheCompanySince":9230,"techSkills":9231,"skills":9270,"projects":9287,"contactDetails":9297,"_image":9301,"image":9302,"_id":9303,"_type":364,"title":9304,"_source":9212,"_file":9305,"_stem":9306,"_extension":364},"/employees/robert-juzak","employees",[9214,9215],"appDev","devOps","Robert","Juzak","B.Sc.",[9220],[9221,9222,9223],"Bachelor of Computer Science","Technische Universität Breslau","2016",[9225,9226,9227,9228],"softwareDeveloper","fullstackDeveloper","admin","consultant","2015","2018",[9232,9236,9238,9241,9244,9247,9249,9252,9255,9259,9262,9264,9267],{"name":9233,"level":9234,"icon":9235},"Docker","expert","/images/Docker.svg",{"name":9237,"level":9234},"GitLab",{"name":9239,"level":9234,"icon":9240},"Kubernetes","/images/Kubernetes.svg",{"name":9242,"level":9234,"icon":9243},"PHPUnit","/images/PHP-Unit.svg",{"name":9245,"level":9234,"icon":9246},"Portainer","/images/Portainer.svg",{"name":9248,"level":9234},"Sentry",{"name":9250,"level":9234,"icon":9251},"Sonarqube","/images/Sonarqube.svg",{"name":9253,"level":9234,"icon":9254},"Linux","/images/linux_os-mono.svg",{"name":9256,"level":9257,"icon":9258},"CSS","advanced","/images/css.svg",{"name":9260,"level":9257,"icon":9261},"HTML","/images/html.svg",{"name":9263,"level":9257},"PHP",{"name":9265,"level":9257,"icon":9266},"SQL","/images/SQL.svg",{"name":9268,"level":9257,"icon":9269},"VueJS","/images/vuejs.svg",[9271,9272,9274,9275,9277,9279,9281,9283,9285],{"name":3704,"level":9234},{"name":9273,"level":9234},"qualityAssurance",{"name":9215,"level":9234},{"name":9276,"level":9234},"testDrivenBugfix",{"name":9278,"level":9234},"testDrivenDevelopment",{"name":9280,"level":9257},"accessibility",{"name":9282,"level":9257},"databases",{"name":9284,"level":9257},"linuxServerAdministration",{"name":9286,"level":9257},"softwareArchitect",[9288,9293,9295],{"project":9289,"position":9290},"Herole",[9291,9292],"Dev-Ops","Frontend Developer",{"project":9294,"position":9292},"Huawei-Calibration-aaS",{"project":9296,"position":9292},"Huawei-Inspect-3D",{"eMail":9298,"phone":9299,"visibility":9300},"robert.juzak@helmundwalter.de","+49 351 799 035 26","1","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":9308,"_dir":9212,"_draft":6,"_partial":6,"_locale":7,"slug":213,"teams":9309,"primaryTeam":9215,"firstName":9311,"lastName":9312,"prefixTitle":7,"suffixTitle":7,"education":9313,"executiveRole":9318,"role":9319,"workingSince":9324,"inTheCompanySince":9325,"techSkills":9326,"skills":9358,"projects":9367,"contactDetails":9379,"_image":9382,"image":9383,"_id":9384,"_type":364,"title":9385,"_source":9212,"_file":9386,"_stem":9387,"_extension":364},"/employees/bernd-helm",[9310,9215],"ai","Bernd","Helm",[9314],[9315,9316,9317],"B. Sc. Angewandte Informatik","FHDW Dresden","2010","CTO",[9320,9321,9215,9322,9227,9225,9323,9228],"founder","chiefTechnologyOfficer","databaseSpecialist","backendDeveloper","2005","2008",[9327,9328,9329,9331,9334,9336,9339,9340,9342,9344,9345,9348,9351,9352,9353,9356],{"name":9233,"level":9234,"icon":9235},{"name":9253,"level":9234,"icon":9254},{"name":9330,"level":9234},"Zabbix",{"name":9332,"level":9234,"icon":9333},"MariaDB ColumnStore","/images/maria-db-logo.svg",{"name":9335,"level":9234},"OpenAI",{"name":9337,"level":9234,"icon":9338},"Pytorch","/images/PyTorch.svg",{"name":9263,"level":9234},{"name":9341,"level":9234},"Java",{"name":9343,"level":9234},"Python",{"name":9265,"level":9234,"icon":9266},{"name":9346,"level":9257,"icon":9347},"C++","/images/cpp-logo.svg",{"name":9349,"level":9257,"icon":9350},"C#","/images/csharp.svg",{"name":9256,"level":9257,"icon":9258},{"name":9260,"level":9257,"icon":9261},{"name":9354,"level":9257,"icon":9355},"OpenCV","/images/OpenCV.svg",{"name":9357,"level":9257,"icon":9269},"Vue.js",[9359,9361,9363,9364,9365,9366],{"name":9360,"level":9234},"artificialIntelligence",{"name":9362,"level":9234},"codingGuidelines",{"name":9282,"level":9234},{"name":9284,"level":9234},{"name":9286,"level":9234},{"name":9273,"level":9257},[9368,9371,9372,9374,9377],{"project":9369,"position":9370},"Gridside","Technical Consultant",{"project":9289,"position":9370},{"project":9373,"position":9370},"Montagespezis",{"project":9375,"position":9376},"Orsee","Technical Manager",{"project":9378,"position":9370},"Vipr",{"eMail":9380,"phone":9381,"visibility":9300},"bernd.helm@helmundwalter.de","+49 351 799 035 20","images/employees/Portraits/bernd_helm.webp","images/employees/Portraits/BerndHelm_MS.webp","employees:employees:1.bernd-helm.json","Bernd Helm","employees/1.bernd-helm.json","employees/1.bernd-helm",1782284049542]