[{"data":1,"prerenderedAt":6691},["ShallowReactive",2],{"blog-current-gitops-docker-renovate-de":3,"blog-previous-gitops-docker-renovate-de":1598,"blog-next-gitops-docker-renovate-de":1611,"blog-alt-de-gitops-docker-renovate-de":1623,"blog-alt-en-gitops-docker-renovate-de":1624,"employee-robert-juzak":1626,"related-refs-devops--de":1722,"content-query-UKDfBsQuK3":1747,"content-query-K9Z9yOwvGV":2291,"content-query-KtO3wftRle":6656},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"author":10,"image":11,"releaseDate":12,"blogCategories":13,"articleTags":16,"tags":18,"body":20,"_type":1592,"_id":1593,"_source":1594,"_file":1595,"_stem":1596,"_extension":1597},"/blog/gitops-docker-renovate","blog",false,"","Softwareverwaltung mit GitLab, Renovate Bot und Docker","Software auf einem Server zu verwalten ist nicht einfach. Oder doch?","robert-juzak","/images/dev-ops-dark.svg","2025-10-30",[14,15],"Was uns bewegt","DevOps",[15,17],"Open Source",[19],"devops",{"type":21,"children":22,"toc":1585},"root",[23,31,36,41,46,51,71,76,121,128,142,155,160,166,179,192,201,207,212,339,906,942,955,959,964,1136,1149,1155,1160,1239,1244,1250,1255,1268,1281,1315,1342,1354,1373,1386,1389,1394,1407,1427,1432,1437,1560,1579],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","Die Verwaltung eines Servers mit mehreren Diensten kann knifflig sein. Nicht jede Software ist miteinander kompatibel. Beispielsweise gibt es Anforderungen an Datenbank- oder PHP-Versionen.",{"type":24,"tag":25,"props":32,"children":33},{},[34],{"type":29,"value":35},"Außerdem sollte die Software auf dem neuesten Stand sein, um mögliche Sicherheitsrisiken zu minimieren.",{"type":24,"tag":25,"props":37,"children":38},{},[39],{"type":29,"value":40},"Es gibt viele Möglichkeiten, damit umzugehen, wie etwa Ansible, Chef usw.",{"type":24,"tag":25,"props":42,"children":43},{},[44],{"type":29,"value":45},"Unser Ziel war eine einfach zu bedienende, automatisierte und kostenlose Lösung.",{"type":24,"tag":25,"props":47,"children":48},{},[49],{"type":29,"value":50},"Hier sind die Ziele:",{"type":24,"tag":52,"props":53,"children":54},"ul",{},[55,61,66],{"type":24,"tag":56,"props":57,"children":58},"li",{},[59],{"type":29,"value":60},"den GitOps-Ansatz nutzen, um die Konfiguration zu speichern und per Versionskontrolle nachvollziehbar zu machen",{"type":24,"tag":56,"props":62,"children":63},{},[64],{"type":29,"value":65},"Container verwenden, um die Software auszuführen",{"type":24,"tag":56,"props":67,"children":68},{},[69],{"type":29,"value":70},"Sicherheitsupdates automatisch ausspielen und Minor-/Major-Updates per Opt-in steuern",{"type":24,"tag":25,"props":72,"children":73},{},[74],{"type":29,"value":75},"Wir haben uns am Ende für den folgenden Stack entschieden:",{"type":24,"tag":52,"props":77,"children":78},{},[79,99,110],{"type":24,"tag":56,"props":80,"children":81},{},[82,89,91,97],{"type":24,"tag":83,"props":84,"children":86},"a",{"href":85},"https://www.docker.com/",[87],{"type":29,"value":88},"Docker",{"type":29,"value":90}," und ",{"type":24,"tag":83,"props":92,"children":94},{"href":93},"https://docs.docker.com/compose/",[95],{"type":29,"value":96},"Docker Compose",{"type":29,"value":98}," zum Verwalten der Software",{"type":24,"tag":56,"props":100,"children":101},{},[102,108],{"type":24,"tag":83,"props":103,"children":105},{"href":104},"https://about.gitlab.com/",[106],{"type":29,"value":107},"GitLab",{"type":29,"value":109}," zum Speichern aller Compose-Dateien",{"type":24,"tag":56,"props":111,"children":112},{},[113,119],{"type":24,"tag":83,"props":114,"children":116},{"href":115},"https://docs.renovatebot.com",[117],{"type":29,"value":118},"Renovate Bot",{"type":29,"value":120},", um die Software aktuell zu halten",{"type":24,"tag":122,"props":123,"children":125},"h2",{"id":124},"über-den-stack",[126],{"type":29,"value":127},"Über den Stack",{"type":24,"tag":25,"props":129,"children":130},{},[131,133,140],{"type":29,"value":132},"Wir verwenden Docker bereits seit einiger Zeit in der Produktion. Je nach Situation erstellen wir die Compose-Datei direkt auf dem Server, verwalten sie über Portainer oder übertragen sie per ",{"type":24,"tag":134,"props":135,"children":137},"code",{"className":136},[],[138],{"type":29,"value":139},"scp",{"type":29,"value":141}," in eine Pipeline.",{"type":24,"tag":25,"props":143,"children":144},{},[145,147,153],{"type":29,"value":146},"GitLab ist unser primäres Tool für die Versionskontrolle. Zusätzlich kümmert sich ein ",{"type":24,"tag":83,"props":148,"children":150},{"href":149},"https://docs.gitlab.com/runner/",[151],{"type":29,"value":152},"GitLab Runner",{"type":29,"value":154}," um das Ausführen der Pipelines.",{"type":24,"tag":25,"props":156,"children":157},{},[158],{"type":29,"value":159},"Renovate automatisiert Abhängigkeitsupdates. PHP, Go, Python, Docker – um nur ein paar zu nennen. Wir nutzen es bereits in verschiedenen Projekten.",{"type":24,"tag":122,"props":161,"children":163},{"id":162},"container-mit-docker-und-docker-compose",[164],{"type":29,"value":165},"Container mit Docker und Docker Compose",{"type":24,"tag":25,"props":167,"children":168},{},[169,171,177],{"type":29,"value":170},"Der Hauptgrund, warum wir Docker gewählt haben, ist die Möglichkeit, auf einen remoten Docker-Host zuzugreifen und Docker-Befehle ausführen zu können.\nWeitere Informationen findest du in der ",{"type":24,"tag":83,"props":172,"children":174},{"href":173},"https://docs.docker.com/reference/cli/docker/#host",[175],{"type":29,"value":176},"offiziellen Dokumentation",{"type":29,"value":178},".",{"type":24,"tag":25,"props":180,"children":181},{},[182,184,190],{"type":29,"value":183},"Wir verwenden ",{"type":24,"tag":134,"props":185,"children":187},{"className":186},[],[188],{"type":29,"value":189},"ssh",{"type":29,"value":191},", um auf unseren Zielserver zuzugreifen.",{"type":24,"tag":25,"props":193,"children":194},{},[195],{"type":24,"tag":134,"props":196,"children":198},{"className":197},[],[199],{"type":29,"value":200},"DOCKER_HOST=ssh://[username@]\u003CIP or host>[:port] docker compose up --wait",{"type":24,"tag":122,"props":202,"children":204},{"id":203},"gitops-mit-gitlab",[205],{"type":29,"value":206},"GitOps mit GitLab",{"type":24,"tag":25,"props":208,"children":209},{},[210],{"type":29,"value":211},"Die Idee hinter GitOps ist, ein Git-Repository zur Ablage der Konfiguration zu verwenden. Hier ein Beispiel:",{"type":24,"tag":213,"props":214,"children":218},"pre",{"className":215,"code":216,"language":217,"meta":7,"style":7},"language-shell shiki shiki-themes github-dark github-dark monokai",".\n├──.gitlab-ci.yml             # Pipeline-Definition\n├── renovate.json             # Renovate-Konfiguration\n├── nextcloud\n│   ├── docker-compose.yml   # Nextcloud Datei-Hosting und Zusammenarbeit\n└── traefik\n    └── docker-compose.yml   # Traefik Reverse-Proxy-Konfiguration\n\n","shell",[219],{"type":24,"tag":134,"props":220,"children":221},{"__ignoreMap":7},[222,234,250,270,283,307,321],{"type":24,"tag":223,"props":224,"children":227},"span",{"class":225,"line":226},"line",1,[228],{"type":24,"tag":223,"props":229,"children":231},{"style":230},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF",[232],{"type":29,"value":233},".\n",{"type":24,"tag":223,"props":235,"children":237},{"class":225,"line":236},2,[238,244],{"type":24,"tag":223,"props":239,"children":241},{"style":240},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[242],{"type":29,"value":243},"├──.gitlab-ci.yml",{"type":24,"tag":223,"props":245,"children":247},{"style":246},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F",[248],{"type":29,"value":249},"             # Pipeline-Definition\n",{"type":24,"tag":223,"props":251,"children":253},{"class":225,"line":252},3,[254,259,265],{"type":24,"tag":223,"props":255,"children":256},{"style":240},[257],{"type":29,"value":258},"├──",{"type":24,"tag":223,"props":260,"children":262},{"style":261},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[263],{"type":29,"value":264}," renovate.json",{"type":24,"tag":223,"props":266,"children":267},{"style":246},[268],{"type":29,"value":269},"             # Renovate-Konfiguration\n",{"type":24,"tag":223,"props":271,"children":273},{"class":225,"line":272},4,[274,278],{"type":24,"tag":223,"props":275,"children":276},{"style":240},[277],{"type":29,"value":258},{"type":24,"tag":223,"props":279,"children":280},{"style":261},[281],{"type":29,"value":282}," nextcloud\n",{"type":24,"tag":223,"props":284,"children":286},{"class":225,"line":285},5,[287,292,297,302],{"type":24,"tag":223,"props":288,"children":289},{"style":240},[290],{"type":29,"value":291},"│",{"type":24,"tag":223,"props":293,"children":294},{"style":261},[295],{"type":29,"value":296},"   ├──",{"type":24,"tag":223,"props":298,"children":299},{"style":261},[300],{"type":29,"value":301}," docker-compose.yml",{"type":24,"tag":223,"props":303,"children":304},{"style":246},[305],{"type":29,"value":306},"   # Nextcloud Datei-Hosting und Zusammenarbeit\n",{"type":24,"tag":223,"props":308,"children":310},{"class":225,"line":309},6,[311,316],{"type":24,"tag":223,"props":312,"children":313},{"style":240},[314],{"type":29,"value":315},"└──",{"type":24,"tag":223,"props":317,"children":318},{"style":261},[319],{"type":29,"value":320}," traefik\n",{"type":24,"tag":223,"props":322,"children":324},{"class":225,"line":323},7,[325,330,334],{"type":24,"tag":223,"props":326,"children":327},{"style":240},[328],{"type":29,"value":329},"    └──",{"type":24,"tag":223,"props":331,"children":332},{"style":261},[333],{"type":29,"value":301},{"type":24,"tag":223,"props":335,"children":336},{"style":246},[337],{"type":29,"value":338},"   # Traefik Reverse-Proxy-Konfiguration\n",{"type":24,"tag":213,"props":340,"children":345},{"className":341,"code":342,"filename":343,"language":344,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark github-dark monokai","volumes:\n  nextcloud:\n  db:\n\nservices:\n  db:\n    image: mariadb:11.8\n    restart: unless-stopped\n    volumes:\n      - db:/var/lib/mysql\n    environment:\n      - MARIADB_ROOT_PASSWORD=${NEXTCLOUD_MARIADB_ROOT_PASSWORD:?error}\n      - MARIADB_PASSWORD=${NEXTCLOUD_MARIADB_PASSWORD:?error}\n      - MARIADB_DATABASE=nextcloud\n      - MARIADB_USER=nextcloud\n    command:\n      - --transaction-isolation=READ-COMMITTED\n      - --log-bin=binlog\n      - --binlog-format=ROW\n    healthcheck:\n      test: [\"CMD\", \"healthcheck.sh\", \"--connect\", \"--innodb_initialized\"]\n      interval: 15s\n      timeout: 5s\n      retries: 6\n\n  nextcloud:\n    image: nextcloud:32.0.0\n    restart: unless-stopped\n    depends_on:\n      db:\n        condition: service_healthy\n    volumes:\n      - nextcloud:/var/www/html\n    environment:\n      - MYSQL_PASSWORD=${NEXTCLOUD_MARIADB_PASSWORD:?error}\n      - MYSQL_DATABASE=nextcloud\n      - MYSQL_USER=nextcloud\n      - MYSQL_HOST=db\n","nextcloud/docker-compose.yaml","yaml",[346],{"type":24,"tag":134,"props":347,"children":348},{"__ignoreMap":7},[349,364,376,388,397,409,420,438,456,469,483,496,509,522,535,548,561,574,587,600,613,665,683,701,720,728,740,757,773,786,799,817,829,842,854,867,880,893],{"type":24,"tag":223,"props":350,"children":351},{"class":225,"line":226},[352,358],{"type":24,"tag":223,"props":353,"children":355},{"style":354},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[356],{"type":29,"value":357},"volumes",{"type":24,"tag":223,"props":359,"children":361},{"style":360},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[362],{"type":29,"value":363},":\n",{"type":24,"tag":223,"props":365,"children":366},{"class":225,"line":236},[367,372],{"type":24,"tag":223,"props":368,"children":369},{"style":354},[370],{"type":29,"value":371},"  nextcloud",{"type":24,"tag":223,"props":373,"children":374},{"style":360},[375],{"type":29,"value":363},{"type":24,"tag":223,"props":377,"children":378},{"class":225,"line":252},[379,384],{"type":24,"tag":223,"props":380,"children":381},{"style":354},[382],{"type":29,"value":383},"  db",{"type":24,"tag":223,"props":385,"children":386},{"style":360},[387],{"type":29,"value":363},{"type":24,"tag":223,"props":389,"children":390},{"class":225,"line":272},[391],{"type":24,"tag":223,"props":392,"children":394},{"emptyLinePlaceholder":393},true,[395],{"type":29,"value":396},"\n",{"type":24,"tag":223,"props":398,"children":399},{"class":225,"line":285},[400,405],{"type":24,"tag":223,"props":401,"children":402},{"style":354},[403],{"type":29,"value":404},"services",{"type":24,"tag":223,"props":406,"children":407},{"style":360},[408],{"type":29,"value":363},{"type":24,"tag":223,"props":410,"children":411},{"class":225,"line":309},[412,416],{"type":24,"tag":223,"props":413,"children":414},{"style":354},[415],{"type":29,"value":383},{"type":24,"tag":223,"props":417,"children":418},{"style":360},[419],{"type":29,"value":363},{"type":24,"tag":223,"props":421,"children":422},{"class":225,"line":323},[423,428,433],{"type":24,"tag":223,"props":424,"children":425},{"style":354},[426],{"type":29,"value":427},"    image",{"type":24,"tag":223,"props":429,"children":430},{"style":360},[431],{"type":29,"value":432},": ",{"type":24,"tag":223,"props":434,"children":435},{"style":261},[436],{"type":29,"value":437},"mariadb:11.8\n",{"type":24,"tag":223,"props":439,"children":441},{"class":225,"line":440},8,[442,447,451],{"type":24,"tag":223,"props":443,"children":444},{"style":354},[445],{"type":29,"value":446},"    restart",{"type":24,"tag":223,"props":448,"children":449},{"style":360},[450],{"type":29,"value":432},{"type":24,"tag":223,"props":452,"children":453},{"style":261},[454],{"type":29,"value":455},"unless-stopped\n",{"type":24,"tag":223,"props":457,"children":459},{"class":225,"line":458},9,[460,465],{"type":24,"tag":223,"props":461,"children":462},{"style":354},[463],{"type":29,"value":464},"    volumes",{"type":24,"tag":223,"props":466,"children":467},{"style":360},[468],{"type":29,"value":363},{"type":24,"tag":223,"props":470,"children":472},{"class":225,"line":471},10,[473,478],{"type":24,"tag":223,"props":474,"children":475},{"style":360},[476],{"type":29,"value":477},"      - ",{"type":24,"tag":223,"props":479,"children":480},{"style":261},[481],{"type":29,"value":482},"db:/var/lib/mysql\n",{"type":24,"tag":223,"props":484,"children":486},{"class":225,"line":485},11,[487,492],{"type":24,"tag":223,"props":488,"children":489},{"style":354},[490],{"type":29,"value":491},"    environment",{"type":24,"tag":223,"props":493,"children":494},{"style":360},[495],{"type":29,"value":363},{"type":24,"tag":223,"props":497,"children":499},{"class":225,"line":498},12,[500,504],{"type":24,"tag":223,"props":501,"children":502},{"style":360},[503],{"type":29,"value":477},{"type":24,"tag":223,"props":505,"children":506},{"style":261},[507],{"type":29,"value":508},"MARIADB_ROOT_PASSWORD=${NEXTCLOUD_MARIADB_ROOT_PASSWORD:?error}\n",{"type":24,"tag":223,"props":510,"children":512},{"class":225,"line":511},13,[513,517],{"type":24,"tag":223,"props":514,"children":515},{"style":360},[516],{"type":29,"value":477},{"type":24,"tag":223,"props":518,"children":519},{"style":261},[520],{"type":29,"value":521},"MARIADB_PASSWORD=${NEXTCLOUD_MARIADB_PASSWORD:?error}\n",{"type":24,"tag":223,"props":523,"children":525},{"class":225,"line":524},14,[526,530],{"type":24,"tag":223,"props":527,"children":528},{"style":360},[529],{"type":29,"value":477},{"type":24,"tag":223,"props":531,"children":532},{"style":261},[533],{"type":29,"value":534},"MARIADB_DATABASE=nextcloud\n",{"type":24,"tag":223,"props":536,"children":538},{"class":225,"line":537},15,[539,543],{"type":24,"tag":223,"props":540,"children":541},{"style":360},[542],{"type":29,"value":477},{"type":24,"tag":223,"props":544,"children":545},{"style":261},[546],{"type":29,"value":547},"MARIADB_USER=nextcloud\n",{"type":24,"tag":223,"props":549,"children":551},{"class":225,"line":550},16,[552,557],{"type":24,"tag":223,"props":553,"children":554},{"style":354},[555],{"type":29,"value":556},"    command",{"type":24,"tag":223,"props":558,"children":559},{"style":360},[560],{"type":29,"value":363},{"type":24,"tag":223,"props":562,"children":564},{"class":225,"line":563},17,[565,569],{"type":24,"tag":223,"props":566,"children":567},{"style":360},[568],{"type":29,"value":477},{"type":24,"tag":223,"props":570,"children":571},{"style":261},[572],{"type":29,"value":573},"--transaction-isolation=READ-COMMITTED\n",{"type":24,"tag":223,"props":575,"children":577},{"class":225,"line":576},18,[578,582],{"type":24,"tag":223,"props":579,"children":580},{"style":360},[581],{"type":29,"value":477},{"type":24,"tag":223,"props":583,"children":584},{"style":261},[585],{"type":29,"value":586},"--log-bin=binlog\n",{"type":24,"tag":223,"props":588,"children":590},{"class":225,"line":589},19,[591,595],{"type":24,"tag":223,"props":592,"children":593},{"style":360},[594],{"type":29,"value":477},{"type":24,"tag":223,"props":596,"children":597},{"style":261},[598],{"type":29,"value":599},"--binlog-format=ROW\n",{"type":24,"tag":223,"props":601,"children":603},{"class":225,"line":602},20,[604,609],{"type":24,"tag":223,"props":605,"children":606},{"style":354},[607],{"type":29,"value":608},"    healthcheck",{"type":24,"tag":223,"props":610,"children":611},{"style":360},[612],{"type":29,"value":363},{"type":24,"tag":223,"props":614,"children":616},{"class":225,"line":615},21,[617,622,627,632,637,642,646,651,655,660],{"type":24,"tag":223,"props":618,"children":619},{"style":354},[620],{"type":29,"value":621},"      test",{"type":24,"tag":223,"props":623,"children":624},{"style":360},[625],{"type":29,"value":626},": [",{"type":24,"tag":223,"props":628,"children":629},{"style":261},[630],{"type":29,"value":631},"\"CMD\"",{"type":24,"tag":223,"props":633,"children":634},{"style":360},[635],{"type":29,"value":636},", ",{"type":24,"tag":223,"props":638,"children":639},{"style":261},[640],{"type":29,"value":641},"\"healthcheck.sh\"",{"type":24,"tag":223,"props":643,"children":644},{"style":360},[645],{"type":29,"value":636},{"type":24,"tag":223,"props":647,"children":648},{"style":261},[649],{"type":29,"value":650},"\"--connect\"",{"type":24,"tag":223,"props":652,"children":653},{"style":360},[654],{"type":29,"value":636},{"type":24,"tag":223,"props":656,"children":657},{"style":261},[658],{"type":29,"value":659},"\"--innodb_initialized\"",{"type":24,"tag":223,"props":661,"children":662},{"style":360},[663],{"type":29,"value":664},"]\n",{"type":24,"tag":223,"props":666,"children":668},{"class":225,"line":667},22,[669,674,678],{"type":24,"tag":223,"props":670,"children":671},{"style":354},[672],{"type":29,"value":673},"      interval",{"type":24,"tag":223,"props":675,"children":676},{"style":360},[677],{"type":29,"value":432},{"type":24,"tag":223,"props":679,"children":680},{"style":261},[681],{"type":29,"value":682},"15s\n",{"type":24,"tag":223,"props":684,"children":686},{"class":225,"line":685},23,[687,692,696],{"type":24,"tag":223,"props":688,"children":689},{"style":354},[690],{"type":29,"value":691},"      timeout",{"type":24,"tag":223,"props":693,"children":694},{"style":360},[695],{"type":29,"value":432},{"type":24,"tag":223,"props":697,"children":698},{"style":261},[699],{"type":29,"value":700},"5s\n",{"type":24,"tag":223,"props":702,"children":704},{"class":225,"line":703},24,[705,710,714],{"type":24,"tag":223,"props":706,"children":707},{"style":354},[708],{"type":29,"value":709},"      retries",{"type":24,"tag":223,"props":711,"children":712},{"style":360},[713],{"type":29,"value":432},{"type":24,"tag":223,"props":715,"children":717},{"style":716},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[718],{"type":29,"value":719},"6\n",{"type":24,"tag":223,"props":721,"children":723},{"class":225,"line":722},25,[724],{"type":24,"tag":223,"props":725,"children":726},{"emptyLinePlaceholder":393},[727],{"type":29,"value":396},{"type":24,"tag":223,"props":729,"children":731},{"class":225,"line":730},26,[732,736],{"type":24,"tag":223,"props":733,"children":734},{"style":354},[735],{"type":29,"value":371},{"type":24,"tag":223,"props":737,"children":738},{"style":360},[739],{"type":29,"value":363},{"type":24,"tag":223,"props":741,"children":743},{"class":225,"line":742},27,[744,748,752],{"type":24,"tag":223,"props":745,"children":746},{"style":354},[747],{"type":29,"value":427},{"type":24,"tag":223,"props":749,"children":750},{"style":360},[751],{"type":29,"value":432},{"type":24,"tag":223,"props":753,"children":754},{"style":261},[755],{"type":29,"value":756},"nextcloud:32.0.0\n",{"type":24,"tag":223,"props":758,"children":760},{"class":225,"line":759},28,[761,765,769],{"type":24,"tag":223,"props":762,"children":763},{"style":354},[764],{"type":29,"value":446},{"type":24,"tag":223,"props":766,"children":767},{"style":360},[768],{"type":29,"value":432},{"type":24,"tag":223,"props":770,"children":771},{"style":261},[772],{"type":29,"value":455},{"type":24,"tag":223,"props":774,"children":776},{"class":225,"line":775},29,[777,782],{"type":24,"tag":223,"props":778,"children":779},{"style":354},[780],{"type":29,"value":781},"    depends_on",{"type":24,"tag":223,"props":783,"children":784},{"style":360},[785],{"type":29,"value":363},{"type":24,"tag":223,"props":787,"children":789},{"class":225,"line":788},30,[790,795],{"type":24,"tag":223,"props":791,"children":792},{"style":354},[793],{"type":29,"value":794},"      db",{"type":24,"tag":223,"props":796,"children":797},{"style":360},[798],{"type":29,"value":363},{"type":24,"tag":223,"props":800,"children":802},{"class":225,"line":801},31,[803,808,812],{"type":24,"tag":223,"props":804,"children":805},{"style":354},[806],{"type":29,"value":807},"        condition",{"type":24,"tag":223,"props":809,"children":810},{"style":360},[811],{"type":29,"value":432},{"type":24,"tag":223,"props":813,"children":814},{"style":261},[815],{"type":29,"value":816},"service_healthy\n",{"type":24,"tag":223,"props":818,"children":820},{"class":225,"line":819},32,[821,825],{"type":24,"tag":223,"props":822,"children":823},{"style":354},[824],{"type":29,"value":464},{"type":24,"tag":223,"props":826,"children":827},{"style":360},[828],{"type":29,"value":363},{"type":24,"tag":223,"props":830,"children":832},{"class":225,"line":831},33,[833,837],{"type":24,"tag":223,"props":834,"children":835},{"style":360},[836],{"type":29,"value":477},{"type":24,"tag":223,"props":838,"children":839},{"style":261},[840],{"type":29,"value":841},"nextcloud:/var/www/html\n",{"type":24,"tag":223,"props":843,"children":845},{"class":225,"line":844},34,[846,850],{"type":24,"tag":223,"props":847,"children":848},{"style":354},[849],{"type":29,"value":491},{"type":24,"tag":223,"props":851,"children":852},{"style":360},[853],{"type":29,"value":363},{"type":24,"tag":223,"props":855,"children":857},{"class":225,"line":856},35,[858,862],{"type":24,"tag":223,"props":859,"children":860},{"style":360},[861],{"type":29,"value":477},{"type":24,"tag":223,"props":863,"children":864},{"style":261},[865],{"type":29,"value":866},"MYSQL_PASSWORD=${NEXTCLOUD_MARIADB_PASSWORD:?error}\n",{"type":24,"tag":223,"props":868,"children":870},{"class":225,"line":869},36,[871,875],{"type":24,"tag":223,"props":872,"children":873},{"style":360},[874],{"type":29,"value":477},{"type":24,"tag":223,"props":876,"children":877},{"style":261},[878],{"type":29,"value":879},"MYSQL_DATABASE=nextcloud\n",{"type":24,"tag":223,"props":881,"children":883},{"class":225,"line":882},37,[884,888],{"type":24,"tag":223,"props":885,"children":886},{"style":360},[887],{"type":29,"value":477},{"type":24,"tag":223,"props":889,"children":890},{"style":261},[891],{"type":29,"value":892},"MYSQL_USER=nextcloud\n",{"type":24,"tag":223,"props":894,"children":896},{"class":225,"line":895},38,[897,901],{"type":24,"tag":223,"props":898,"children":899},{"style":360},[900],{"type":29,"value":477},{"type":24,"tag":223,"props":902,"children":903},{"style":261},[904],{"type":29,"value":905},"MYSQL_HOST=db\n",{"type":24,"tag":213,"props":907,"children":911},{"className":908,"code":909,"language":910,"meta":7,"style":7},"language-dotenv shiki shiki-themes github-dark github-dark monokai","NEXTCLOUD_MARIADB_ROOT_PASSWORD=\nNEXTCLOUD_MARIADB_PASSWORD=\n","dotenv",[912],{"type":24,"tag":134,"props":913,"children":914},{"__ignoreMap":7},[915,930],{"type":24,"tag":223,"props":916,"children":917},{"class":225,"line":226},[918,924],{"type":24,"tag":223,"props":919,"children":921},{"style":920},"--shiki-default:#FFAB70;--shiki-dark:#FFAB70;--shiki-sepia:#F8F8F2",[922],{"type":29,"value":923},"NEXTCLOUD_MARIADB_ROOT_PASSWORD",{"type":24,"tag":223,"props":925,"children":927},{"style":926},"--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-sepia:#F92672",[928],{"type":29,"value":929},"=\n",{"type":24,"tag":223,"props":931,"children":932},{"class":225,"line":236},[933,938],{"type":24,"tag":223,"props":934,"children":935},{"style":920},[936],{"type":29,"value":937},"NEXTCLOUD_MARIADB_PASSWORD",{"type":24,"tag":223,"props":939,"children":940},{"style":926},[941],{"type":29,"value":929},{"type":24,"tag":25,"props":943,"children":944},{},[945,947,953],{"type":29,"value":946},"Werden als ",{"type":24,"tag":83,"props":948,"children":950},{"href":949},"https://docs.gitlab.com/ci/variables/",[951],{"type":29,"value":952},"CI/CD-Variablen",{"type":29,"value":954}," gespeichert.",{"type":24,"tag":956,"props":957,"children":958},"hr",{},[],{"type":24,"tag":25,"props":960,"children":961},{},[962],{"type":29,"value":963},"Um den Stack zu deployen, haben wir folgende Pipeline:",{"type":24,"tag":213,"props":965,"children":968},{"className":341,"code":966,"filename":967,"language":344,"meta":7,"style":7},"stages:\n  - deploy\n\ndeploy:\n  stage: deploy\n  image: docker:28\n  variables:\n    DOCKER_HOST: ssh://[username@]\u003CIP or host>[:port]\n  script:\n    - for file in $(find . -type f -name docker-compose.yml); do docker compose -f $file up --remove-orphans --wait; done\n  rules:\n    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n\n",".gitlab-ci.yml",[969],{"type":24,"tag":134,"props":970,"children":971},{"__ignoreMap":7},[972,984,997,1004,1016,1032,1049,1061,1078,1090,1103,1115],{"type":24,"tag":223,"props":973,"children":974},{"class":225,"line":226},[975,980],{"type":24,"tag":223,"props":976,"children":977},{"style":354},[978],{"type":29,"value":979},"stages",{"type":24,"tag":223,"props":981,"children":982},{"style":360},[983],{"type":29,"value":363},{"type":24,"tag":223,"props":985,"children":986},{"class":225,"line":236},[987,992],{"type":24,"tag":223,"props":988,"children":989},{"style":360},[990],{"type":29,"value":991},"  - ",{"type":24,"tag":223,"props":993,"children":994},{"style":261},[995],{"type":29,"value":996},"deploy\n",{"type":24,"tag":223,"props":998,"children":999},{"class":225,"line":252},[1000],{"type":24,"tag":223,"props":1001,"children":1002},{"emptyLinePlaceholder":393},[1003],{"type":29,"value":396},{"type":24,"tag":223,"props":1005,"children":1006},{"class":225,"line":272},[1007,1012],{"type":24,"tag":223,"props":1008,"children":1009},{"style":354},[1010],{"type":29,"value":1011},"deploy",{"type":24,"tag":223,"props":1013,"children":1014},{"style":360},[1015],{"type":29,"value":363},{"type":24,"tag":223,"props":1017,"children":1018},{"class":225,"line":285},[1019,1024,1028],{"type":24,"tag":223,"props":1020,"children":1021},{"style":354},[1022],{"type":29,"value":1023},"  stage",{"type":24,"tag":223,"props":1025,"children":1026},{"style":360},[1027],{"type":29,"value":432},{"type":24,"tag":223,"props":1029,"children":1030},{"style":261},[1031],{"type":29,"value":996},{"type":24,"tag":223,"props":1033,"children":1034},{"class":225,"line":309},[1035,1040,1044],{"type":24,"tag":223,"props":1036,"children":1037},{"style":354},[1038],{"type":29,"value":1039},"  image",{"type":24,"tag":223,"props":1041,"children":1042},{"style":360},[1043],{"type":29,"value":432},{"type":24,"tag":223,"props":1045,"children":1046},{"style":261},[1047],{"type":29,"value":1048},"docker:28\n",{"type":24,"tag":223,"props":1050,"children":1051},{"class":225,"line":323},[1052,1057],{"type":24,"tag":223,"props":1053,"children":1054},{"style":354},[1055],{"type":29,"value":1056},"  variables",{"type":24,"tag":223,"props":1058,"children":1059},{"style":360},[1060],{"type":29,"value":363},{"type":24,"tag":223,"props":1062,"children":1063},{"class":225,"line":440},[1064,1069,1073],{"type":24,"tag":223,"props":1065,"children":1066},{"style":354},[1067],{"type":29,"value":1068},"    DOCKER_HOST",{"type":24,"tag":223,"props":1070,"children":1071},{"style":360},[1072],{"type":29,"value":432},{"type":24,"tag":223,"props":1074,"children":1075},{"style":261},[1076],{"type":29,"value":1077},"ssh://[username@]\u003CIP or host>[:port]\n",{"type":24,"tag":223,"props":1079,"children":1080},{"class":225,"line":458},[1081,1086],{"type":24,"tag":223,"props":1082,"children":1083},{"style":354},[1084],{"type":29,"value":1085},"  script",{"type":24,"tag":223,"props":1087,"children":1088},{"style":360},[1089],{"type":29,"value":363},{"type":24,"tag":223,"props":1091,"children":1092},{"class":225,"line":471},[1093,1098],{"type":24,"tag":223,"props":1094,"children":1095},{"style":360},[1096],{"type":29,"value":1097},"    - ",{"type":24,"tag":223,"props":1099,"children":1100},{"style":261},[1101],{"type":29,"value":1102},"for file in $(find . -type f -name docker-compose.yml); do docker compose -f $file up --remove-orphans --wait; done\n",{"type":24,"tag":223,"props":1104,"children":1105},{"class":225,"line":485},[1106,1111],{"type":24,"tag":223,"props":1107,"children":1108},{"style":354},[1109],{"type":29,"value":1110},"  rules",{"type":24,"tag":223,"props":1112,"children":1113},{"style":360},[1114],{"type":29,"value":363},{"type":24,"tag":223,"props":1116,"children":1117},{"class":225,"line":498},[1118,1122,1127,1131],{"type":24,"tag":223,"props":1119,"children":1120},{"style":360},[1121],{"type":29,"value":1097},{"type":24,"tag":223,"props":1123,"children":1124},{"style":354},[1125],{"type":29,"value":1126},"if",{"type":24,"tag":223,"props":1128,"children":1129},{"style":360},[1130],{"type":29,"value":432},{"type":24,"tag":223,"props":1132,"children":1133},{"style":261},[1134],{"type":29,"value":1135},"$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n",{"type":24,"tag":25,"props":1137,"children":1138},{},[1139,1141,1147],{"type":29,"value":1140},"Die Pipeline läuft bei jedem Commit auf dem Standard-Branch, iteriert über alle ",{"type":24,"tag":134,"props":1142,"children":1144},{"className":1143},[],[1145],{"type":29,"value":1146},"docker-compose.yml",{"type":29,"value":1148},"-Dateien und deployt sie.",{"type":24,"tag":122,"props":1150,"children":1152},{"id":1151},"halte-deine-software-aktuell-mit-renovate-bot",[1153],{"type":29,"value":1154},"Halte deine Software aktuell mit Renovate-Bot",{"type":24,"tag":25,"props":1156,"children":1157},{},[1158],{"type":29,"value":1159},"Hier kommt Renovate ins Spiel.",{"type":24,"tag":213,"props":1161,"children":1166},{"className":1162,"code":1163,"filename":1164,"language":1165,"meta":7,"style":7},"language-json shiki shiki-themes github-dark github-dark monokai","{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:best-practices\"\n  ]\n}\n","renovate.json","json",[1167],{"type":24,"tag":134,"props":1168,"children":1169},{"__ignoreMap":7},[1170,1178,1202,1215,1223,1231],{"type":24,"tag":223,"props":1171,"children":1172},{"class":225,"line":226},[1173],{"type":24,"tag":223,"props":1174,"children":1175},{"style":360},[1176],{"type":29,"value":1177},"{\n",{"type":24,"tag":223,"props":1179,"children":1180},{"class":225,"line":236},[1181,1187,1191,1197],{"type":24,"tag":223,"props":1182,"children":1184},{"style":1183},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[1185],{"type":29,"value":1186},"  \"$schema\"",{"type":24,"tag":223,"props":1188,"children":1189},{"style":360},[1190],{"type":29,"value":432},{"type":24,"tag":223,"props":1192,"children":1194},{"style":1193},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[1195],{"type":29,"value":1196},"\"https://docs.renovatebot.com/renovate-schema.json\"",{"type":24,"tag":223,"props":1198,"children":1199},{"style":360},[1200],{"type":29,"value":1201},",\n",{"type":24,"tag":223,"props":1203,"children":1204},{"class":225,"line":252},[1205,1210],{"type":24,"tag":223,"props":1206,"children":1207},{"style":1183},[1208],{"type":29,"value":1209},"  \"extends\"",{"type":24,"tag":223,"props":1211,"children":1212},{"style":360},[1213],{"type":29,"value":1214},": [\n",{"type":24,"tag":223,"props":1216,"children":1217},{"class":225,"line":272},[1218],{"type":24,"tag":223,"props":1219,"children":1220},{"style":1193},[1221],{"type":29,"value":1222},"    \"config:best-practices\"\n",{"type":24,"tag":223,"props":1224,"children":1225},{"class":225,"line":285},[1226],{"type":24,"tag":223,"props":1227,"children":1228},{"style":360},[1229],{"type":29,"value":1230},"  ]\n",{"type":24,"tag":223,"props":1232,"children":1233},{"class":225,"line":309},[1234],{"type":24,"tag":223,"props":1235,"children":1236},{"style":360},[1237],{"type":29,"value":1238},"}\n",{"type":24,"tag":25,"props":1240,"children":1241},{},[1242],{"type":29,"value":1243},"Renovate erstellt für jedes Update einen Merge-Request. Super!",{"type":24,"tag":122,"props":1245,"children":1247},{"id":1246},"automatisierte-sicherheitsupdates-und-opt-in-für-minor-major-versionen",[1248],{"type":29,"value":1249},"Automatisierte Sicherheitsupdates und Opt-in für Minor-/Major-Versionen",{"type":24,"tag":25,"props":1251,"children":1252},{},[1253],{"type":29,"value":1254},"Die aktuelle Konfiguration erstellt für jedes Update einen Merge-Request, aber wir möchten, dass Sicherheitsupdates ohne Benutzerinteraktion erfolgen.",{"type":24,"tag":25,"props":1256,"children":1257},{},[1258,1260,1266],{"type":29,"value":1259},"Es ist wichtig zu verstehen, wie Docker-Images versioniert bzw. getaggt werden. Es hängt vom jeweiligen Image ab, aber nehmen wir die offizielle ",{"type":24,"tag":83,"props":1261,"children":1263},{"href":1262},"https://hub.docker.com/_/mariadb",[1264],{"type":29,"value":1265},"MariaDB",{"type":29,"value":1267}," als Beispiel.",{"type":24,"tag":25,"props":1269,"children":1270},{},[1271,1273,1279],{"type":29,"value":1272},"Es gibt ",{"type":24,"tag":134,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":29,"value":1278},"11.8.3-noble, 11.8-noble, 11-noble, lts-noble, 11.8.3, 11.8, 11, lts",{"type":29,"value":1280},", die alle auf dasselbe Image verweisen.",{"type":24,"tag":25,"props":1282,"children":1283},{},[1284,1290,1292,1298,1300,1306,1307,1313],{"type":24,"tag":134,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":29,"value":1289},"11.8.3-noble",{"type":29,"value":1291}," bedeutet, dass wir MariaDB in Version ",{"type":24,"tag":134,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":29,"value":1297},"11.8.3",{"type":29,"value":1299}," auf Basis von Ubuntu Noble erhalten.\n",{"type":24,"tag":134,"props":1301,"children":1303},{"className":1302},[],[1304],{"type":29,"value":1305},"11.8-noble",{"type":29,"value":1291},{"type":24,"tag":134,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":29,"value":1312},"11.8.\u003Clatest_patch>",{"type":29,"value":1314}," auf Basis von Ubuntu Noble erhalten.",{"type":24,"tag":25,"props":1316,"children":1317},{},[1318,1320,1326,1328,1333,1335,1340],{"type":29,"value":1319},"Wenn eine neue Version von MariaDB veröffentlicht wird, z. B. ",{"type":24,"tag":134,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":29,"value":1325},"11.8.4-noble",{"type":29,"value":1327},", wird ein neuer Tag ",{"type":24,"tag":134,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":29,"value":1325},{"type":29,"value":1334}," veröffentlicht, aber der Tag ",{"type":24,"tag":134,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":29,"value":1305},{"type":29,"value":1341}," wird aktualisiert.",{"type":24,"tag":25,"props":1343,"children":1344},{},[1345,1347,1352],{"type":29,"value":1346},"Gleiches gilt für das Ubuntu-Update. Der Tag ",{"type":24,"tag":134,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":29,"value":1289},{"type":29,"value":1353}," kann aktualisiert werden, wenn das Image mit dem neuesten Ubuntu-Image erneut gebaut wird.",{"type":24,"tag":25,"props":1355,"children":1356},{},[1357,1363,1365,1371],{"type":24,"tag":134,"props":1358,"children":1360},{"className":1359},[],[1361],{"type":29,"value":1362},"docker compose up",{"type":29,"value":1364}," mit ",{"type":24,"tag":134,"props":1366,"children":1368},{"className":1367},[],[1369],{"type":29,"value":1370},"mariadb:11.8-noble",{"type":29,"value":1372}," wird nichts bewirken, weil Docker sich dieser Änderung nicht bewusst ist.",{"type":24,"tag":25,"props":1374,"children":1375},{},[1376,1378,1384],{"type":29,"value":1377},"Im Beispiel oben verweisen wir auf ",{"type":24,"tag":134,"props":1379,"children":1381},{"className":1380},[],[1382],{"type":29,"value":1383},"mariadb:11.8",{"type":29,"value":1385},", weil wir die neueste Patch-Version auf Basis des neuesten Betriebssystems verwenden möchten.",{"type":24,"tag":956,"props":1387,"children":1388},{},[],{"type":24,"tag":25,"props":1390,"children":1391},{},[1392],{"type":29,"value":1393},"Wie soll Docker mitgeteilt werden, dass es eine neue Version gibt?",{"type":24,"tag":25,"props":1395,"children":1396},{},[1397,1399,1405],{"type":29,"value":1398},"Die Hauptidee ist, das Docker-Image zusätzlich mit einem ",{"type":24,"tag":83,"props":1400,"children":1402},{"href":1401},"https://docs.docker.com/dhi/core-concepts/digests/",[1403],{"type":29,"value":1404},"Digest",{"type":29,"value":1406}," anzugeben.",{"type":24,"tag":25,"props":1408,"children":1409},{},[1410,1412,1417,1419,1425],{"type":29,"value":1411},"Wenn Renovate das erste Mal läuft, findet es den Verweis auf ",{"type":24,"tag":134,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":29,"value":1383},{"type":29,"value":1418}," und erstellt einen Merge-Request, um den Digest auf so etwas wie ",{"type":24,"tag":134,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":29,"value":1424},"mariadb:11.8@sha256:ae6119716edac6998ae85508431b3d2e666530ddf4e94c61a10710caec9b0f71",{"type":29,"value":1426}," festzulegen.",{"type":24,"tag":25,"props":1428,"children":1429},{},[1430],{"type":29,"value":1431},"Es überwacht das auch, sodass bei jedem Update des Images der Digest wechselt und Renovate einen Merge-Request erstellt.",{"type":24,"tag":25,"props":1433,"children":1434},{},[1435],{"type":29,"value":1436},"Damit diese Updates automatisch gemergt werden, müssen wir ein paar Anpassungen vornehmen.",{"type":24,"tag":213,"props":1438,"children":1441},{"className":1162,"code":1439,"filename":1164,"highlights":1440,"language":1165,"meta":7,"style":7},"{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:best-practices\",\n    \"default:automergeDigest\"\n  ],\n  \"automergeType\": \"branch\",\n  \"ignoreTests\": true\n}\n",[285,309,323,440],[1442],{"type":24,"tag":134,"props":1443,"children":1444},{"__ignoreMap":7},[1445,1452,1471,1482,1494,1504,1513,1535,1553],{"type":24,"tag":223,"props":1446,"children":1447},{"class":225,"line":226},[1448],{"type":24,"tag":223,"props":1449,"children":1450},{"style":360},[1451],{"type":29,"value":1177},{"type":24,"tag":223,"props":1453,"children":1454},{"class":225,"line":236},[1455,1459,1463,1467],{"type":24,"tag":223,"props":1456,"children":1457},{"style":1183},[1458],{"type":29,"value":1186},{"type":24,"tag":223,"props":1460,"children":1461},{"style":360},[1462],{"type":29,"value":432},{"type":24,"tag":223,"props":1464,"children":1465},{"style":1193},[1466],{"type":29,"value":1196},{"type":24,"tag":223,"props":1468,"children":1469},{"style":360},[1470],{"type":29,"value":1201},{"type":24,"tag":223,"props":1472,"children":1473},{"class":225,"line":252},[1474,1478],{"type":24,"tag":223,"props":1475,"children":1476},{"style":1183},[1477],{"type":29,"value":1209},{"type":24,"tag":223,"props":1479,"children":1480},{"style":360},[1481],{"type":29,"value":1214},{"type":24,"tag":223,"props":1483,"children":1484},{"class":225,"line":272},[1485,1490],{"type":24,"tag":223,"props":1486,"children":1487},{"style":1193},[1488],{"type":29,"value":1489},"    \"config:best-practices\"",{"type":24,"tag":223,"props":1491,"children":1492},{"style":360},[1493],{"type":29,"value":1201},{"type":24,"tag":223,"props":1495,"children":1498},{"class":1496,"line":285},[225,1497],"highlight",[1499],{"type":24,"tag":223,"props":1500,"children":1501},{"style":1193},[1502],{"type":29,"value":1503},"    \"default:automergeDigest\"\n",{"type":24,"tag":223,"props":1505,"children":1507},{"class":1506,"line":309},[225,1497],[1508],{"type":24,"tag":223,"props":1509,"children":1510},{"style":360},[1511],{"type":29,"value":1512},"  ],\n",{"type":24,"tag":223,"props":1514,"children":1516},{"class":1515,"line":323},[225,1497],[1517,1522,1526,1531],{"type":24,"tag":223,"props":1518,"children":1519},{"style":1183},[1520],{"type":29,"value":1521},"  \"automergeType\"",{"type":24,"tag":223,"props":1523,"children":1524},{"style":360},[1525],{"type":29,"value":432},{"type":24,"tag":223,"props":1527,"children":1528},{"style":1193},[1529],{"type":29,"value":1530},"\"branch\"",{"type":24,"tag":223,"props":1532,"children":1533},{"style":360},[1534],{"type":29,"value":1201},{"type":24,"tag":223,"props":1536,"children":1538},{"class":1537,"line":440},[225,1497],[1539,1544,1548],{"type":24,"tag":223,"props":1540,"children":1541},{"style":1183},[1542],{"type":29,"value":1543},"  \"ignoreTests\"",{"type":24,"tag":223,"props":1545,"children":1546},{"style":360},[1547],{"type":29,"value":432},{"type":24,"tag":223,"props":1549,"children":1550},{"style":716},[1551],{"type":29,"value":1552},"true\n",{"type":24,"tag":223,"props":1554,"children":1555},{"class":225,"line":458},[1556],{"type":24,"tag":223,"props":1557,"children":1558},{"style":360},[1559],{"type":29,"value":1238},{"type":24,"tag":25,"props":1561,"children":1562},{},[1563,1565,1571,1572,1578],{"type":29,"value":1564},"Das weist Renovate an, die Digest-Updates automatisch zu mergen, ohne einen Merge-Request zu erstellen. Das reduziert das \"Rauschen\", weil es keine Merge-Request-Benachrichtigung gibt.\nMehr dazu findest du unter ",{"type":24,"tag":83,"props":1566,"children":1568},{"href":1567},"https://docs.renovatebot.com/key-concepts/automerge/#branch-vs-pr-automerging",[1569],{"type":29,"value":1570},"automergeType",{"type":29,"value":90},{"type":24,"tag":83,"props":1573,"children":1575},{"href":1574},"https://docs.renovatebot.com/key-concepts/automerge/#absence-of-tests",[1576],{"type":29,"value":1577},"ignoreTests",{"type":29,"value":178},{"type":24,"tag":1580,"props":1581,"children":1582},"style",{},[1583],{"type":29,"value":1584},"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":236,"depth":236,"links":1586},[1587,1588,1589,1590,1591],{"id":124,"depth":236,"text":127},{"id":162,"depth":236,"text":165},{"id":203,"depth":236,"text":206},{"id":1151,"depth":236,"text":1154},{"id":1246,"depth":236,"text":1249},"markdown","common:blog:17.gitops-docker-renovate.md","common","blog/17.gitops-docker-renovate.md","blog/17.gitops-docker-renovate","md",{"_path":1599,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1600,"description":1601,"author":10,"image":11,"releaseDate":1602,"blogCategories":1603,"articleTags":1605,"tags":1606,"_type":1592,"_id":1608,"_source":1594,"_file":1609,"_stem":1610,"_extension":1597},"/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",[1604,15],"Das bewegt uns",[15,17],[1607,19],"shopware","common:blog:16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot.md","blog/16.shopware-renovate-bot",{"_path":1612,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1613,"description":1614,"author":10,"image":11,"releaseDate":1615,"blogCategories":1616,"articleTags":1617,"tags":1619,"_type":1592,"_id":1620,"_source":1594,"_file":1621,"_stem":1622,"_extension":1597},"/blog/shopware-plugin-gitlab-pipeline-release","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","2026-02-26",[14,15],[15,17,1618],"Shopware",[1607,19],"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":4},{"_path":1625},"/en/blog/gitops-docker-renovate",{"_path":1627,"_dir":1628,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":1629,"primaryTeam":1631,"firstName":1632,"lastName":1633,"prefixTitle":7,"suffixTitle":1634,"education":1635,"role":1640,"workingSince":1645,"inTheCompanySince":1646,"techSkills":1647,"skills":1684,"projects":1702,"contactDetails":1712,"_image":1716,"image":1717,"_id":1718,"_type":1165,"title":1719,"_source":1628,"_file":1720,"_stem":1721,"_extension":1165},"/employees/robert-juzak","employees",[1630,1631],"appDev","devOps","Robert","Juzak","B.Sc.",[1636],[1637,1638,1639],"Bachelor of Computer Science","Technische Universität Breslau","2016",[1641,1642,1643,1644],"softwareDeveloper","fullstackDeveloper","admin","consultant","2015","2018",[1648,1651,1652,1655,1658,1661,1663,1666,1669,1673,1676,1678,1681],{"name":88,"level":1649,"icon":1650},"expert","/images/Docker.svg",{"name":107,"level":1649},{"name":1653,"level":1649,"icon":1654},"Kubernetes","/images/Kubernetes.svg",{"name":1656,"level":1649,"icon":1657},"PHPUnit","/images/PHP-Unit.svg",{"name":1659,"level":1649,"icon":1660},"Portainer","/images/Portainer.svg",{"name":1662,"level":1649},"Sentry",{"name":1664,"level":1649,"icon":1665},"Sonarqube","/images/Sonarqube.svg",{"name":1667,"level":1649,"icon":1668},"Linux","/images/linux_os-mono.svg",{"name":1670,"level":1671,"icon":1672},"CSS","advanced","/images/css.svg",{"name":1674,"level":1671,"icon":1675},"HTML","/images/html.svg",{"name":1677,"level":1671},"PHP",{"name":1679,"level":1671,"icon":1680},"SQL","/images/SQL.svg",{"name":1682,"level":1671,"icon":1683},"VueJS","/images/vuejs.svg",[1685,1687,1689,1690,1692,1694,1696,1698,1700],{"name":1686,"level":1649},"CI/CD",{"name":1688,"level":1649},"qualityAssurance",{"name":1631,"level":1649},{"name":1691,"level":1649},"testDrivenBugfix",{"name":1693,"level":1649},"testDrivenDevelopment",{"name":1695,"level":1671},"accessibility",{"name":1697,"level":1671},"databases",{"name":1699,"level":1671},"linuxServerAdministration",{"name":1701,"level":1671},"softwareArchitect",[1703,1708,1710],{"project":1704,"position":1705},"Herole",[1706,1707],"Dev-Ops","Frontend Developer",{"project":1709,"position":1707},"Huawei-Calibration-aaS",{"project":1711,"position":1707},"Huawei-Inspect-3D",{"eMail":1713,"phone":1714,"visibility":1715},"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",[1723,1736],{"_path":1724,"_dir":1725,"_draft":6,"_partial":393,"_locale":7,"name":1726,"slug":1725,"text":1727,"hoverText":1728,"image":1729,"customer":1726,"tags":1730,"_id":1732,"_type":344,"title":1733,"_source":1594,"_file":1734,"_stem":1735,"_extension":344},"/portfolio/pixelx/_teaser","pixelx","PixelX","IT-Sicherheit mit Augenmaß und Sachverstand","Für PixelX haben wir eine gezielte Sicherheitsanalyse durchgeführt, bei der wir dank unseres tiefen technischen Verständnisses eine kritische Schwachstelle identifizieren konnten. Mit minimalem Zeitaufwand erzielten wir maximalen Sicherheitsgewinn.","/images/portfolio/pixelx/pixelx_secured.png",[1731,19],"security","common:portfolio:9010.pixelx:_teaser.yaml","Teaser","portfolio/9010.pixelx/_teaser.yaml","portfolio/9010.pixelx/_teaser",{"_path":1737,"_dir":1738,"_draft":6,"_partial":393,"_locale":7,"name":1739,"slug":1738,"text":1740,"hoverText":1741,"image":1742,"customer":1739,"tags":1743,"_id":1744,"_type":344,"title":1733,"_source":1594,"_file":1745,"_stem":1746,"_extension":344},"/portfolio/slimspots/_teaser","slimspots","SlimSpots","Große Datenmengen in Echtzeit verarbeiten","Für SlimSpots, einen weltweit agierenden Anbieter von Ad-Marketing-Lösungen, haben wir eine hochskalierbare Infrastruktur entwickelt, die die Verarbeitung von Billionen Datensätzen in Echtzeit ermöglicht.","/images/portfolio/slimspots/slim_spots_prtfolio.png",[1697,19],"common:portfolio:9020.slimspots:_teaser.yaml","portfolio/9020.slimspots/_teaser.yaml","portfolio/9020.slimspots/_teaser",{"_path":1599,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1600,"description":1601,"author":10,"image":11,"releaseDate":1602,"blogCategories":1748,"articleTags":1749,"tags":1750,"body":1751,"_type":1592,"_id":1608,"_source":1594,"_file":1609,"_stem":1610,"_extension":1597},[1604,15],[15,17],[1607,19],{"type":21,"children":1752,"toc":2287},[1753,1761,1772,1778,1791,1800,1831,1837,1866,1871,1902,2212,2217,2283],{"type":24,"tag":1754,"props":1755,"children":1760},"img",{"alt":7,"aspect-ratio":1756,"height":1757,"object-fit":1758,"src":1759},"1.78",300,"fill","/blog/shopware-renovate.png",[],{"type":24,"tag":25,"props":1762,"children":1763},{},[1764,1770],{"type":24,"tag":83,"props":1765,"children":1767},{"href":1766},"https://docs.renovatebot.com/",[1768],{"type":29,"value":1769},"Renovate",{"type":29,"value":1771}," 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":24,"tag":122,"props":1773,"children":1775},{"id":1774},"shopware-versionierungsschema",[1776],{"type":29,"value":1777},"Shopware Versionierungsschema",{"type":24,"tag":25,"props":1779,"children":1780},{},[1781,1783,1789],{"type":29,"value":1782},"Shopware verwendet ein benutzerdefiniertes Versionierungsschema. Sie können den ",{"type":24,"tag":83,"props":1784,"children":1786},{"href":1785},"https://www.shopware.com/de/news/shopware-6-versionierungs-strategie/",[1787],{"type":29,"value":1788},"offiziellen Artikel",{"type":29,"value":1790}," lesen, aber kurz gesagt:",{"type":24,"tag":1792,"props":1793,"children":1794},"blockquote",{},[1795],{"type":24,"tag":25,"props":1796,"children":1797},{},[1798],{"type":29,"value":1799},"Shopware implementierte SemVer als \"SemVer with benefits\".",{"type":24,"tag":1792,"props":1801,"children":1802},{},[1803,1808,1826],{"type":24,"tag":25,"props":1804,"children":1805},{},[1806],{"type":29,"value":1807},"Eine SemVer-konforme Version hat drei Zahlen: Major, Minor und Patch. Diese werden nach folgendem Regelsatz erhöht:",{"type":24,"tag":52,"props":1809,"children":1810},{},[1811,1816,1821],{"type":24,"tag":56,"props":1812,"children":1813},{},[1814],{"type":29,"value":1815},"MAJOR: Inkompatible API-Änderungen werden vorgenommen",{"type":24,"tag":56,"props":1817,"children":1818},{},[1819],{"type":29,"value":1820},"MINOR: Funktionalität wird auf rückwärtskompatible Weise hinzugefügt",{"type":24,"tag":56,"props":1822,"children":1823},{},[1824],{"type":29,"value":1825},"PATCH: Rückwärtskompatible Fehlerbehebungen werden vorgenommen",{"type":24,"tag":25,"props":1827,"children":1828},{},[1829],{"type":29,"value":1830},"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":24,"tag":122,"props":1832,"children":1834},{"id":1833},"renovate-konfiguration",[1835],{"type":29,"value":1836},"Renovate-Konfiguration",{"type":24,"tag":25,"props":1838,"children":1839},{},[1840,1842,1848,1850,1856,1858,1864],{"type":29,"value":1841},"Die ",{"type":24,"tag":134,"props":1843,"children":1845},{"className":1844},[],[1846],{"type":29,"value":1847},"\"große Marketing-Nummer\"",{"type":29,"value":1849}," oder ",{"type":24,"tag":134,"props":1851,"children":1853},{"className":1852},[],[1854],{"type":29,"value":1855},"\"Generation\"",{"type":29,"value":1857}," wird in Renovate als ",{"type":24,"tag":134,"props":1859,"children":1861},{"className":1860},[],[1862],{"type":29,"value":1863},"compatibility",{"type":29,"value":1865}," dargestellt.",{"type":24,"tag":25,"props":1867,"children":1868},{},[1869],{"type":29,"value":1870},"Die folgende Konfiguration wird:",{"type":24,"tag":1872,"props":1873,"children":1874},"ol",{},[1875,1880,1892,1897],{"type":24,"tag":56,"props":1876,"children":1877},{},[1878],{"type":29,"value":1879},"Alle shopware-spezifischen Updates gruppieren",{"type":24,"tag":56,"props":1881,"children":1882},{},[1883,1885,1890],{"type":29,"value":1884},"Die Updates als ",{"type":24,"tag":134,"props":1886,"children":1888},{"className":1887},[],[1889],{"type":29,"value":1607},{"type":29,"value":1891}," gruppieren",{"type":24,"tag":56,"props":1893,"children":1894},{},[1895],{"type":29,"value":1896},"Renovate mitteilen, wie die Version extrahiert werden soll",{"type":24,"tag":56,"props":1898,"children":1899},{},[1900],{"type":29,"value":1901},"Renovate mitteilen, wo Changelog-Informationen zu finden sind",{"type":24,"tag":213,"props":1903,"children":1905},{"className":1162,"code":1904,"filename":1164,"language":1165,"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",[1906],{"type":24,"tag":134,"props":1907,"children":1908},{"__ignoreMap":7},[1909,1916,1935,1947,1955,1976,1988,1996,2004,2016,2028,2040,2052,2060,2067,2088,2173,2190,2198,2205],{"type":24,"tag":223,"props":1910,"children":1911},{"class":225,"line":226},[1912],{"type":24,"tag":223,"props":1913,"children":1914},{"style":360},[1915],{"type":29,"value":1177},{"type":24,"tag":223,"props":1917,"children":1918},{"class":225,"line":236},[1919,1923,1927,1931],{"type":24,"tag":223,"props":1920,"children":1921},{"style":1183},[1922],{"type":29,"value":1186},{"type":24,"tag":223,"props":1924,"children":1925},{"style":360},[1926],{"type":29,"value":432},{"type":24,"tag":223,"props":1928,"children":1929},{"style":1193},[1930],{"type":29,"value":1196},{"type":24,"tag":223,"props":1932,"children":1933},{"style":360},[1934],{"type":29,"value":1201},{"type":24,"tag":223,"props":1936,"children":1937},{"class":225,"line":252},[1938,1943],{"type":24,"tag":223,"props":1939,"children":1940},{"style":1183},[1941],{"type":29,"value":1942},"  \"packageRules\"",{"type":24,"tag":223,"props":1944,"children":1945},{"style":360},[1946],{"type":29,"value":1214},{"type":24,"tag":223,"props":1948,"children":1949},{"class":225,"line":272},[1950],{"type":24,"tag":223,"props":1951,"children":1952},{"style":360},[1953],{"type":29,"value":1954},"    {\n",{"type":24,"tag":223,"props":1956,"children":1957},{"class":225,"line":285},[1958,1963,1967,1972],{"type":24,"tag":223,"props":1959,"children":1960},{"style":1183},[1961],{"type":29,"value":1962},"      \"description\"",{"type":24,"tag":223,"props":1964,"children":1965},{"style":360},[1966],{"type":29,"value":432},{"type":24,"tag":223,"props":1968,"children":1969},{"style":1193},[1970],{"type":29,"value":1971},"\"Follow Shopware version schema\"",{"type":24,"tag":223,"props":1973,"children":1974},{"style":360},[1975],{"type":29,"value":1201},{"type":24,"tag":223,"props":1977,"children":1978},{"class":225,"line":309},[1979,1984],{"type":24,"tag":223,"props":1980,"children":1981},{"style":1183},[1982],{"type":29,"value":1983},"      \"matchDatasources\"",{"type":24,"tag":223,"props":1985,"children":1986},{"style":360},[1987],{"type":29,"value":1214},{"type":24,"tag":223,"props":1989,"children":1990},{"class":225,"line":323},[1991],{"type":24,"tag":223,"props":1992,"children":1993},{"style":1193},[1994],{"type":29,"value":1995},"        \"packagist\"\n",{"type":24,"tag":223,"props":1997,"children":1998},{"class":225,"line":440},[1999],{"type":24,"tag":223,"props":2000,"children":2001},{"style":360},[2002],{"type":29,"value":2003},"      ],\n",{"type":24,"tag":223,"props":2005,"children":2006},{"class":225,"line":458},[2007,2012],{"type":24,"tag":223,"props":2008,"children":2009},{"style":1183},[2010],{"type":29,"value":2011},"      \"matchPackageNames\"",{"type":24,"tag":223,"props":2013,"children":2014},{"style":360},[2015],{"type":29,"value":1214},{"type":24,"tag":223,"props":2017,"children":2018},{"class":225,"line":471},[2019,2024],{"type":24,"tag":223,"props":2020,"children":2021},{"style":1193},[2022],{"type":29,"value":2023},"        \"shopware/core\"",{"type":24,"tag":223,"props":2025,"children":2026},{"style":360},[2027],{"type":29,"value":1201},{"type":24,"tag":223,"props":2029,"children":2030},{"class":225,"line":485},[2031,2036],{"type":24,"tag":223,"props":2032,"children":2033},{"style":1193},[2034],{"type":29,"value":2035},"        \"shopware/administration\"",{"type":24,"tag":223,"props":2037,"children":2038},{"style":360},[2039],{"type":29,"value":1201},{"type":24,"tag":223,"props":2041,"children":2042},{"class":225,"line":498},[2043,2048],{"type":24,"tag":223,"props":2044,"children":2045},{"style":1193},[2046],{"type":29,"value":2047},"        \"shopware/elasticsearch\"",{"type":24,"tag":223,"props":2049,"children":2050},{"style":360},[2051],{"type":29,"value":1201},{"type":24,"tag":223,"props":2053,"children":2054},{"class":225,"line":511},[2055],{"type":24,"tag":223,"props":2056,"children":2057},{"style":1193},[2058],{"type":29,"value":2059},"        \"shopware/storefront\"\n",{"type":24,"tag":223,"props":2061,"children":2062},{"class":225,"line":524},[2063],{"type":24,"tag":223,"props":2064,"children":2065},{"style":360},[2066],{"type":29,"value":2003},{"type":24,"tag":223,"props":2068,"children":2069},{"class":225,"line":537},[2070,2075,2079,2084],{"type":24,"tag":223,"props":2071,"children":2072},{"style":1183},[2073],{"type":29,"value":2074},"      \"groupName\"",{"type":24,"tag":223,"props":2076,"children":2077},{"style":360},[2078],{"type":29,"value":432},{"type":24,"tag":223,"props":2080,"children":2081},{"style":1193},[2082],{"type":29,"value":2083},"\"shopware\"",{"type":24,"tag":223,"props":2085,"children":2086},{"style":360},[2087],{"type":29,"value":1201},{"type":24,"tag":223,"props":2089,"children":2090},{"class":225,"line":550},[2091,2096,2100,2105,2110,2115,2119,2124,2128,2133,2137,2142,2146,2151,2155,2160,2164,2169],{"type":24,"tag":223,"props":2092,"children":2093},{"style":1183},[2094],{"type":29,"value":2095},"      \"versioning\"",{"type":24,"tag":223,"props":2097,"children":2098},{"style":360},[2099],{"type":29,"value":432},{"type":24,"tag":223,"props":2101,"children":2102},{"style":1193},[2103],{"type":29,"value":2104},"\"regex:(?\u003Ccompatibility>",{"type":24,"tag":223,"props":2106,"children":2107},{"style":716},[2108],{"type":29,"value":2109},"\\\\",{"type":24,"tag":223,"props":2111,"children":2112},{"style":1193},[2113],{"type":29,"value":2114},"d+)",{"type":24,"tag":223,"props":2116,"children":2117},{"style":716},[2118],{"type":29,"value":2109},{"type":24,"tag":223,"props":2120,"children":2121},{"style":1193},[2122],{"type":29,"value":2123},".(?\u003Cmajor>",{"type":24,"tag":223,"props":2125,"children":2126},{"style":716},[2127],{"type":29,"value":2109},{"type":24,"tag":223,"props":2129,"children":2130},{"style":1193},[2131],{"type":29,"value":2132},"d+)(",{"type":24,"tag":223,"props":2134,"children":2135},{"style":716},[2136],{"type":29,"value":2109},{"type":24,"tag":223,"props":2138,"children":2139},{"style":1193},[2140],{"type":29,"value":2141},".(?\u003Cminor>",{"type":24,"tag":223,"props":2143,"children":2144},{"style":716},[2145],{"type":29,"value":2109},{"type":24,"tag":223,"props":2147,"children":2148},{"style":1193},[2149],{"type":29,"value":2150},"d+))?(",{"type":24,"tag":223,"props":2152,"children":2153},{"style":716},[2154],{"type":29,"value":2109},{"type":24,"tag":223,"props":2156,"children":2157},{"style":1193},[2158],{"type":29,"value":2159},".(?\u003Cpatch>",{"type":24,"tag":223,"props":2161,"children":2162},{"style":716},[2163],{"type":29,"value":2109},{"type":24,"tag":223,"props":2165,"children":2166},{"style":1193},[2167],{"type":29,"value":2168},"d+))?$\"",{"type":24,"tag":223,"props":2170,"children":2171},{"style":360},[2172],{"type":29,"value":1201},{"type":24,"tag":223,"props":2174,"children":2175},{"class":225,"line":563},[2176,2181,2185],{"type":24,"tag":223,"props":2177,"children":2178},{"style":1183},[2179],{"type":29,"value":2180},"      \"sourceUrl\"",{"type":24,"tag":223,"props":2182,"children":2183},{"style":360},[2184],{"type":29,"value":432},{"type":24,"tag":223,"props":2186,"children":2187},{"style":1193},[2188],{"type":29,"value":2189},"\"https://github.com/shopware/shopware\"\n",{"type":24,"tag":223,"props":2191,"children":2192},{"class":225,"line":576},[2193],{"type":24,"tag":223,"props":2194,"children":2195},{"style":360},[2196],{"type":29,"value":2197},"    }\n",{"type":24,"tag":223,"props":2199,"children":2200},{"class":225,"line":589},[2201],{"type":24,"tag":223,"props":2202,"children":2203},{"style":360},[2204],{"type":29,"value":1230},{"type":24,"tag":223,"props":2206,"children":2207},{"class":225,"line":602},[2208],{"type":24,"tag":223,"props":2209,"children":2210},{"style":360},[2211],{"type":29,"value":1238},{"type":24,"tag":25,"props":2213,"children":2214},{},[2215],{"type":29,"value":2216},"Dies sollte zur Erstellung folgender Merge-/Pull-Requests führen:",{"type":24,"tag":52,"props":2218,"children":2219},{},[2220,2254],{"type":24,"tag":56,"props":2221,"children":2222},{},[2223,2225,2231,2232,2238,2239,2245,2246,2252],{"type":29,"value":2224},"fix(deps): update shopware (",{"type":24,"tag":134,"props":2226,"children":2228},{"className":2227},[],[2229],{"type":29,"value":2230},"shopware/administration",{"type":29,"value":636},{"type":24,"tag":134,"props":2233,"children":2235},{"className":2234},[],[2236],{"type":29,"value":2237},"shopware/core",{"type":29,"value":636},{"type":24,"tag":134,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":29,"value":2244},"shopware/elasticsearch",{"type":29,"value":636},{"type":24,"tag":134,"props":2247,"children":2249},{"className":2248},[],[2250],{"type":29,"value":2251},"shopware/storefront",{"type":29,"value":2253},")",{"type":24,"tag":56,"props":2255,"children":2256},{},[2257,2259,2264,2265,2270,2271,2276,2277,2282],{"type":29,"value":2258},"fix(deps): update shopware to v7 (major) (",{"type":24,"tag":134,"props":2260,"children":2262},{"className":2261},[],[2263],{"type":29,"value":2230},{"type":29,"value":636},{"type":24,"tag":134,"props":2266,"children":2268},{"className":2267},[],[2269],{"type":29,"value":2237},{"type":29,"value":636},{"type":24,"tag":134,"props":2272,"children":2274},{"className":2273},[],[2275],{"type":29,"value":2244},{"type":29,"value":636},{"type":24,"tag":134,"props":2278,"children":2280},{"className":2279},[],[2281],{"type":29,"value":2251},{"type":29,"value":2253},{"type":24,"tag":1580,"props":2284,"children":2285},{},[2286],{"type":29,"value":1584},{"title":7,"searchDepth":236,"depth":236,"links":2288},[2289,2290],{"id":1774,"depth":236,"text":1777},{"id":1833,"depth":236,"text":1836},{"_path":1612,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":1613,"description":1614,"author":10,"image":11,"releaseDate":1615,"blogCategories":2292,"articleTags":2293,"tags":2294,"body":2295,"_type":1592,"_id":1620,"_source":1594,"_file":1621,"_stem":1622,"_extension":1597},[14,15],[15,17,1618],[1607,19],{"type":21,"children":2296,"toc":6644},[2297,2301,2306,2317,2322,2327,2363,2368,2374,2379,2386,2399,3427,3432,3456,3466,3470,3483,3506,3641,3654,3659,3665,3677,3698,4099,4140,4145,4166,4308,4320,4326,4338,4343,4355,4390,4395,5322,5327,5425,5430,5489,5500,5505,5526,5661,5671,5677,5697,5700,5703,5709,5715,5720,5738,5788,5935,5941,5946,5957,5970,6190,6594,6599,6640],{"type":24,"tag":1754,"props":2298,"children":2300},{"alt":7,"aspect-ratio":1756,"height":1757,"object-fit":1758,"src":2299},"/blog/shopware-plugin-release.png",[],{"type":24,"tag":25,"props":2302,"children":2303},{},[2304],{"type":29,"value":2305},"Es gibt viele Möglichkeiten, Shopware 6 Plugins zu installieren. Sie können sie direkt im Admin-Panel herunterladen oder mit Composer installieren.",{"type":24,"tag":25,"props":2307,"children":2308},{},[2309,2311,2316],{"type":29,"value":2310},"Einen detaillierten Vergleich finden Sie in der ",{"type":24,"tag":83,"props":2312,"children":2314},{"href":2313},"https://developer.shopware.com/docs/guides/plugins/plugins/",[2315],{"type":29,"value":176},{"type":29,"value":178},{"type":24,"tag":25,"props":2318,"children":2319},{},[2320],{"type":29,"value":2321},"Als Entwickler und Betreuer von Themes, Anpassungen, Drittanbieter-APIs usw. konzentriere ich mich auf statische Plugins.",{"type":24,"tag":25,"props":2323,"children":2324},{},[2325],{"type":29,"value":2326},"Der Workflow ist einfach:",{"type":24,"tag":1872,"props":2328,"children":2329},{},[2330,2341,2352],{"type":24,"tag":56,"props":2331,"children":2332},{},[2333,2335],{"type":29,"value":2334},"Erstelle ein Plugin mit ",{"type":24,"tag":134,"props":2336,"children":2338},{"className":2337},[],[2339],{"type":29,"value":2340},"bin/console plugin:create --static",{"type":24,"tag":56,"props":2342,"children":2343},{},[2344,2346],{"type":29,"value":2345},"Installiere es mit ",{"type":24,"tag":83,"props":2347,"children":2349},{"href":2348},"https://developer.shopware.com/docs/guides/plugins/plugins/#static-plugins",[2350],{"type":29,"value":2351},"Composer",{"type":24,"tag":56,"props":2353,"children":2354},{},[2355,2357],{"type":29,"value":2356},"Baue das Projekt mit ",{"type":24,"tag":83,"props":2358,"children":2360},{"href":2359},"https://developer.shopware.com/docs/products/cli/project-commands/build.html#example-docker-image",[2361],{"type":29,"value":2362},"shopware-cli",{"type":24,"tag":25,"props":2364,"children":2365},{},[2366],{"type":29,"value":2367},"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":24,"tag":122,"props":2369,"children":2371},{"id":2370},"das-plugin-extrahieren",[2372],{"type":29,"value":2373},"Das Plugin extrahieren",{"type":24,"tag":25,"props":2375,"children":2376},{},[2377],{"type":29,"value":2378},"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":24,"tag":2380,"props":2381,"children":2383},"h3",{"id":2382},"download-mit-git",[2384],{"type":29,"value":2385},"Download mit Git",{"type":24,"tag":25,"props":2387,"children":2388},{},[2389,2391,2397],{"type":29,"value":2390},"Wir müssen ",{"type":24,"tag":134,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":29,"value":2396},"composer",{"type":29,"value":2398}," nur mitteilen, wo unser Plugin zu finden ist.",{"type":24,"tag":213,"props":2400,"children":2405},{"className":1162,"code":2401,"filename":2402,"highlights":2403,"language":1165,"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\": \"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",[869,882,895,2404],39,[2406],{"type":24,"tag":134,"props":2407,"children":2408},{"__ignoreMap":7},[2409,2416,2437,2458,2479,2492,2513,2534,2555,2576,2596,2616,2633,2641,2653,2660,2681,2702,2714,2730,2738,2746,2753,2772,2792,2803,2818,2825,2832,2839,2858,2878,2889,2904,2911,2918,2926,2947,2964,2972,2980,2993,3006,3034,3042,3050,3072,3085,3098,3119,3136,3144,3165,3182,3190,3203,3216,3234,3242,3255,3264,3273,3286,3294,3303,3311,3324,3337,3358,3371,3384,3393,3402,3410,3419],{"type":24,"tag":223,"props":2410,"children":2411},{"class":225,"line":226},[2412],{"type":24,"tag":223,"props":2413,"children":2414},{"style":360},[2415],{"type":29,"value":1177},{"type":24,"tag":223,"props":2417,"children":2418},{"class":225,"line":236},[2419,2424,2428,2433],{"type":24,"tag":223,"props":2420,"children":2421},{"style":1183},[2422],{"type":29,"value":2423},"  \"name\"",{"type":24,"tag":223,"props":2425,"children":2426},{"style":360},[2427],{"type":29,"value":432},{"type":24,"tag":223,"props":2429,"children":2430},{"style":1193},[2431],{"type":29,"value":2432},"\"shopware/production\"",{"type":24,"tag":223,"props":2434,"children":2435},{"style":360},[2436],{"type":29,"value":1201},{"type":24,"tag":223,"props":2438,"children":2439},{"class":225,"line":252},[2440,2445,2449,2454],{"type":24,"tag":223,"props":2441,"children":2442},{"style":1183},[2443],{"type":29,"value":2444},"  \"license\"",{"type":24,"tag":223,"props":2446,"children":2447},{"style":360},[2448],{"type":29,"value":432},{"type":24,"tag":223,"props":2450,"children":2451},{"style":1193},[2452],{"type":29,"value":2453},"\"MIT\"",{"type":24,"tag":223,"props":2455,"children":2456},{"style":360},[2457],{"type":29,"value":1201},{"type":24,"tag":223,"props":2459,"children":2460},{"class":225,"line":272},[2461,2466,2470,2475],{"type":24,"tag":223,"props":2462,"children":2463},{"style":1183},[2464],{"type":29,"value":2465},"  \"type\"",{"type":24,"tag":223,"props":2467,"children":2468},{"style":360},[2469],{"type":29,"value":432},{"type":24,"tag":223,"props":2471,"children":2472},{"style":1193},[2473],{"type":29,"value":2474},"\"project\"",{"type":24,"tag":223,"props":2476,"children":2477},{"style":360},[2478],{"type":29,"value":1201},{"type":24,"tag":223,"props":2480,"children":2481},{"class":225,"line":285},[2482,2487],{"type":24,"tag":223,"props":2483,"children":2484},{"style":1183},[2485],{"type":29,"value":2486},"  \"require\"",{"type":24,"tag":223,"props":2488,"children":2489},{"style":360},[2490],{"type":29,"value":2491},": {\n",{"type":24,"tag":223,"props":2493,"children":2494},{"class":225,"line":309},[2495,2500,2504,2509],{"type":24,"tag":223,"props":2496,"children":2497},{"style":1183},[2498],{"type":29,"value":2499},"    \"composer-runtime-api\"",{"type":24,"tag":223,"props":2501,"children":2502},{"style":360},[2503],{"type":29,"value":432},{"type":24,"tag":223,"props":2505,"children":2506},{"style":1193},[2507],{"type":29,"value":2508},"\"^2.0\"",{"type":24,"tag":223,"props":2510,"children":2511},{"style":360},[2512],{"type":29,"value":1201},{"type":24,"tag":223,"props":2514,"children":2515},{"class":225,"line":323},[2516,2521,2525,2530],{"type":24,"tag":223,"props":2517,"children":2518},{"style":1183},[2519],{"type":29,"value":2520},"    \"acme/sample-plugin\"",{"type":24,"tag":223,"props":2522,"children":2523},{"style":360},[2524],{"type":29,"value":432},{"type":24,"tag":223,"props":2526,"children":2527},{"style":1193},[2528],{"type":29,"value":2529},"\"^1.0\"",{"type":24,"tag":223,"props":2531,"children":2532},{"style":360},[2533],{"type":29,"value":1201},{"type":24,"tag":223,"props":2535,"children":2536},{"class":225,"line":440},[2537,2542,2546,2551],{"type":24,"tag":223,"props":2538,"children":2539},{"style":1183},[2540],{"type":29,"value":2541},"    \"shopware/administration\"",{"type":24,"tag":223,"props":2543,"children":2544},{"style":360},[2545],{"type":29,"value":432},{"type":24,"tag":223,"props":2547,"children":2548},{"style":1193},[2549],{"type":29,"value":2550},"\"*\"",{"type":24,"tag":223,"props":2552,"children":2553},{"style":360},[2554],{"type":29,"value":1201},{"type":24,"tag":223,"props":2556,"children":2557},{"class":225,"line":458},[2558,2563,2567,2572],{"type":24,"tag":223,"props":2559,"children":2560},{"style":1183},[2561],{"type":29,"value":2562},"    \"shopware/core\"",{"type":24,"tag":223,"props":2564,"children":2565},{"style":360},[2566],{"type":29,"value":432},{"type":24,"tag":223,"props":2568,"children":2569},{"style":1193},[2570],{"type":29,"value":2571},"\"6.6.10.2\"",{"type":24,"tag":223,"props":2573,"children":2574},{"style":360},[2575],{"type":29,"value":1201},{"type":24,"tag":223,"props":2577,"children":2578},{"class":225,"line":471},[2579,2584,2588,2592],{"type":24,"tag":223,"props":2580,"children":2581},{"style":1183},[2582],{"type":29,"value":2583},"    \"shopware/elasticsearch\"",{"type":24,"tag":223,"props":2585,"children":2586},{"style":360},[2587],{"type":29,"value":432},{"type":24,"tag":223,"props":2589,"children":2590},{"style":1193},[2591],{"type":29,"value":2550},{"type":24,"tag":223,"props":2593,"children":2594},{"style":360},[2595],{"type":29,"value":1201},{"type":24,"tag":223,"props":2597,"children":2598},{"class":225,"line":485},[2599,2604,2608,2612],{"type":24,"tag":223,"props":2600,"children":2601},{"style":1183},[2602],{"type":29,"value":2603},"    \"shopware/storefront\"",{"type":24,"tag":223,"props":2605,"children":2606},{"style":360},[2607],{"type":29,"value":432},{"type":24,"tag":223,"props":2609,"children":2610},{"style":1193},[2611],{"type":29,"value":2550},{"type":24,"tag":223,"props":2613,"children":2614},{"style":360},[2615],{"type":29,"value":1201},{"type":24,"tag":223,"props":2617,"children":2618},{"class":225,"line":498},[2619,2624,2628],{"type":24,"tag":223,"props":2620,"children":2621},{"style":1183},[2622],{"type":29,"value":2623},"    \"symfony/flex\"",{"type":24,"tag":223,"props":2625,"children":2626},{"style":360},[2627],{"type":29,"value":432},{"type":24,"tag":223,"props":2629,"children":2630},{"style":1193},[2631],{"type":29,"value":2632},"\"~2\"\n",{"type":24,"tag":223,"props":2634,"children":2635},{"class":225,"line":511},[2636],{"type":24,"tag":223,"props":2637,"children":2638},{"style":360},[2639],{"type":29,"value":2640},"  },\n",{"type":24,"tag":223,"props":2642,"children":2643},{"class":225,"line":524},[2644,2649],{"type":24,"tag":223,"props":2645,"children":2646},{"style":1183},[2647],{"type":29,"value":2648},"  \"repositories\"",{"type":24,"tag":223,"props":2650,"children":2651},{"style":360},[2652],{"type":29,"value":1214},{"type":24,"tag":223,"props":2654,"children":2655},{"class":225,"line":537},[2656],{"type":24,"tag":223,"props":2657,"children":2658},{"style":360},[2659],{"type":29,"value":1954},{"type":24,"tag":223,"props":2661,"children":2662},{"class":225,"line":550},[2663,2668,2672,2677],{"type":24,"tag":223,"props":2664,"children":2665},{"style":1183},[2666],{"type":29,"value":2667},"      \"type\"",{"type":24,"tag":223,"props":2669,"children":2670},{"style":360},[2671],{"type":29,"value":432},{"type":24,"tag":223,"props":2673,"children":2674},{"style":1193},[2675],{"type":29,"value":2676},"\"path\"",{"type":24,"tag":223,"props":2678,"children":2679},{"style":360},[2680],{"type":29,"value":1201},{"type":24,"tag":223,"props":2682,"children":2683},{"class":225,"line":563},[2684,2689,2693,2698],{"type":24,"tag":223,"props":2685,"children":2686},{"style":1183},[2687],{"type":29,"value":2688},"      \"url\"",{"type":24,"tag":223,"props":2690,"children":2691},{"style":360},[2692],{"type":29,"value":432},{"type":24,"tag":223,"props":2694,"children":2695},{"style":1193},[2696],{"type":29,"value":2697},"\"custom/plugins/*\"",{"type":24,"tag":223,"props":2699,"children":2700},{"style":360},[2701],{"type":29,"value":1201},{"type":24,"tag":223,"props":2703,"children":2704},{"class":225,"line":576},[2705,2710],{"type":24,"tag":223,"props":2706,"children":2707},{"style":1183},[2708],{"type":29,"value":2709},"      \"options\"",{"type":24,"tag":223,"props":2711,"children":2712},{"style":360},[2713],{"type":29,"value":2491},{"type":24,"tag":223,"props":2715,"children":2716},{"class":225,"line":589},[2717,2722,2726],{"type":24,"tag":223,"props":2718,"children":2719},{"style":1183},[2720],{"type":29,"value":2721},"        \"symlink\"",{"type":24,"tag":223,"props":2723,"children":2724},{"style":360},[2725],{"type":29,"value":432},{"type":24,"tag":223,"props":2727,"children":2728},{"style":716},[2729],{"type":29,"value":1552},{"type":24,"tag":223,"props":2731,"children":2732},{"class":225,"line":602},[2733],{"type":24,"tag":223,"props":2734,"children":2735},{"style":360},[2736],{"type":29,"value":2737},"      }\n",{"type":24,"tag":223,"props":2739,"children":2740},{"class":225,"line":615},[2741],{"type":24,"tag":223,"props":2742,"children":2743},{"style":360},[2744],{"type":29,"value":2745},"    },\n",{"type":24,"tag":223,"props":2747,"children":2748},{"class":225,"line":667},[2749],{"type":24,"tag":223,"props":2750,"children":2751},{"style":360},[2752],{"type":29,"value":1954},{"type":24,"tag":223,"props":2754,"children":2755},{"class":225,"line":685},[2756,2760,2764,2768],{"type":24,"tag":223,"props":2757,"children":2758},{"style":1183},[2759],{"type":29,"value":2667},{"type":24,"tag":223,"props":2761,"children":2762},{"style":360},[2763],{"type":29,"value":432},{"type":24,"tag":223,"props":2765,"children":2766},{"style":1193},[2767],{"type":29,"value":2676},{"type":24,"tag":223,"props":2769,"children":2770},{"style":360},[2771],{"type":29,"value":1201},{"type":24,"tag":223,"props":2773,"children":2774},{"class":225,"line":703},[2775,2779,2783,2788],{"type":24,"tag":223,"props":2776,"children":2777},{"style":1183},[2778],{"type":29,"value":2688},{"type":24,"tag":223,"props":2780,"children":2781},{"style":360},[2782],{"type":29,"value":432},{"type":24,"tag":223,"props":2784,"children":2785},{"style":1193},[2786],{"type":29,"value":2787},"\"custom/plugins/*/packages/*\"",{"type":24,"tag":223,"props":2789,"children":2790},{"style":360},[2791],{"type":29,"value":1201},{"type":24,"tag":223,"props":2793,"children":2794},{"class":225,"line":722},[2795,2799],{"type":24,"tag":223,"props":2796,"children":2797},{"style":1183},[2798],{"type":29,"value":2709},{"type":24,"tag":223,"props":2800,"children":2801},{"style":360},[2802],{"type":29,"value":2491},{"type":24,"tag":223,"props":2804,"children":2805},{"class":225,"line":730},[2806,2810,2814],{"type":24,"tag":223,"props":2807,"children":2808},{"style":1183},[2809],{"type":29,"value":2721},{"type":24,"tag":223,"props":2811,"children":2812},{"style":360},[2813],{"type":29,"value":432},{"type":24,"tag":223,"props":2815,"children":2816},{"style":716},[2817],{"type":29,"value":1552},{"type":24,"tag":223,"props":2819,"children":2820},{"class":225,"line":742},[2821],{"type":24,"tag":223,"props":2822,"children":2823},{"style":360},[2824],{"type":29,"value":2737},{"type":24,"tag":223,"props":2826,"children":2827},{"class":225,"line":759},[2828],{"type":24,"tag":223,"props":2829,"children":2830},{"style":360},[2831],{"type":29,"value":2745},{"type":24,"tag":223,"props":2833,"children":2834},{"class":225,"line":775},[2835],{"type":24,"tag":223,"props":2836,"children":2837},{"style":360},[2838],{"type":29,"value":1954},{"type":24,"tag":223,"props":2840,"children":2841},{"class":225,"line":788},[2842,2846,2850,2854],{"type":24,"tag":223,"props":2843,"children":2844},{"style":1183},[2845],{"type":29,"value":2667},{"type":24,"tag":223,"props":2847,"children":2848},{"style":360},[2849],{"type":29,"value":432},{"type":24,"tag":223,"props":2851,"children":2852},{"style":1193},[2853],{"type":29,"value":2676},{"type":24,"tag":223,"props":2855,"children":2856},{"style":360},[2857],{"type":29,"value":1201},{"type":24,"tag":223,"props":2859,"children":2860},{"class":225,"line":801},[2861,2865,2869,2874],{"type":24,"tag":223,"props":2862,"children":2863},{"style":1183},[2864],{"type":29,"value":2688},{"type":24,"tag":223,"props":2866,"children":2867},{"style":360},[2868],{"type":29,"value":432},{"type":24,"tag":223,"props":2870,"children":2871},{"style":1193},[2872],{"type":29,"value":2873},"\"custom/static-plugins/*\"",{"type":24,"tag":223,"props":2875,"children":2876},{"style":360},[2877],{"type":29,"value":1201},{"type":24,"tag":223,"props":2879,"children":2880},{"class":225,"line":819},[2881,2885],{"type":24,"tag":223,"props":2882,"children":2883},{"style":1183},[2884],{"type":29,"value":2709},{"type":24,"tag":223,"props":2886,"children":2887},{"style":360},[2888],{"type":29,"value":2491},{"type":24,"tag":223,"props":2890,"children":2891},{"class":225,"line":831},[2892,2896,2900],{"type":24,"tag":223,"props":2893,"children":2894},{"style":1183},[2895],{"type":29,"value":2721},{"type":24,"tag":223,"props":2897,"children":2898},{"style":360},[2899],{"type":29,"value":432},{"type":24,"tag":223,"props":2901,"children":2902},{"style":716},[2903],{"type":29,"value":1552},{"type":24,"tag":223,"props":2905,"children":2906},{"class":225,"line":844},[2907],{"type":24,"tag":223,"props":2908,"children":2909},{"style":360},[2910],{"type":29,"value":2737},{"type":24,"tag":223,"props":2912,"children":2913},{"class":225,"line":856},[2914],{"type":24,"tag":223,"props":2915,"children":2916},{"style":360},[2917],{"type":29,"value":2745},{"type":24,"tag":223,"props":2919,"children":2921},{"class":2920,"line":869},[225,1497],[2922],{"type":24,"tag":223,"props":2923,"children":2924},{"style":360},[2925],{"type":29,"value":1954},{"type":24,"tag":223,"props":2927,"children":2929},{"class":2928,"line":882},[225,1497],[2930,2934,2938,2943],{"type":24,"tag":223,"props":2931,"children":2932},{"style":1183},[2933],{"type":29,"value":2667},{"type":24,"tag":223,"props":2935,"children":2936},{"style":360},[2937],{"type":29,"value":432},{"type":24,"tag":223,"props":2939,"children":2940},{"style":1193},[2941],{"type":29,"value":2942},"\"git\"",{"type":24,"tag":223,"props":2944,"children":2945},{"style":360},[2946],{"type":29,"value":1201},{"type":24,"tag":223,"props":2948,"children":2950},{"class":2949,"line":895},[225,1497],[2951,2955,2959],{"type":24,"tag":223,"props":2952,"children":2953},{"style":1183},[2954],{"type":29,"value":2688},{"type":24,"tag":223,"props":2956,"children":2957},{"style":360},[2958],{"type":29,"value":432},{"type":24,"tag":223,"props":2960,"children":2961},{"style":1193},[2962],{"type":29,"value":2963},"\"https://\u003CDOMAIN-NAME>/\u003Cgroup>/\u003Crepo>.git\"\n",{"type":24,"tag":223,"props":2965,"children":2967},{"class":2966,"line":2404},[225,1497],[2968],{"type":24,"tag":223,"props":2969,"children":2970},{"style":360},[2971],{"type":29,"value":2197},{"type":24,"tag":223,"props":2973,"children":2975},{"class":225,"line":2974},40,[2976],{"type":24,"tag":223,"props":2977,"children":2978},{"style":360},[2979],{"type":29,"value":1512},{"type":24,"tag":223,"props":2981,"children":2983},{"class":225,"line":2982},41,[2984,2989],{"type":24,"tag":223,"props":2985,"children":2986},{"style":1183},[2987],{"type":29,"value":2988},"  \"autoload\"",{"type":24,"tag":223,"props":2990,"children":2991},{"style":360},[2992],{"type":29,"value":2491},{"type":24,"tag":223,"props":2994,"children":2996},{"class":225,"line":2995},42,[2997,3002],{"type":24,"tag":223,"props":2998,"children":2999},{"style":1183},[3000],{"type":29,"value":3001},"    \"psr-4\"",{"type":24,"tag":223,"props":3003,"children":3004},{"style":360},[3005],{"type":29,"value":2491},{"type":24,"tag":223,"props":3007,"children":3009},{"class":225,"line":3008},43,[3010,3015,3020,3025,3029],{"type":24,"tag":223,"props":3011,"children":3012},{"style":1183},[3013],{"type":29,"value":3014},"      \"App",{"type":24,"tag":223,"props":3016,"children":3018},{"style":3017},"--shiki-default:#79B8FF;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#AE81FF;--shiki-sepia-font-style:italic",[3019],{"type":29,"value":2109},{"type":24,"tag":223,"props":3021,"children":3022},{"style":1183},[3023],{"type":29,"value":3024},"\"",{"type":24,"tag":223,"props":3026,"children":3027},{"style":360},[3028],{"type":29,"value":432},{"type":24,"tag":223,"props":3030,"children":3031},{"style":1193},[3032],{"type":29,"value":3033},"\"src/\"\n",{"type":24,"tag":223,"props":3035,"children":3037},{"class":225,"line":3036},44,[3038],{"type":24,"tag":223,"props":3039,"children":3040},{"style":360},[3041],{"type":29,"value":2197},{"type":24,"tag":223,"props":3043,"children":3045},{"class":225,"line":3044},45,[3046],{"type":24,"tag":223,"props":3047,"children":3048},{"style":360},[3049],{"type":29,"value":2640},{"type":24,"tag":223,"props":3051,"children":3053},{"class":225,"line":3052},46,[3054,3059,3063,3068],{"type":24,"tag":223,"props":3055,"children":3056},{"style":1183},[3057],{"type":29,"value":3058},"  \"prefer-stable\"",{"type":24,"tag":223,"props":3060,"children":3061},{"style":360},[3062],{"type":29,"value":432},{"type":24,"tag":223,"props":3064,"children":3065},{"style":716},[3066],{"type":29,"value":3067},"true",{"type":24,"tag":223,"props":3069,"children":3070},{"style":360},[3071],{"type":29,"value":1201},{"type":24,"tag":223,"props":3073,"children":3075},{"class":225,"line":3074},47,[3076,3081],{"type":24,"tag":223,"props":3077,"children":3078},{"style":1183},[3079],{"type":29,"value":3080},"  \"config\"",{"type":24,"tag":223,"props":3082,"children":3083},{"style":360},[3084],{"type":29,"value":2491},{"type":24,"tag":223,"props":3086,"children":3088},{"class":225,"line":3087},48,[3089,3094],{"type":24,"tag":223,"props":3090,"children":3091},{"style":1183},[3092],{"type":29,"value":3093},"    \"allow-plugins\"",{"type":24,"tag":223,"props":3095,"children":3096},{"style":360},[3097],{"type":29,"value":2491},{"type":24,"tag":223,"props":3099,"children":3101},{"class":225,"line":3100},49,[3102,3107,3111,3115],{"type":24,"tag":223,"props":3103,"children":3104},{"style":1183},[3105],{"type":29,"value":3106},"      \"symfony/flex\"",{"type":24,"tag":223,"props":3108,"children":3109},{"style":360},[3110],{"type":29,"value":432},{"type":24,"tag":223,"props":3112,"children":3113},{"style":716},[3114],{"type":29,"value":3067},{"type":24,"tag":223,"props":3116,"children":3117},{"style":360},[3118],{"type":29,"value":1201},{"type":24,"tag":223,"props":3120,"children":3122},{"class":225,"line":3121},50,[3123,3128,3132],{"type":24,"tag":223,"props":3124,"children":3125},{"style":1183},[3126],{"type":29,"value":3127},"      \"symfony/runtime\"",{"type":24,"tag":223,"props":3129,"children":3130},{"style":360},[3131],{"type":29,"value":432},{"type":24,"tag":223,"props":3133,"children":3134},{"style":716},[3135],{"type":29,"value":1552},{"type":24,"tag":223,"props":3137,"children":3139},{"class":225,"line":3138},51,[3140],{"type":24,"tag":223,"props":3141,"children":3142},{"style":360},[3143],{"type":29,"value":2745},{"type":24,"tag":223,"props":3145,"children":3147},{"class":225,"line":3146},52,[3148,3153,3157,3161],{"type":24,"tag":223,"props":3149,"children":3150},{"style":1183},[3151],{"type":29,"value":3152},"    \"optimize-autoloader\"",{"type":24,"tag":223,"props":3154,"children":3155},{"style":360},[3156],{"type":29,"value":432},{"type":24,"tag":223,"props":3158,"children":3159},{"style":716},[3160],{"type":29,"value":3067},{"type":24,"tag":223,"props":3162,"children":3163},{"style":360},[3164],{"type":29,"value":1201},{"type":24,"tag":223,"props":3166,"children":3168},{"class":225,"line":3167},53,[3169,3174,3178],{"type":24,"tag":223,"props":3170,"children":3171},{"style":1183},[3172],{"type":29,"value":3173},"    \"sort-packages\"",{"type":24,"tag":223,"props":3175,"children":3176},{"style":360},[3177],{"type":29,"value":432},{"type":24,"tag":223,"props":3179,"children":3180},{"style":716},[3181],{"type":29,"value":1552},{"type":24,"tag":223,"props":3183,"children":3185},{"class":225,"line":3184},54,[3186],{"type":24,"tag":223,"props":3187,"children":3188},{"style":360},[3189],{"type":29,"value":2640},{"type":24,"tag":223,"props":3191,"children":3193},{"class":225,"line":3192},55,[3194,3199],{"type":24,"tag":223,"props":3195,"children":3196},{"style":1183},[3197],{"type":29,"value":3198},"  \"scripts\"",{"type":24,"tag":223,"props":3200,"children":3201},{"style":360},[3202],{"type":29,"value":2491},{"type":24,"tag":223,"props":3204,"children":3206},{"class":225,"line":3205},56,[3207,3212],{"type":24,"tag":223,"props":3208,"children":3209},{"style":1183},[3210],{"type":29,"value":3211},"    \"auto-scripts\"",{"type":24,"tag":223,"props":3213,"children":3214},{"style":360},[3215],{"type":29,"value":2491},{"type":24,"tag":223,"props":3217,"children":3219},{"class":225,"line":3218},57,[3220,3225,3229],{"type":24,"tag":223,"props":3221,"children":3222},{"style":1183},[3223],{"type":29,"value":3224},"      \"assets:install\"",{"type":24,"tag":223,"props":3226,"children":3227},{"style":360},[3228],{"type":29,"value":432},{"type":24,"tag":223,"props":3230,"children":3231},{"style":1193},[3232],{"type":29,"value":3233},"\"symfony-cmd\"\n",{"type":24,"tag":223,"props":3235,"children":3237},{"class":225,"line":3236},58,[3238],{"type":24,"tag":223,"props":3239,"children":3240},{"style":360},[3241],{"type":29,"value":2745},{"type":24,"tag":223,"props":3243,"children":3245},{"class":225,"line":3244},59,[3246,3251],{"type":24,"tag":223,"props":3247,"children":3248},{"style":1183},[3249],{"type":29,"value":3250},"    \"post-install-cmd\"",{"type":24,"tag":223,"props":3252,"children":3253},{"style":360},[3254],{"type":29,"value":1214},{"type":24,"tag":223,"props":3256,"children":3258},{"class":225,"line":3257},60,[3259],{"type":24,"tag":223,"props":3260,"children":3261},{"style":1193},[3262],{"type":29,"value":3263},"      \"@auto-scripts\"\n",{"type":24,"tag":223,"props":3265,"children":3267},{"class":225,"line":3266},61,[3268],{"type":24,"tag":223,"props":3269,"children":3270},{"style":360},[3271],{"type":29,"value":3272},"    ],\n",{"type":24,"tag":223,"props":3274,"children":3276},{"class":225,"line":3275},62,[3277,3282],{"type":24,"tag":223,"props":3278,"children":3279},{"style":1183},[3280],{"type":29,"value":3281},"    \"post-update-cmd\"",{"type":24,"tag":223,"props":3283,"children":3284},{"style":360},[3285],{"type":29,"value":1214},{"type":24,"tag":223,"props":3287,"children":3289},{"class":225,"line":3288},63,[3290],{"type":24,"tag":223,"props":3291,"children":3292},{"style":1193},[3293],{"type":29,"value":3263},{"type":24,"tag":223,"props":3295,"children":3297},{"class":225,"line":3296},64,[3298],{"type":24,"tag":223,"props":3299,"children":3300},{"style":360},[3301],{"type":29,"value":3302},"    ]\n",{"type":24,"tag":223,"props":3304,"children":3306},{"class":225,"line":3305},65,[3307],{"type":24,"tag":223,"props":3308,"children":3309},{"style":360},[3310],{"type":29,"value":2640},{"type":24,"tag":223,"props":3312,"children":3314},{"class":225,"line":3313},66,[3315,3320],{"type":24,"tag":223,"props":3316,"children":3317},{"style":1183},[3318],{"type":29,"value":3319},"  \"extra\"",{"type":24,"tag":223,"props":3321,"children":3322},{"style":360},[3323],{"type":29,"value":2491},{"type":24,"tag":223,"props":3325,"children":3327},{"class":225,"line":3326},67,[3328,3333],{"type":24,"tag":223,"props":3329,"children":3330},{"style":1183},[3331],{"type":29,"value":3332},"    \"symfony\"",{"type":24,"tag":223,"props":3334,"children":3335},{"style":360},[3336],{"type":29,"value":2491},{"type":24,"tag":223,"props":3338,"children":3340},{"class":225,"line":3339},68,[3341,3346,3350,3354],{"type":24,"tag":223,"props":3342,"children":3343},{"style":1183},[3344],{"type":29,"value":3345},"      \"allow-contrib\"",{"type":24,"tag":223,"props":3347,"children":3348},{"style":360},[3349],{"type":29,"value":432},{"type":24,"tag":223,"props":3351,"children":3352},{"style":716},[3353],{"type":29,"value":3067},{"type":24,"tag":223,"props":3355,"children":3356},{"style":360},[3357],{"type":29,"value":1201},{"type":24,"tag":223,"props":3359,"children":3361},{"class":225,"line":3360},69,[3362,3367],{"type":24,"tag":223,"props":3363,"children":3364},{"style":1183},[3365],{"type":29,"value":3366},"      \"endpoint\"",{"type":24,"tag":223,"props":3368,"children":3369},{"style":360},[3370],{"type":29,"value":1214},{"type":24,"tag":223,"props":3372,"children":3374},{"class":225,"line":3373},70,[3375,3380],{"type":24,"tag":223,"props":3376,"children":3377},{"style":1193},[3378],{"type":29,"value":3379},"        \"https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json\"",{"type":24,"tag":223,"props":3381,"children":3382},{"style":360},[3383],{"type":29,"value":1201},{"type":24,"tag":223,"props":3385,"children":3387},{"class":225,"line":3386},71,[3388],{"type":24,"tag":223,"props":3389,"children":3390},{"style":1193},[3391],{"type":29,"value":3392},"        \"flex://defaults\"\n",{"type":24,"tag":223,"props":3394,"children":3396},{"class":225,"line":3395},72,[3397],{"type":24,"tag":223,"props":3398,"children":3399},{"style":360},[3400],{"type":29,"value":3401},"      ]\n",{"type":24,"tag":223,"props":3403,"children":3405},{"class":225,"line":3404},73,[3406],{"type":24,"tag":223,"props":3407,"children":3408},{"style":360},[3409],{"type":29,"value":2197},{"type":24,"tag":223,"props":3411,"children":3413},{"class":225,"line":3412},74,[3414],{"type":24,"tag":223,"props":3415,"children":3416},{"style":360},[3417],{"type":29,"value":3418},"  }\n",{"type":24,"tag":223,"props":3420,"children":3422},{"class":225,"line":3421},75,[3423],{"type":24,"tag":223,"props":3424,"children":3425},{"style":360},[3426],{"type":29,"value":1238},{"type":24,"tag":25,"props":3428,"children":3429},{},[3430],{"type":29,"value":3431},"und installieren es mit",{"type":24,"tag":213,"props":3433,"children":3435},{"className":215,"code":3434,"language":217,"meta":7,"style":7},"composer req acme/sample-plugin\n",[3436],{"type":24,"tag":134,"props":3437,"children":3438},{"__ignoreMap":7},[3439],{"type":24,"tag":223,"props":3440,"children":3441},{"class":225,"line":226},[3442,3446,3451],{"type":24,"tag":223,"props":3443,"children":3444},{"style":240},[3445],{"type":29,"value":2396},{"type":24,"tag":223,"props":3447,"children":3448},{"style":261},[3449],{"type":29,"value":3450}," req",{"type":24,"tag":223,"props":3452,"children":3453},{"style":261},[3454],{"type":29,"value":3455}," acme/sample-plugin\n",{"type":24,"tag":3457,"props":3458,"children":3460},"v-alert",{"type":3459},"error",[3461],{"type":24,"tag":25,"props":3462,"children":3463},{},[3464],{"type":29,"value":3465},"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":24,"tag":3467,"props":3468,"children":3469},"br",{},[],{"type":24,"tag":25,"props":3471,"children":3472},{},[3473,3475,3481],{"type":29,"value":3474},"Ja... das ist der Nachteil. Wir müssen ",{"type":24,"tag":134,"props":3476,"children":3478},{"className":3477},[],[3479],{"type":29,"value":3480},"dev-master",{"type":29,"value":3482}," als Version verwenden",{"type":24,"tag":213,"props":3484,"children":3486},{"className":215,"code":3485,"language":217,"meta":7,"style":7},"composer req acme/sample-plugin:dev-master\n",[3487],{"type":24,"tag":134,"props":3488,"children":3489},{"__ignoreMap":7},[3490],{"type":24,"tag":223,"props":3491,"children":3492},{"class":225,"line":226},[3493,3497,3501],{"type":24,"tag":223,"props":3494,"children":3495},{"style":240},[3496],{"type":29,"value":2396},{"type":24,"tag":223,"props":3498,"children":3499},{"style":261},[3500],{"type":29,"value":3450},{"type":24,"tag":223,"props":3502,"children":3503},{"style":261},[3504],{"type":29,"value":3505}," acme/sample-plugin:dev-master\n",{"type":24,"tag":213,"props":3507,"children":3511},{"className":3508,"code":3509,"language":3510,"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",[3512],{"type":24,"tag":134,"props":3513,"children":3514},{"__ignoreMap":7},[3515,3523,3531,3539,3547,3555,3563,3571,3579,3587,3595,3603,3611,3618,3626,3633],{"type":24,"tag":223,"props":3516,"children":3517},{"class":225,"line":226},[3518],{"type":24,"tag":223,"props":3519,"children":3520},{},[3521],{"type":29,"value":3522},"./composer.json has been updated\n",{"type":24,"tag":223,"props":3524,"children":3525},{"class":225,"line":236},[3526],{"type":24,"tag":223,"props":3527,"children":3528},{},[3529],{"type":29,"value":3530},"Running composer update acme/sample-plugin\n",{"type":24,"tag":223,"props":3532,"children":3533},{"class":225,"line":252},[3534],{"type":24,"tag":223,"props":3535,"children":3536},{},[3537],{"type":29,"value":3538},"Loading composer repositories with package information                                                                \n",{"type":24,"tag":223,"props":3540,"children":3541},{"class":225,"line":272},[3542],{"type":24,"tag":223,"props":3543,"children":3544},{},[3545],{"type":29,"value":3546},"Updating dependencies                                 \n",{"type":24,"tag":223,"props":3548,"children":3549},{"class":225,"line":285},[3550],{"type":24,"tag":223,"props":3551,"children":3552},{},[3553],{"type":29,"value":3554},"Lock file operations: 1 install, 0 updates, 0 removals\n",{"type":24,"tag":223,"props":3556,"children":3557},{"class":225,"line":309},[3558],{"type":24,"tag":223,"props":3559,"children":3560},{},[3561],{"type":29,"value":3562},"  - Locking acme/sample-plugin (dev-master 294414d)\n",{"type":24,"tag":223,"props":3564,"children":3565},{"class":225,"line":323},[3566],{"type":24,"tag":223,"props":3567,"children":3568},{},[3569],{"type":29,"value":3570},"Writing lock file\n",{"type":24,"tag":223,"props":3572,"children":3573},{"class":225,"line":440},[3574],{"type":24,"tag":223,"props":3575,"children":3576},{},[3577],{"type":29,"value":3578},"Installing dependencies from lock file (including require-dev)\n",{"type":24,"tag":223,"props":3580,"children":3581},{"class":225,"line":458},[3582],{"type":24,"tag":223,"props":3583,"children":3584},{},[3585],{"type":29,"value":3586},"Package operations: 1 install, 0 updates, 0 removals\n",{"type":24,"tag":223,"props":3588,"children":3589},{"class":225,"line":471},[3590],{"type":24,"tag":223,"props":3591,"children":3592},{},[3593],{"type":29,"value":3594},"  - Syncing acme/sample-plugin (dev-master 294414d) into cache\n",{"type":24,"tag":223,"props":3596,"children":3597},{"class":225,"line":485},[3598],{"type":24,"tag":223,"props":3599,"children":3600},{},[3601],{"type":29,"value":3602},"  - Installing acme/sample-plugin (dev-master 294414d): Cloning 294414deb2 from cache\n",{"type":24,"tag":223,"props":3604,"children":3605},{"class":225,"line":498},[3606],{"type":24,"tag":223,"props":3607,"children":3608},{},[3609],{"type":29,"value":3610},"Generating optimized autoload files\n",{"type":24,"tag":223,"props":3612,"children":3613},{"class":225,"line":511},[3614],{"type":24,"tag":223,"props":3615,"children":3616},{"emptyLinePlaceholder":393},[3617],{"type":29,"value":396},{"type":24,"tag":223,"props":3619,"children":3620},{"class":225,"line":524},[3621],{"type":24,"tag":223,"props":3622,"children":3623},{},[3624],{"type":29,"value":3625},"Run composer recipes at any time to see the status of your Symfony recipes.\n",{"type":24,"tag":223,"props":3627,"children":3628},{"class":225,"line":537},[3629],{"type":24,"tag":223,"props":3630,"children":3631},{"emptyLinePlaceholder":393},[3632],{"type":29,"value":396},{"type":24,"tag":223,"props":3634,"children":3635},{"class":225,"line":550},[3636],{"type":24,"tag":223,"props":3637,"children":3638},{},[3639],{"type":29,"value":3640},"Executing script assets:install [OK]\n",{"type":24,"tag":25,"props":3642,"children":3643},{},[3644,3646,3652],{"type":29,"value":3645},"Composer wird ",{"type":24,"tag":134,"props":3647,"children":3649},{"className":3648},[],[3650],{"type":29,"value":3651},"git",{"type":29,"value":3653}," verwenden, um unser Repository zu klonen, und den Standard-Branch sowie den Commit-Hash verwenden, um den Release zu verfolgen.",{"type":24,"tag":25,"props":3655,"children":3656},{},[3657],{"type":29,"value":3658},"Das funktioniert, aber wir können es besser machen.",{"type":24,"tag":2380,"props":3660,"children":3662},{"id":3661},"git-tags",[3663],{"type":29,"value":3664},"Git Tags",{"type":24,"tag":25,"props":3666,"children":3667},{},[3668,3670,3676],{"type":29,"value":3669},"Wir taggen nun unser Plugin als ",{"type":24,"tag":134,"props":3671,"children":3673},{"className":3672},[],[3674],{"type":29,"value":3675},"v1.0.0",{"type":29,"value":178},{"type":24,"tag":25,"props":3678,"children":3679},{},[3680,3682,3688,3690,3696],{"type":29,"value":3681},"Bitte beachten, dass Sie die ",{"type":24,"tag":134,"props":3683,"children":3685},{"className":3684},[],[3686],{"type":29,"value":3687},"version",{"type":29,"value":3689}," in der ",{"type":24,"tag":134,"props":3691,"children":3693},{"className":3692},[],[3694],{"type":29,"value":3695},"composer.json",{"type":29,"value":3697}," gesetzt ist.",{"type":24,"tag":213,"props":3699,"children":3703},{"className":1162,"code":3700,"filename":3701,"highlights":3702,"language":1165,"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",[285],[3704],{"type":24,"tag":134,"props":3705,"children":3706},{"__ignoreMap":7},[3707,3714,3735,3755,3776,3798,3818,3830,3846,3853,3865,3895,3907,3928,3945,3953,3960,3972,3984,4008,4015,4022,4034,4045,4078,4085,4092],{"type":24,"tag":223,"props":3708,"children":3709},{"class":225,"line":226},[3710],{"type":24,"tag":223,"props":3711,"children":3712},{"style":360},[3713],{"type":29,"value":1177},{"type":24,"tag":223,"props":3715,"children":3716},{"class":225,"line":236},[3717,3722,3726,3731],{"type":24,"tag":223,"props":3718,"children":3719},{"style":1183},[3720],{"type":29,"value":3721},"    \"name\"",{"type":24,"tag":223,"props":3723,"children":3724},{"style":360},[3725],{"type":29,"value":432},{"type":24,"tag":223,"props":3727,"children":3728},{"style":1193},[3729],{"type":29,"value":3730},"\"acme/sample-plugin\"",{"type":24,"tag":223,"props":3732,"children":3733},{"style":360},[3734],{"type":29,"value":1201},{"type":24,"tag":223,"props":3736,"children":3737},{"class":225,"line":252},[3738,3743,3747,3751],{"type":24,"tag":223,"props":3739,"children":3740},{"style":1183},[3741],{"type":29,"value":3742},"    \"description\"",{"type":24,"tag":223,"props":3744,"children":3745},{"style":360},[3746],{"type":29,"value":432},{"type":24,"tag":223,"props":3748,"children":3749},{"style":1193},[3750],{"type":29,"value":3730},{"type":24,"tag":223,"props":3752,"children":3753},{"style":360},[3754],{"type":29,"value":1201},{"type":24,"tag":223,"props":3756,"children":3757},{"class":225,"line":272},[3758,3763,3767,3772],{"type":24,"tag":223,"props":3759,"children":3760},{"style":1183},[3761],{"type":29,"value":3762},"    \"type\"",{"type":24,"tag":223,"props":3764,"children":3765},{"style":360},[3766],{"type":29,"value":432},{"type":24,"tag":223,"props":3768,"children":3769},{"style":1193},[3770],{"type":29,"value":3771},"\"shopware-platform-plugin\"",{"type":24,"tag":223,"props":3773,"children":3774},{"style":360},[3775],{"type":29,"value":1201},{"type":24,"tag":223,"props":3777,"children":3779},{"class":3778,"line":285},[225,1497],[3780,3785,3789,3794],{"type":24,"tag":223,"props":3781,"children":3782},{"style":1183},[3783],{"type":29,"value":3784},"    \"version\"",{"type":24,"tag":223,"props":3786,"children":3787},{"style":360},[3788],{"type":29,"value":432},{"type":24,"tag":223,"props":3790,"children":3791},{"style":1193},[3792],{"type":29,"value":3793},"\"1.0.0\"",{"type":24,"tag":223,"props":3795,"children":3796},{"style":360},[3797],{"type":29,"value":1201},{"type":24,"tag":223,"props":3799,"children":3800},{"class":225,"line":309},[3801,3806,3810,3814],{"type":24,"tag":223,"props":3802,"children":3803},{"style":1183},[3804],{"type":29,"value":3805},"    \"license\"",{"type":24,"tag":223,"props":3807,"children":3808},{"style":360},[3809],{"type":29,"value":432},{"type":24,"tag":223,"props":3811,"children":3812},{"style":1193},[3813],{"type":29,"value":2453},{"type":24,"tag":223,"props":3815,"children":3816},{"style":360},[3817],{"type":29,"value":1201},{"type":24,"tag":223,"props":3819,"children":3820},{"class":225,"line":323},[3821,3826],{"type":24,"tag":223,"props":3822,"children":3823},{"style":1183},[3824],{"type":29,"value":3825},"    \"require\"",{"type":24,"tag":223,"props":3827,"children":3828},{"style":360},[3829],{"type":29,"value":2491},{"type":24,"tag":223,"props":3831,"children":3832},{"class":225,"line":440},[3833,3837,3841],{"type":24,"tag":223,"props":3834,"children":3835},{"style":1183},[3836],{"type":29,"value":2023},{"type":24,"tag":223,"props":3838,"children":3839},{"style":360},[3840],{"type":29,"value":432},{"type":24,"tag":223,"props":3842,"children":3843},{"style":1193},[3844],{"type":29,"value":3845},"\"~6.6.0\"\n",{"type":24,"tag":223,"props":3847,"children":3848},{"class":225,"line":458},[3849],{"type":24,"tag":223,"props":3850,"children":3851},{"style":360},[3852],{"type":29,"value":2745},{"type":24,"tag":223,"props":3854,"children":3855},{"class":225,"line":471},[3856,3861],{"type":24,"tag":223,"props":3857,"children":3858},{"style":1183},[3859],{"type":29,"value":3860},"    \"extra\"",{"type":24,"tag":223,"props":3862,"children":3863},{"style":360},[3864],{"type":29,"value":2491},{"type":24,"tag":223,"props":3866,"children":3867},{"class":225,"line":485},[3868,3873,3877,3882,3886,3891],{"type":24,"tag":223,"props":3869,"children":3870},{"style":1183},[3871],{"type":29,"value":3872},"        \"shopware-plugin-class\"",{"type":24,"tag":223,"props":3874,"children":3875},{"style":360},[3876],{"type":29,"value":432},{"type":24,"tag":223,"props":3878,"children":3879},{"style":1193},[3880],{"type":29,"value":3881},"\"Acme",{"type":24,"tag":223,"props":3883,"children":3884},{"style":716},[3885],{"type":29,"value":2109},{"type":24,"tag":223,"props":3887,"children":3888},{"style":1193},[3889],{"type":29,"value":3890},"SamplePlugin\"",{"type":24,"tag":223,"props":3892,"children":3893},{"style":360},[3894],{"type":29,"value":1201},{"type":24,"tag":223,"props":3896,"children":3897},{"class":225,"line":498},[3898,3903],{"type":24,"tag":223,"props":3899,"children":3900},{"style":1183},[3901],{"type":29,"value":3902},"        \"label\"",{"type":24,"tag":223,"props":3904,"children":3905},{"style":360},[3906],{"type":29,"value":2491},{"type":24,"tag":223,"props":3908,"children":3909},{"class":225,"line":511},[3910,3915,3919,3924],{"type":24,"tag":223,"props":3911,"children":3912},{"style":1183},[3913],{"type":29,"value":3914},"            \"de-DE\"",{"type":24,"tag":223,"props":3916,"children":3917},{"style":360},[3918],{"type":29,"value":432},{"type":24,"tag":223,"props":3920,"children":3921},{"style":1193},[3922],{"type":29,"value":3923},"\"Skeleton plugin\"",{"type":24,"tag":223,"props":3925,"children":3926},{"style":360},[3927],{"type":29,"value":1201},{"type":24,"tag":223,"props":3929,"children":3930},{"class":225,"line":524},[3931,3936,3940],{"type":24,"tag":223,"props":3932,"children":3933},{"style":1183},[3934],{"type":29,"value":3935},"            \"en-GB\"",{"type":24,"tag":223,"props":3937,"children":3938},{"style":360},[3939],{"type":29,"value":432},{"type":24,"tag":223,"props":3941,"children":3942},{"style":1193},[3943],{"type":29,"value":3944},"\"Skeleton plugin\"\n",{"type":24,"tag":223,"props":3946,"children":3947},{"class":225,"line":537},[3948],{"type":24,"tag":223,"props":3949,"children":3950},{"style":360},[3951],{"type":29,"value":3952},"        }\n",{"type":24,"tag":223,"props":3954,"children":3955},{"class":225,"line":550},[3956],{"type":24,"tag":223,"props":3957,"children":3958},{"style":360},[3959],{"type":29,"value":2745},{"type":24,"tag":223,"props":3961,"children":3962},{"class":225,"line":563},[3963,3968],{"type":24,"tag":223,"props":3964,"children":3965},{"style":1183},[3966],{"type":29,"value":3967},"    \"autoload\"",{"type":24,"tag":223,"props":3969,"children":3970},{"style":360},[3971],{"type":29,"value":2491},{"type":24,"tag":223,"props":3973,"children":3974},{"class":225,"line":576},[3975,3980],{"type":24,"tag":223,"props":3976,"children":3977},{"style":1183},[3978],{"type":29,"value":3979},"        \"psr-4\"",{"type":24,"tag":223,"props":3981,"children":3982},{"style":360},[3983],{"type":29,"value":2491},{"type":24,"tag":223,"props":3985,"children":3986},{"class":225,"line":589},[3987,3992,3996,4000,4004],{"type":24,"tag":223,"props":3988,"children":3989},{"style":1183},[3990],{"type":29,"value":3991},"            \"Acme",{"type":24,"tag":223,"props":3993,"children":3994},{"style":3017},[3995],{"type":29,"value":2109},{"type":24,"tag":223,"props":3997,"children":3998},{"style":1183},[3999],{"type":29,"value":3024},{"type":24,"tag":223,"props":4001,"children":4002},{"style":360},[4003],{"type":29,"value":432},{"type":24,"tag":223,"props":4005,"children":4006},{"style":1193},[4007],{"type":29,"value":3033},{"type":24,"tag":223,"props":4009,"children":4010},{"class":225,"line":602},[4011],{"type":24,"tag":223,"props":4012,"children":4013},{"style":360},[4014],{"type":29,"value":3952},{"type":24,"tag":223,"props":4016,"children":4017},{"class":225,"line":615},[4018],{"type":24,"tag":223,"props":4019,"children":4020},{"style":360},[4021],{"type":29,"value":2745},{"type":24,"tag":223,"props":4023,"children":4024},{"class":225,"line":667},[4025,4030],{"type":24,"tag":223,"props":4026,"children":4027},{"style":1183},[4028],{"type":29,"value":4029},"    \"autoload-dev\"",{"type":24,"tag":223,"props":4031,"children":4032},{"style":360},[4033],{"type":29,"value":2491},{"type":24,"tag":223,"props":4035,"children":4036},{"class":225,"line":685},[4037,4041],{"type":24,"tag":223,"props":4038,"children":4039},{"style":1183},[4040],{"type":29,"value":3979},{"type":24,"tag":223,"props":4042,"children":4043},{"style":360},[4044],{"type":29,"value":2491},{"type":24,"tag":223,"props":4046,"children":4047},{"class":225,"line":703},[4048,4052,4056,4061,4065,4069,4073],{"type":24,"tag":223,"props":4049,"children":4050},{"style":1183},[4051],{"type":29,"value":3991},{"type":24,"tag":223,"props":4053,"children":4054},{"style":3017},[4055],{"type":29,"value":2109},{"type":24,"tag":223,"props":4057,"children":4058},{"style":1183},[4059],{"type":29,"value":4060},"Tests",{"type":24,"tag":223,"props":4062,"children":4063},{"style":3017},[4064],{"type":29,"value":2109},{"type":24,"tag":223,"props":4066,"children":4067},{"style":1183},[4068],{"type":29,"value":3024},{"type":24,"tag":223,"props":4070,"children":4071},{"style":360},[4072],{"type":29,"value":432},{"type":24,"tag":223,"props":4074,"children":4075},{"style":1193},[4076],{"type":29,"value":4077},"\"tests/\"\n",{"type":24,"tag":223,"props":4079,"children":4080},{"class":225,"line":722},[4081],{"type":24,"tag":223,"props":4082,"children":4083},{"style":360},[4084],{"type":29,"value":3952},{"type":24,"tag":223,"props":4086,"children":4087},{"class":225,"line":730},[4088],{"type":24,"tag":223,"props":4089,"children":4090},{"style":360},[4091],{"type":29,"value":2197},{"type":24,"tag":223,"props":4093,"children":4094},{"class":225,"line":742},[4095],{"type":24,"tag":223,"props":4096,"children":4097},{"style":360},[4098],{"type":29,"value":1238},{"type":24,"tag":213,"props":4100,"children":4102},{"className":215,"code":4101,"language":217,"meta":7,"style":7},"git tag v1.0.0\ngit push --tags\n",[4103],{"type":24,"tag":134,"props":4104,"children":4105},{"__ignoreMap":7},[4106,4123],{"type":24,"tag":223,"props":4107,"children":4108},{"class":225,"line":226},[4109,4113,4118],{"type":24,"tag":223,"props":4110,"children":4111},{"style":240},[4112],{"type":29,"value":3651},{"type":24,"tag":223,"props":4114,"children":4115},{"style":261},[4116],{"type":29,"value":4117}," tag",{"type":24,"tag":223,"props":4119,"children":4120},{"style":261},[4121],{"type":29,"value":4122}," v1.0.0\n",{"type":24,"tag":223,"props":4124,"children":4125},{"class":225,"line":236},[4126,4130,4135],{"type":24,"tag":223,"props":4127,"children":4128},{"style":240},[4129],{"type":29,"value":3651},{"type":24,"tag":223,"props":4131,"children":4132},{"style":261},[4133],{"type":29,"value":4134}," push",{"type":24,"tag":223,"props":4136,"children":4137},{"style":716},[4138],{"type":29,"value":4139}," --tags\n",{"type":24,"tag":25,"props":4141,"children":4142},{},[4143],{"type":29,"value":4144},"Nun wird dies funktionieren:",{"type":24,"tag":213,"props":4146,"children":4147},{"className":215,"code":3434,"language":217,"meta":7,"style":7},[4148],{"type":24,"tag":134,"props":4149,"children":4150},{"__ignoreMap":7},[4151],{"type":24,"tag":223,"props":4152,"children":4153},{"class":225,"line":226},[4154,4158,4162],{"type":24,"tag":223,"props":4155,"children":4156},{"style":240},[4157],{"type":29,"value":2396},{"type":24,"tag":223,"props":4159,"children":4160},{"style":261},[4161],{"type":29,"value":3450},{"type":24,"tag":223,"props":4163,"children":4164},{"style":261},[4165],{"type":29,"value":3455},{"type":24,"tag":213,"props":4167,"children":4171},{"className":4168,"code":4169,"language":4170,"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",[4172],{"type":24,"tag":134,"props":4173,"children":4174},{"__ignoreMap":7},[4175,4183,4190,4198,4206,4213,4221,4228,4235,4242,4250,4258,4265,4272,4279,4286,4293,4300],{"type":24,"tag":223,"props":4176,"children":4177},{"class":225,"line":226},[4178],{"type":24,"tag":223,"props":4179,"children":4180},{},[4181],{"type":29,"value":4182},"./composer.json has been updated                                                                                                            \n",{"type":24,"tag":223,"props":4184,"children":4185},{"class":225,"line":236},[4186],{"type":24,"tag":223,"props":4187,"children":4188},{},[4189],{"type":29,"value":3530},{"type":24,"tag":223,"props":4191,"children":4192},{"class":225,"line":252},[4193],{"type":24,"tag":223,"props":4194,"children":4195},{},[4196],{"type":29,"value":4197},"Loading composer repositories with package information\n",{"type":24,"tag":223,"props":4199,"children":4200},{"class":225,"line":272},[4201],{"type":24,"tag":223,"props":4202,"children":4203},{},[4204],{"type":29,"value":4205},"Updating dependencies\n",{"type":24,"tag":223,"props":4207,"children":4208},{"class":225,"line":285},[4209],{"type":24,"tag":223,"props":4210,"children":4211},{},[4212],{"type":29,"value":3554},{"type":24,"tag":223,"props":4214,"children":4215},{"class":225,"line":309},[4216],{"type":24,"tag":223,"props":4217,"children":4218},{},[4219],{"type":29,"value":4220},"  - Locking acme/sample-plugin (1.0.0)\n",{"type":24,"tag":223,"props":4222,"children":4223},{"class":225,"line":323},[4224],{"type":24,"tag":223,"props":4225,"children":4226},{},[4227],{"type":29,"value":3570},{"type":24,"tag":223,"props":4229,"children":4230},{"class":225,"line":440},[4231],{"type":24,"tag":223,"props":4232,"children":4233},{},[4234],{"type":29,"value":3578},{"type":24,"tag":223,"props":4236,"children":4237},{"class":225,"line":458},[4238],{"type":24,"tag":223,"props":4239,"children":4240},{},[4241],{"type":29,"value":3586},{"type":24,"tag":223,"props":4243,"children":4244},{"class":225,"line":471},[4245],{"type":24,"tag":223,"props":4246,"children":4247},{},[4248],{"type":29,"value":4249},"  - Syncing acme/sample-plugin (1.0.0) into cache\n",{"type":24,"tag":223,"props":4251,"children":4252},{"class":225,"line":485},[4253],{"type":24,"tag":223,"props":4254,"children":4255},{},[4256],{"type":29,"value":4257},"  - Installing acme/sample-plugin (1.0.0): Cloning 294414deb2 from cache\n",{"type":24,"tag":223,"props":4259,"children":4260},{"class":225,"line":498},[4261],{"type":24,"tag":223,"props":4262,"children":4263},{},[4264],{"type":29,"value":3610},{"type":24,"tag":223,"props":4266,"children":4267},{"class":225,"line":511},[4268],{"type":24,"tag":223,"props":4269,"children":4270},{"emptyLinePlaceholder":393},[4271],{"type":29,"value":396},{"type":24,"tag":223,"props":4273,"children":4274},{"class":225,"line":524},[4275],{"type":24,"tag":223,"props":4276,"children":4277},{},[4278],{"type":29,"value":3625},{"type":24,"tag":223,"props":4280,"children":4281},{"class":225,"line":537},[4282],{"type":24,"tag":223,"props":4283,"children":4284},{"emptyLinePlaceholder":393},[4285],{"type":29,"value":396},{"type":24,"tag":223,"props":4287,"children":4288},{"class":225,"line":550},[4289],{"type":24,"tag":223,"props":4290,"children":4291},{},[4292],{"type":29,"value":3640},{"type":24,"tag":223,"props":4294,"children":4295},{"class":225,"line":563},[4296],{"type":24,"tag":223,"props":4297,"children":4298},{"emptyLinePlaceholder":393},[4299],{"type":29,"value":396},{"type":24,"tag":223,"props":4301,"children":4302},{"class":225,"line":576},[4303],{"type":24,"tag":223,"props":4304,"children":4305},{},[4306],{"type":29,"value":4307},"Using version ^1.0 for acme/sample-plugin\n",{"type":24,"tag":25,"props":4309,"children":4310},{},[4311,4313,4318],{"type":29,"value":4312},"Das ist besser, aber wir verwenden immer noch ",{"type":24,"tag":134,"props":4314,"children":4316},{"className":4315},[],[4317],{"type":29,"value":3651},{"type":29,"value":4319},", um das Plugin abzurufen. Wir können es noch besser machen.",{"type":24,"tag":2380,"props":4321,"children":4323},{"id":4322},"gitlab-package-registry",[4324],{"type":29,"value":4325},"GitLab Package Registry",{"type":24,"tag":25,"props":4327,"children":4328},{},[4329,4331,4336],{"type":29,"value":4330},"Hier beginnt der GitLab-Teil. Weitere Details sind in der ",{"type":24,"tag":83,"props":4332,"children":4334},{"href":4333},"https://docs.gitlab.com/18.3/user/packages/composer_repository/",[4335],{"type":29,"value":176},{"type":29,"value":4337}," zu finden.",{"type":24,"tag":25,"props":4339,"children":4340},{},[4341],{"type":29,"value":4342},"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":24,"tag":25,"props":4344,"children":4345},{},[4346,4348,4353],{"type":29,"value":4347},"Wir veröffentlichen unseren ",{"type":24,"tag":134,"props":4349,"children":4351},{"className":4350},[],[4352],{"type":29,"value":3675},{"type":29,"value":4354},"-Tag als Composer-Paket.",{"type":24,"tag":213,"props":4356,"children":4358},{"className":215,"code":4357,"language":217,"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",[4359],{"type":24,"tag":134,"props":4360,"children":4361},{"__ignoreMap":7},[4362],{"type":24,"tag":223,"props":4363,"children":4364},{"class":225,"line":226},[4365,4370,4375,4380,4385],{"type":24,"tag":223,"props":4366,"children":4367},{"style":240},[4368],{"type":29,"value":4369},"curl",{"type":24,"tag":223,"props":4371,"children":4372},{"style":716},[4373],{"type":29,"value":4374}," --fail-with-body",{"type":24,"tag":223,"props":4376,"children":4377},{"style":716},[4378],{"type":29,"value":4379}," --data",{"type":24,"tag":223,"props":4381,"children":4382},{"style":261},[4383],{"type":29,"value":4384}," tag=v1.0.0",{"type":24,"tag":223,"props":4386,"children":4387},{"style":261},[4388],{"type":29,"value":4389}," \"https://__token__:\u003Cpersonal-access-token>@\u003CDOMAIN-NAME>/api/v4/projects/\u003Cproject_id>/packages/composer\"\n",{"type":24,"tag":25,"props":4391,"children":4392},{},[4393],{"type":29,"value":4394},"Nun müssen wir die Repository-Informationen aktualisieren:",{"type":24,"tag":213,"props":4396,"children":4399},{"className":1162,"code":4397,"filename":2402,"highlights":4398,"language":1165,"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",[869,882,895,2404],[4400],{"type":24,"tag":134,"props":4401,"children":4402},{"__ignoreMap":7},[4403,4410,4429,4448,4467,4478,4497,4516,4535,4554,4573,4592,4607,4614,4625,4632,4651,4670,4681,4696,4703,4710,4717,4736,4755,4766,4781,4788,4795,4802,4821,4840,4851,4866,4873,4880,4888,4909,4926,4934,4941,4952,4963,4986,4993,5000,5019,5030,5041,5060,5075,5082,5101,5116,5123,5134,5145,5160,5167,5178,5185,5192,5203,5210,5217,5224,5235,5246,5265,5276,5287,5294,5301,5308,5315],{"type":24,"tag":223,"props":4404,"children":4405},{"class":225,"line":226},[4406],{"type":24,"tag":223,"props":4407,"children":4408},{"style":360},[4409],{"type":29,"value":1177},{"type":24,"tag":223,"props":4411,"children":4412},{"class":225,"line":236},[4413,4417,4421,4425],{"type":24,"tag":223,"props":4414,"children":4415},{"style":1183},[4416],{"type":29,"value":2423},{"type":24,"tag":223,"props":4418,"children":4419},{"style":360},[4420],{"type":29,"value":432},{"type":24,"tag":223,"props":4422,"children":4423},{"style":1193},[4424],{"type":29,"value":2432},{"type":24,"tag":223,"props":4426,"children":4427},{"style":360},[4428],{"type":29,"value":1201},{"type":24,"tag":223,"props":4430,"children":4431},{"class":225,"line":252},[4432,4436,4440,4444],{"type":24,"tag":223,"props":4433,"children":4434},{"style":1183},[4435],{"type":29,"value":2444},{"type":24,"tag":223,"props":4437,"children":4438},{"style":360},[4439],{"type":29,"value":432},{"type":24,"tag":223,"props":4441,"children":4442},{"style":1193},[4443],{"type":29,"value":2453},{"type":24,"tag":223,"props":4445,"children":4446},{"style":360},[4447],{"type":29,"value":1201},{"type":24,"tag":223,"props":4449,"children":4450},{"class":225,"line":272},[4451,4455,4459,4463],{"type":24,"tag":223,"props":4452,"children":4453},{"style":1183},[4454],{"type":29,"value":2465},{"type":24,"tag":223,"props":4456,"children":4457},{"style":360},[4458],{"type":29,"value":432},{"type":24,"tag":223,"props":4460,"children":4461},{"style":1193},[4462],{"type":29,"value":2474},{"type":24,"tag":223,"props":4464,"children":4465},{"style":360},[4466],{"type":29,"value":1201},{"type":24,"tag":223,"props":4468,"children":4469},{"class":225,"line":285},[4470,4474],{"type":24,"tag":223,"props":4471,"children":4472},{"style":1183},[4473],{"type":29,"value":2486},{"type":24,"tag":223,"props":4475,"children":4476},{"style":360},[4477],{"type":29,"value":2491},{"type":24,"tag":223,"props":4479,"children":4480},{"class":225,"line":309},[4481,4485,4489,4493],{"type":24,"tag":223,"props":4482,"children":4483},{"style":1183},[4484],{"type":29,"value":2499},{"type":24,"tag":223,"props":4486,"children":4487},{"style":360},[4488],{"type":29,"value":432},{"type":24,"tag":223,"props":4490,"children":4491},{"style":1193},[4492],{"type":29,"value":2508},{"type":24,"tag":223,"props":4494,"children":4495},{"style":360},[4496],{"type":29,"value":1201},{"type":24,"tag":223,"props":4498,"children":4499},{"class":225,"line":323},[4500,4504,4508,4512],{"type":24,"tag":223,"props":4501,"children":4502},{"style":1183},[4503],{"type":29,"value":2520},{"type":24,"tag":223,"props":4505,"children":4506},{"style":360},[4507],{"type":29,"value":432},{"type":24,"tag":223,"props":4509,"children":4510},{"style":1193},[4511],{"type":29,"value":2529},{"type":24,"tag":223,"props":4513,"children":4514},{"style":360},[4515],{"type":29,"value":1201},{"type":24,"tag":223,"props":4517,"children":4518},{"class":225,"line":440},[4519,4523,4527,4531],{"type":24,"tag":223,"props":4520,"children":4521},{"style":1183},[4522],{"type":29,"value":2541},{"type":24,"tag":223,"props":4524,"children":4525},{"style":360},[4526],{"type":29,"value":432},{"type":24,"tag":223,"props":4528,"children":4529},{"style":1193},[4530],{"type":29,"value":2550},{"type":24,"tag":223,"props":4532,"children":4533},{"style":360},[4534],{"type":29,"value":1201},{"type":24,"tag":223,"props":4536,"children":4537},{"class":225,"line":458},[4538,4542,4546,4550],{"type":24,"tag":223,"props":4539,"children":4540},{"style":1183},[4541],{"type":29,"value":2562},{"type":24,"tag":223,"props":4543,"children":4544},{"style":360},[4545],{"type":29,"value":432},{"type":24,"tag":223,"props":4547,"children":4548},{"style":1193},[4549],{"type":29,"value":2571},{"type":24,"tag":223,"props":4551,"children":4552},{"style":360},[4553],{"type":29,"value":1201},{"type":24,"tag":223,"props":4555,"children":4556},{"class":225,"line":471},[4557,4561,4565,4569],{"type":24,"tag":223,"props":4558,"children":4559},{"style":1183},[4560],{"type":29,"value":2583},{"type":24,"tag":223,"props":4562,"children":4563},{"style":360},[4564],{"type":29,"value":432},{"type":24,"tag":223,"props":4566,"children":4567},{"style":1193},[4568],{"type":29,"value":2550},{"type":24,"tag":223,"props":4570,"children":4571},{"style":360},[4572],{"type":29,"value":1201},{"type":24,"tag":223,"props":4574,"children":4575},{"class":225,"line":485},[4576,4580,4584,4588],{"type":24,"tag":223,"props":4577,"children":4578},{"style":1183},[4579],{"type":29,"value":2603},{"type":24,"tag":223,"props":4581,"children":4582},{"style":360},[4583],{"type":29,"value":432},{"type":24,"tag":223,"props":4585,"children":4586},{"style":1193},[4587],{"type":29,"value":2550},{"type":24,"tag":223,"props":4589,"children":4590},{"style":360},[4591],{"type":29,"value":1201},{"type":24,"tag":223,"props":4593,"children":4594},{"class":225,"line":498},[4595,4599,4603],{"type":24,"tag":223,"props":4596,"children":4597},{"style":1183},[4598],{"type":29,"value":2623},{"type":24,"tag":223,"props":4600,"children":4601},{"style":360},[4602],{"type":29,"value":432},{"type":24,"tag":223,"props":4604,"children":4605},{"style":1193},[4606],{"type":29,"value":2632},{"type":24,"tag":223,"props":4608,"children":4609},{"class":225,"line":511},[4610],{"type":24,"tag":223,"props":4611,"children":4612},{"style":360},[4613],{"type":29,"value":2640},{"type":24,"tag":223,"props":4615,"children":4616},{"class":225,"line":524},[4617,4621],{"type":24,"tag":223,"props":4618,"children":4619},{"style":1183},[4620],{"type":29,"value":2648},{"type":24,"tag":223,"props":4622,"children":4623},{"style":360},[4624],{"type":29,"value":1214},{"type":24,"tag":223,"props":4626,"children":4627},{"class":225,"line":537},[4628],{"type":24,"tag":223,"props":4629,"children":4630},{"style":360},[4631],{"type":29,"value":1954},{"type":24,"tag":223,"props":4633,"children":4634},{"class":225,"line":550},[4635,4639,4643,4647],{"type":24,"tag":223,"props":4636,"children":4637},{"style":1183},[4638],{"type":29,"value":2667},{"type":24,"tag":223,"props":4640,"children":4641},{"style":360},[4642],{"type":29,"value":432},{"type":24,"tag":223,"props":4644,"children":4645},{"style":1193},[4646],{"type":29,"value":2676},{"type":24,"tag":223,"props":4648,"children":4649},{"style":360},[4650],{"type":29,"value":1201},{"type":24,"tag":223,"props":4652,"children":4653},{"class":225,"line":563},[4654,4658,4662,4666],{"type":24,"tag":223,"props":4655,"children":4656},{"style":1183},[4657],{"type":29,"value":2688},{"type":24,"tag":223,"props":4659,"children":4660},{"style":360},[4661],{"type":29,"value":432},{"type":24,"tag":223,"props":4663,"children":4664},{"style":1193},[4665],{"type":29,"value":2697},{"type":24,"tag":223,"props":4667,"children":4668},{"style":360},[4669],{"type":29,"value":1201},{"type":24,"tag":223,"props":4671,"children":4672},{"class":225,"line":576},[4673,4677],{"type":24,"tag":223,"props":4674,"children":4675},{"style":1183},[4676],{"type":29,"value":2709},{"type":24,"tag":223,"props":4678,"children":4679},{"style":360},[4680],{"type":29,"value":2491},{"type":24,"tag":223,"props":4682,"children":4683},{"class":225,"line":589},[4684,4688,4692],{"type":24,"tag":223,"props":4685,"children":4686},{"style":1183},[4687],{"type":29,"value":2721},{"type":24,"tag":223,"props":4689,"children":4690},{"style":360},[4691],{"type":29,"value":432},{"type":24,"tag":223,"props":4693,"children":4694},{"style":716},[4695],{"type":29,"value":1552},{"type":24,"tag":223,"props":4697,"children":4698},{"class":225,"line":602},[4699],{"type":24,"tag":223,"props":4700,"children":4701},{"style":360},[4702],{"type":29,"value":2737},{"type":24,"tag":223,"props":4704,"children":4705},{"class":225,"line":615},[4706],{"type":24,"tag":223,"props":4707,"children":4708},{"style":360},[4709],{"type":29,"value":2745},{"type":24,"tag":223,"props":4711,"children":4712},{"class":225,"line":667},[4713],{"type":24,"tag":223,"props":4714,"children":4715},{"style":360},[4716],{"type":29,"value":1954},{"type":24,"tag":223,"props":4718,"children":4719},{"class":225,"line":685},[4720,4724,4728,4732],{"type":24,"tag":223,"props":4721,"children":4722},{"style":1183},[4723],{"type":29,"value":2667},{"type":24,"tag":223,"props":4725,"children":4726},{"style":360},[4727],{"type":29,"value":432},{"type":24,"tag":223,"props":4729,"children":4730},{"style":1193},[4731],{"type":29,"value":2676},{"type":24,"tag":223,"props":4733,"children":4734},{"style":360},[4735],{"type":29,"value":1201},{"type":24,"tag":223,"props":4737,"children":4738},{"class":225,"line":703},[4739,4743,4747,4751],{"type":24,"tag":223,"props":4740,"children":4741},{"style":1183},[4742],{"type":29,"value":2688},{"type":24,"tag":223,"props":4744,"children":4745},{"style":360},[4746],{"type":29,"value":432},{"type":24,"tag":223,"props":4748,"children":4749},{"style":1193},[4750],{"type":29,"value":2787},{"type":24,"tag":223,"props":4752,"children":4753},{"style":360},[4754],{"type":29,"value":1201},{"type":24,"tag":223,"props":4756,"children":4757},{"class":225,"line":722},[4758,4762],{"type":24,"tag":223,"props":4759,"children":4760},{"style":1183},[4761],{"type":29,"value":2709},{"type":24,"tag":223,"props":4763,"children":4764},{"style":360},[4765],{"type":29,"value":2491},{"type":24,"tag":223,"props":4767,"children":4768},{"class":225,"line":730},[4769,4773,4777],{"type":24,"tag":223,"props":4770,"children":4771},{"style":1183},[4772],{"type":29,"value":2721},{"type":24,"tag":223,"props":4774,"children":4775},{"style":360},[4776],{"type":29,"value":432},{"type":24,"tag":223,"props":4778,"children":4779},{"style":716},[4780],{"type":29,"value":1552},{"type":24,"tag":223,"props":4782,"children":4783},{"class":225,"line":742},[4784],{"type":24,"tag":223,"props":4785,"children":4786},{"style":360},[4787],{"type":29,"value":2737},{"type":24,"tag":223,"props":4789,"children":4790},{"class":225,"line":759},[4791],{"type":24,"tag":223,"props":4792,"children":4793},{"style":360},[4794],{"type":29,"value":2745},{"type":24,"tag":223,"props":4796,"children":4797},{"class":225,"line":775},[4798],{"type":24,"tag":223,"props":4799,"children":4800},{"style":360},[4801],{"type":29,"value":1954},{"type":24,"tag":223,"props":4803,"children":4804},{"class":225,"line":788},[4805,4809,4813,4817],{"type":24,"tag":223,"props":4806,"children":4807},{"style":1183},[4808],{"type":29,"value":2667},{"type":24,"tag":223,"props":4810,"children":4811},{"style":360},[4812],{"type":29,"value":432},{"type":24,"tag":223,"props":4814,"children":4815},{"style":1193},[4816],{"type":29,"value":2676},{"type":24,"tag":223,"props":4818,"children":4819},{"style":360},[4820],{"type":29,"value":1201},{"type":24,"tag":223,"props":4822,"children":4823},{"class":225,"line":801},[4824,4828,4832,4836],{"type":24,"tag":223,"props":4825,"children":4826},{"style":1183},[4827],{"type":29,"value":2688},{"type":24,"tag":223,"props":4829,"children":4830},{"style":360},[4831],{"type":29,"value":432},{"type":24,"tag":223,"props":4833,"children":4834},{"style":1193},[4835],{"type":29,"value":2873},{"type":24,"tag":223,"props":4837,"children":4838},{"style":360},[4839],{"type":29,"value":1201},{"type":24,"tag":223,"props":4841,"children":4842},{"class":225,"line":819},[4843,4847],{"type":24,"tag":223,"props":4844,"children":4845},{"style":1183},[4846],{"type":29,"value":2709},{"type":24,"tag":223,"props":4848,"children":4849},{"style":360},[4850],{"type":29,"value":2491},{"type":24,"tag":223,"props":4852,"children":4853},{"class":225,"line":831},[4854,4858,4862],{"type":24,"tag":223,"props":4855,"children":4856},{"style":1183},[4857],{"type":29,"value":2721},{"type":24,"tag":223,"props":4859,"children":4860},{"style":360},[4861],{"type":29,"value":432},{"type":24,"tag":223,"props":4863,"children":4864},{"style":716},[4865],{"type":29,"value":1552},{"type":24,"tag":223,"props":4867,"children":4868},{"class":225,"line":844},[4869],{"type":24,"tag":223,"props":4870,"children":4871},{"style":360},[4872],{"type":29,"value":2737},{"type":24,"tag":223,"props":4874,"children":4875},{"class":225,"line":856},[4876],{"type":24,"tag":223,"props":4877,"children":4878},{"style":360},[4879],{"type":29,"value":2745},{"type":24,"tag":223,"props":4881,"children":4883},{"class":4882,"line":869},[225,1497],[4884],{"type":24,"tag":223,"props":4885,"children":4886},{"style":360},[4887],{"type":29,"value":1954},{"type":24,"tag":223,"props":4889,"children":4891},{"class":4890,"line":882},[225,1497],[4892,4896,4900,4905],{"type":24,"tag":223,"props":4893,"children":4894},{"style":1183},[4895],{"type":29,"value":2667},{"type":24,"tag":223,"props":4897,"children":4898},{"style":360},[4899],{"type":29,"value":432},{"type":24,"tag":223,"props":4901,"children":4902},{"style":1193},[4903],{"type":29,"value":4904},"\"composer\"",{"type":24,"tag":223,"props":4906,"children":4907},{"style":360},[4908],{"type":29,"value":1201},{"type":24,"tag":223,"props":4910,"children":4912},{"class":4911,"line":895},[225,1497],[4913,4917,4921],{"type":24,"tag":223,"props":4914,"children":4915},{"style":1183},[4916],{"type":29,"value":2688},{"type":24,"tag":223,"props":4918,"children":4919},{"style":360},[4920],{"type":29,"value":432},{"type":24,"tag":223,"props":4922,"children":4923},{"style":1193},[4924],{"type":29,"value":4925},"\"https://\u003CDOMAIN-NAME>/api/v4/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\"\n",{"type":24,"tag":223,"props":4927,"children":4929},{"class":4928,"line":2404},[225,1497],[4930],{"type":24,"tag":223,"props":4931,"children":4932},{"style":360},[4933],{"type":29,"value":2197},{"type":24,"tag":223,"props":4935,"children":4936},{"class":225,"line":2974},[4937],{"type":24,"tag":223,"props":4938,"children":4939},{"style":360},[4940],{"type":29,"value":1512},{"type":24,"tag":223,"props":4942,"children":4943},{"class":225,"line":2982},[4944,4948],{"type":24,"tag":223,"props":4945,"children":4946},{"style":1183},[4947],{"type":29,"value":2988},{"type":24,"tag":223,"props":4949,"children":4950},{"style":360},[4951],{"type":29,"value":2491},{"type":24,"tag":223,"props":4953,"children":4954},{"class":225,"line":2995},[4955,4959],{"type":24,"tag":223,"props":4956,"children":4957},{"style":1183},[4958],{"type":29,"value":3001},{"type":24,"tag":223,"props":4960,"children":4961},{"style":360},[4962],{"type":29,"value":2491},{"type":24,"tag":223,"props":4964,"children":4965},{"class":225,"line":3008},[4966,4970,4974,4978,4982],{"type":24,"tag":223,"props":4967,"children":4968},{"style":1183},[4969],{"type":29,"value":3014},{"type":24,"tag":223,"props":4971,"children":4972},{"style":3017},[4973],{"type":29,"value":2109},{"type":24,"tag":223,"props":4975,"children":4976},{"style":1183},[4977],{"type":29,"value":3024},{"type":24,"tag":223,"props":4979,"children":4980},{"style":360},[4981],{"type":29,"value":432},{"type":24,"tag":223,"props":4983,"children":4984},{"style":1193},[4985],{"type":29,"value":3033},{"type":24,"tag":223,"props":4987,"children":4988},{"class":225,"line":3036},[4989],{"type":24,"tag":223,"props":4990,"children":4991},{"style":360},[4992],{"type":29,"value":2197},{"type":24,"tag":223,"props":4994,"children":4995},{"class":225,"line":3044},[4996],{"type":24,"tag":223,"props":4997,"children":4998},{"style":360},[4999],{"type":29,"value":2640},{"type":24,"tag":223,"props":5001,"children":5002},{"class":225,"line":3052},[5003,5007,5011,5015],{"type":24,"tag":223,"props":5004,"children":5005},{"style":1183},[5006],{"type":29,"value":3058},{"type":24,"tag":223,"props":5008,"children":5009},{"style":360},[5010],{"type":29,"value":432},{"type":24,"tag":223,"props":5012,"children":5013},{"style":716},[5014],{"type":29,"value":3067},{"type":24,"tag":223,"props":5016,"children":5017},{"style":360},[5018],{"type":29,"value":1201},{"type":24,"tag":223,"props":5020,"children":5021},{"class":225,"line":3074},[5022,5026],{"type":24,"tag":223,"props":5023,"children":5024},{"style":1183},[5025],{"type":29,"value":3080},{"type":24,"tag":223,"props":5027,"children":5028},{"style":360},[5029],{"type":29,"value":2491},{"type":24,"tag":223,"props":5031,"children":5032},{"class":225,"line":3087},[5033,5037],{"type":24,"tag":223,"props":5034,"children":5035},{"style":1183},[5036],{"type":29,"value":3093},{"type":24,"tag":223,"props":5038,"children":5039},{"style":360},[5040],{"type":29,"value":2491},{"type":24,"tag":223,"props":5042,"children":5043},{"class":225,"line":3100},[5044,5048,5052,5056],{"type":24,"tag":223,"props":5045,"children":5046},{"style":1183},[5047],{"type":29,"value":3106},{"type":24,"tag":223,"props":5049,"children":5050},{"style":360},[5051],{"type":29,"value":432},{"type":24,"tag":223,"props":5053,"children":5054},{"style":716},[5055],{"type":29,"value":3067},{"type":24,"tag":223,"props":5057,"children":5058},{"style":360},[5059],{"type":29,"value":1201},{"type":24,"tag":223,"props":5061,"children":5062},{"class":225,"line":3121},[5063,5067,5071],{"type":24,"tag":223,"props":5064,"children":5065},{"style":1183},[5066],{"type":29,"value":3127},{"type":24,"tag":223,"props":5068,"children":5069},{"style":360},[5070],{"type":29,"value":432},{"type":24,"tag":223,"props":5072,"children":5073},{"style":716},[5074],{"type":29,"value":1552},{"type":24,"tag":223,"props":5076,"children":5077},{"class":225,"line":3138},[5078],{"type":24,"tag":223,"props":5079,"children":5080},{"style":360},[5081],{"type":29,"value":2745},{"type":24,"tag":223,"props":5083,"children":5084},{"class":225,"line":3146},[5085,5089,5093,5097],{"type":24,"tag":223,"props":5086,"children":5087},{"style":1183},[5088],{"type":29,"value":3152},{"type":24,"tag":223,"props":5090,"children":5091},{"style":360},[5092],{"type":29,"value":432},{"type":24,"tag":223,"props":5094,"children":5095},{"style":716},[5096],{"type":29,"value":3067},{"type":24,"tag":223,"props":5098,"children":5099},{"style":360},[5100],{"type":29,"value":1201},{"type":24,"tag":223,"props":5102,"children":5103},{"class":225,"line":3167},[5104,5108,5112],{"type":24,"tag":223,"props":5105,"children":5106},{"style":1183},[5107],{"type":29,"value":3173},{"type":24,"tag":223,"props":5109,"children":5110},{"style":360},[5111],{"type":29,"value":432},{"type":24,"tag":223,"props":5113,"children":5114},{"style":716},[5115],{"type":29,"value":1552},{"type":24,"tag":223,"props":5117,"children":5118},{"class":225,"line":3184},[5119],{"type":24,"tag":223,"props":5120,"children":5121},{"style":360},[5122],{"type":29,"value":2640},{"type":24,"tag":223,"props":5124,"children":5125},{"class":225,"line":3192},[5126,5130],{"type":24,"tag":223,"props":5127,"children":5128},{"style":1183},[5129],{"type":29,"value":3198},{"type":24,"tag":223,"props":5131,"children":5132},{"style":360},[5133],{"type":29,"value":2491},{"type":24,"tag":223,"props":5135,"children":5136},{"class":225,"line":3205},[5137,5141],{"type":24,"tag":223,"props":5138,"children":5139},{"style":1183},[5140],{"type":29,"value":3211},{"type":24,"tag":223,"props":5142,"children":5143},{"style":360},[5144],{"type":29,"value":2491},{"type":24,"tag":223,"props":5146,"children":5147},{"class":225,"line":3218},[5148,5152,5156],{"type":24,"tag":223,"props":5149,"children":5150},{"style":1183},[5151],{"type":29,"value":3224},{"type":24,"tag":223,"props":5153,"children":5154},{"style":360},[5155],{"type":29,"value":432},{"type":24,"tag":223,"props":5157,"children":5158},{"style":1193},[5159],{"type":29,"value":3233},{"type":24,"tag":223,"props":5161,"children":5162},{"class":225,"line":3236},[5163],{"type":24,"tag":223,"props":5164,"children":5165},{"style":360},[5166],{"type":29,"value":2745},{"type":24,"tag":223,"props":5168,"children":5169},{"class":225,"line":3244},[5170,5174],{"type":24,"tag":223,"props":5171,"children":5172},{"style":1183},[5173],{"type":29,"value":3250},{"type":24,"tag":223,"props":5175,"children":5176},{"style":360},[5177],{"type":29,"value":1214},{"type":24,"tag":223,"props":5179,"children":5180},{"class":225,"line":3257},[5181],{"type":24,"tag":223,"props":5182,"children":5183},{"style":1193},[5184],{"type":29,"value":3263},{"type":24,"tag":223,"props":5186,"children":5187},{"class":225,"line":3266},[5188],{"type":24,"tag":223,"props":5189,"children":5190},{"style":360},[5191],{"type":29,"value":3272},{"type":24,"tag":223,"props":5193,"children":5194},{"class":225,"line":3275},[5195,5199],{"type":24,"tag":223,"props":5196,"children":5197},{"style":1183},[5198],{"type":29,"value":3281},{"type":24,"tag":223,"props":5200,"children":5201},{"style":360},[5202],{"type":29,"value":1214},{"type":24,"tag":223,"props":5204,"children":5205},{"class":225,"line":3288},[5206],{"type":24,"tag":223,"props":5207,"children":5208},{"style":1193},[5209],{"type":29,"value":3263},{"type":24,"tag":223,"props":5211,"children":5212},{"class":225,"line":3296},[5213],{"type":24,"tag":223,"props":5214,"children":5215},{"style":360},[5216],{"type":29,"value":3302},{"type":24,"tag":223,"props":5218,"children":5219},{"class":225,"line":3305},[5220],{"type":24,"tag":223,"props":5221,"children":5222},{"style":360},[5223],{"type":29,"value":2640},{"type":24,"tag":223,"props":5225,"children":5226},{"class":225,"line":3313},[5227,5231],{"type":24,"tag":223,"props":5228,"children":5229},{"style":1183},[5230],{"type":29,"value":3319},{"type":24,"tag":223,"props":5232,"children":5233},{"style":360},[5234],{"type":29,"value":2491},{"type":24,"tag":223,"props":5236,"children":5237},{"class":225,"line":3326},[5238,5242],{"type":24,"tag":223,"props":5239,"children":5240},{"style":1183},[5241],{"type":29,"value":3332},{"type":24,"tag":223,"props":5243,"children":5244},{"style":360},[5245],{"type":29,"value":2491},{"type":24,"tag":223,"props":5247,"children":5248},{"class":225,"line":3339},[5249,5253,5257,5261],{"type":24,"tag":223,"props":5250,"children":5251},{"style":1183},[5252],{"type":29,"value":3345},{"type":24,"tag":223,"props":5254,"children":5255},{"style":360},[5256],{"type":29,"value":432},{"type":24,"tag":223,"props":5258,"children":5259},{"style":716},[5260],{"type":29,"value":3067},{"type":24,"tag":223,"props":5262,"children":5263},{"style":360},[5264],{"type":29,"value":1201},{"type":24,"tag":223,"props":5266,"children":5267},{"class":225,"line":3360},[5268,5272],{"type":24,"tag":223,"props":5269,"children":5270},{"style":1183},[5271],{"type":29,"value":3366},{"type":24,"tag":223,"props":5273,"children":5274},{"style":360},[5275],{"type":29,"value":1214},{"type":24,"tag":223,"props":5277,"children":5278},{"class":225,"line":3373},[5279,5283],{"type":24,"tag":223,"props":5280,"children":5281},{"style":1193},[5282],{"type":29,"value":3379},{"type":24,"tag":223,"props":5284,"children":5285},{"style":360},[5286],{"type":29,"value":1201},{"type":24,"tag":223,"props":5288,"children":5289},{"class":225,"line":3386},[5290],{"type":24,"tag":223,"props":5291,"children":5292},{"style":1193},[5293],{"type":29,"value":3392},{"type":24,"tag":223,"props":5295,"children":5296},{"class":225,"line":3395},[5297],{"type":24,"tag":223,"props":5298,"children":5299},{"style":360},[5300],{"type":29,"value":3401},{"type":24,"tag":223,"props":5302,"children":5303},{"class":225,"line":3404},[5304],{"type":24,"tag":223,"props":5305,"children":5306},{"style":360},[5307],{"type":29,"value":2197},{"type":24,"tag":223,"props":5309,"children":5310},{"class":225,"line":3412},[5311],{"type":24,"tag":223,"props":5312,"children":5313},{"style":360},[5314],{"type":29,"value":3418},{"type":24,"tag":223,"props":5316,"children":5317},{"class":225,"line":3421},[5318],{"type":24,"tag":223,"props":5319,"children":5320},{"style":360},[5321],{"type":29,"value":1238},{"type":24,"tag":25,"props":5323,"children":5324},{},[5325],{"type":29,"value":5326},"oder über das CLI:",{"type":24,"tag":213,"props":5328,"children":5330},{"className":215,"code":5329,"language":217,"meta":7,"style":7},"composer config repositories.\u003Cgroup_id> composer https://\u003CDOMAIN-NAME>/api/v4/group/\u003Cgroup_id>/-/packages/composer/packages.json\n",[5331],{"type":24,"tag":134,"props":5332,"children":5333},{"__ignoreMap":7},[5334],{"type":24,"tag":223,"props":5335,"children":5336},{"class":225,"line":226},[5337,5341,5346,5351,5356,5361,5366,5371,5376,5381,5385,5390,5395,5399,5404,5408,5412,5416,5420],{"type":24,"tag":223,"props":5338,"children":5339},{"style":240},[5340],{"type":29,"value":2396},{"type":24,"tag":223,"props":5342,"children":5343},{"style":261},[5344],{"type":29,"value":5345}," config",{"type":24,"tag":223,"props":5347,"children":5348},{"style":261},[5349],{"type":29,"value":5350}," repositories.",{"type":24,"tag":223,"props":5352,"children":5353},{"style":926},[5354],{"type":29,"value":5355},"\u003C",{"type":24,"tag":223,"props":5357,"children":5358},{"style":261},[5359],{"type":29,"value":5360},"group_i",{"type":24,"tag":223,"props":5362,"children":5363},{"style":360},[5364],{"type":29,"value":5365},"d",{"type":24,"tag":223,"props":5367,"children":5368},{"style":926},[5369],{"type":29,"value":5370},">",{"type":24,"tag":223,"props":5372,"children":5373},{"style":261},[5374],{"type":29,"value":5375}," composer",{"type":24,"tag":223,"props":5377,"children":5378},{"style":261},[5379],{"type":29,"value":5380}," https://",{"type":24,"tag":223,"props":5382,"children":5383},{"style":926},[5384],{"type":29,"value":5355},{"type":24,"tag":223,"props":5386,"children":5387},{"style":261},[5388],{"type":29,"value":5389},"DOMAIN-NAM",{"type":24,"tag":223,"props":5391,"children":5392},{"style":360},[5393],{"type":29,"value":5394},"E",{"type":24,"tag":223,"props":5396,"children":5397},{"style":926},[5398],{"type":29,"value":5370},{"type":24,"tag":223,"props":5400,"children":5401},{"style":261},[5402],{"type":29,"value":5403},"/api/v4/group/",{"type":24,"tag":223,"props":5405,"children":5406},{"style":926},[5407],{"type":29,"value":5355},{"type":24,"tag":223,"props":5409,"children":5410},{"style":261},[5411],{"type":29,"value":5360},{"type":24,"tag":223,"props":5413,"children":5414},{"style":360},[5415],{"type":29,"value":5365},{"type":24,"tag":223,"props":5417,"children":5418},{"style":926},[5419],{"type":29,"value":5370},{"type":24,"tag":223,"props":5421,"children":5422},{"style":261},[5423],{"type":29,"value":5424},"/-/packages/composer/packages.json\n",{"type":24,"tag":25,"props":5426,"children":5427},{},[5428],{"type":29,"value":5429},"Und die GitLab-Anmeldeinformationen einrichten:",{"type":24,"tag":213,"props":5431,"children":5433},{"className":215,"code":5432,"language":217,"meta":7,"style":7},"composer config gitlab-token.\u003CDOMAIN-NAME> \u003Cpersonal_access_token>\n",[5434],{"type":24,"tag":134,"props":5435,"children":5436},{"__ignoreMap":7},[5437],{"type":24,"tag":223,"props":5438,"children":5439},{"class":225,"line":226},[5440,5444,5448,5453,5457,5461,5465,5469,5474,5479,5484],{"type":24,"tag":223,"props":5441,"children":5442},{"style":240},[5443],{"type":29,"value":2396},{"type":24,"tag":223,"props":5445,"children":5446},{"style":261},[5447],{"type":29,"value":5345},{"type":24,"tag":223,"props":5449,"children":5450},{"style":261},[5451],{"type":29,"value":5452}," gitlab-token.",{"type":24,"tag":223,"props":5454,"children":5455},{"style":926},[5456],{"type":29,"value":5355},{"type":24,"tag":223,"props":5458,"children":5459},{"style":261},[5460],{"type":29,"value":5389},{"type":24,"tag":223,"props":5462,"children":5463},{"style":360},[5464],{"type":29,"value":5394},{"type":24,"tag":223,"props":5466,"children":5467},{"style":926},[5468],{"type":29,"value":5370},{"type":24,"tag":223,"props":5470,"children":5471},{"style":926},[5472],{"type":29,"value":5473}," \u003C",{"type":24,"tag":223,"props":5475,"children":5476},{"style":261},[5477],{"type":29,"value":5478},"personal_access_toke",{"type":24,"tag":223,"props":5480,"children":5481},{"style":360},[5482],{"type":29,"value":5483},"n",{"type":24,"tag":223,"props":5485,"children":5486},{"style":926},[5487],{"type":29,"value":5488},">\n",{"type":24,"tag":25,"props":5490,"children":5491},{},[5492,5494,5499],{"type":29,"value":5493},"Mehr über diesen Prozess in der ",{"type":24,"tag":83,"props":5495,"children":5497},{"href":5496},"https://docs.gitlab.com/user/packages/composer_repository/#install-a-composer-package",[5498],{"type":29,"value":176},{"type":29,"value":4337},{"type":24,"tag":25,"props":5501,"children":5502},{},[5503],{"type":29,"value":5504},"Jetzt installieren wir unser Paket wie gewohnt:",{"type":24,"tag":213,"props":5506,"children":5507},{"className":215,"code":3434,"language":217,"meta":7,"style":7},[5508],{"type":24,"tag":134,"props":5509,"children":5510},{"__ignoreMap":7},[5511],{"type":24,"tag":223,"props":5512,"children":5513},{"class":225,"line":226},[5514,5518,5522],{"type":24,"tag":223,"props":5515,"children":5516},{"style":240},[5517],{"type":29,"value":2396},{"type":24,"tag":223,"props":5519,"children":5520},{"style":261},[5521],{"type":29,"value":3450},{"type":24,"tag":223,"props":5523,"children":5524},{"style":261},[5525],{"type":29,"value":3455},{"type":24,"tag":213,"props":5527,"children":5529},{"className":4168,"code":5528,"language":4170,"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",[5530],{"type":24,"tag":134,"props":5531,"children":5532},{"__ignoreMap":7},[5533,5540,5547,5554,5561,5568,5575,5582,5589,5596,5604,5612,5619,5626,5633,5640,5647,5654],{"type":24,"tag":223,"props":5534,"children":5535},{"class":225,"line":226},[5536],{"type":24,"tag":223,"props":5537,"children":5538},{},[5539],{"type":29,"value":3522},{"type":24,"tag":223,"props":5541,"children":5542},{"class":225,"line":236},[5543],{"type":24,"tag":223,"props":5544,"children":5545},{},[5546],{"type":29,"value":3530},{"type":24,"tag":223,"props":5548,"children":5549},{"class":225,"line":252},[5550],{"type":24,"tag":223,"props":5551,"children":5552},{},[5553],{"type":29,"value":4197},{"type":24,"tag":223,"props":5555,"children":5556},{"class":225,"line":272},[5557],{"type":24,"tag":223,"props":5558,"children":5559},{},[5560],{"type":29,"value":4205},{"type":24,"tag":223,"props":5562,"children":5563},{"class":225,"line":285},[5564],{"type":24,"tag":223,"props":5565,"children":5566},{},[5567],{"type":29,"value":3554},{"type":24,"tag":223,"props":5569,"children":5570},{"class":225,"line":309},[5571],{"type":24,"tag":223,"props":5572,"children":5573},{},[5574],{"type":29,"value":4220},{"type":24,"tag":223,"props":5576,"children":5577},{"class":225,"line":323},[5578],{"type":24,"tag":223,"props":5579,"children":5580},{},[5581],{"type":29,"value":3570},{"type":24,"tag":223,"props":5583,"children":5584},{"class":225,"line":440},[5585],{"type":24,"tag":223,"props":5586,"children":5587},{},[5588],{"type":29,"value":3578},{"type":24,"tag":223,"props":5590,"children":5591},{"class":225,"line":458},[5592],{"type":24,"tag":223,"props":5593,"children":5594},{},[5595],{"type":29,"value":3586},{"type":24,"tag":223,"props":5597,"children":5598},{"class":225,"line":471},[5599],{"type":24,"tag":223,"props":5600,"children":5601},{},[5602],{"type":29,"value":5603},"  - Downloading acme/sample-plugin (1.0.0)\n",{"type":24,"tag":223,"props":5605,"children":5606},{"class":225,"line":485},[5607],{"type":24,"tag":223,"props":5608,"children":5609},{},[5610],{"type":29,"value":5611},"  - Installing acme/sample-plugin (1.0.0): Extracting archive\n",{"type":24,"tag":223,"props":5613,"children":5614},{"class":225,"line":498},[5615],{"type":24,"tag":223,"props":5616,"children":5617},{},[5618],{"type":29,"value":3610},{"type":24,"tag":223,"props":5620,"children":5621},{"class":225,"line":511},[5622],{"type":24,"tag":223,"props":5623,"children":5624},{"emptyLinePlaceholder":393},[5625],{"type":29,"value":396},{"type":24,"tag":223,"props":5627,"children":5628},{"class":225,"line":524},[5629],{"type":24,"tag":223,"props":5630,"children":5631},{},[5632],{"type":29,"value":3625},{"type":24,"tag":223,"props":5634,"children":5635},{"class":225,"line":537},[5636],{"type":24,"tag":223,"props":5637,"children":5638},{"emptyLinePlaceholder":393},[5639],{"type":29,"value":396},{"type":24,"tag":223,"props":5641,"children":5642},{"class":225,"line":550},[5643],{"type":24,"tag":223,"props":5644,"children":5645},{},[5646],{"type":29,"value":3640},{"type":24,"tag":223,"props":5648,"children":5649},{"class":225,"line":563},[5650],{"type":24,"tag":223,"props":5651,"children":5652},{"emptyLinePlaceholder":393},[5653],{"type":29,"value":396},{"type":24,"tag":223,"props":5655,"children":5656},{"class":225,"line":576},[5657],{"type":24,"tag":223,"props":5658,"children":5659},{},[5660],{"type":29,"value":4307},{"type":24,"tag":25,"props":5662,"children":5663},{},[5664],{"type":24,"tag":223,"props":5665,"children":5668},{"className":5666},[5667],"text-h2",[5669],{"type":29,"value":5670},"Großartig. Direkter Paket-Download!",{"type":24,"tag":2380,"props":5672,"children":5674},{"id":5673},"warum-die-mühe",[5675],{"type":29,"value":5676},"Warum die Mühe?",{"type":24,"tag":25,"props":5678,"children":5679},{},[5680,5682,5687,5689,5695],{"type":29,"value":5681},"Das ist eine sehr gute Frage. Der Hauptgrund ist das Paket-Caching. Bei der Ausführung in einer ",{"type":24,"tag":134,"props":5683,"children":5685},{"className":5684},[],[5686],{"type":29,"value":1686},{"type":29,"value":5688},"-Umgebung oder einem ",{"type":24,"tag":134,"props":5690,"children":5692},{"className":5691},[],[5693],{"type":29,"value":5694},"docker build",{"type":29,"value":5696}," kann das Caching von Paketen einen massiven Leistungsschub bewirken.",{"type":24,"tag":3467,"props":5698,"children":5699},{},[],{"type":24,"tag":956,"props":5701,"children":5702},{},[],{"type":24,"tag":122,"props":5704,"children":5706},{"id":5705},"release-pipeline",[5707],{"type":29,"value":5708},"Release-Pipeline",{"type":24,"tag":2380,"props":5710,"children":5712},{"id":5711},"mit-manuellem-tagging",[5713],{"type":29,"value":5714},"Mit manuellem Tagging",{"type":24,"tag":25,"props":5716,"children":5717},{},[5718],{"type":29,"value":5719},"Dies ist eine einfache Pipeline, in der ein Git-Tag manuell erstellt und pushen wird.",{"type":24,"tag":25,"props":5721,"children":5722},{},[5723,5725,5730,5731,5736],{"type":29,"value":5724},"Bitte sicherstellen, dass Sie die ",{"type":24,"tag":134,"props":5726,"children":5728},{"className":5727},[],[5729],{"type":29,"value":3687},{"type":29,"value":3689},{"type":24,"tag":134,"props":5732,"children":5734},{"className":5733},[],[5735],{"type":29,"value":3695},{"type":29,"value":5737}," immer aktualisiert wird.",{"type":24,"tag":213,"props":5739,"children":5741},{"className":215,"code":5740,"language":217,"meta":7,"style":7},"git tag \u003Cversion>\ngit push --tags\n",[5742],{"type":24,"tag":134,"props":5743,"children":5744},{"__ignoreMap":7},[5745,5773],{"type":24,"tag":223,"props":5746,"children":5747},{"class":225,"line":226},[5748,5752,5756,5760,5765,5769],{"type":24,"tag":223,"props":5749,"children":5750},{"style":240},[5751],{"type":29,"value":3651},{"type":24,"tag":223,"props":5753,"children":5754},{"style":261},[5755],{"type":29,"value":4117},{"type":24,"tag":223,"props":5757,"children":5758},{"style":926},[5759],{"type":29,"value":5473},{"type":24,"tag":223,"props":5761,"children":5762},{"style":261},[5763],{"type":29,"value":5764},"versio",{"type":24,"tag":223,"props":5766,"children":5767},{"style":360},[5768],{"type":29,"value":5483},{"type":24,"tag":223,"props":5770,"children":5771},{"style":926},[5772],{"type":29,"value":5488},{"type":24,"tag":223,"props":5774,"children":5775},{"class":225,"line":236},[5776,5780,5784],{"type":24,"tag":223,"props":5777,"children":5778},{"style":240},[5779],{"type":29,"value":3651},{"type":24,"tag":223,"props":5781,"children":5782},{"style":261},[5783],{"type":29,"value":4134},{"type":24,"tag":223,"props":5785,"children":5786},{"style":716},[5787],{"type":29,"value":4139},{"type":24,"tag":213,"props":5789,"children":5791},{"className":341,"code":5790,"filename":967,"language":344,"meta":7,"style":7},"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",[5792],{"type":24,"tag":134,"props":5793,"children":5794},{"__ignoreMap":7},[5795,5806,5818,5825,5836,5852,5867,5878,5890,5907,5918],{"type":24,"tag":223,"props":5796,"children":5797},{"class":225,"line":226},[5798,5802],{"type":24,"tag":223,"props":5799,"children":5800},{"style":354},[5801],{"type":29,"value":979},{"type":24,"tag":223,"props":5803,"children":5804},{"style":360},[5805],{"type":29,"value":363},{"type":24,"tag":223,"props":5807,"children":5808},{"class":225,"line":236},[5809,5813],{"type":24,"tag":223,"props":5810,"children":5811},{"style":360},[5812],{"type":29,"value":991},{"type":24,"tag":223,"props":5814,"children":5815},{"style":261},[5816],{"type":29,"value":5817},"release\n",{"type":24,"tag":223,"props":5819,"children":5820},{"class":225,"line":252},[5821],{"type":24,"tag":223,"props":5822,"children":5823},{"emptyLinePlaceholder":393},[5824],{"type":29,"value":396},{"type":24,"tag":223,"props":5826,"children":5827},{"class":225,"line":272},[5828,5832],{"type":24,"tag":223,"props":5829,"children":5830},{"style":354},[5831],{"type":29,"value":1011},{"type":24,"tag":223,"props":5833,"children":5834},{"style":360},[5835],{"type":29,"value":363},{"type":24,"tag":223,"props":5837,"children":5838},{"class":225,"line":285},[5839,5843,5847],{"type":24,"tag":223,"props":5840,"children":5841},{"style":354},[5842],{"type":29,"value":1039},{"type":24,"tag":223,"props":5844,"children":5845},{"style":360},[5846],{"type":29,"value":432},{"type":24,"tag":223,"props":5848,"children":5849},{"style":261},[5850],{"type":29,"value":5851},"alpine/curl\n",{"type":24,"tag":223,"props":5853,"children":5854},{"class":225,"line":309},[5855,5859,5863],{"type":24,"tag":223,"props":5856,"children":5857},{"style":354},[5858],{"type":29,"value":1023},{"type":24,"tag":223,"props":5860,"children":5861},{"style":360},[5862],{"type":29,"value":432},{"type":24,"tag":223,"props":5864,"children":5865},{"style":261},[5866],{"type":29,"value":5817},{"type":24,"tag":223,"props":5868,"children":5869},{"class":225,"line":323},[5870,5874],{"type":24,"tag":223,"props":5871,"children":5872},{"style":354},[5873],{"type":29,"value":1085},{"type":24,"tag":223,"props":5875,"children":5876},{"style":360},[5877],{"type":29,"value":363},{"type":24,"tag":223,"props":5879,"children":5880},{"class":225,"line":440},[5881,5885],{"type":24,"tag":223,"props":5882,"children":5883},{"style":360},[5884],{"type":29,"value":1097},{"type":24,"tag":223,"props":5886,"children":5887},{"style":261},[5888],{"type":29,"value":5889},"'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":24,"tag":223,"props":5891,"children":5892},{"class":225,"line":458},[5893,5898,5902],{"type":24,"tag":223,"props":5894,"children":5895},{"style":354},[5896],{"type":29,"value":5897},"  environment",{"type":24,"tag":223,"props":5899,"children":5900},{"style":360},[5901],{"type":29,"value":432},{"type":24,"tag":223,"props":5903,"children":5904},{"style":261},[5905],{"type":29,"value":5906},"production\n",{"type":24,"tag":223,"props":5908,"children":5909},{"class":225,"line":471},[5910,5914],{"type":24,"tag":223,"props":5911,"children":5912},{"style":354},[5913],{"type":29,"value":1110},{"type":24,"tag":223,"props":5915,"children":5916},{"style":360},[5917],{"type":29,"value":363},{"type":24,"tag":223,"props":5919,"children":5920},{"class":225,"line":485},[5921,5926,5930],{"type":24,"tag":223,"props":5922,"children":5923},{"style":354},[5924],{"type":29,"value":5925},"    if",{"type":24,"tag":223,"props":5927,"children":5928},{"style":360},[5929],{"type":29,"value":432},{"type":24,"tag":223,"props":5931,"children":5932},{"style":261},[5933],{"type":29,"value":5934},"$CI_COMMIT_TAG\n",{"type":24,"tag":2380,"props":5936,"children":5938},{"id":5937},"mit-semantic-release",[5939],{"type":29,"value":5940},"Mit semantic-release",{"type":24,"tag":25,"props":5942,"children":5943},{},[5944],{"type":29,"value":5945},"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":24,"tag":25,"props":5947,"children":5948},{},[5949,5955],{"type":24,"tag":83,"props":5950,"children":5952},{"href":5951},"https://github.com/semantic-release/semantic-release",[5953],{"type":29,"value":5954},"semantic-release",{"type":29,"value":5956}," automatisiert den gesamten Workflow für Paket-Releases.",{"type":24,"tag":25,"props":5958,"children":5959},{},[5960,5962,5968],{"type":29,"value":5961},"Bitte befolgen Sie der ",{"type":24,"tag":83,"props":5963,"children":5965},{"href":5964},"https://github.com/semantic-release/gitlab?tab=readme-ov-file#gitlab-authentication",[5966],{"type":29,"value":5967},"Anleitung zur GitLab-Authentifizierung",{"type":29,"value":5969},", bevor Sie weiterlesen.",{"type":24,"tag":213,"props":5971,"children":5974},{"className":341,"code":5972,"filename":5973,"language":344,"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",[5975],{"type":24,"tag":134,"props":5976,"children":5977},{"__ignoreMap":7},[5978,5989,6000,6007,6019,6034,6045,6062,6083,6099,6110,6122,6133,6153,6170],{"type":24,"tag":223,"props":5979,"children":5980},{"class":225,"line":226},[5981,5985],{"type":24,"tag":223,"props":5982,"children":5983},{"style":354},[5984],{"type":29,"value":979},{"type":24,"tag":223,"props":5986,"children":5987},{"style":360},[5988],{"type":29,"value":363},{"type":24,"tag":223,"props":5990,"children":5991},{"class":225,"line":236},[5992,5996],{"type":24,"tag":223,"props":5993,"children":5994},{"style":360},[5995],{"type":29,"value":991},{"type":24,"tag":223,"props":5997,"children":5998},{"style":261},[5999],{"type":29,"value":5817},{"type":24,"tag":223,"props":6001,"children":6002},{"class":225,"line":252},[6003],{"type":24,"tag":223,"props":6004,"children":6005},{"emptyLinePlaceholder":393},[6006],{"type":29,"value":396},{"type":24,"tag":223,"props":6008,"children":6009},{"class":225,"line":272},[6010,6015],{"type":24,"tag":223,"props":6011,"children":6012},{"style":354},[6013],{"type":29,"value":6014},"release",{"type":24,"tag":223,"props":6016,"children":6017},{"style":360},[6018],{"type":29,"value":363},{"type":24,"tag":223,"props":6020,"children":6021},{"class":225,"line":285},[6022,6026,6030],{"type":24,"tag":223,"props":6023,"children":6024},{"style":354},[6025],{"type":29,"value":1023},{"type":24,"tag":223,"props":6027,"children":6028},{"style":360},[6029],{"type":29,"value":432},{"type":24,"tag":223,"props":6031,"children":6032},{"style":261},[6033],{"type":29,"value":5817},{"type":24,"tag":223,"props":6035,"children":6036},{"class":225,"line":309},[6037,6041],{"type":24,"tag":223,"props":6038,"children":6039},{"style":354},[6040],{"type":29,"value":1039},{"type":24,"tag":223,"props":6042,"children":6043},{"style":360},[6044],{"type":29,"value":363},{"type":24,"tag":223,"props":6046,"children":6047},{"class":225,"line":323},[6048,6053,6057],{"type":24,"tag":223,"props":6049,"children":6050},{"style":354},[6051],{"type":29,"value":6052},"    name",{"type":24,"tag":223,"props":6054,"children":6055},{"style":360},[6056],{"type":29,"value":432},{"type":24,"tag":223,"props":6058,"children":6059},{"style":261},[6060],{"type":29,"value":6061},"ghcr.io/voxpupuli/semantic-release:25.0.0-latest\n",{"type":24,"tag":223,"props":6063,"children":6064},{"class":225,"line":440},[6065,6070,6074,6079],{"type":24,"tag":223,"props":6066,"children":6067},{"style":354},[6068],{"type":29,"value":6069},"    entrypoint",{"type":24,"tag":223,"props":6071,"children":6072},{"style":360},[6073],{"type":29,"value":626},{"type":24,"tag":223,"props":6075,"children":6076},{"style":261},[6077],{"type":29,"value":6078},"\"\"",{"type":24,"tag":223,"props":6080,"children":6081},{"style":360},[6082],{"type":29,"value":664},{"type":24,"tag":223,"props":6084,"children":6085},{"class":225,"line":458},[6086,6091,6095],{"type":24,"tag":223,"props":6087,"children":6088},{"style":354},[6089],{"type":29,"value":6090},"  interruptible",{"type":24,"tag":223,"props":6092,"children":6093},{"style":360},[6094],{"type":29,"value":432},{"type":24,"tag":223,"props":6096,"children":6097},{"style":716},[6098],{"type":29,"value":1552},{"type":24,"tag":223,"props":6100,"children":6101},{"class":225,"line":471},[6102,6106],{"type":24,"tag":223,"props":6103,"children":6104},{"style":354},[6105],{"type":29,"value":1085},{"type":24,"tag":223,"props":6107,"children":6108},{"style":360},[6109],{"type":29,"value":363},{"type":24,"tag":223,"props":6111,"children":6112},{"class":225,"line":485},[6113,6117],{"type":24,"tag":223,"props":6114,"children":6115},{"style":360},[6116],{"type":29,"value":1097},{"type":24,"tag":223,"props":6118,"children":6119},{"style":261},[6120],{"type":29,"value":6121},"/container-entrypoint.sh\n",{"type":24,"tag":223,"props":6123,"children":6124},{"class":225,"line":498},[6125,6129],{"type":24,"tag":223,"props":6126,"children":6127},{"style":354},[6128],{"type":29,"value":1110},{"type":24,"tag":223,"props":6130,"children":6131},{"style":360},[6132],{"type":29,"value":363},{"type":24,"tag":223,"props":6134,"children":6135},{"class":225,"line":511},[6136,6140,6144,6148],{"type":24,"tag":223,"props":6137,"children":6138},{"style":360},[6139],{"type":29,"value":1097},{"type":24,"tag":223,"props":6141,"children":6142},{"style":354},[6143],{"type":29,"value":1126},{"type":24,"tag":223,"props":6145,"children":6146},{"style":360},[6147],{"type":29,"value":432},{"type":24,"tag":223,"props":6149,"children":6150},{"style":261},[6151],{"type":29,"value":6152},"$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH\n",{"type":24,"tag":223,"props":6154,"children":6155},{"class":225,"line":524},[6156,6161,6165],{"type":24,"tag":223,"props":6157,"children":6158},{"style":354},[6159],{"type":29,"value":6160},"      when",{"type":24,"tag":223,"props":6162,"children":6163},{"style":360},[6164],{"type":29,"value":432},{"type":24,"tag":223,"props":6166,"children":6167},{"style":261},[6168],{"type":29,"value":6169},"never\n",{"type":24,"tag":223,"props":6171,"children":6172},{"class":225,"line":537},[6173,6177,6181,6185],{"type":24,"tag":223,"props":6174,"children":6175},{"style":360},[6176],{"type":29,"value":1097},{"type":24,"tag":223,"props":6178,"children":6179},{"style":354},[6180],{"type":29,"value":1126},{"type":24,"tag":223,"props":6182,"children":6183},{"style":360},[6184],{"type":29,"value":432},{"type":24,"tag":223,"props":6186,"children":6187},{"style":261},[6188],{"type":29,"value":6189},"$CI_COMMIT_BRANCH\n",{"type":24,"tag":213,"props":6191,"children":6194},{"className":1162,"code":6192,"filename":6193,"language":1165,"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",[6195],{"type":24,"tag":134,"props":6196,"children":6197},{"__ignoreMap":7},[6198,6205,6217,6229,6237,6249,6257,6269,6277,6299,6346,6388,6396,6404,6411,6418,6425,6437,6444,6464,6491,6498,6505,6512,6524,6531,6566,6573,6580,6587],{"type":24,"tag":223,"props":6199,"children":6200},{"class":225,"line":226},[6201],{"type":24,"tag":223,"props":6202,"children":6203},{"style":360},[6204],{"type":29,"value":1177},{"type":24,"tag":223,"props":6206,"children":6207},{"class":225,"line":236},[6208,6213],{"type":24,"tag":223,"props":6209,"children":6210},{"style":1183},[6211],{"type":29,"value":6212},"  \"plugins\"",{"type":24,"tag":223,"props":6214,"children":6215},{"style":360},[6216],{"type":29,"value":1214},{"type":24,"tag":223,"props":6218,"children":6219},{"class":225,"line":252},[6220,6225],{"type":24,"tag":223,"props":6221,"children":6222},{"style":1193},[6223],{"type":29,"value":6224},"    \"@semantic-release/commit-analyzer\"",{"type":24,"tag":223,"props":6226,"children":6227},{"style":360},[6228],{"type":29,"value":1201},{"type":24,"tag":223,"props":6230,"children":6231},{"class":225,"line":272},[6232],{"type":24,"tag":223,"props":6233,"children":6234},{"style":360},[6235],{"type":29,"value":6236},"    [\n",{"type":24,"tag":223,"props":6238,"children":6239},{"class":225,"line":285},[6240,6245],{"type":24,"tag":223,"props":6241,"children":6242},{"style":1193},[6243],{"type":29,"value":6244},"      \"semantic-release-replace-plugin\"",{"type":24,"tag":223,"props":6246,"children":6247},{"style":360},[6248],{"type":29,"value":1201},{"type":24,"tag":223,"props":6250,"children":6251},{"class":225,"line":309},[6252],{"type":24,"tag":223,"props":6253,"children":6254},{"style":360},[6255],{"type":29,"value":6256},"      {\n",{"type":24,"tag":223,"props":6258,"children":6259},{"class":225,"line":323},[6260,6265],{"type":24,"tag":223,"props":6261,"children":6262},{"style":1183},[6263],{"type":29,"value":6264},"        \"replacements\"",{"type":24,"tag":223,"props":6266,"children":6267},{"style":360},[6268],{"type":29,"value":1214},{"type":24,"tag":223,"props":6270,"children":6271},{"class":225,"line":440},[6272],{"type":24,"tag":223,"props":6273,"children":6274},{"style":360},[6275],{"type":29,"value":6276},"          {\n",{"type":24,"tag":223,"props":6278,"children":6279},{"class":225,"line":458},[6280,6285,6289,6294],{"type":24,"tag":223,"props":6281,"children":6282},{"style":1183},[6283],{"type":29,"value":6284},"            \"files\"",{"type":24,"tag":223,"props":6286,"children":6287},{"style":360},[6288],{"type":29,"value":626},{"type":24,"tag":223,"props":6290,"children":6291},{"style":1193},[6292],{"type":29,"value":6293},"\"composer.json\"",{"type":24,"tag":223,"props":6295,"children":6296},{"style":360},[6297],{"type":29,"value":6298},"],\n",{"type":24,"tag":223,"props":6300,"children":6301},{"class":225,"line":471},[6302,6307,6311,6316,6321,6325,6329,6334,6338,6342],{"type":24,"tag":223,"props":6303,"children":6304},{"style":1183},[6305],{"type":29,"value":6306},"            \"from\"",{"type":24,"tag":223,"props":6308,"children":6309},{"style":360},[6310],{"type":29,"value":432},{"type":24,"tag":223,"props":6312,"children":6313},{"style":1193},[6314],{"type":29,"value":6315},"\"version",{"type":24,"tag":223,"props":6317,"children":6318},{"style":716},[6319],{"type":29,"value":6320},"\\\"",{"type":24,"tag":223,"props":6322,"children":6323},{"style":1193},[6324],{"type":29,"value":432},{"type":24,"tag":223,"props":6326,"children":6327},{"style":716},[6328],{"type":29,"value":6320},{"type":24,"tag":223,"props":6330,"children":6331},{"style":1193},[6332],{"type":29,"value":6333},".*",{"type":24,"tag":223,"props":6335,"children":6336},{"style":716},[6337],{"type":29,"value":6320},{"type":24,"tag":223,"props":6339,"children":6340},{"style":1193},[6341],{"type":29,"value":3024},{"type":24,"tag":223,"props":6343,"children":6344},{"style":360},[6345],{"type":29,"value":1201},{"type":24,"tag":223,"props":6347,"children":6348},{"class":225,"line":485},[6349,6354,6358,6362,6366,6370,6374,6379,6383],{"type":24,"tag":223,"props":6350,"children":6351},{"style":1183},[6352],{"type":29,"value":6353},"            \"to\"",{"type":24,"tag":223,"props":6355,"children":6356},{"style":360},[6357],{"type":29,"value":432},{"type":24,"tag":223,"props":6359,"children":6360},{"style":1193},[6361],{"type":29,"value":6315},{"type":24,"tag":223,"props":6363,"children":6364},{"style":716},[6365],{"type":29,"value":6320},{"type":24,"tag":223,"props":6367,"children":6368},{"style":1193},[6369],{"type":29,"value":432},{"type":24,"tag":223,"props":6371,"children":6372},{"style":716},[6373],{"type":29,"value":6320},{"type":24,"tag":223,"props":6375,"children":6376},{"style":1193},[6377],{"type":29,"value":6378},"${nextRelease.version}",{"type":24,"tag":223,"props":6380,"children":6381},{"style":716},[6382],{"type":29,"value":6320},{"type":24,"tag":223,"props":6384,"children":6385},{"style":1193},[6386],{"type":29,"value":6387},"\"\n",{"type":24,"tag":223,"props":6389,"children":6390},{"class":225,"line":498},[6391],{"type":24,"tag":223,"props":6392,"children":6393},{"style":360},[6394],{"type":29,"value":6395},"          }\n",{"type":24,"tag":223,"props":6397,"children":6398},{"class":225,"line":511},[6399],{"type":24,"tag":223,"props":6400,"children":6401},{"style":360},[6402],{"type":29,"value":6403},"        ]\n",{"type":24,"tag":223,"props":6405,"children":6406},{"class":225,"line":524},[6407],{"type":24,"tag":223,"props":6408,"children":6409},{"style":360},[6410],{"type":29,"value":2737},{"type":24,"tag":223,"props":6412,"children":6413},{"class":225,"line":537},[6414],{"type":24,"tag":223,"props":6415,"children":6416},{"style":360},[6417],{"type":29,"value":3272},{"type":24,"tag":223,"props":6419,"children":6420},{"class":225,"line":550},[6421],{"type":24,"tag":223,"props":6422,"children":6423},{"style":360},[6424],{"type":29,"value":6236},{"type":24,"tag":223,"props":6426,"children":6427},{"class":225,"line":563},[6428,6433],{"type":24,"tag":223,"props":6429,"children":6430},{"style":1193},[6431],{"type":29,"value":6432},"      \"@semantic-release/git\"",{"type":24,"tag":223,"props":6434,"children":6435},{"style":360},[6436],{"type":29,"value":1201},{"type":24,"tag":223,"props":6438,"children":6439},{"class":225,"line":576},[6440],{"type":24,"tag":223,"props":6441,"children":6442},{"style":360},[6443],{"type":29,"value":6256},{"type":24,"tag":223,"props":6445,"children":6446},{"class":225,"line":589},[6447,6452,6456,6460],{"type":24,"tag":223,"props":6448,"children":6449},{"style":1183},[6450],{"type":29,"value":6451},"        \"assets\"",{"type":24,"tag":223,"props":6453,"children":6454},{"style":360},[6455],{"type":29,"value":626},{"type":24,"tag":223,"props":6457,"children":6458},{"style":1193},[6459],{"type":29,"value":6293},{"type":24,"tag":223,"props":6461,"children":6462},{"style":360},[6463],{"type":29,"value":6298},{"type":24,"tag":223,"props":6465,"children":6466},{"class":225,"line":602},[6467,6472,6476,6481,6486],{"type":24,"tag":223,"props":6468,"children":6469},{"style":1183},[6470],{"type":29,"value":6471},"        \"message\"",{"type":24,"tag":223,"props":6473,"children":6474},{"style":360},[6475],{"type":29,"value":432},{"type":24,"tag":223,"props":6477,"children":6478},{"style":1193},[6479],{"type":29,"value":6480},"\"chore(release): ${nextRelease.version} [skip ci]",{"type":24,"tag":223,"props":6482,"children":6483},{"style":716},[6484],{"type":29,"value":6485},"\\n\\n",{"type":24,"tag":223,"props":6487,"children":6488},{"style":1193},[6489],{"type":29,"value":6490},"${nextRelease.notes}\"\n",{"type":24,"tag":223,"props":6492,"children":6493},{"class":225,"line":615},[6494],{"type":24,"tag":223,"props":6495,"children":6496},{"style":360},[6497],{"type":29,"value":2737},{"type":24,"tag":223,"props":6499,"children":6500},{"class":225,"line":667},[6501],{"type":24,"tag":223,"props":6502,"children":6503},{"style":360},[6504],{"type":29,"value":3272},{"type":24,"tag":223,"props":6506,"children":6507},{"class":225,"line":685},[6508],{"type":24,"tag":223,"props":6509,"children":6510},{"style":360},[6511],{"type":29,"value":6236},{"type":24,"tag":223,"props":6513,"children":6514},{"class":225,"line":703},[6515,6520],{"type":24,"tag":223,"props":6516,"children":6517},{"style":1193},[6518],{"type":29,"value":6519},"      \"@semantic-release/exec\"",{"type":24,"tag":223,"props":6521,"children":6522},{"style":360},[6523],{"type":29,"value":1201},{"type":24,"tag":223,"props":6525,"children":6526},{"class":225,"line":722},[6527],{"type":24,"tag":223,"props":6528,"children":6529},{"style":360},[6530],{"type":29,"value":6256},{"type":24,"tag":223,"props":6532,"children":6533},{"class":225,"line":730},[6534,6539,6543,6548,6552,6557,6561],{"type":24,"tag":223,"props":6535,"children":6536},{"style":1183},[6537],{"type":29,"value":6538},"        \"publishCmd\"",{"type":24,"tag":223,"props":6540,"children":6541},{"style":360},[6542],{"type":29,"value":432},{"type":24,"tag":223,"props":6544,"children":6545},{"style":1193},[6546],{"type":29,"value":6547},"\"curl --fail-with-body --header ",{"type":24,"tag":223,"props":6549,"children":6550},{"style":716},[6551],{"type":29,"value":6320},{"type":24,"tag":223,"props":6553,"children":6554},{"style":1193},[6555],{"type":29,"value":6556},"Job-Token: ${process.env.CI_JOB_TOKEN}",{"type":24,"tag":223,"props":6558,"children":6559},{"style":716},[6560],{"type":29,"value":6320},{"type":24,"tag":223,"props":6562,"children":6563},{"style":1193},[6564],{"type":29,"value":6565}," --data tag=${nextRelease.gitTag} ${process.env.CI_API_V4_URL}/projects/${process.env.CI_PROJECT_ID}/packages/composer\"\n",{"type":24,"tag":223,"props":6567,"children":6568},{"class":225,"line":742},[6569],{"type":24,"tag":223,"props":6570,"children":6571},{"style":360},[6572],{"type":29,"value":2737},{"type":24,"tag":223,"props":6574,"children":6575},{"class":225,"line":759},[6576],{"type":24,"tag":223,"props":6577,"children":6578},{"style":360},[6579],{"type":29,"value":3302},{"type":24,"tag":223,"props":6581,"children":6582},{"class":225,"line":775},[6583],{"type":24,"tag":223,"props":6584,"children":6585},{"style":360},[6586],{"type":29,"value":1230},{"type":24,"tag":223,"props":6588,"children":6589},{"class":225,"line":788},[6590],{"type":24,"tag":223,"props":6591,"children":6592},{"style":360},[6593],{"type":29,"value":1238},{"type":24,"tag":25,"props":6595,"children":6596},{},[6597],{"type":29,"value":6598},"Dies wird:",{"type":24,"tag":1872,"props":6600,"children":6601},{},[6602,6607,6619,6630,6635],{"type":24,"tag":56,"props":6603,"children":6604},{},[6605],{"type":29,"value":6606},"Die Commits seit dem letzten Release analysieren, um zu entscheiden, ob eine neue Version veröffentlicht werden soll",{"type":24,"tag":56,"props":6608,"children":6609},{},[6610,6612,6617],{"type":29,"value":6611},"Die Version in der ",{"type":24,"tag":134,"props":6613,"children":6615},{"className":6614},[],[6616],{"type":29,"value":3695},{"type":29,"value":6618}," aktualisieren",{"type":24,"tag":56,"props":6620,"children":6621},{},[6622,6623,6628],{"type":29,"value":1841},{"type":24,"tag":134,"props":6624,"children":6626},{"className":6625},[],[6627],{"type":29,"value":3695},{"type":29,"value":6629}," zurück in das Repository committen",{"type":24,"tag":56,"props":6631,"children":6632},{},[6633],{"type":29,"value":6634},"Einen Tag erstellen",{"type":24,"tag":56,"props":6636,"children":6637},{},[6638],{"type":29,"value":6639},"Ein Composer-Paket von diesem Tag releasen",{"type":24,"tag":1580,"props":6641,"children":6642},{},[6643],{"type":29,"value":1584},{"title":7,"searchDepth":236,"depth":236,"links":6645},[6646,6652],{"id":2370,"depth":236,"text":2373,"children":6647},[6648,6649,6650,6651],{"id":2382,"depth":252,"text":2385},{"id":3661,"depth":252,"text":3664},{"id":4322,"depth":252,"text":4325},{"id":5673,"depth":252,"text":5676},{"id":5705,"depth":236,"text":5708,"children":6653},[6654,6655],{"id":5711,"depth":252,"text":5714},{"id":5937,"depth":252,"text":5940},{"_path":1627,"_dir":1628,"_draft":6,"_partial":6,"_locale":7,"slug":10,"teams":6657,"primaryTeam":1631,"firstName":1632,"lastName":1633,"prefixTitle":7,"suffixTitle":1634,"education":6658,"role":6660,"workingSince":1645,"inTheCompanySince":1646,"techSkills":6661,"skills":6675,"projects":6685,"contactDetails":6690,"_image":1716,"image":1717,"_id":1718,"_type":1165,"title":1719,"_source":1628,"_file":1720,"_stem":1721,"_extension":1165},[1630,1631],[6659],[1637,1638,1639],[1641,1642,1643,1644],[6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674],{"name":88,"level":1649,"icon":1650},{"name":107,"level":1649},{"name":1653,"level":1649,"icon":1654},{"name":1656,"level":1649,"icon":1657},{"name":1659,"level":1649,"icon":1660},{"name":1662,"level":1649},{"name":1664,"level":1649,"icon":1665},{"name":1667,"level":1649,"icon":1668},{"name":1670,"level":1671,"icon":1672},{"name":1674,"level":1671,"icon":1675},{"name":1677,"level":1671},{"name":1679,"level":1671,"icon":1680},{"name":1682,"level":1671,"icon":1683},[6676,6677,6678,6679,6680,6681,6682,6683,6684],{"name":1686,"level":1649},{"name":1688,"level":1649},{"name":1631,"level":1649},{"name":1691,"level":1649},{"name":1693,"level":1649},{"name":1695,"level":1671},{"name":1697,"level":1671},{"name":1699,"level":1671},{"name":1701,"level":1671},[6686,6688,6689],{"project":1704,"position":6687},[1706,1707],{"project":1709,"position":1707},{"project":1711,"position":1707},{"eMail":1713,"phone":1714,"visibility":1715},1782284043398]