[{"data":1,"prerenderedAt":502},["ShallowReactive",2],{"docs-ci-cd-opmbuild":3},{"id":4,"title":5,"body":6,"category":492,"description":493,"draft":494,"extension":495,"meta":496,"navigation":173,"order":497,"path":498,"seo":499,"stem":500,"__hash__":501},"docs\u002Fdocs\u002Fci-cd-opmbuild.md","Build .opm in CI\u002FCD mit opmbuild",{"type":7,"value":8,"toc":485},"minimark",[9,13,30,35,57,64,68,144,148,434,438,454,458,481],[10,11,5],"h1",{"id":12},"build-opm-in-cicd-mit-opmbuild",[14,15,16,20,21,24,25,29],"p",{},[17,18,19],"code",{},"OPM::Maker"," ist ein eigenständiges Perl-CPAN-Modul, das die ",[17,22,23],{},".opm","-Werkzeuge ",[26,27,28],"strong",{},"ohne"," vollständige OTOBO-\u002FZnuny-Installation bereitstellt. Das macht es ideal für CI\u002FCD-Pipelines.",[31,32,34],"h2",{"id":33},"installation","Installation",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cpanm OPM::Maker\n","bash","",[17,43,44],{"__ignoreMap":41},[45,46,49,53],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"sBMFI","cpanm",[45,54,56],{"class":55},"sfazB"," OPM::Maker\n",[14,58,59,60,63],{},"Das stellt den Befehl ",[17,61,62],{},"opmbuild"," bereit.",[31,65,67],{"id":66},"befehle","Befehle",[69,70,71,85],"table",{},[72,73,74],"thead",{},[75,76,77,82],"tr",{},[78,79,81],"th",{"align":80},"left","Befehl",[78,83,84],{"align":80},"Zweck",[86,87,88,99,109,119,131],"tbody",{},[75,89,90,96],{},[91,92,93],"td",{"align":80},[17,94,95],{},"opmbuild sopmtest MyPackage.sopm",[91,97,98],{"align":80},"Manifest-XML und Struktur prüfen",[75,100,101,106],{},[91,102,103],{"align":80},[17,104,105],{},"opmbuild filetest MyPackage.sopm",[91,107,108],{"align":80},"Abgleich der Filelist mit den Dateien auf der Festplatte",[75,110,111,116],{},[91,112,113],{"align":80},[17,114,115],{},"opmbuild dependencies MyPackage.sopm",[91,117,118],{"align":80},"Abhängigkeiten auflisten",[75,120,121,126],{},[91,122,123],{"align":80},[17,124,125],{},"opmbuild build --output dist\u002F MyPackage.sopm",[91,127,128,130],{"align":80},[17,129,23],{},"-Datei erzeugen",[75,132,133,138],{},[91,134,135],{"align":80},[17,136,137],{},"opmbuild index repo\u002F",[91,139,140,141,143],{"align":80},"Repository-Index-XML für ein Verzeichnis mit ",[17,142,23],{},"-Dateien erstellen",[31,145,147],{"id":146},"github-actions-beispiel","GitHub Actions Beispiel",[36,149,153],{"className":150,"code":151,"language":152,"meta":41,"style":41},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: Build OPM package\n\non:\n  push:\n    tags: ['v*']\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    container: perl:5.40\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Install OPM::Maker\n        run: cpanm --notest OPM::Maker\n\n      - name: Validate manifest\n        run: |\n          opmbuild sopmtest MyPackage.sopm\n          opmbuild filetest MyPackage.sopm\n\n      - name: Build .opm\n        run: opmbuild build --output dist\u002F MyPackage.sopm\n\n      - name: Upload artifact\n        uses: actions\u002Fupload-artifact@v4\n        with:\n          name: opm-package\n          path: dist\u002F*.opm\n","yaml",[17,154,155,168,175,185,193,215,220,228,236,247,258,266,280,285,298,309,314,326,337,343,349,354,366,376,381,393,404,412,423],{"__ignoreMap":41},[45,156,157,161,165],{"class":47,"line":48},[45,158,160],{"class":159},"swJcz","name",[45,162,164],{"class":163},"sMK4o",":",[45,166,167],{"class":55}," Build OPM package\n",[45,169,171],{"class":47,"line":170},2,[45,172,174],{"emptyLinePlaceholder":173},true,"\n",[45,176,178,182],{"class":47,"line":177},3,[45,179,181],{"class":180},"sfNiH","on",[45,183,184],{"class":163},":\n",[45,186,188,191],{"class":47,"line":187},4,[45,189,190],{"class":159},"  push",[45,192,184],{"class":163},[45,194,196,199,201,204,207,210,212],{"class":47,"line":195},5,[45,197,198],{"class":159},"    tags",[45,200,164],{"class":163},[45,202,203],{"class":163}," [",[45,205,206],{"class":163},"'",[45,208,209],{"class":55},"v*",[45,211,206],{"class":163},[45,213,214],{"class":163},"]\n",[45,216,218],{"class":47,"line":217},6,[45,219,174],{"emptyLinePlaceholder":173},[45,221,223,226],{"class":47,"line":222},7,[45,224,225],{"class":159},"jobs",[45,227,184],{"class":163},[45,229,231,234],{"class":47,"line":230},8,[45,232,233],{"class":159},"  build",[45,235,184],{"class":163},[45,237,239,242,244],{"class":47,"line":238},9,[45,240,241],{"class":159},"    runs-on",[45,243,164],{"class":163},[45,245,246],{"class":55}," ubuntu-latest\n",[45,248,250,253,255],{"class":47,"line":249},10,[45,251,252],{"class":159},"    container",[45,254,164],{"class":163},[45,256,257],{"class":55}," perl:5.40\n",[45,259,261,264],{"class":47,"line":260},11,[45,262,263],{"class":159},"    steps",[45,265,184],{"class":163},[45,267,269,272,275,277],{"class":47,"line":268},12,[45,270,271],{"class":163},"      -",[45,273,274],{"class":159}," uses",[45,276,164],{"class":163},[45,278,279],{"class":55}," actions\u002Fcheckout@v4\n",[45,281,283],{"class":47,"line":282},13,[45,284,174],{"emptyLinePlaceholder":173},[45,286,288,290,293,295],{"class":47,"line":287},14,[45,289,271],{"class":163},[45,291,292],{"class":159}," name",[45,294,164],{"class":163},[45,296,297],{"class":55}," Install OPM::Maker\n",[45,299,301,304,306],{"class":47,"line":300},15,[45,302,303],{"class":159},"        run",[45,305,164],{"class":163},[45,307,308],{"class":55}," cpanm --notest OPM::Maker\n",[45,310,312],{"class":47,"line":311},16,[45,313,174],{"emptyLinePlaceholder":173},[45,315,317,319,321,323],{"class":47,"line":316},17,[45,318,271],{"class":163},[45,320,292],{"class":159},[45,322,164],{"class":163},[45,324,325],{"class":55}," Validate manifest\n",[45,327,329,331,333],{"class":47,"line":328},18,[45,330,303],{"class":159},[45,332,164],{"class":163},[45,334,336],{"class":335},"s7zQu"," |\n",[45,338,340],{"class":47,"line":339},19,[45,341,342],{"class":55},"          opmbuild sopmtest MyPackage.sopm\n",[45,344,346],{"class":47,"line":345},20,[45,347,348],{"class":55},"          opmbuild filetest MyPackage.sopm\n",[45,350,352],{"class":47,"line":351},21,[45,353,174],{"emptyLinePlaceholder":173},[45,355,357,359,361,363],{"class":47,"line":356},22,[45,358,271],{"class":163},[45,360,292],{"class":159},[45,362,164],{"class":163},[45,364,365],{"class":55}," Build .opm\n",[45,367,369,371,373],{"class":47,"line":368},23,[45,370,303],{"class":159},[45,372,164],{"class":163},[45,374,375],{"class":55}," opmbuild build --output dist\u002F MyPackage.sopm\n",[45,377,379],{"class":47,"line":378},24,[45,380,174],{"emptyLinePlaceholder":173},[45,382,384,386,388,390],{"class":47,"line":383},25,[45,385,271],{"class":163},[45,387,292],{"class":159},[45,389,164],{"class":163},[45,391,392],{"class":55}," Upload artifact\n",[45,394,396,399,401],{"class":47,"line":395},26,[45,397,398],{"class":159},"        uses",[45,400,164],{"class":163},[45,402,403],{"class":55}," actions\u002Fupload-artifact@v4\n",[45,405,407,410],{"class":47,"line":406},27,[45,408,409],{"class":159},"        with",[45,411,184],{"class":163},[45,413,415,418,420],{"class":47,"line":414},28,[45,416,417],{"class":159},"          name",[45,419,164],{"class":163},[45,421,422],{"class":55}," opm-package\n",[45,424,426,429,431],{"class":47,"line":425},29,[45,427,428],{"class":159},"          path",[45,430,164],{"class":163},[45,432,433],{"class":55}," dist\u002F*.opm\n",[31,435,437],{"id":436},"ohne-eigene-pipeline-der-hub-build-service","Ohne eigene Pipeline: der Hub-Build-Service",[14,439,440,441,443,444,447,448,453],{},"Open ITSM Hub betreibt optional einen zustandslosen Dienst, der ",[17,442,62],{}," hinter einer HTTP-API kapselt (siehe ",[17,445,446],{},"backend\u002Fopmbuild-service","). Wenn er aktiviert ist, führen der ",[449,450,452],"a",{"href":451},"\u002Ftools\u002Fsopm-validator",".sopm-Validator"," und die Generatoren die echte Perl-Prüfung serverseitig aus — ganz ohne lokale Perl-Installation.",[31,455,457],{"id":456},"tipp-multi-framework-builds","Tipp: Multi-Framework-Builds",[14,459,460,461,464,465,468,469,472,473,475,476,480],{},"Da ein ",[17,462,463],{},".sopm"," mehrere ",[17,466,467],{},"\u003CFramework>","-Zeilen enthalten kann, erzeugt ",[26,470,471],{},"ein"," Build ein ",[17,474,23],{},", das auf allen deklarierten Forks installierbar ist. Prüfen Sie die Abdeckung vorab mit dem ",[449,477,479],{"href":478},"\u002Ftools\u002Fcompatibility-checker","Kompatibilitäts-Checker",".",[482,483,484],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":41,"searchDepth":170,"depth":170,"links":486},[487,488,489,490,491],{"id":33,"depth":170,"text":34},{"id":66,"depth":170,"text":67},{"id":146,"depth":170,"text":147},{"id":436,"depth":170,"text":437},{"id":456,"depth":170,"text":457},"Automatisierung","Bauen und testen Sie OTOBO-\u002FZnuny-Pakete automatisiert ohne installiertes Ticket-System — mit dem CPAN-Tool OPM::Maker (opmbuild) in GitHub Actions.",false,"md",{},60,"\u002Fdocs\u002Fci-cd-opmbuild",{"title":5,"description":493},"docs\u002Fci-cd-opmbuild","Uvek-bkbkwUEpHdpKjiEGQkXPKwhbBWB_RULgIBBaY4",1785427360730]