[{"data":1,"prerenderedAt":11355},["ShallowReactive",2],{"plugins":3,"$fHjgHa7JiU-d4Y7-UUOZrPzQNVV1ZtTpFamuCTA6rKQ0":1968,"-docs-build-plugins":2608,"-docs-build-plugins-surround":11350},[4,214,363,504,627,764,902,1041,1145,1284,1422,1564,1700,1835],{"id":5,"title":6,"_id":7,"_partial":8,"_path":7,"body":9,"categories":7,"category":150,"contributors":151,"description":19,"extension":188,"github":131,"icon":189,"learn_more":7,"maintainers":190,"meta":199,"name":200,"navigation":201,"npm":6,"path":202,"repo":203,"seo":204,"sponsor":8,"stats":205,"stem":211,"type":212,"website":131,"__hash__":213},"plugins\u002Fplugins\u002Fa11y.md","@nuxt\u002Fa11y",null,false,{"type":10,"value":11,"toc":145},"minimark",[12,16,20,24,50,53,60,119,122,141],[13,14,6],"h1",{"id":15},"nuxta11y",[17,18,19],"p",{},"在开发期间在浏览器中提供实时可访问性反馈和自动测试。",[21,22,23],"h2",{"id":23},"安装",[25,26,31],"pre",{"className":27,"code":28,"language":29,"meta":30,"style":30},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npm install @nuxt\u002Fa11y\n","bash","",[32,33,34],"code",{"__ignoreMap":30},[35,36,39,43,47],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"s52Pk","npm",[35,44,46],{"class":45},"sGFVr"," install",[35,48,49],{"class":45}," @nuxt\u002Fa11y\n",[21,51,52],{"id":52},"使用",[17,54,55,56,59],{},"将插件添加到您的 ",[32,57,58],{},"nuxt.config.ts",":",[25,61,65],{"className":62,"code":63,"language":64,"meta":30,"style":30},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fa11y']\n})\n","ts",[32,66,67,88,110],{"__ignoreMap":30},[35,68,69,73,76,80,84],{"class":37,"line":38},[35,70,72],{"class":71},"s8R28","export",[35,74,75],{"class":71}," default",[35,77,79],{"class":78},"s3cPz"," defineNuxtConfig",[35,81,83],{"class":82},"sZSNi","(",[35,85,87],{"class":86},"sDfIl","{\n",[35,89,91,95,97,100,103,105,107],{"class":37,"line":90},2,[35,92,94],{"class":93},"sRlkE","  modules",[35,96,59],{"class":86},[35,98,99],{"class":82}," [",[35,101,102],{"class":86},"'",[35,104,6],{"class":45},[35,106,102],{"class":86},[35,108,109],{"class":82},"]\n",[35,111,113,116],{"class":37,"line":112},3,[35,114,115],{"class":86},"}",[35,117,118],{"class":82},")\n",[21,120,121],{"id":121},"链接",[123,124,125,135],"ul",{},[126,127,128],"li",{},[129,130,134],"a",{"href":131,"rel":132},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fa11y",[133],"nofollow","文档",[126,136,137],{},[129,138,140],{"href":131,"rel":139},[133],"GitHub",[142,143,144],"style",{},"html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--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 .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}",{"title":30,"searchDepth":90,"depth":90,"links":146},[147,148,149],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Devtools",[152,155,158,161,165,169,173,177,180,184],{"id":38,"username":153,"contributions":154},"user99376",43,{"id":90,"username":156,"contributions":157},"user86649",16,{"id":112,"username":159,"contributions":160},"user49829",57,{"id":162,"username":163,"contributions":164},4,"user72634",14,{"id":166,"username":167,"contributions":168},5,"user28650",92,{"id":170,"username":171,"contributions":172},6,"user8758",55,{"id":174,"username":175,"contributions":176},7,"user74896",89,{"id":178,"username":179,"contributions":160},8,"user51798",{"id":181,"username":182,"contributions":183},9,"user67000",32,{"id":185,"username":186,"contributions":187},10,"user11627",36,"md","nuxt.svg",[191,195],{"name":192,"github":193,"bluesky":194},"Tim Damen","timdamen","timdamen.io",{"name":196,"github":197,"bluesky":198},"Daniel Roe","danielroe","danielroe.dev",{},"a11y",true,"\u002Fplugins\u002Fa11y","nuxt\u002Fa11y",{"title":6,"description":19},{"downloads":206,"stars":207,"watchers":208,"forks":209,"defaultBranch":210},2272902,36407,4858,1470,"main","plugins\u002Fa11y","official","YLxALoH_wZAsqCG6CMMXV7CM10sA6Y-aWquupJl5GMM",{"id":215,"title":216,"_id":7,"_partial":8,"_path":7,"body":217,"categories":7,"category":309,"contributors":310,"description":224,"extension":188,"github":300,"icon":189,"learn_more":7,"maintainers":338,"meta":351,"name":352,"navigation":201,"npm":216,"path":353,"repo":354,"seo":355,"sponsor":8,"stats":356,"stem":361,"type":212,"website":294,"__hash__":362},"plugins\u002Fplugins\u002Fcontent.md","@nuxt\u002Fcontent",{"type":10,"value":218,"toc":304},[219,222,225,227,241,243,247,286,288,302],[13,220,216],{"id":221},"nuxtcontent",[17,223,224],{},"基于文件的 CMS，支持 Markdown、YAML、JSON。",[21,226,23],{"id":23},[25,228,230],{"className":27,"code":229,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fcontent\n",[32,231,232],{"__ignoreMap":30},[35,233,234,236,238],{"class":37,"line":38},[35,235,42],{"class":41},[35,237,46],{"class":45},[35,239,240],{"class":45}," @nuxt\u002Fcontent\n",[21,242,52],{"id":52},[17,244,55,245,59],{},[32,246,58],{},[25,248,250],{"className":62,"code":249,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fcontent']\n})\n",[32,251,252,264,280],{"__ignoreMap":30},[35,253,254,256,258,260,262],{"class":37,"line":38},[35,255,72],{"class":71},[35,257,75],{"class":71},[35,259,79],{"class":78},[35,261,83],{"class":82},[35,263,87],{"class":86},[35,265,266,268,270,272,274,276,278],{"class":37,"line":90},[35,267,94],{"class":93},[35,269,59],{"class":86},[35,271,99],{"class":82},[35,273,102],{"class":86},[35,275,216],{"class":45},[35,277,102],{"class":86},[35,279,109],{"class":82},[35,281,282,284],{"class":37,"line":112},[35,283,115],{"class":86},[35,285,118],{"class":82},[21,287,121],{"id":121},[123,289,290,296],{},[126,291,292],{},[129,293,134],{"href":294,"rel":295},"https:\u002F\u002Fcontent.nuxt.com",[133],[126,297,298],{},[129,299,140],{"href":300,"rel":301},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fcontent",[133],[142,303,144],{},{"title":30,"searchDepth":90,"depth":90,"links":305},[306,307,308],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"CMS",[311,314,317,319,322,324,327,330,333,335],{"id":38,"username":312,"contributions":313},"user13979",60,{"id":90,"username":315,"contributions":316},"user10947",52,{"id":112,"username":318,"contributions":187},"user11345",{"id":162,"username":320,"contributions":321},"user77708",64,{"id":166,"username":323,"contributions":183},"user96159",{"id":170,"username":325,"contributions":326},"user10252",65,{"id":174,"username":328,"contributions":329},"user88319",37,{"id":178,"username":331,"contributions":332},"user83651",74,{"id":181,"username":334,"contributions":183},"user76515",{"id":185,"username":336,"contributions":337},"user63596",73,[339,343,347],{"name":340,"github":341,"bluesky":342},"Farnabaz","farnabaz","farnabaz.dev",{"name":344,"github":345,"bluesky":346},"Baptiste Leproux","larbish","larbish.bsky.social",{"name":348,"github":349,"bluesky":350},"Sébastien Chopin","Atinux","atinux.com",{},"content","\u002Fplugins\u002Fcontent","nuxt\u002Fcontent#main",{"title":216,"description":224},{"downloads":357,"stars":358,"watchers":359,"forks":360,"defaultBranch":210},201400,37560,3723,499,"plugins\u002Fcontent","MPWexsb65o956t8kAcciteLzN5MYNwClRrI_CaJBSKg",{"id":364,"title":365,"_id":7,"_partial":8,"_path":7,"body":366,"categories":7,"category":150,"contributors":458,"description":373,"extension":188,"github":449,"icon":189,"learn_more":7,"maintainers":487,"meta":492,"name":493,"navigation":201,"npm":365,"path":494,"repo":495,"seo":496,"sponsor":8,"stats":497,"stem":502,"type":212,"website":443,"__hash__":503},"plugins\u002Fplugins\u002Fdevtools.md","@nuxt\u002Fdevtools",{"type":10,"value":367,"toc":453},[368,371,374,376,390,392,396,435,437,451],[13,369,365],{"id":370},"nuxtdevtools",[17,372,373],{},"帮助您更好地了解 Nuxt 应用程序的可视化工具。",[21,375,23],{"id":23},[25,377,379],{"className":27,"code":378,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fdevtools\n",[32,380,381],{"__ignoreMap":30},[35,382,383,385,387],{"class":37,"line":38},[35,384,42],{"class":41},[35,386,46],{"class":45},[35,388,389],{"class":45}," @nuxt\u002Fdevtools\n",[21,391,52],{"id":52},[17,393,55,394,59],{},[32,395,58],{},[25,397,399],{"className":62,"code":398,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fdevtools']\n})\n",[32,400,401,413,429],{"__ignoreMap":30},[35,402,403,405,407,409,411],{"class":37,"line":38},[35,404,72],{"class":71},[35,406,75],{"class":71},[35,408,79],{"class":78},[35,410,83],{"class":82},[35,412,87],{"class":86},[35,414,415,417,419,421,423,425,427],{"class":37,"line":90},[35,416,94],{"class":93},[35,418,59],{"class":86},[35,420,99],{"class":82},[35,422,102],{"class":86},[35,424,365],{"class":45},[35,426,102],{"class":86},[35,428,109],{"class":82},[35,430,431,433],{"class":37,"line":112},[35,432,115],{"class":86},[35,434,118],{"class":82},[21,436,121],{"id":121},[123,438,439,445],{},[126,440,441],{},[129,442,134],{"href":443,"rel":444},"https:\u002F\u002Fdevtools.nuxt.com",[133],[126,446,447],{},[129,448,140],{"href":449,"rel":450},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fdevtools",[133],[142,452,144],{},{"title":30,"searchDepth":90,"depth":90,"links":454},[455,456,457],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[459,462,464,467,470,473,476,479,482,485],{"id":38,"username":460,"contributions":461},"user84341",23,{"id":90,"username":463,"contributions":174},"user10137",{"id":112,"username":465,"contributions":466},"user19110",67,{"id":162,"username":468,"contributions":469},"user69842",54,{"id":166,"username":471,"contributions":472},"user65163",29,{"id":170,"username":474,"contributions":475},"user87690",77,{"id":174,"username":477,"contributions":478},"user48871",99,{"id":178,"username":480,"contributions":481},"user11541",97,{"id":181,"username":483,"contributions":484},"user31909",90,{"id":185,"username":486,"contributions":332},"user72693",[488],{"name":489,"github":490,"bluesky":491},"Anthony Fu","antfu","antfu.me",{},"devtools","\u002Fplugins\u002Fdevtools","nuxt\u002Fdevtools#main\u002Fpackages\u002Fdevtools",{"title":365,"description":373},{"downloads":498,"stars":499,"watchers":500,"forks":501,"defaultBranch":210},338641,49933,433,225,"plugins\u002Fdevtools","TT6qV1tkhfILzk2j1f23tBPQu61DhF4FgXZ3Ap8Ntt0",{"id":505,"title":506,"_id":7,"_partial":8,"_path":7,"body":507,"categories":7,"category":150,"contributors":606,"description":514,"extension":188,"github":590,"icon":189,"learn_more":596,"maintainers":613,"meta":615,"name":616,"navigation":201,"npm":506,"path":617,"repo":618,"seo":619,"sponsor":8,"stats":620,"stem":625,"type":212,"website":584,"__hash__":626},"plugins\u002Fplugins\u002Feslint.md","@nuxt\u002Feslint",{"type":10,"value":508,"toc":601},[509,512,515,517,531,533,537,576,578,599],[13,510,506],{"id":511},"nuxteslint",[17,513,514],{},"项目感知、易于使用、可扩展且面向未来的 ESLint 集成。",[21,516,23],{"id":23},[25,518,520],{"className":27,"code":519,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Feslint\n",[32,521,522],{"__ignoreMap":30},[35,523,524,526,528],{"class":37,"line":38},[35,525,42],{"class":41},[35,527,46],{"class":45},[35,529,530],{"class":45}," @nuxt\u002Feslint\n",[21,532,52],{"id":52},[17,534,55,535,59],{},[32,536,58],{},[25,538,540],{"className":62,"code":539,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Feslint']\n})\n",[32,541,542,554,570],{"__ignoreMap":30},[35,543,544,546,548,550,552],{"class":37,"line":38},[35,545,72],{"class":71},[35,547,75],{"class":71},[35,549,79],{"class":78},[35,551,83],{"class":82},[35,553,87],{"class":86},[35,555,556,558,560,562,564,566,568],{"class":37,"line":90},[35,557,94],{"class":93},[35,559,59],{"class":86},[35,561,99],{"class":82},[35,563,102],{"class":86},[35,565,506],{"class":45},[35,567,102],{"class":86},[35,569,109],{"class":82},[35,571,572,574],{"class":37,"line":112},[35,573,115],{"class":86},[35,575,118],{"class":82},[21,577,121],{"id":121},[123,579,580,586,592],{},[126,581,582],{},[129,583,134],{"href":584,"rel":585},"https:\u002F\u002Feslint.nuxt.com",[133],[126,587,588],{},[129,589,140],{"href":590,"rel":591},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Feslint",[133],[126,593,594],{},[129,595,598],{"href":596,"rel":597},"https:\u002F\u002Feslint.nuxt.com\u002Fpackages\u002Fmodule",[133],"了解更多",[142,600,144],{},{"title":30,"searchDepth":90,"depth":90,"links":602},[603,604,605],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[607,610],{"id":38,"username":608,"contributions":609},"user30113",84,{"id":90,"username":611,"contributions":612},"user63757",82,[614],{"name":489,"github":490,"bluesky":491},{},"eslint","\u002Fplugins\u002Feslint","nuxt\u002Feslint",{"title":506,"description":514},{"downloads":621,"stars":622,"watchers":623,"forks":624,"defaultBranch":210},4219129,40472,1319,493,"plugins\u002Feslint","y2i5lamEk99gHsmaCVBOf7SwD-h3Q5biJ5CqBsfaDlQ",{"id":628,"title":629,"_id":7,"_partial":8,"_path":7,"body":630,"categories":7,"category":722,"contributors":723,"description":637,"extension":188,"github":713,"icon":189,"learn_more":7,"maintainers":750,"meta":752,"name":753,"navigation":201,"npm":629,"path":754,"repo":755,"seo":756,"sponsor":8,"stats":757,"stem":762,"type":212,"website":707,"__hash__":763},"plugins\u002Fplugins\u002Ffonts.md","@nuxt\u002Ffonts",{"type":10,"value":631,"toc":717},[632,635,638,640,654,656,660,699,701,715],[13,633,629],{"id":634},"nuxtfonts",[17,636,637],{},"添加自定义 Web 字体，注重性能。",[21,639,23],{"id":23},[25,641,643],{"className":27,"code":642,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ffonts\n",[32,644,645],{"__ignoreMap":30},[35,646,647,649,651],{"class":37,"line":38},[35,648,42],{"class":41},[35,650,46],{"class":45},[35,652,653],{"class":45}," @nuxt\u002Ffonts\n",[21,655,52],{"id":52},[17,657,55,658,59],{},[32,659,58],{},[25,661,663],{"className":62,"code":662,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ffonts']\n})\n",[32,664,665,677,693],{"__ignoreMap":30},[35,666,667,669,671,673,675],{"class":37,"line":38},[35,668,72],{"class":71},[35,670,75],{"class":71},[35,672,79],{"class":78},[35,674,83],{"class":82},[35,676,87],{"class":86},[35,678,679,681,683,685,687,689,691],{"class":37,"line":90},[35,680,94],{"class":93},[35,682,59],{"class":86},[35,684,99],{"class":82},[35,686,102],{"class":86},[35,688,629],{"class":45},[35,690,102],{"class":86},[35,692,109],{"class":82},[35,694,695,697],{"class":37,"line":112},[35,696,115],{"class":86},[35,698,118],{"class":82},[21,700,121],{"id":121},[123,702,703,709],{},[126,704,705],{},[129,706,134],{"href":707,"rel":708},"https:\u002F\u002Ffonts.nuxt.com",[133],[126,710,711],{},[129,712,140],{"href":713,"rel":714},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ffonts",[133],[142,716,144],{},{"title":30,"searchDepth":90,"depth":90,"links":718},[719,720,721],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Fonts",[724,727,730,733,735,738,741,744,746,748],{"id":38,"username":725,"contributions":726},"user42306",56,{"id":90,"username":728,"contributions":729},"user71199",33,{"id":112,"username":731,"contributions":732},"user16707",22,{"id":162,"username":734,"contributions":176},"user13463",{"id":166,"username":736,"contributions":737},"user63863",80,{"id":170,"username":739,"contributions":740},"user72286",35,{"id":174,"username":742,"contributions":743},"user84726",48,{"id":178,"username":745,"contributions":187},"user22103",{"id":181,"username":747,"contributions":164},"user45708",{"id":185,"username":749,"contributions":475},"user14848",[751],{"name":196,"github":197,"bluesky":198},{},"fonts","\u002Fplugins\u002Ffonts","nuxt\u002Ffonts",{"title":629,"description":637},{"downloads":758,"stars":759,"watchers":760,"forks":761,"defaultBranch":210},701472,23636,1481,2636,"plugins\u002Ffonts","T0fSWfcZn4S2Byr1npK0ulV8J1a2e4adeTZfj-sX5fc",{"id":765,"title":766,"_id":7,"_partial":8,"_path":7,"body":767,"categories":7,"category":150,"contributors":858,"description":774,"extension":188,"github":844,"icon":189,"learn_more":7,"maintainers":885,"meta":890,"name":891,"navigation":201,"npm":766,"path":892,"repo":893,"seo":894,"sponsor":8,"stats":895,"stem":900,"type":212,"website":844,"__hash__":901},"plugins\u002Fplugins\u002Fhints.md","@nuxt\u002Fhints",{"type":10,"value":768,"toc":853},[769,772,775,777,791,793,797,836,838,851],[13,770,766],{"id":771},"nuxthints",[17,773,774],{},"Nuxt 插件，显示应用程序各方面的提示，如性能、安全等！",[21,776,23],{"id":23},[25,778,780],{"className":27,"code":779,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fhints\n",[32,781,782],{"__ignoreMap":30},[35,783,784,786,788],{"class":37,"line":38},[35,785,42],{"class":41},[35,787,46],{"class":45},[35,789,790],{"class":45}," @nuxt\u002Fhints\n",[21,792,52],{"id":52},[17,794,55,795,59],{},[32,796,58],{},[25,798,800],{"className":62,"code":799,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fhints']\n})\n",[32,801,802,814,830],{"__ignoreMap":30},[35,803,804,806,808,810,812],{"class":37,"line":38},[35,805,72],{"class":71},[35,807,75],{"class":71},[35,809,79],{"class":78},[35,811,83],{"class":82},[35,813,87],{"class":86},[35,815,816,818,820,822,824,826,828],{"class":37,"line":90},[35,817,94],{"class":93},[35,819,59],{"class":86},[35,821,99],{"class":82},[35,823,102],{"class":86},[35,825,766],{"class":45},[35,827,102],{"class":86},[35,829,109],{"class":82},[35,831,832,834],{"class":37,"line":112},[35,833,115],{"class":86},[35,835,118],{"class":82},[21,837,121],{"id":121},[123,839,840,846],{},[126,841,842],{},[129,843,134],{"href":844,"rel":845},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fhints",[133],[126,847,848],{},[129,849,140],{"href":844,"rel":850},[133],[142,852,144],{},{"title":30,"searchDepth":90,"depth":90,"links":854},[855,856,857],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[859,862,865,867,869,871,874,877,879,882],{"id":38,"username":860,"contributions":861},"user6533",91,{"id":90,"username":863,"contributions":864},"user71544",18,{"id":112,"username":866,"contributions":337},"user91675",{"id":162,"username":868,"contributions":166},"user25368",{"id":166,"username":870,"contributions":187},"user16215",{"id":170,"username":872,"contributions":873},"user81050",38,{"id":174,"username":875,"contributions":876},"user19700",44,{"id":178,"username":878,"contributions":321},"user41134",{"id":181,"username":880,"contributions":881},"user20762",19,{"id":185,"username":883,"contributions":884},"user339",42,[886],{"name":887,"github":888,"bluesky":889},"Julien Huang","huang-julien","julienhuang-dev.bsky.social",{},"hints","\u002Fplugins\u002Fhints","nuxt\u002Fhints",{"title":766,"description":774},{"downloads":896,"stars":897,"watchers":898,"forks":899,"defaultBranch":210},2213397,14758,1404,545,"plugins\u002Fhints","M4nkyrPTPXtaPD1YbnzIHqsvw9KU-5hHKG6Hp--8MMc",{"id":903,"title":904,"_id":7,"_partial":8,"_path":7,"body":905,"categories":7,"category":996,"contributors":997,"description":912,"extension":188,"github":982,"icon":189,"learn_more":7,"maintainers":1026,"meta":1029,"name":1030,"navigation":201,"npm":904,"path":1031,"repo":1032,"seo":1033,"sponsor":8,"stats":1034,"stem":1039,"type":212,"website":982,"__hash__":1040},"plugins\u002Fplugins\u002Ficon.md","@nuxt\u002Ficon",{"type":10,"value":906,"toc":991},[907,910,913,915,929,931,935,974,976,989],[13,908,904],{"id":909},"nuxticon",[17,911,912],{},"Nuxt 的图标插件，包含来自 Iconify 的 200,000+ 个即用图标。",[21,914,23],{"id":23},[25,916,918],{"className":27,"code":917,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ficon\n",[32,919,920],{"__ignoreMap":30},[35,921,922,924,926],{"class":37,"line":38},[35,923,42],{"class":41},[35,925,46],{"class":45},[35,927,928],{"class":45}," @nuxt\u002Ficon\n",[21,930,52],{"id":52},[17,932,55,933,59],{},[32,934,58],{},[25,936,938],{"className":62,"code":937,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ficon']\n})\n",[32,939,940,952,968],{"__ignoreMap":30},[35,941,942,944,946,948,950],{"class":37,"line":38},[35,943,72],{"class":71},[35,945,75],{"class":71},[35,947,79],{"class":78},[35,949,83],{"class":82},[35,951,87],{"class":86},[35,953,954,956,958,960,962,964,966],{"class":37,"line":90},[35,955,94],{"class":93},[35,957,59],{"class":86},[35,959,99],{"class":82},[35,961,102],{"class":86},[35,963,904],{"class":45},[35,965,102],{"class":86},[35,967,109],{"class":82},[35,969,970,972],{"class":37,"line":112},[35,971,115],{"class":86},[35,973,118],{"class":82},[21,975,121],{"id":121},[123,977,978,984],{},[126,979,980],{},[129,981,134],{"href":982,"rel":983},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ficon",[133],[126,985,986],{},[129,987,140],{"href":982,"rel":988},[133],[142,990,144],{},{"title":30,"searchDepth":90,"depth":90,"links":992},[993,994,995],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"UI",[998,1001,1004,1007,1010,1012,1015,1018,1020,1023],{"id":38,"username":999,"contributions":1000},"user37024",11,{"id":90,"username":1002,"contributions":1003},"user87306",70,{"id":112,"username":1005,"contributions":1006},"user73353",45,{"id":162,"username":1008,"contributions":1009},"user58644",20,{"id":166,"username":1011,"contributions":38},"user69260",{"id":170,"username":1013,"contributions":1014},"user30247",30,{"id":174,"username":1016,"contributions":1017},"user18477",41,{"id":178,"username":1019,"contributions":160},"user52769",{"id":181,"username":1021,"contributions":1022},"user43970",75,{"id":185,"username":1024,"contributions":1025},"user98140",12,[1027,1028],{"name":348,"github":349,"bluesky":350},{"name":489,"github":490,"bluesky":491},{},"icon","\u002Fplugins\u002Ficon","nuxt\u002Ficon",{"title":904,"description":912},{"downloads":1035,"stars":1036,"watchers":1037,"forks":1038,"defaultBranch":210},3202080,45665,4249,188,"plugins\u002Ficon","qOiuB-isRs131Q2t8HEr0bLG3_Lq-TrBdqcsYYbaouc",{"id":1042,"title":1043,"_id":7,"_partial":8,"_path":7,"body":1044,"categories":7,"category":1136,"contributors":7,"description":1051,"extension":188,"github":1127,"icon":189,"learn_more":7,"maintainers":7,"meta":1137,"name":1138,"navigation":201,"npm":1043,"path":1139,"repo":1140,"seo":1141,"sponsor":8,"stats":7,"stem":1142,"type":1143,"website":1121,"__hash__":1144},"plugins\u002Fplugins\u002Fimage.md","@nuxt\u002Fimage",{"type":10,"value":1045,"toc":1131},[1046,1049,1052,1054,1068,1070,1074,1113,1115,1129],[13,1047,1043],{"id":1048},"nuxtimage",[17,1050,1051],{},"添加图片，支持渐进式处理、懒加载、调整大小和提供商支持。",[21,1053,23],{"id":23},[25,1055,1057],{"className":27,"code":1056,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fimage\n",[32,1058,1059],{"__ignoreMap":30},[35,1060,1061,1063,1065],{"class":37,"line":38},[35,1062,42],{"class":41},[35,1064,46],{"class":45},[35,1066,1067],{"class":45}," @nuxt\u002Fimage\n",[21,1069,52],{"id":52},[17,1071,55,1072,59],{},[32,1073,58],{},[25,1075,1077],{"className":62,"code":1076,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fimage']\n})\n",[32,1078,1079,1091,1107],{"__ignoreMap":30},[35,1080,1081,1083,1085,1087,1089],{"class":37,"line":38},[35,1082,72],{"class":71},[35,1084,75],{"class":71},[35,1086,79],{"class":78},[35,1088,83],{"class":82},[35,1090,87],{"class":86},[35,1092,1093,1095,1097,1099,1101,1103,1105],{"class":37,"line":90},[35,1094,94],{"class":93},[35,1096,59],{"class":86},[35,1098,99],{"class":82},[35,1100,102],{"class":86},[35,1102,1043],{"class":45},[35,1104,102],{"class":86},[35,1106,109],{"class":82},[35,1108,1109,1111],{"class":37,"line":112},[35,1110,115],{"class":86},[35,1112,118],{"class":82},[21,1114,121],{"id":121},[123,1116,1117,1123],{},[126,1118,1119],{},[129,1120,134],{"href":1121,"rel":1122},"https:\u002F\u002Fimage.nuxt.com",[133],[126,1124,1125],{},[129,1126,140],{"href":1127,"rel":1128},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fimage",[133],[142,1130,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1132},[1133,1134,1135],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Images",{},"image","\u002Fplugins\u002Fimage","nuxt\u002Fimage",{"title":1043,"description":1051},"plugins\u002Fimage","[object Object]","CXK46BX2BS38OrXRmxzhBG5zRJ5aqUOc_MQQMO_IddQ",{"id":1146,"title":1147,"_id":7,"_partial":8,"_path":7,"body":1148,"categories":7,"category":1245,"contributors":1246,"description":1154,"extension":188,"github":1230,"icon":1267,"learn_more":1236,"maintainers":1268,"meta":1272,"name":1147,"navigation":201,"npm":1147,"path":1273,"repo":1274,"seo":1275,"sponsor":8,"stats":1276,"stem":1281,"type":1282,"website":1224,"__hash__":1283},"plugins\u002Fplugins\u002Fnuxt-auth-sanctum.md","nuxt-auth-sanctum",{"type":10,"value":1149,"toc":1240},[1150,1152,1155,1157,1171,1173,1177,1216,1218,1238],[13,1151,1147],{"id":1147},[17,1153,1154],{},"Laravel Sanctum 身份验证的 Nuxt 插件",[21,1156,23],{"id":23},[25,1158,1160],{"className":27,"code":1159,"language":29,"meta":30,"style":30},"npm install nuxt-auth-sanctum\n",[32,1161,1162],{"__ignoreMap":30},[35,1163,1164,1166,1168],{"class":37,"line":38},[35,1165,42],{"class":41},[35,1167,46],{"class":45},[35,1169,1170],{"class":45}," nuxt-auth-sanctum\n",[21,1172,52],{"id":52},[17,1174,55,1175,59],{},[32,1176,58],{},[25,1178,1180],{"className":62,"code":1179,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-auth-sanctum']\n})\n",[32,1181,1182,1194,1210],{"__ignoreMap":30},[35,1183,1184,1186,1188,1190,1192],{"class":37,"line":38},[35,1185,72],{"class":71},[35,1187,75],{"class":71},[35,1189,79],{"class":78},[35,1191,83],{"class":82},[35,1193,87],{"class":86},[35,1195,1196,1198,1200,1202,1204,1206,1208],{"class":37,"line":90},[35,1197,94],{"class":93},[35,1199,59],{"class":86},[35,1201,99],{"class":82},[35,1203,102],{"class":86},[35,1205,1147],{"class":45},[35,1207,102],{"class":86},[35,1209,109],{"class":82},[35,1211,1212,1214],{"class":37,"line":112},[35,1213,115],{"class":86},[35,1215,118],{"class":82},[21,1217,121],{"id":121},[123,1219,1220,1226,1232],{},[126,1221,1222],{},[129,1223,134],{"href":1224,"rel":1225},"https:\u002F\u002Fsanctum.manchenkoff.me",[133],[126,1227,1228],{},[129,1229,140],{"href":1230,"rel":1231},"https:\u002F\u002Fgithub.com\u002Fmanchenkoff\u002Fnuxt-auth-sanctum",[133],[126,1233,1234],{},[129,1235,598],{"href":1236,"rel":1237},"https:\u002F\u002Flaravel.com\u002Fdocs\u002F12.x\u002Fsanctum",[133],[142,1239,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1241},[1242,1243,1244],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Security",[1247,1249,1251,1254,1257,1259,1262,1264],{"id":38,"username":1248,"contributions":337},"user3491",{"id":90,"username":1250,"contributions":478},"user52329",{"id":112,"username":1252,"contributions":1253},"user34359",81,{"id":162,"username":1255,"contributions":1256},"user86267",13,{"id":166,"username":1258,"contributions":166},"user71011",{"id":170,"username":1260,"contributions":1261},"user87107",86,{"id":174,"username":1263,"contributions":475},"user69652",{"id":178,"username":1265,"contributions":1266},"user80629",72,"laravel.svg",[1269],{"name":1270,"github":1271},"Artem Manchenkov","manchenkoff",{},"\u002Fplugins\u002Fnuxt-auth-sanctum","manchenkoff\u002Fnuxt-auth-sanctum",{"title":1147,"description":1154},{"downloads":1277,"stars":1278,"watchers":1279,"forks":1280,"defaultBranch":210},170439,571,491,288,"plugins\u002Fnuxt-auth-sanctum","3rd-party","a8McvtgCknAVn7piEt5AFjXKvoeG52aRnk-CAc_OdQo",{"id":1285,"title":1286,"_id":7,"_partial":8,"_path":7,"body":1287,"categories":7,"category":1378,"contributors":1379,"description":1404,"extension":188,"github":1369,"icon":1405,"learn_more":7,"maintainers":1406,"meta":1411,"name":1286,"navigation":201,"npm":1286,"path":1412,"repo":1413,"seo":1414,"sponsor":8,"stats":1415,"stem":1420,"type":1282,"website":1363,"__hash__":1421},"plugins\u002Fplugins\u002Fnuxt-mongoose.md","nuxt-mongoose",{"type":10,"value":1288,"toc":1373},[1289,1291,1294,1296,1310,1312,1316,1355,1357,1371],[13,1290,1286],{"id":1286},[17,1292,1293],{},"简化在项目中使用 Mongoose 的 Nuxt 插件。",[21,1295,23],{"id":23},[25,1297,1299],{"className":27,"code":1298,"language":29,"meta":30,"style":30},"npm install nuxt-mongoose\n",[32,1300,1301],{"__ignoreMap":30},[35,1302,1303,1305,1307],{"class":37,"line":38},[35,1304,42],{"class":41},[35,1306,46],{"class":45},[35,1308,1309],{"class":45}," nuxt-mongoose\n",[21,1311,52],{"id":52},[17,1313,55,1314,59],{},[32,1315,58],{},[25,1317,1319],{"className":62,"code":1318,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-mongoose']\n})\n",[32,1320,1321,1333,1349],{"__ignoreMap":30},[35,1322,1323,1325,1327,1329,1331],{"class":37,"line":38},[35,1324,72],{"class":71},[35,1326,75],{"class":71},[35,1328,79],{"class":78},[35,1330,83],{"class":82},[35,1332,87],{"class":86},[35,1334,1335,1337,1339,1341,1343,1345,1347],{"class":37,"line":90},[35,1336,94],{"class":93},[35,1338,59],{"class":86},[35,1340,99],{"class":82},[35,1342,102],{"class":86},[35,1344,1286],{"class":45},[35,1346,102],{"class":86},[35,1348,109],{"class":82},[35,1350,1351,1353],{"class":37,"line":112},[35,1352,115],{"class":86},[35,1354,118],{"class":82},[21,1356,121],{"id":121},[123,1358,1359,1365],{},[126,1360,1361],{},[129,1362,134],{"href":1363,"rel":1364},"https:\u002F\u002Fnuxt-mongoose.nuxt.space",[133],[126,1366,1367],{},[129,1368,140],{"href":1369,"rel":1370},"https:\u002F\u002Fgithub.com\u002Farashsheyda\u002Fnuxt-mongoose",[133],[142,1372,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1374},[1375,1376,1377],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Database",[1380,1383,1385,1387,1389,1392,1394,1397,1400,1402],{"id":38,"username":1381,"contributions":1382},"user44120",87,{"id":90,"username":1384,"contributions":881},"user69808",{"id":112,"username":1386,"contributions":160},"user43499",{"id":162,"username":1388,"contributions":1009},"user57745",{"id":166,"username":1390,"contributions":1391},"user19045",71,{"id":170,"username":1393,"contributions":1261},"user92868",{"id":174,"username":1395,"contributions":1396},"user76193",26,{"id":178,"username":1398,"contributions":1399},"user83794",94,{"id":181,"username":1401,"contributions":1399},"user91572",{"id":185,"username":1403,"contributions":1261},"user66728","简化在项目中使用 Mongoose 的 Nuxt 插件","nuxt-mongoose.svg",[1407],{"name":1408,"github":1409,"bluesky":1410},"Arash Ari Sheyda","arashsheyda","arashsheyda.me",{},"\u002Fplugins\u002Fnuxt-mongoose","arashsheyda\u002Fnuxt-mongoose",{"title":1286,"description":1404},{"downloads":1416,"stars":1417,"watchers":1418,"forks":1419,"defaultBranch":210},313268,1561,463,234,"plugins\u002Fnuxt-mongoose","rVDGisvuxFx5xMNmMn_AP8A-8i-bNJ-G_buXYZVbU5U",{"id":1423,"title":1424,"_id":7,"_partial":8,"_path":7,"body":1425,"categories":7,"category":1522,"contributors":1523,"description":1547,"extension":188,"github":1507,"icon":1548,"learn_more":1513,"maintainers":1549,"meta":1553,"name":1424,"navigation":201,"npm":1424,"path":1554,"repo":1555,"seo":1556,"sponsor":8,"stats":1557,"stem":1562,"type":1282,"website":1501,"__hash__":1563},"plugins\u002Fplugins\u002Fnuxt-posthog.md","nuxt-posthog",{"type":10,"value":1426,"toc":1517},[1427,1429,1432,1434,1448,1450,1454,1493,1495,1515],[13,1428,1424],{"id":1424},[17,1430,1431],{},"以最少的配置将 PostHog 集成到您的应用程序中。",[21,1433,23],{"id":23},[25,1435,1437],{"className":27,"code":1436,"language":29,"meta":30,"style":30},"npm install nuxt-posthog\n",[32,1438,1439],{"__ignoreMap":30},[35,1440,1441,1443,1445],{"class":37,"line":38},[35,1442,42],{"class":41},[35,1444,46],{"class":45},[35,1446,1447],{"class":45}," nuxt-posthog\n",[21,1449,52],{"id":52},[17,1451,55,1452,59],{},[32,1453,58],{},[25,1455,1457],{"className":62,"code":1456,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-posthog']\n})\n",[32,1458,1459,1471,1487],{"__ignoreMap":30},[35,1460,1461,1463,1465,1467,1469],{"class":37,"line":38},[35,1462,72],{"class":71},[35,1464,75],{"class":71},[35,1466,79],{"class":78},[35,1468,83],{"class":82},[35,1470,87],{"class":86},[35,1472,1473,1475,1477,1479,1481,1483,1485],{"class":37,"line":90},[35,1474,94],{"class":93},[35,1476,59],{"class":86},[35,1478,99],{"class":82},[35,1480,102],{"class":86},[35,1482,1424],{"class":45},[35,1484,102],{"class":86},[35,1486,109],{"class":82},[35,1488,1489,1491],{"class":37,"line":112},[35,1490,115],{"class":86},[35,1492,118],{"class":82},[21,1494,121],{"id":121},[123,1496,1497,1503,1509],{},[126,1498,1499],{},[129,1500,134],{"href":1501,"rel":1502},"https:\u002F\u002Fnuxt-posthog.cmitjans.dev",[133],[126,1504,1505],{},[129,1506,140],{"href":1507,"rel":1508},"https:\u002F\u002Fgithub.com\u002Fmitjans\u002Fnuxt-posthog",[133],[126,1510,1511],{},[129,1512,598],{"href":1513,"rel":1514},"https:\u002F\u002Fposthog.com",[133],[142,1516,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1518},[1519,1520,1521],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Analytics",[1524,1526,1529,1531,1534,1536,1538,1541,1543,1545],{"id":38,"username":1525,"contributions":1261},"user99328",{"id":90,"username":1527,"contributions":1528},"user36640",27,{"id":112,"username":1530,"contributions":743},"user8127",{"id":162,"username":1532,"contributions":1533},"user15154",63,{"id":166,"username":1535,"contributions":166},"user34098",{"id":170,"username":1537,"contributions":160},"user56129",{"id":174,"username":1539,"contributions":1540},"user16681",69,{"id":178,"username":1542,"contributions":183},"user23250",{"id":181,"username":1544,"contributions":469},"user69685",{"id":185,"username":1546,"contributions":164},"user26894","以最少的配置将 PostHog 集成到您的应用程序中","posthog.svg",[1550],{"name":1551,"github":1552},"Carles Mitjans","mitjans",{},"\u002Fplugins\u002Fnuxt-posthog","mitjans\u002Fnuxt-posthog",{"title":1424,"description":1547},{"downloads":1558,"stars":1559,"watchers":1560,"forks":1561,"defaultBranch":210},372773,749,249,248,"plugins\u002Fnuxt-posthog","2n73yQ9EGdeStmU9-KnMhhd-BroMNfiF29MCtTXzhg4",{"id":1565,"title":1566,"_id":7,"_partial":8,"_path":7,"body":1567,"categories":7,"category":1659,"contributors":1660,"description":1574,"extension":188,"github":1650,"icon":189,"learn_more":7,"maintainers":1684,"meta":1688,"name":1689,"navigation":201,"npm":1566,"path":1690,"repo":1691,"seo":1692,"sponsor":8,"stats":1693,"stem":1698,"type":212,"website":1644,"__hash__":1699},"plugins\u002Fplugins\u002Fscripts.md","@nuxt\u002Fscripts",{"type":10,"value":1568,"toc":1654},[1569,1572,1575,1577,1591,1593,1597,1636,1638,1652],[13,1570,1566],{"id":1571},"nuxtscripts",[17,1573,1574],{},"在不牺牲性能的情况下添加第三方脚本",[21,1576,23],{"id":23},[25,1578,1580],{"className":27,"code":1579,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fscripts\n",[32,1581,1582],{"__ignoreMap":30},[35,1583,1584,1586,1588],{"class":37,"line":38},[35,1585,42],{"class":41},[35,1587,46],{"class":45},[35,1589,1590],{"class":45}," @nuxt\u002Fscripts\n",[21,1592,52],{"id":52},[17,1594,55,1595,59],{},[32,1596,58],{},[25,1598,1600],{"className":62,"code":1599,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fscripts']\n})\n",[32,1601,1602,1614,1630],{"__ignoreMap":30},[35,1603,1604,1606,1608,1610,1612],{"class":37,"line":38},[35,1605,72],{"class":71},[35,1607,75],{"class":71},[35,1609,79],{"class":78},[35,1611,83],{"class":82},[35,1613,87],{"class":86},[35,1615,1616,1618,1620,1622,1624,1626,1628],{"class":37,"line":90},[35,1617,94],{"class":93},[35,1619,59],{"class":86},[35,1621,99],{"class":82},[35,1623,102],{"class":86},[35,1625,1566],{"class":45},[35,1627,102],{"class":86},[35,1629,109],{"class":82},[35,1631,1632,1634],{"class":37,"line":112},[35,1633,115],{"class":86},[35,1635,118],{"class":82},[21,1637,121],{"id":121},[123,1639,1640,1646],{},[126,1641,1642],{},[129,1643,134],{"href":1644,"rel":1645},"https:\u002F\u002Fscripts.nuxt.com",[133],[126,1647,1648],{},[129,1649,140],{"href":1650,"rel":1651},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fscripts",[133],[142,1653,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1655},[1656,1657,1658],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Performance",[1661,1663,1665,1668,1670,1672,1675,1677,1680,1682],{"id":38,"username":1662,"contributions":185},"user50497",{"id":90,"username":1664,"contributions":170},"user7468",{"id":112,"username":1666,"contributions":1667},"user4831",85,{"id":162,"username":1669,"contributions":861},"user75013",{"id":166,"username":1671,"contributions":743},"user98072",{"id":170,"username":1673,"contributions":1674},"user11559",28,{"id":174,"username":1676,"contributions":1006},"user13714",{"id":178,"username":1678,"contributions":1679},"user94609",51,{"id":181,"username":1681,"contributions":154},"user41644",{"id":185,"username":1683,"contributions":732},"user76238",[1685],{"name":1686,"github":1687},"Harlan Wilton","harlan-zw",{},"scripts","\u002Fplugins\u002Fscripts","nuxt\u002Fscripts",{"title":1566,"description":1574},{"downloads":1694,"stars":1695,"watchers":1696,"forks":1697,"defaultBranch":210},654472,110,4891,718,"plugins\u002Fscripts","snquBudp2I-f1Ubv48w-17ZeDz9inLAAt_tSOMR4LCo",{"id":1701,"title":1702,"_id":7,"_partial":8,"_path":7,"body":1703,"categories":7,"category":150,"contributors":1795,"description":1710,"extension":188,"github":1786,"icon":189,"learn_more":7,"maintainers":1820,"meta":1823,"name":1824,"navigation":201,"npm":1702,"path":1825,"repo":1826,"seo":1827,"sponsor":8,"stats":1828,"stem":1833,"type":212,"website":1780,"__hash__":1834},"plugins\u002Fplugins\u002Ftest-utils.md","@nuxt\u002Ftest-utils",{"type":10,"value":1704,"toc":1790},[1705,1708,1711,1713,1727,1729,1733,1772,1774,1788],[13,1706,1702],{"id":1707},"nuxttest-utils",[17,1709,1710],{},"Nuxt 的测试工具",[21,1712,23],{"id":23},[25,1714,1716],{"className":27,"code":1715,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ftest-utils\n",[32,1717,1718],{"__ignoreMap":30},[35,1719,1720,1722,1724],{"class":37,"line":38},[35,1721,42],{"class":41},[35,1723,46],{"class":45},[35,1725,1726],{"class":45}," @nuxt\u002Ftest-utils\n",[21,1728,52],{"id":52},[17,1730,55,1731,59],{},[32,1732,58],{},[25,1734,1736],{"className":62,"code":1735,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ftest-utils']\n})\n",[32,1737,1738,1750,1766],{"__ignoreMap":30},[35,1739,1740,1742,1744,1746,1748],{"class":37,"line":38},[35,1741,72],{"class":71},[35,1743,75],{"class":71},[35,1745,79],{"class":78},[35,1747,83],{"class":82},[35,1749,87],{"class":86},[35,1751,1752,1754,1756,1758,1760,1762,1764],{"class":37,"line":90},[35,1753,94],{"class":93},[35,1755,59],{"class":86},[35,1757,99],{"class":82},[35,1759,102],{"class":86},[35,1761,1702],{"class":45},[35,1763,102],{"class":86},[35,1765,109],{"class":82},[35,1767,1768,1770],{"class":37,"line":112},[35,1769,115],{"class":86},[35,1771,118],{"class":82},[21,1773,121],{"id":121},[123,1775,1776,1782],{},[126,1777,1778],{},[129,1779,134],{"href":1780,"rel":1781},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Ftesting",[133],[126,1783,1784],{},[129,1785,140],{"href":1786,"rel":1787},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ftest-utils",[133],[142,1789,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1791},[1792,1793,1794],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[1796,1799,1801,1804,1806,1808,1810,1812,1815,1818],{"id":38,"username":1797,"contributions":1798},"user42799",61,{"id":90,"username":1800,"contributions":1006},"user77607",{"id":112,"username":1802,"contributions":1803},"user70090",47,{"id":162,"username":1805,"contributions":181},"user95279",{"id":166,"username":1807,"contributions":1256},"user89952",{"id":170,"username":1809,"contributions":172},"user41689",{"id":174,"username":1811,"contributions":316},"user2190",{"id":178,"username":1813,"contributions":1814},"user4111",39,{"id":181,"username":1816,"contributions":1817},"user93327",46,{"id":185,"username":1819,"contributions":181},"user52428",[1821,1822],{"name":196,"github":197,"bluesky":198},{"name":489,"github":490,"bluesky":491},{},"test-utils","\u002Fplugins\u002Ftest-utils","nuxt\u002Ftest-utils#main",{"title":1702,"description":1710},{"downloads":1829,"stars":1830,"watchers":1831,"forks":1832,"defaultBranch":210},509128,9236,3824,2540,"plugins\u002Ftest-utils","uXkQHRcL1KX0bO4rKHC8DNyQVRtjTqdsoU3mNZK2YD4",{"id":1836,"title":1837,"_id":7,"_partial":8,"_path":7,"body":1838,"categories":7,"category":996,"contributors":1930,"description":1845,"extension":188,"github":1921,"icon":189,"learn_more":7,"maintainers":1950,"meta":1956,"name":1957,"navigation":201,"npm":1837,"path":1958,"repo":1959,"seo":1960,"sponsor":8,"stats":1961,"stem":1966,"type":212,"website":1915,"__hash__":1967},"plugins\u002Fplugins\u002Fui.md","@nuxt\u002Fui",{"type":10,"value":1839,"toc":1925},[1840,1843,1846,1848,1862,1864,1868,1907,1909,1923],[13,1841,1837],{"id":1842},"nuxtui",[17,1844,1845],{},"基于 Reka UI 和 Tailwind CSS 的直观 UI 库",[21,1847,23],{"id":23},[25,1849,1851],{"className":27,"code":1850,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fui\n",[32,1852,1853],{"__ignoreMap":30},[35,1854,1855,1857,1859],{"class":37,"line":38},[35,1856,42],{"class":41},[35,1858,46],{"class":45},[35,1860,1861],{"class":45}," @nuxt\u002Fui\n",[21,1863,52],{"id":52},[17,1865,55,1866,59],{},[32,1867,58],{},[25,1869,1871],{"className":62,"code":1870,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fui']\n})\n",[32,1872,1873,1885,1901],{"__ignoreMap":30},[35,1874,1875,1877,1879,1881,1883],{"class":37,"line":38},[35,1876,72],{"class":71},[35,1878,75],{"class":71},[35,1880,79],{"class":78},[35,1882,83],{"class":82},[35,1884,87],{"class":86},[35,1886,1887,1889,1891,1893,1895,1897,1899],{"class":37,"line":90},[35,1888,94],{"class":93},[35,1890,59],{"class":86},[35,1892,99],{"class":82},[35,1894,102],{"class":86},[35,1896,1837],{"class":45},[35,1898,102],{"class":86},[35,1900,109],{"class":82},[35,1902,1903,1905],{"class":37,"line":112},[35,1904,115],{"class":86},[35,1906,118],{"class":82},[21,1908,121],{"id":121},[123,1910,1911,1917],{},[126,1912,1913],{},[129,1914,134],{"href":1915,"rel":1916},"https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt",[133],[126,1918,1919],{},[129,1920,140],{"href":1921,"rel":1922},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui",[133],[142,1924,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1926},[1927,1928,1929],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[1931,1933,1935,1938,1941,1943,1945,1948],{"id":38,"username":1932,"contributions":1017},"user99346",{"id":90,"username":1934,"contributions":316},"user54967",{"id":112,"username":1936,"contributions":1937},"user11433",31,{"id":162,"username":1939,"contributions":1940},"user9986",100,{"id":166,"username":1942,"contributions":1937},"user89841",{"id":170,"username":1944,"contributions":1022},"user3725",{"id":174,"username":1946,"contributions":1947},"user89501",68,{"id":178,"username":1949,"contributions":609},"user88437",[1951,1955],{"name":1952,"github":1953,"bluesky":1954},"Benjamin Canac","benjamincanac","benjamincanac.dev",{"name":348,"github":349,"bluesky":350},{},"ui","\u002Fplugins\u002Fui","nuxt\u002Fui#dev",{"title":1837,"description":1845},{"downloads":1962,"stars":1963,"watchers":1964,"forks":1965,"defaultBranch":210},4898787,4588,1125,2648,"plugins\u002Fui","-l-I_UU8K6HTEy7-xTpyP_Mc1SGIH0ELsk7kc8GHh28",[1969,2025,2159,2233,2273,2287,2325,2422,2542,2556,2583],{"title":1970,"path":1971,"stem":1972,"children":1973,"titleTemplate":7,"icon":2024},"入门指南","\u002Fdocs\u002Fguide","docs\u002F01.guide\u002F01.index",[1974,1976,1980,2008,2012,2016],{"title":1975,"path":1971,"stem":1972,"titleTemplate":7},"创建你的第一个仓库",{"title":1977,"path":1978,"stem":1979,"titleTemplate":7},"迁移工具","\u002Fdocs\u002Fguide\u002Fmigration-tools","docs\u002F01.guide\u002F02.migration-tools",{"title":1981,"path":1982,"stem":1983,"children":1984,"titleTemplate":7,"icon":2007},"仓库","\u002Fdocs\u002Fguide\u002Frepo","docs\u002F01.guide\u002F02.repo\u002F01.index",[1985,1987,1991,1995,1999,2003],{"title":1986,"path":1982,"stem":1983,"titleTemplate":7},"产品介绍",{"title":1988,"path":1989,"stem":1990,"titleTemplate":7},"密钥仓库","\u002Fdocs\u002Fguide\u002Frepo\u002Fsecret","docs\u002F01.guide\u002F02.repo\u002F02.secret",{"title":1992,"path":1993,"stem":1994,"titleTemplate":7},"元数据","\u002Fdocs\u002Fguide\u002Frepo\u002Fannotations","docs\u002F01.guide\u002F02.repo\u002F03.annotations",{"title":1996,"path":1997,"stem":1998,"titleTemplate":7},"ISSUE 模板","\u002Fdocs\u002Fguide\u002Frepo\u002Fissue-template","docs\u002F01.guide\u002F02.repo\u002F04.issue-template",{"title":2000,"path":2001,"stem":2002,"titleTemplate":7},"分类标签","\u002Fdocs\u002Fguide\u002Frepo\u002Flabel","docs\u002F01.guide\u002F02.repo\u002F05.label",{"title":2004,"path":2005,"stem":2006,"titleTemplate":7},"UI 定制","\u002Fdocs\u002Fguide\u002Frepo\u002Fsettings","docs\u002F01.guide\u002F02.repo\u002F06.settings","lucide:folder",{"title":2009,"path":2010,"stem":2011,"titleTemplate":7},"角色权限","\u002Fdocs\u002Fguide\u002Frole-permissions","docs\u002F01.guide\u002F03.role-permissions",{"title":2013,"path":2014,"stem":2015,"titleTemplate":7},"访问令牌","\u002Fdocs\u002Fguide\u002Faccess-token","docs\u002F01.guide\u002F04.access-token",{"title":2017,"path":2018,"stem":2019,"children":2020,"titleTemplate":7,"icon":2023},"任务集","\u002Fdocs\u002Fguide\u002Fmissions","docs\u002F01.guide\u002F07.missions\u002F01.index",[2021],{"title":2022,"path":2018,"stem":2019,"titleTemplate":7},"任务集介绍","lucide:target","lucide:book-open",{"title":2026,"titleTemplate":7,"icon":2027,"path":2028,"stem":2029,"children":2030,"page":8},"云原生构建","lucide:rocket","\u002Fdocs\u002Fbuild","docs\u002F03.build",[2031,2079,2099,2139],{"title":2032,"path":2033,"stem":2034,"children":2035,"titleTemplate":7,"icon":2078},"基础使用","\u002Fdocs\u002Fbuild\u002Fbasic-usage","docs\u002F03.build\u002F01.basic-usage\u002F01.index",[2036,2038,2042,2046,2050,2054,2058,2062,2066,2070,2074],{"title":2037,"path":2033,"stem":2034,"titleTemplate":7},"云原生构建介绍",{"title":2039,"path":2040,"stem":2041,"titleTemplate":7},"快速开始","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fquick-start","docs\u002F03.build\u002F01.basic-usage\u002F02.quick-start",{"title":2043,"path":2044,"stem":2045,"titleTemplate":7},"构建触发规则","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Ftrigger-rule","docs\u002F03.build\u002F01.basic-usage\u002F03.trigger-rule",{"title":2047,"path":2048,"stem":2049,"titleTemplate":7},"配置文件","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fconfiguration","docs\u002F03.build\u002F01.basic-usage\u002F04.configuration",{"title":2051,"path":2052,"stem":2053,"titleTemplate":7},"流水线语法","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fgrammar","docs\u002F03.build\u002F01.basic-usage\u002F05.grammar",{"title":2055,"path":2056,"stem":2057,"titleTemplate":7},"构建环境","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-env","docs\u002F03.build\u002F01.basic-usage\u002F06.build-env",{"title":2059,"path":2060,"stem":2061,"titleTemplate":7},"构建集群","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-node","docs\u002F03.build\u002F01.basic-usage\u002F07.build-node",{"title":2063,"path":2064,"stem":2065,"titleTemplate":7},"环境变量","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fenv","docs\u002F03.build\u002F01.basic-usage\u002F08.env",{"title":2067,"path":2068,"stem":2069,"titleTemplate":7},"默认环境变量","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-in-env","docs\u002F03.build\u002F01.basic-usage\u002F09.build-in-env",{"title":2071,"path":2072,"stem":2073,"titleTemplate":7},"超时策略","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Ftimeout","docs\u002F03.build\u002F01.basic-usage\u002F10.timeout",{"title":2075,"path":2076,"stem":2077,"titleTemplate":7},"权限说明","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fpermission","docs\u002F03.build\u002F01.basic-usage\u002F11.permission","lucide:book",{"title":2080,"path":2081,"stem":2082,"children":2083,"titleTemplate":7,"icon":2098},"插件","\u002Fdocs\u002Fbuild\u002Fplugins","docs\u002F03.build\u002F02.plugins\u002F01.index",[2084,2086,2090,2094],{"title":2085,"path":2081,"stem":2082,"titleTemplate":7},"内置任务",{"title":2087,"path":2088,"stem":2089,"titleTemplate":7},"插件市场","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fplugins","docs\u002F03.build\u002F02.plugins\u002F02.plugins",{"title":2091,"path":2092,"stem":2093,"titleTemplate":7},"插件制作","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fcreate-plugin","docs\u002F03.build\u002F02.plugins\u002F03.create-plugin",{"title":2095,"path":2096,"stem":2097,"titleTemplate":7},"贡献插件","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fcontribute-plugin","docs\u002F03.build\u002F02.plugins\u002F04.contribute-plugin","lucide:puzzle",{"title":2100,"path":2101,"stem":2102,"children":2103,"titleTemplate":7,"icon":2138},"进阶使用","\u002Fdocs\u002Fbuild\u002Fadvanced-usage","docs\u002F03.build\u002F03.advanced-usage\u002F01.index",[2104,2106,2110,2114,2118,2122,2126,2130,2134],{"title":2105,"path":2101,"stem":2102,"titleTemplate":7},"简化配置文件",{"title":2107,"path":2108,"stem":2109,"titleTemplate":7},"文件引用","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Ffile-reference","docs\u002F03.build\u002F03.advanced-usage\u002F02.file-reference",{"title":2111,"path":2112,"stem":2113,"titleTemplate":7},"流水线缓存","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fpipeline-cache","docs\u002F03.build\u002F03.advanced-usage\u002F03.pipeline-cache",{"title":2115,"path":2116,"stem":2117,"titleTemplate":7},"定时任务","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fcrontab","docs\u002F03.build\u002F03.advanced-usage\u002F04.crontab",{"title":2119,"path":2120,"stem":2121,"titleTemplate":7},"跳过流水线","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fskip-pipeline","docs\u002F03.build\u002F03.advanced-usage\u002F05.skip-pipeline",{"title":2123,"path":2124,"stem":2125,"titleTemplate":7},"登录调试","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Flogin-debug","docs\u002F03.build\u002F03.advanced-usage\u002F06.login-debug",{"title":2127,"path":2128,"stem":2129,"titleTemplate":7},"手动触发流水线","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fweb-trigger","docs\u002F03.build\u002F03.advanced-usage\u002F07.web-trigger",{"title":2131,"path":2132,"stem":2133,"titleTemplate":7},"自定义部署流程","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fdeploy","docs\u002F03.build\u002F03.advanced-usage\u002F08.deploy",{"title":2135,"path":2136,"stem":2137,"titleTemplate":7},"常见问题","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Ffaq","docs\u002F03.build\u002F03.advanced-usage\u002F09.faq","lucide:zap",{"title":2140,"path":2141,"stem":2142,"children":2143,"titleTemplate":7,"icon":2158},"示例","\u002Fdocs\u002Fbuild\u002Fshowcase","docs\u002F03.build\u002F04.showcase\u002Findex",[2144,2146,2150,2154],{"title":2145,"path":2141,"stem":2142,"titleTemplate":7},"构建Docker镜像并上传",{"title":2147,"path":2148,"stem":2149,"titleTemplate":7},"ISSUE通知到企业微信群","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fissue-notice-group","docs\u002F03.build\u002F04.showcase\u002Fissue-notice-group",{"title":2151,"path":2152,"stem":2153,"titleTemplate":7},"Monorepo按需构建","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fmonorepo","docs\u002F03.build\u002F04.showcase\u002Fmonorepo",{"title":2155,"path":2156,"stem":2157,"titleTemplate":7},"PR通知到企业微信群","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fpr-notice-group","docs\u002F03.build\u002F04.showcase\u002Fpr-notice-group","lucide:app-window-mac",{"title":2160,"titleTemplate":7,"icon":2161,"path":2162,"stem":2163,"children":2164,"page":8},"云原生开发","lucide:laptop","\u002Fdocs\u002Fworkspaces","docs\u002F04.workspaces",[2165,2199,2217],{"title":2032,"path":2166,"stem":2167,"children":2168,"titleTemplate":7,"icon":2078},"\u002Fdocs\u002Fworkspaces\u002Fbasic-usage","docs\u002F04.workspaces\u002F01.basic-usage\u002F01.index",[2169,2171,2175,2179,2183,2187,2191,2195],{"title":2170,"path":2166,"stem":2167,"titleTemplate":7},"云原生开发介绍",{"title":2172,"path":2173,"stem":2174,"titleTemplate":7},"默认开发环境","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fdefault-dev-env","docs\u002F04.workspaces\u002F01.basic-usage\u002F02.default-dev-env",{"title":2176,"path":2177,"stem":2178,"titleTemplate":7},"自定义开发环境","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fcustom-dev-env","docs\u002F04.workspaces\u002F01.basic-usage\u002F03.custom-dev-env",{"title":2180,"path":2181,"stem":2182,"titleTemplate":7},"业务端口预览","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fbusiness-preview","docs\u002F04.workspaces\u002F01.basic-usage\u002F04.business-preview",{"title":2184,"path":2185,"stem":2186,"titleTemplate":7},"远程开发工作区回收机制","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fworkspace-recycling","docs\u002F04.workspaces\u002F01.basic-usage\u002F05.workspace-recycling",{"title":2188,"path":2189,"stem":2190,"titleTemplate":7},"代码备份和文件漫游","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Ffile-keeper","docs\u002F04.workspaces\u002F01.basic-usage\u002F06.file-keeper",{"title":2192,"path":2193,"stem":2194,"titleTemplate":7},"云原生开发推荐用法","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Frecommended-practice","docs\u002F04.workspaces\u002F01.basic-usage\u002F07.recommended-practice",{"title":2196,"path":2197,"stem":2198,"titleTemplate":7},"常见问题解答","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fquestion","docs\u002F04.workspaces\u002F01.basic-usage\u002F08.question",{"title":2100,"path":2200,"stem":2201,"children":2202,"titleTemplate":7,"icon":2138},"\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage","docs\u002F04.workspaces\u002F02.advanced-usage\u002F01.index",[2203,2205,2209,2213],{"title":2204,"path":2200,"stem":2201,"titleTemplate":7},"自定义环境创建流程",{"title":2206,"path":2207,"stem":2208,"titleTemplate":7},"自定义云原生开发启动按钮","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Fcustom-dev-button","docs\u002F04.workspaces\u002F02.advanced-usage\u002F02.custom-dev-button",{"title":2210,"path":2211,"stem":2212,"titleTemplate":7},"单\u002F双容器模式","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Fdouble-container","docs\u002F04.workspaces\u002F02.advanced-usage\u002F03.double-container",{"title":2214,"path":2215,"stem":2216,"titleTemplate":7},"使用技巧","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Ftips","docs\u002F04.workspaces\u002F02.advanced-usage\u002F04.tips",{"title":2218,"path":2219,"stem":2220,"children":2221,"titleTemplate":7,"icon":2232},"本地IDE客户端","\u002Fdocs\u002Fworkspaces\u002Flocalide","docs\u002F04.workspaces\u002F03.localide\u002F01.index",[2222,2224,2228],{"title":2223,"path":2219,"stem":2220,"titleTemplate":7},"VSCode\u002FCursor 客户端",{"title":2225,"path":2226,"stem":2227,"titleTemplate":7},"Jetbrains 客户端","\u002Fdocs\u002Fworkspaces\u002Flocalide\u002Fjetbrains","docs\u002F04.workspaces\u002F03.localide\u002F02.jetbrains",{"title":2229,"path":2230,"stem":2231,"titleTemplate":7},"云原生开发 SSH 密钥指纹验证","\u002Fdocs\u002Fworkspaces\u002Flocalide\u002Ffingerprint","docs\u002F04.workspaces\u002F03.localide\u002F03.fingerprint","lucide:monitor",{"title":2234,"titleTemplate":7,"icon":2235,"path":2236,"stem":2237,"children":2238},"制品库","lucide:package","\u002Fdocs\u002Fartifact","docs\u002F05.artifact\u002Findex",[2239,2241,2245,2249,2253,2257,2261,2265,2269],{"title":2240,"path":2236,"stem":2237,"titleTemplate":7},"制品库介绍",{"title":2242,"path":2243,"stem":2244,"titleTemplate":7},"Composer 制品库","\u002Fdocs\u002Fartifact\u002Fcomposer","docs\u002F05.artifact\u002Fcomposer",{"title":2246,"path":2247,"stem":2248,"titleTemplate":7},"Docker 制品库","\u002Fdocs\u002Fartifact\u002Fdocker","docs\u002F05.artifact\u002Fdocker",{"title":2250,"path":2251,"stem":2252,"titleTemplate":7},"Helm 制品库","\u002Fdocs\u002Fartifact\u002Fhelm","docs\u002F05.artifact\u002Fhelm",{"title":2254,"path":2255,"stem":2256,"titleTemplate":7},"Maven 制品库","\u002Fdocs\u002Fartifact\u002Fmaven","docs\u002F05.artifact\u002Fmaven",{"title":2258,"path":2259,"stem":2260,"titleTemplate":7},"npm 制品库","\u002Fdocs\u002Fartifact\u002Fnpm","docs\u002F05.artifact\u002Fnpm",{"title":2262,"path":2263,"stem":2264,"titleTemplate":7},"Nuget 制品库","\u002Fdocs\u002Fartifact\u002Fnuget","docs\u002F05.artifact\u002Fnuget",{"title":2266,"path":2267,"stem":2268,"titleTemplate":7},"ohpm 制品库","\u002Fdocs\u002Fartifact\u002Fohpm","docs\u002F05.artifact\u002Fohpm",{"title":2270,"path":2271,"stem":2272,"titleTemplate":7},"PyPI 制品库","\u002Fdocs\u002Fartifact\u002Fpypi","docs\u002F05.artifact\u002Fpypi",{"title":2274,"path":2275,"stem":2276,"children":2277,"titleTemplate":7,"icon":2286},"AI助手","\u002Fdocs\u002Fai","docs\u002F06.ai\u002F01.index",[2278,2281],{"title":2279,"path":2275,"stem":2276,"titleTemplate":7,"icon":2280},"AI助手简介","lucide:bot",{"title":2282,"path":2283,"stem":2284,"titleTemplate":7,"icon":2285},"知识库","\u002Fdocs\u002Fai\u002Fknowledge-base","docs\u002F06.ai\u002F02.knowledge-base","lucide:knowledge","lucide:npc",{"title":2288,"titleTemplate":7,"icon":2289,"path":2290,"stem":2291,"children":2292,"page":8},"更多","lucide:menu","\u002Fdocs\u002Fmore","docs\u002F09.more",[2293,2297,2301,2305,2309,2313],{"title":2294,"path":2295,"stem":2296,"titleTemplate":7},"定价","\u002Fdocs\u002Fmore\u002Fpricing","docs\u002F09.more\u002F01.pricing",{"title":2298,"path":2299,"stem":2300,"titleTemplate":7},"平台赞赏","\u002Fdocs\u002Fmore\u002Fsponsor","docs\u002F09.more\u002F02.sponsor",{"title":2302,"path":2303,"stem":2304,"titleTemplate":7},"云原生构建-企业版","\u002Fdocs\u002Fmore\u002Fenterprise","docs\u002F09.more\u002F03.enterprise",{"title":2306,"path":2307,"stem":2308,"titleTemplate":7},"产品Logo","\u002Fdocs\u002Fmore\u002Flogo","docs\u002F09.more\u002F04.logo",{"title":2310,"path":2311,"stem":2312,"titleTemplate":7},"集成TAPD","\u002Fdocs\u002Fmore\u002Ftapd","docs\u002F09.more\u002F05.tapd",{"title":2314,"path":2315,"stem":2316,"children":2317,"titleTemplate":7,"icon":2324},"开发者","\u002Fdocs\u002Fmore\u002Fdevelops","docs\u002F09.more\u002F08.develops\u002F01.index",[2318,2320],{"title":2319,"path":2315,"stem":2316,"titleTemplate":7},"徽章",{"title":2321,"path":2322,"stem":2323,"titleTemplate":7},"Open API","\u002Fdocs\u002Fmore\u002Fdevelops\u002Fopenapi","docs\u002F09.more\u002F08.develops\u002F02.openapi","lucide:code",{"title":2326,"titleTemplate":7,"icon":2327,"path":2328,"stem":2329,"children":2330,"page":8},"目录结构","vscode-icons:default-folder","\u002Fdocs\u002Ftree","docs\u002F22.tree",[2331,2366,2376,2390,2395,2399,2403,2408,2413,2418],{"title":2332,"titleTemplate":7,"defaultOpen":201,"icon":2333,"path":2334,"stem":2335,"children":2336,"page":8},".cnb\u002F","vscode-icons:folder-type-app","\u002Fdocs\u002Ftree\u002F.cnb","docs\u002F22.tree\u002F0..cnb",[2337,2348,2353,2358,2362],{"title":2338,"titleTemplate":7,"defaultOpen":201,"icon":2339,"path":2340,"stem":2341,"children":2342,"page":8},"ISSUE_TEMPLATE\u002F","vscode-icons:folder-type-package","\u002Fdocs\u002Ftree\u002F.cnb\u002Fissue_template","docs\u002F22.tree\u002F0..cnb\u002F99.ISSUE_TEMPLATE",[2343],{"title":2344,"path":2345,"stem":2346,"titleTemplate":7,"icon":2347},"0-feedback","\u002Fdocs\u002Ftree\u002F.cnb\u002Fissue_template\u002F0-feedback","docs\u002F22.tree\u002F0..cnb\u002F99.ISSUE_TEMPLATE\u002F0-feedback","vscode-icons:folder-type-tools",{"title":2349,"path":2350,"stem":2351,"titleTemplate":7,"icon":2352},"logo.svg","\u002Fdocs\u002Ftree\u002F.cnb\u002Flogo_svg","docs\u002F22.tree\u002F0..cnb\u002Flogo_svg","vscode-icons:file-type-image",{"title":2354,"path":2355,"stem":2356,"titleTemplate":7,"icon":2357},"settings.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Fsettings_yml","docs\u002F22.tree\u002F0..cnb\u002Fsettings_yml","vscode-icons:file-type-light-config",{"title":2359,"path":2360,"stem":2361,"titleTemplate":7,"icon":2357},"tag_deploy.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Ftag_deploy_yml","docs\u002F22.tree\u002F0..cnb\u002Ftag_deploy_yml",{"title":2363,"path":2364,"stem":2365,"titleTemplate":7,"icon":2357},"web_trigger.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Fweb_trigger_yml","docs\u002F22.tree\u002F0..cnb\u002Fweb_trigger_yml",{"title":2367,"titleTemplate":7,"defaultOpen":201,"icon":2333,"path":2368,"stem":2369,"children":2370,"page":8},".ide\u002F","\u002Fdocs\u002Ftree\u002F.ide","docs\u002F22.tree\u002F0..ide",[2371],{"title":2372,"path":2373,"stem":2374,"titleTemplate":7,"icon":2375},"Dockerfile","\u002Fdocs\u002Ftree\u002F.ide\u002Fdockerfile","docs\u002F22.tree\u002F0..ide\u002FDockerfile","vscode-icons:default-file",{"title":2377,"titleTemplate":7,"defaultOpen":8,"icon":2378,"path":2379,"stem":2380,"children":2381,"page":8},"node_modules\u002F","vscode-icons:folder-type-node","\u002Fdocs\u002Ftree\u002Fnode-modules","docs\u002F22.tree\u002F0.node-modules",[2382,2386],{"title":2383,"path":2384,"stem":2385,"titleTemplate":7,"icon":2378},".bin\u002F","\u002Fdocs\u002Ftree\u002Fnode-modules\u002Fbin","docs\u002F22.tree\u002F0.node-modules\u002Fbin",{"title":2387,"path":2388,"stem":2389,"titleTemplate":7,"icon":2378},".cache\u002F","\u002Fdocs\u002Ftree\u002Fnode-modules\u002Fcache","docs\u002F22.tree\u002F0.node-modules\u002Fcache",{"title":2391,"path":2392,"stem":2393,"titleTemplate":7,"icon":2394},"public\u002F","\u002Fdocs\u002Ftree\u002Fpublic","docs\u002F22.tree\u002F0.public","vscode-icons:folder-type-public",{"title":2396,"path":2397,"stem":2398,"titleTemplate":7,"icon":2375},"README.md","\u002Fdocs\u002Ftree\u002Freadme","docs\u002F22.tree\u002F1.README",{"title":2400,"path":2401,"stem":2402,"titleTemplate":7,"icon":2357},".cnb.yml","\u002Fdocs\u002Ftree\u002Fcnb_yml","docs\u002F22.tree\u002F1.cnb_yml",{"title":2404,"path":2405,"stem":2406,"titleTemplate":7,"icon":2407},".env","\u002Fdocs\u002Ftree\u002Fenv","docs\u002F22.tree\u002F1.env","vscode-icons:file-type-dotenv",{"title":2409,"path":2410,"stem":2411,"titleTemplate":7,"icon":2412},".gitignore","\u002Fdocs\u002Ftree\u002Fgitignore","docs\u002F22.tree\u002F1.gitignore","vscode-icons:file-type-git",{"title":2414,"path":2415,"stem":2416,"titleTemplate":7,"icon":2417},"package.json","\u002Fdocs\u002Ftree\u002Fpackage","docs\u002F22.tree\u002F1.package","vscode-icons:file-type-npm",{"title":2419,"path":2420,"stem":2421,"titleTemplate":7,"icon":2417},"pnpm-lock.yaml","\u002Fdocs\u002Ftree\u002Fpnpm-lock_yaml","docs\u002F22.tree\u002F1.pnpm-lock_yaml",{"title":2423,"titleTemplate":7,"icon":2424,"path":2425,"stem":2426,"children":2427},"API","lucide:code-xml","\u002Fdocs\u002Fapi","docs\u002F44.api\u002Findex",[2428,2430,2434,2438,2442,2446,2450,2454,2458,2462,2466,2470,2474,2478,2482,2486,2490,2494,2498,2502,2506,2510,2514,2518,2522,2526,2530,2534,2538],{"title":2429,"path":2425,"stem":2426,"titleTemplate":7},"API 介绍",{"title":2431,"path":2432,"stem":2433,"titleTemplate":7},"活动 Activities","\u002Fdocs\u002Fapi\u002Factivities","docs\u002F44.api\u002Factivities",{"title":2435,"path":2436,"stem":2437,"titleTemplate":7},"AI 功能","\u002Fdocs\u002Fapi\u002Fai","docs\u002F44.api\u002Fai",{"title":2439,"path":2440,"stem":2441,"titleTemplate":7},"资源 Assets","\u002Fdocs\u002Fapi\u002Fassets","docs\u002F44.api\u002Fassets",{"title":2443,"path":2444,"stem":2445,"titleTemplate":7},"徽章 Badge","\u002Fdocs\u002Fapi\u002Fbadge","docs\u002F44.api\u002Fbadge",{"title":2447,"path":2448,"stem":2449,"titleTemplate":7},"构建 Build","\u002Fdocs\u002Fapi\u002Fbuild","docs\u002F44.api\u002Fbuild",{"title":2451,"path":2452,"stem":2453,"titleTemplate":7},"计费 Charge","\u002Fdocs\u002Fapi\u002Fcharge","docs\u002F44.api\u002Fcharge",{"title":2455,"path":2456,"stem":2457,"titleTemplate":7},"协作者 Collaborators","\u002Fdocs\u002Fapi\u002Fcollaborators","docs\u002F44.api\u002Fcollaborators",{"title":2459,"path":2460,"stem":2461,"titleTemplate":7},"事件 Event","\u002Fdocs\u002Fapi\u002Fevent","docs\u002F44.api\u002Fevent",{"title":2463,"path":2464,"stem":2465,"titleTemplate":7},"关注者 Followers","\u002Fdocs\u002Fapi\u002Ffollowers","docs\u002F44.api\u002Ffollowers",{"title":2467,"path":2468,"stem":2469,"titleTemplate":7},"Git 操作","\u002Fdocs\u002Fapi\u002Fgit","docs\u002F44.api\u002Fgit",{"title":2471,"path":2472,"stem":2473,"titleTemplate":7},"Git 设置","\u002Fdocs\u002Fapi\u002Fgit-settings","docs\u002F44.api\u002Fgit-settings",{"title":2475,"path":2476,"stem":2477,"titleTemplate":7},"问题 Issues","\u002Fdocs\u002Fapi\u002Fissues","docs\u002F44.api\u002Fissues",{"title":2479,"path":2480,"stem":2481,"titleTemplate":7},"知识库 KnowledgeBase","\u002Fdocs\u002Fapi\u002Fknowledge-base","docs\u002F44.api\u002Fknowledge-base",{"title":2483,"path":2484,"stem":2485,"titleTemplate":7},"成员 Members","\u002Fdocs\u002Fapi\u002Fmembers","docs\u002F44.api\u002Fmembers",{"title":2487,"path":2488,"stem":2489,"titleTemplate":7},"任务 Missions","\u002Fdocs\u002Fapi\u002Fmissions","docs\u002F44.api\u002Fmissions",{"title":2491,"path":2492,"stem":2493,"titleTemplate":7},"组织 Organizations","\u002Fdocs\u002Fapi\u002Forganizations","docs\u002F44.api\u002Forganizations",{"title":2495,"path":2496,"stem":2497,"titleTemplate":7},"Pull Requests","\u002Fdocs\u002Fapi\u002Fpulls","docs\u002F44.api\u002Fpulls",{"title":2499,"path":2500,"stem":2501,"titleTemplate":7},"注册表 Registries","\u002Fdocs\u002Fapi\u002Fregistries","docs\u002F44.api\u002Fregistries",{"title":2503,"path":2504,"stem":2505,"titleTemplate":7},"发布 Releases","\u002Fdocs\u002Fapi\u002Freleases","docs\u002F44.api\u002Freleases",{"title":2507,"path":2508,"stem":2509,"titleTemplate":7},"代码问题","\u002Fdocs\u002Fapi\u002Frepo-code-issue","docs\u002F44.api\u002Frepo-code-issue",{"title":2511,"path":2512,"stem":2513,"titleTemplate":7},"贡献者","\u002Fdocs\u002Fapi\u002Frepo-contributor","docs\u002F44.api\u002Frepo-contributor",{"title":2515,"path":2516,"stem":2517,"titleTemplate":7},"仓库标签","\u002Fdocs\u002Fapi\u002Frepo-labels","docs\u002F44.api\u002Frepo-labels",{"title":2519,"path":2520,"stem":2521,"titleTemplate":7},"仓库 Repositories","\u002Fdocs\u002Fapi\u002Frepositories","docs\u002F44.api\u002Frepositories",{"title":2523,"path":2524,"stem":2525,"titleTemplate":7},"搜索 Search","\u002Fdocs\u002Fapi\u002Fsearch","docs\u002F44.api\u002Fsearch",{"title":2527,"path":2528,"stem":2529,"titleTemplate":7},"安全 Security","\u002Fdocs\u002Fapi\u002Fsecurity","docs\u002F44.api\u002Fsecurity",{"title":2531,"path":2532,"stem":2533,"titleTemplate":7},"星标 Starring","\u002Fdocs\u002Fapi\u002Fstarring","docs\u002F44.api\u002Fstarring",{"title":2535,"path":2536,"stem":2537,"titleTemplate":7},"用户 Users","\u002Fdocs\u002Fapi\u002Fusers","docs\u002F44.api\u002Fusers",{"title":2539,"path":2540,"stem":2541,"titleTemplate":7},"工作空间 Workspace","\u002Fdocs\u002Fapi\u002Fworkspace","docs\u002F44.api\u002Fworkspace",{"title":2543,"path":2544,"stem":2545,"children":2546,"titleTemplate":7,"icon":2555},"社区","\u002Fdocs\u002Fcommunity","docs\u002F55.community\u002Findex",[2547,2550],{"title":2548,"path":2544,"stem":2545,"titleTemplate":7,"icon":2549},"获取帮助","lucide:life-buoy",{"title":2551,"path":2552,"stem":2553,"titleTemplate":7,"icon":2554},"报告 Bug","\u002Fdocs\u002Fcommunity\u002Freporting-bugs","docs\u002F55.community\u002Freporting-bugs","lucide:bug","lucide:messages-square",{"title":2140,"titleTemplate":7,"icon":2557,"path":2558,"stem":2559,"children":2560},"lucide:layout","\u002Fdocs\u002Fexamples","docs\u002Fexamples\u002Findex",[2561,2563,2573],{"title":2562,"path":2558,"stem":2559,"titleTemplate":7},"CNB完整示例",{"title":2564,"path":2565,"stem":2566,"children":2567,"titleTemplate":7},"构建环境和开发环境","\u002Fdocs\u002Fexamples\u002Ffeatures","docs\u002Fexamples\u002F1.features\u002Findex",[2568,2569],{"title":2564,"path":2565,"stem":2566,"titleTemplate":7},{"title":2570,"path":2571,"stem":2572,"titleTemplate":7},"Issue\u002Fpr 使用场景","\u002Fdocs\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002Fexamples\u002F1.features\u002F5.layouts",{"title":2574,"path":2575,"stem":2576,"children":2577,"titleTemplate":7},"路由","\u002Fdocs\u002Fexamples\u002Frouting","docs\u002Fexamples\u002F2.routing\u002Findex",[2578,2579],{"title":2574,"path":2575,"stem":2576,"titleTemplate":7},{"title":2580,"path":2581,"stem":2582,"titleTemplate":7},"中间件","\u002Fdocs\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002Fexamples\u002F2.routing\u002Fmiddleware",{"title":2584,"path":2585,"stem":2586,"children":2587,"page":8},"Blog","\u002Fblog","blog",[2588,2592,2596,2600,2604],{"title":2589,"path":2590,"stem":2591},"提示框组件演示","\u002Fblog\u002Fdemo-feedback","blog\u002Fdemo-feedback",{"title":2593,"path":2594,"stem":2595},"DOM 操作基础","\u002Fblog\u002Fdom-manipulation","blog\u002Fdom-manipulation",{"title":2597,"path":2598,"stem":2599},"HTML 基础入门","\u002Fblog\u002Fhtml-basics","blog\u002Fhtml-basics",{"title":2601,"path":2602,"stem":2603},"JavaScript 异步编程","\u002Fblog\u002Fjavascript-async","blog\u002Fjavascript-async",{"title":2605,"path":2606,"stem":2607},"响应式网页设计","\u002Fblog\u002Fresponsive-design","blog\u002Fresponsive-design",{"id":2609,"title":2085,"body":2610,"description":11346,"extension":188,"links":7,"meta":11347,"navigation":201,"path":2081,"seo":11348,"stem":2082,"titleTemplate":7,"__hash__":11349},"docs\u002Fdocs\u002F03.build\u002F02.plugins\u002F01.index.md",{"type":10,"value":2611,"toc":11318},[2612,2614,2617,2621,2626,2631,2637,2644,2670,2675,2681,2685,2729,2734,2748,2751,2759,2763,2778,2785,2793,2797,2809,2818,2823,2830,2834,2845,2856,2860,2870,2873,2877,2893,2900,2904,2918,2924,2930,2934,2964,2968,3189,3196,3284,3287,3291,3298,3302,3306,3310,3322,3338,3348,3386,3422,3426,3463,3467,3474,3534,3546,3562,3566,3570,3574,3578,3586,3589,3593,3598,3604,3606,3610,3618,3621,3627,3705,3721,3825,3828,3867,3904,3908,3933,3937,3942,3978,3982,4039,4043,4080,4084,4095,4099,4110,4114,4136,4140,4155,4158,4162,4177,4181,4192,4196,4203,4210,4306,4310,4313,4349,4358,4362,4483,4487,4559,4655,4752,4829,4833,4838,4841,4848,4855,4860,4867,4889,4893,4897,4901,4905,4911,4914,4918,4936,4940,4943,5049,5228,5232,5237,5240,5270,5274,5278,5282,5334,5338,5348,5351,5354,5358,5368,5371,5375,5385,5392,5395,5399,5409,5412,5416,5426,5429,5433,5445,5448,5451,5509,5513,5523,5526,5530,5538,5541,5545,5551,5554,5558,5562,5582,5586,5684,5688,5692,5702,5711,5718,5816,5819,5823,5828,5831,5839,5850,5853,5870,5874,5892,5896,5928,5932,6074,6077,6081,6086,6104,6112,6174,6178,6182,6186,6218,6222,6236,6240,6249,6256,6276,6310,6313,6375,6378,6384,6387,6415,6418,6427,6433,6479,6483,6493,6506,6510,6525,6617,6657,6661,6669,6672,6675,6679,6687,6693,6705,6714,6718,6741,6745,6749,6789,6807,6811,6922,6945,6950,6988,6992,6996,7009,7076,7080,7088,7146,7150,7158,7434,7438,7443,7453,7493,7497,7501,7505,7511,7515,7560,7563,7571,7574,7578,7591,7597,7606,7625,7630,7633,7642,7646,7683,7688,7698,7704,7707,7713,7717,7729,7741,7745,7757,7763,7767,7779,7789,7793,7803,7809,7814,7824,7831,7835,7839,7846,7849,7853,7891,7895,7918,7922,7940,7944,7949,8066,8071,8218,8223,8347,8351,8356,8359,8386,8390,8405,8409,8446,8450,8467,8470,8519,8523,8535,8554,8568,8577,8581,8592,8595,8630,8637,8643,8647,8659,8662,8666,8680,8683,8691,8694,8702,8711,8734,8739,8759,8769,8777,8781,8793,8818,8822,8826,8832,8835,8839,8857,8861,8867,8870,8874,8877,8931,8934,8987,8991,8996,9114,9119,9233,9238,9405,9410,9547,9552,9700,9705,9763,9767,9770,9789,10125,10129,10134,10137,10159,10163,10197,10201,10238,10242,10256,10259,10278,10281,10285,10295,10303,10314,10324,10328,10343,10346,10350,10360,10365,10369,10383,10389,10393,10406,10411,10415,10418,10422,10427,10529,10534,10603,10606,10610,10615,10618,10652,10656,10660,10664,10680,10683,10711,10715,10730,10740,10744,10782,10786,10796,10799,10803,10813,10816,10820,10830,10840,10844,10854,10861,10865,10875,10885,10889,10899,10902,10906,10958,10962,11059,11062,11066,11071,11074,11091,11095,11133,11137,11156,11160,11170,11173,11177,11186,11190,11204,11207,11211,11315],[13,2613,2085],{"id":2085},[17,2615,2616],{},"在每一阶段（Stage）操作中，除了使用自定义任务，\nCNB 还扩展了一些常用的内置任务，以供开发者使用。",[21,2618,2620],{"id":2619},"docker","Docker",[2622,2623,2625],"h3",{"id":2624},"cache-docker-cache","cache {#docker-cache}",[17,2627,2628],{},[32,2629,2630],{},"docker:cache",[17,2632,2633,2634,2636],{},"==Docker 缓存==，构建一个 ",[32,2635,2620],{}," 镜像作为缓存，在未来的构建中重复使用。",[17,2638,2639,2640,2643],{},"可以避免网络资源如 ",[32,2641,2642],{},"依赖包"," 重复下载。",[123,2645,2646,2652,2658,2664],{},[126,2647,2648],{},[129,2649,2651],{"href":2650},"#docker-cache-applicable-events","适用事件",[126,2653,2654],{},[129,2655,2657],{"href":2656},"#docker-cache-parameters","参数",[126,2659,2660],{},[129,2661,2663],{"href":2662},"#docker-cache-output","输出结果",[126,2665,2666],{},[129,2667,2669],{"href":2668},"#docker-cache-configuration-examples","配置样例",[2671,2672,2674],"h4",{"id":2673},"适用事件-docker-cache-applicable-events","适用事件 {#docker-cache-applicable-events}",[17,2676,2677],{},[129,2678,2680],{"href":2679},"\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Ftrigger-rule#%E8%A7%A6%E5%8F%91%E4%BA%8B%E4%BB%B6-trigger-event","所有事件",[2671,2682,2684],{"id":2683},"参数-docker-cache-parameters","参数 {#docker-cache-parameters}",[123,2686,2687,2693,2699,2705,2711,2717,2723],{},[126,2688,2689],{},[129,2690,2692],{"href":2691},"#docker-cache-parameters-dockerfile","dockerfile",[126,2694,2695],{},[129,2696,2698],{"href":2697},"#docker-cache-parameters-by","by",[126,2700,2701],{},[129,2702,2704],{"href":2703},"#docker-cache-parameters-versionBy","versionBy",[126,2706,2707],{},[129,2708,2710],{"href":2709},"#docker-cache-parameters-buildArgs","buildArgs",[126,2712,2713],{},[129,2714,2716],{"href":2715},"#docker-cache-parameters-target","target",[126,2718,2719],{},[129,2720,2722],{"href":2721},"#docker-cache-parameters-sync","sync",[126,2724,2725],{},[129,2726,2728],{"href":2727},"#docker-cache-parameters-ignoreBuildArgsInVersion","ignoreBuildArgsInVersion",[2730,2731,2733],"h5",{"id":2732},"dockerfile-docker-cache-parameters-dockerfile","dockerfile {#docker-cache-parameters-dockerfile}",[123,2735,2736,2742],{},[126,2737,2738,2739],{},"type: ",[32,2740,2741],{},"String",[126,2743,2744,2745],{},"required: ",[32,2746,2747],{},"true",[17,2749,2750],{},"用于构建缓存镜像的 Dockerfile 路径。",[17,2752,2753,2754,2758],{},"为避免超长时间构建，Docker 镜像构建超时时间受 ",[129,2755,2757],{"href":2756},"\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fgrammar#timeout","job.timeout"," 参数控制。",[2730,2760,2762],{"id":2761},"by-docker-cache-parameters-by","by {#docker-cache-parameters-by}",[123,2764,2765,2773],{},[126,2766,2738,2767,2770,2771],{},[32,2768,2769],{},"Array\u003CString>"," | ",[32,2772,2741],{},[126,2774,2744,2775],{},[32,2776,2777],{},"false",[17,2779,2780,2781],{},"用来声明缓存镜像构建过程中依赖的文件列表。",[2782,2783,2784],"strong",{},"注意：未出现在 by 列表中的文件，除了 Dockerfile，其他在构建镜像过程中，都当不存在处理。",[123,2786,2787,2790],{},[126,2788,2789],{},"支持数组格式",[126,2791,2792],{},"支持字符串格式，多个文件用英文逗号分隔。",[2730,2794,2796],{"id":2795},"versionby-docker-cache-parameters-versionby","versionBy {#docker-cache-parameters-versionBy}",[123,2798,2799,2805],{},[126,2800,2738,2801,2770,2803],{},[32,2802,2769],{},[32,2804,2741],{},[126,2806,2744,2807],{},[32,2808,2777],{},[17,2810,2811,2812,2814,2815,2817],{},"用来进行版本控制，未传入 ",[32,2813,2704],{},"，则默认取 ",[32,2816,2698],{}," 的值进行版本控制。",[17,2819,2820,2822],{},[32,2821,2704],{}," 所指向的文件内容发生变化，我们就会认为是一个新的版本， 具体的计算逻辑见这个表达式：sha1(Dockerfile + versionBy + buildArgs + target + arch)。",[123,2824,2825,2828],{},[126,2826,2827],{},"支持数组格式。",[126,2829,2792],{},[2730,2831,2833],{"id":2832},"buildargs-docker-cache-parameters-buildargs","buildArgs {#docker-cache-parameters-buildArgs}",[123,2835,2836,2841],{},[126,2837,2738,2838],{},[32,2839,2840],{},"Object",[126,2842,2744,2843],{},[32,2844,2777],{},[17,2846,2847,2848,2851,2852,2855],{},"在 build 时插入额外的构建参数 (",[32,2849,2850],{},"--build-arg $key=$value","), value 值为 null 时只加入 key (",[32,2853,2854],{},"--build-arg $key",")。",[2730,2857,2859],{"id":2858},"target-docker-cache-parameters-target","target {#docker-cache-parameters-target}",[123,2861,2862,2866],{},[126,2863,2738,2864],{},[32,2865,2741],{},[126,2867,2744,2868],{},[32,2869,2777],{},[17,2871,2872],{},"对应 docker build 中的 --target 参数，可以选择性地构建 Dockerfile 中的特定阶段，而不是构建整个 Dockerfile。",[2730,2874,2876],{"id":2875},"sync-docker-cache-parameters-sync","sync {#docker-cache-parameters-sync}",[123,2878,2879,2884,2888],{},[126,2880,2738,2881],{},[32,2882,2883],{},"Boolean",[126,2885,2744,2886],{},[32,2887,2777],{},[126,2889,2890,2891],{},"default: ",[32,2892,2777],{},[17,2894,2895,2896,2899],{},"是否同步模式，等待缓存镜像 ",[32,2897,2898],{},"docker push"," 成功后才继续。",[2730,2901,2903],{"id":2902},"ignorebuildargsinversion-docker-cache-parameters-ignorebuildargsinversion","ignoreBuildArgsInVersion {#docker-cache-parameters-ignoreBuildArgsInVersion}",[123,2905,2906,2910,2914],{},[126,2907,2738,2908],{},[32,2909,2883],{},[126,2911,2744,2912],{},[32,2913,2777],{},[126,2915,2890,2916],{},[32,2917,2777],{},[17,2919,2920,2921,2923],{},"版本计算是否忽略 ",[32,2922,2710],{},"。",[17,2925,2926,2927],{},"详见",[32,2928,2929],{},"版本控制",[2671,2931,2933],{"id":2932},"输出结果-docker-cache-output","输出结果 {#docker-cache-output}",[25,2935,2939],{"className":2936,"code":2937,"language":2938,"meta":30,"style":30},"language-javascript shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  \u002F\u002F 缓存对应的 docker image name\n  name;\n}\n","javascript",[32,2940,2941,2945,2951,2959],{"__ignoreMap":30},[35,2942,2943],{"class":37,"line":38},[35,2944,87],{"class":86},[35,2946,2947],{"class":37,"line":90},[35,2948,2950],{"class":2949},"sWuyu","  \u002F\u002F 缓存对应的 docker image name\n",[35,2952,2953,2956],{"class":37,"line":112},[35,2954,2955],{"class":82},"  name",[35,2957,2958],{"class":86},";\n",[35,2960,2961],{"class":37,"line":162},[35,2962,2963],{"class":86},"}\n",[2671,2965,2967],{"id":2966},"配置样例-docker-cache-configuration-examples","配置样例 {#docker-cache-configuration-examples}",[25,2969,2973],{"className":2970,"code":2971,"language":2972,"meta":30,"style":30},"language-yaml shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","main:\n  push:\n    - docker:\n        image: node:14\n      stages:\n        - name: build cache image\n          type: docker:cache\n          options:\n            dockerfile: cache.dockerfile\n            # by 支持以下两种形式：数组、字符串\n            by:\n              - package.json\n              - package-lock.json\n            # versionBy: package-lock.json\n            versionBy:\n              - package-lock.json\n          exports:\n            name: DOCKER_CACHE_IMAGE_NAME\n        - name: use cache\n          image: $DOCKER_CACHE_IMAGE_NAME\n          # 将 cache 中的文件拷贝过来使用\n          commands:\n            - cp -r \"$NODE_PATH\" .\u002Fnode_modules\n        - name: build with cache\n          script:\n            - npm run build\n","yaml",[32,2974,2975,2982,2989,2999,3009,3016,3029,3039,3046,3056,3061,3068,3076,3083,3088,3096,3102,3110,3120,3131,3141,3147,3154,3162,3174,3182],{"__ignoreMap":30},[35,2976,2977,2979],{"class":37,"line":38},[35,2978,210],{"class":93},[35,2980,2981],{"class":86},":\n",[35,2983,2984,2987],{"class":37,"line":90},[35,2985,2986],{"class":93},"  push",[35,2988,2981],{"class":86},[35,2990,2991,2994,2997],{"class":37,"line":112},[35,2992,2993],{"class":86},"    -",[35,2995,2996],{"class":93}," docker",[35,2998,2981],{"class":86},[35,3000,3001,3004,3006],{"class":37,"line":162},[35,3002,3003],{"class":93},"        image",[35,3005,59],{"class":86},[35,3007,3008],{"class":45}," node:14\n",[35,3010,3011,3014],{"class":37,"line":166},[35,3012,3013],{"class":93},"      stages",[35,3015,2981],{"class":86},[35,3017,3018,3021,3024,3026],{"class":37,"line":170},[35,3019,3020],{"class":86},"        -",[35,3022,3023],{"class":93}," name",[35,3025,59],{"class":86},[35,3027,3028],{"class":45}," build cache image\n",[35,3030,3031,3034,3036],{"class":37,"line":174},[35,3032,3033],{"class":93},"          type",[35,3035,59],{"class":86},[35,3037,3038],{"class":45}," docker:cache\n",[35,3040,3041,3044],{"class":37,"line":178},[35,3042,3043],{"class":93},"          options",[35,3045,2981],{"class":86},[35,3047,3048,3051,3053],{"class":37,"line":181},[35,3049,3050],{"class":93},"            dockerfile",[35,3052,59],{"class":86},[35,3054,3055],{"class":45}," cache.dockerfile\n",[35,3057,3058],{"class":37,"line":185},[35,3059,3060],{"class":2949},"            # by 支持以下两种形式：数组、字符串\n",[35,3062,3063,3066],{"class":37,"line":1000},[35,3064,3065],{"class":93},"            by",[35,3067,2981],{"class":86},[35,3069,3070,3073],{"class":37,"line":1025},[35,3071,3072],{"class":86},"              -",[35,3074,3075],{"class":45}," package.json\n",[35,3077,3078,3080],{"class":37,"line":1256},[35,3079,3072],{"class":86},[35,3081,3082],{"class":45}," package-lock.json\n",[35,3084,3085],{"class":37,"line":164},[35,3086,3087],{"class":2949},"            # versionBy: package-lock.json\n",[35,3089,3091,3094],{"class":37,"line":3090},15,[35,3092,3093],{"class":93},"            versionBy",[35,3095,2981],{"class":86},[35,3097,3098,3100],{"class":37,"line":157},[35,3099,3072],{"class":86},[35,3101,3082],{"class":45},[35,3103,3105,3108],{"class":37,"line":3104},17,[35,3106,3107],{"class":93},"          exports",[35,3109,2981],{"class":86},[35,3111,3112,3115,3117],{"class":37,"line":864},[35,3113,3114],{"class":93},"            name",[35,3116,59],{"class":86},[35,3118,3119],{"class":45}," DOCKER_CACHE_IMAGE_NAME\n",[35,3121,3122,3124,3126,3128],{"class":37,"line":881},[35,3123,3020],{"class":86},[35,3125,3023],{"class":93},[35,3127,59],{"class":86},[35,3129,3130],{"class":45}," use cache\n",[35,3132,3133,3136,3138],{"class":37,"line":1009},[35,3134,3135],{"class":93},"          image",[35,3137,59],{"class":86},[35,3139,3140],{"class":45}," $DOCKER_CACHE_IMAGE_NAME\n",[35,3142,3144],{"class":37,"line":3143},21,[35,3145,3146],{"class":2949},"          # 将 cache 中的文件拷贝过来使用\n",[35,3148,3149,3152],{"class":37,"line":732},[35,3150,3151],{"class":93},"          commands",[35,3153,2981],{"class":86},[35,3155,3156,3159],{"class":37,"line":461},[35,3157,3158],{"class":86},"            -",[35,3160,3161],{"class":45}," cp -r \"$NODE_PATH\" .\u002Fnode_modules\n",[35,3163,3165,3167,3169,3171],{"class":37,"line":3164},24,[35,3166,3020],{"class":86},[35,3168,3023],{"class":93},[35,3170,59],{"class":86},[35,3172,3173],{"class":45}," build with cache\n",[35,3175,3177,3180],{"class":37,"line":3176},25,[35,3178,3179],{"class":93},"          script",[35,3181,2981],{"class":86},[35,3183,3184,3186],{"class":37,"line":1396},[35,3185,3158],{"class":86},[35,3187,3188],{"class":45}," npm run build\n",[17,3190,3191,3192,3195],{},"其中，",[32,3193,3194],{},"cache.dockerfile"," 是一个用于构建缓存镜像的 Dockerfile。示例：",[25,3197,3200],{"className":3198,"code":3199,"language":2692,"meta":30,"style":30},"language-dockerfile shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","# 选择一个 Base 镜像\nFROM node:14\n\n# 设置工作目录\nWORKDIR \u002Fspace\n\n# 将 by 中的文件列表 COPY 过来\nCOPY . .\n\n# 根据 COPY 过来的文件进行依赖的安装\nRUN npm ci\n\n# 设置好需要的环境变量\nENV NODE_PATH=\u002Fspace\u002Fnode_modules\n",[32,3201,3202,3207,3215,3220,3225,3233,3237,3242,3250,3254,3259,3267,3271,3276],{"__ignoreMap":30},[35,3203,3204],{"class":37,"line":38},[35,3205,3206],{"class":2949},"# 选择一个 Base 镜像\n",[35,3208,3209,3213],{"class":37,"line":90},[35,3210,3212],{"class":3211},"sYRBq","FROM",[35,3214,3008],{"class":82},[35,3216,3217],{"class":37,"line":112},[35,3218,3219],{"emptyLinePlaceholder":201},"\n",[35,3221,3222],{"class":37,"line":162},[35,3223,3224],{"class":2949},"# 设置工作目录\n",[35,3226,3227,3230],{"class":37,"line":166},[35,3228,3229],{"class":3211},"WORKDIR",[35,3231,3232],{"class":82}," \u002Fspace\n",[35,3234,3235],{"class":37,"line":170},[35,3236,3219],{"emptyLinePlaceholder":201},[35,3238,3239],{"class":37,"line":174},[35,3240,3241],{"class":2949},"# 将 by 中的文件列表 COPY 过来\n",[35,3243,3244,3247],{"class":37,"line":178},[35,3245,3246],{"class":3211},"COPY",[35,3248,3249],{"class":82}," . .\n",[35,3251,3252],{"class":37,"line":181},[35,3253,3219],{"emptyLinePlaceholder":201},[35,3255,3256],{"class":37,"line":185},[35,3257,3258],{"class":2949},"# 根据 COPY 过来的文件进行依赖的安装\n",[35,3260,3261,3264],{"class":37,"line":1000},[35,3262,3263],{"class":3211},"RUN",[35,3265,3266],{"class":82}," npm ci\n",[35,3268,3269],{"class":37,"line":1025},[35,3270,3219],{"emptyLinePlaceholder":201},[35,3272,3273],{"class":37,"line":1256},[35,3274,3275],{"class":2949},"# 设置好需要的环境变量\n",[35,3277,3278,3281],{"class":37,"line":164},[35,3279,3280],{"class":3211},"ENV",[35,3282,3283],{"class":82}," NODE_PATH=\u002Fspace\u002Fnode_modules\n",[21,3285,3286],{"id":3286},"cnb",[2622,3288,3290],{"id":3289},"await-cnb-await","await {#cnb-await}",[17,3292,3293,3294],{},"参见 ",[129,3295,3297],{"href":3296},"#cnb-await-resolve","await-resolve",[2622,3299,3301],{"id":3300},"resolve-cnb-resolve","resolve {#cnb-resolve}",[17,3303,3293,3304],{},[129,3305,3297],{"href":3296},[2622,3307,3309],{"id":3308},"await-resolve-cnb-await-resolve","await-resolve {#cnb-await-resolve}",[123,3311,3312,3317],{},[126,3313,3314],{},[32,3315,3316],{},"cnb:await",[126,3318,3319],{},[32,3320,3321],{},"cnb:resolve",[17,3323,3324,3327,3328,3331,3332,3334,3335,3337],{},[32,3325,3326],{},"await"," 会等待 ",[32,3329,3330],{},"resolve"," 的执行，",[32,3333,3330],{}," 可以向 ",[32,3336,3326],{},"传递变量。",[17,3339,3340,3341,3343,3344,3347],{},"通过 ",[32,3342,3297],{},"，可以让多个并发的 ",[32,3345,3346],{},"pipeline"," 相互配合，实现更灵活的顺序控制。",[3349,3350,3351,3364,3380],"tip",{},[17,3352,3353,3355,3356,3359,3360,3363],{},[32,3354,3297],{}," 同 ",[32,3357,3358],{},"apply","、",[32,3361,3362],{},"trigger"," 的区别：",[17,3365,3366,3367,3369,3370,3372,3373,3376,3377,3379],{},"前者指一个构建中某 ",[32,3368,3346],{}," 执行到 ",[32,3371,3326],{}," 任务时等待对应 ",[32,3374,3375],{},"key"," 的 ",[32,3378,3330],{}," 通知才会继续进行。",[17,3381,3382,3383,3385],{},"后者指一个 ",[32,3384,3346],{}," 触发新事件，开启新的构建。可以跨仓库。可以异步调用，也可以同步等待。",[123,3387,3388,3394,3400,3405,3411,3417],{},[126,3389,3390],{},[129,3391,3393],{"href":3392},"#cnb-await-resolve-usage-limitations","使用限制",[126,3395,3396],{},[129,3397,3399],{"href":3398},"#cnb-await-resolve-deadlock-detection","死锁检测",[126,3401,3402],{},[129,3403,2651],{"href":3404},"#cnb-await-resolve-applicable-events",[126,3406,3407],{},[129,3408,3410],{"href":3409},"#cnb-await-resolve-await-parameters","await 参数",[126,3412,3413],{},[129,3414,3416],{"href":3415},"#cnb-await-resolve-resolve-parameters","resolve 参数",[126,3418,3419],{},[129,3420,2663],{"href":3421},"#cnb-await-resolve-output",[2671,3423,3425],{"id":3424},"使用限制-cnb-await-resolve-usage-limitations","使用限制 {#cnb-await-resolve-usage-limitations}",[3427,3428,3429,3441,3453],"ol",{},[126,3430,3431,3432,3434,3435,3437,3438,3440],{},"只能对同一个事件触发的 ",[32,3433,3346],{}," 进行 ",[32,3436,3326],{}," 和 ",[32,3439,3330],{}," 操作",[126,3442,3443,3444,3446,3447,3449,3450,3452],{},"一个 ",[32,3445,3375],{}," 仅能 ",[32,3448,3330],{}," 一次，但可以 ",[32,3451,3326],{}," 多次",[126,3454,3340,3455,3457,3458,3437,3460,3462],{},[32,3456,3375],{}," 对 ",[32,3459,3326],{},[32,3461,3330],{}," 进行分组",[2671,3464,3466],{"id":3465},"死锁检测-cnb-await-resolve-deadlock-detection","死锁检测 {#cnb-await-resolve-deadlock-detection}",[17,3468,3469,3437,3471,3473],{},[32,3470,3326],{},[32,3472,3330],{}," 相互配合可以完成灵活的流程控制，但也会引入更复杂的边界情况，比如：",[3427,3475,3476,3488,3497,3511,3522],{},[126,3477,3478,3437,3481,3484,3485,3487],{},[32,3479,3480],{},"pipeline-1",[32,3482,3483],{},"pipeline-2"," 相互 ",[32,3486,3326],{},"，即：死锁",[126,3489,3490,3491,3493,3494,3496],{},"多条 ",[32,3492,3346],{}," 间存在 ",[32,3495,3326],{}," 环，即：间接死锁",[126,3498,3499,3501,3502,3504,3505,3507,3508,3510],{},[32,3500,3326],{}," 一个不存在的 ",[32,3503,3375],{},"，或者 ",[32,3506,3375],{}," 没有关联 ",[32,3509,3330],{},"，即：无限等待",[126,3512,3513,3515,3516,3518,3519,3521],{},[32,3514,3330],{}," 所在 ",[32,3517,3346],{}," 执行失败，对应的 ",[32,3520,3326],{}," 陷入无限等待",[126,3523,3524,3525,3527,3528,3530,3531,3533],{},"多个 ",[32,3526,3330],{}," 任务关联同一个 ",[32,3529,3375],{},"，即重复 ",[32,3532,3330],{}," 抛出异常",[17,3535,3536,3538,3539,3541,3542,3545],{},[32,3537,3399],{}," 机制会自动检测以上异常，结束 ",[32,3540,3326],{}," 的等待状态，抛出 ",[32,3543,3544],{},"dead lock found."," 异常。",[17,3547,3548,3437,3550,3552,3553,3555,3556,3558,3559,3561],{},[32,3549,3326],{},[32,3551,3330],{}," 的在配置文件中顺序不影响运行结果，即最后 ",[32,3554,3326],{}," 任务一定是会等待相应的 ",[32,3557,3330],{}," 完成，这种情况不会被",[32,3560,3399],{},"机制终止。",[2671,3563,3565],{"id":3564},"适用事件-cnb-await-resolve-applicable-events","适用事件 {#cnb-await-resolve-applicable-events}",[17,3567,3568],{},[129,3569,2680],{"href":2679},[2671,3571,3573],{"id":3572},"await-参数-cnb-await-resolve-await-parameters","await 参数 {#cnb-await-resolve-await-parameters}",[2730,3575,3577],{"id":3576},"key-cnb-await-resolve-await-parameters-key","key {#cnb-await-resolve-await-parameters-key}",[123,3579,3580,3583],{},[126,3581,3582],{},"type: String",[126,3584,3585],{},"required: true",[17,3587,3588],{},"配对 ID",[2730,3590,3592],{"id":3591},"resolve-参数-cnb-await-resolve-resolve-parameters","resolve 参数 {#cnb-await-resolve-resolve-parameters}",[3594,3595,3597],"h6",{"id":3596},"key-cnb-await-resolve-resolve-parameters-key","key {#cnb-await-resolve-resolve-parameters-key}",[123,3599,3600,3602],{},[126,3601,3582],{},[126,3603,3585],{},[17,3605,3588],{},[3594,3607,3609],{"id":3608},"data-cnb-await-resolve-resolve-parameters-data","data {#cnb-await-resolve-resolve-parameters-data}",[123,3611,3612,3615],{},[126,3613,3614],{},"type: object",[126,3616,3617],{},"required: false",[17,3619,3620],{},"要传递的对象",[17,3622,3623,3626],{},[32,3624,3625],{},"key: value"," 格式，支持多级。示例：",[25,3628,3630],{"className":2970,"code":3629,"language":2972,"meta":30,"style":30},"- name: resolve a json\n  type: cnb:resolve\n  options:\n    key: demo\n    data:\n      a: 1\n      b:\n        c: 2\n",[32,3631,3632,3644,3654,3661,3671,3678,3688,3695],{"__ignoreMap":30},[35,3633,3634,3637,3639,3641],{"class":37,"line":38},[35,3635,3636],{"class":86},"-",[35,3638,3023],{"class":93},[35,3640,59],{"class":86},[35,3642,3643],{"class":45}," resolve a json\n",[35,3645,3646,3649,3651],{"class":37,"line":90},[35,3647,3648],{"class":93},"  type",[35,3650,59],{"class":86},[35,3652,3653],{"class":45}," cnb:resolve\n",[35,3655,3656,3659],{"class":37,"line":112},[35,3657,3658],{"class":93},"  options",[35,3660,2981],{"class":86},[35,3662,3663,3666,3668],{"class":37,"line":162},[35,3664,3665],{"class":93},"    key",[35,3667,59],{"class":86},[35,3669,3670],{"class":45}," demo\n",[35,3672,3673,3676],{"class":37,"line":166},[35,3674,3675],{"class":93},"    data",[35,3677,2981],{"class":86},[35,3679,3680,3683,3685],{"class":37,"line":170},[35,3681,3682],{"class":93},"      a",[35,3684,59],{"class":86},[35,3686,3687],{"class":3211}," 1\n",[35,3689,3690,3693],{"class":37,"line":174},[35,3691,3692],{"class":93},"      b",[35,3694,2981],{"class":86},[35,3696,3697,3700,3702],{"class":37,"line":178},[35,3698,3699],{"class":93},"        c",[35,3701,59],{"class":86},[35,3703,3704],{"class":3211}," 2\n",[17,3706,3707,3709,3710,3712,3713,3716,3717,3720],{},[32,3708,3326],{}," 任务的结果，是 ",[32,3711,3330],{}," 声明的 ",[32,3714,3715],{},"data"," 对象。\n可以通过 ",[32,3718,3719],{},"exports"," 访问这个对象，示例：",[25,3722,3724],{"className":2970,"code":3723,"language":2972,"meta":30,"style":30},"- name: await a json\n  type: cnb:await\n  options:\n    key: demo\n  exports:\n    a: VAR_A\n    b.c: VAR_B\n- name: show var\n  script:\n    - echo ${VAR_A} # 1\n    - echo ${VAR_B} # 2\n",[32,3725,3726,3737,3746,3752,3760,3767,3777,3787,3798,3805,3815],{"__ignoreMap":30},[35,3727,3728,3730,3732,3734],{"class":37,"line":38},[35,3729,3636],{"class":86},[35,3731,3023],{"class":93},[35,3733,59],{"class":86},[35,3735,3736],{"class":45}," await a json\n",[35,3738,3739,3741,3743],{"class":37,"line":90},[35,3740,3648],{"class":93},[35,3742,59],{"class":86},[35,3744,3745],{"class":45}," cnb:await\n",[35,3747,3748,3750],{"class":37,"line":112},[35,3749,3658],{"class":93},[35,3751,2981],{"class":86},[35,3753,3754,3756,3758],{"class":37,"line":162},[35,3755,3665],{"class":93},[35,3757,59],{"class":86},[35,3759,3670],{"class":45},[35,3761,3762,3765],{"class":37,"line":166},[35,3763,3764],{"class":93},"  exports",[35,3766,2981],{"class":86},[35,3768,3769,3772,3774],{"class":37,"line":170},[35,3770,3771],{"class":93},"    a",[35,3773,59],{"class":86},[35,3775,3776],{"class":45}," VAR_A\n",[35,3778,3779,3782,3784],{"class":37,"line":174},[35,3780,3781],{"class":93},"    b.c",[35,3783,59],{"class":86},[35,3785,3786],{"class":45}," VAR_B\n",[35,3788,3789,3791,3793,3795],{"class":37,"line":178},[35,3790,3636],{"class":86},[35,3792,3023],{"class":93},[35,3794,59],{"class":86},[35,3796,3797],{"class":45}," show var\n",[35,3799,3800,3803],{"class":37,"line":181},[35,3801,3802],{"class":93},"  script",[35,3804,2981],{"class":86},[35,3806,3807,3809,3812],{"class":37,"line":185},[35,3808,2993],{"class":86},[35,3810,3811],{"class":45}," echo ${VAR_A}",[35,3813,3814],{"class":2949}," # 1\n",[35,3816,3817,3819,3822],{"class":37,"line":1000},[35,3818,2993],{"class":86},[35,3820,3821],{"class":45}," echo ${VAR_B}",[35,3823,3824],{"class":2949}," # 2\n",[17,3826,3827],{},"当然，也可以不传送任务内容，仅仅表示一个等待动作：",[25,3829,3831],{"className":2970,"code":3830,"language":2972,"meta":30,"style":30},"- name: ready\n  type: cnb:resolve\n  options:\n    key: i-am-ready\n",[32,3832,3833,3844,3852,3858],{"__ignoreMap":30},[35,3834,3835,3837,3839,3841],{"class":37,"line":38},[35,3836,3636],{"class":86},[35,3838,3023],{"class":93},[35,3840,59],{"class":86},[35,3842,3843],{"class":45}," ready\n",[35,3845,3846,3848,3850],{"class":37,"line":90},[35,3847,3648],{"class":93},[35,3849,59],{"class":86},[35,3851,3653],{"class":45},[35,3853,3854,3856],{"class":37,"line":112},[35,3855,3658],{"class":93},[35,3857,2981],{"class":86},[35,3859,3860,3862,3864],{"class":37,"line":162},[35,3861,3665],{"class":93},[35,3863,59],{"class":86},[35,3865,3866],{"class":45}," i-am-ready\n",[25,3868,3870],{"className":2970,"code":3869,"language":2972,"meta":30,"style":30},"- name: ready\n  type: cnb:await\n  options:\n    key: i-am-ready\n",[32,3871,3872,3882,3890,3896],{"__ignoreMap":30},[35,3873,3874,3876,3878,3880],{"class":37,"line":38},[35,3875,3636],{"class":86},[35,3877,3023],{"class":93},[35,3879,59],{"class":86},[35,3881,3843],{"class":45},[35,3883,3884,3886,3888],{"class":37,"line":90},[35,3885,3648],{"class":93},[35,3887,59],{"class":86},[35,3889,3745],{"class":45},[35,3891,3892,3894],{"class":37,"line":112},[35,3893,3658],{"class":93},[35,3895,2981],{"class":86},[35,3897,3898,3900,3902],{"class":37,"line":162},[35,3899,3665],{"class":93},[35,3901,59],{"class":86},[35,3903,3866],{"class":45},[3594,3905,3907],{"id":3906},"输出结果-cnb-await-resolve-output","输出结果 {#cnb-await-resolve-output}",[25,3909,3911],{"className":2936,"code":3910,"language":2938,"meta":30,"style":30},"{\n  \u002F\u002F resolve 返回的 data 内容\n  data;\n}\n",[32,3912,3913,3917,3922,3929],{"__ignoreMap":30},[35,3914,3915],{"class":37,"line":38},[35,3916,87],{"class":86},[35,3918,3919],{"class":37,"line":90},[35,3920,3921],{"class":2949},"  \u002F\u002F resolve 返回的 data 内容\n",[35,3923,3924,3927],{"class":37,"line":112},[35,3925,3926],{"class":82},"  data",[35,3928,2958],{"class":86},[35,3930,3931],{"class":37,"line":162},[35,3932,2963],{"class":86},[2622,3934,3936],{"id":3935},"apply-cnb-apply","apply {#cnb-apply}",[17,3938,3939],{},[32,3940,3941],{},"cnb:apply",[123,3943,3944,3949,3968,3973],{},[126,3945,3946],{},[129,3947,2651],{"href":3948},"#cnb-apply-applicable-events",[126,3950,3951,3954],{},[129,3952,2657],{"href":3953},"#cnb-apply-parameters",[123,3955,3956,3962],{},[126,3957,3958],{},[129,3959,3961],{"href":3960},"#cnb-apply-environment-variables","环境变量相关",[126,3963,3964],{},[129,3965,3967],{"href":3966},"#cnb-apply-config-priority","config 取值优先级",[126,3969,3970],{},[129,3971,2663],{"href":3972},"#cnb-apply-output",[126,3974,3975],{},[129,3976,2669],{"href":3977},"#cnb-apply-configuration-examples",[2671,3979,3981],{"id":3980},"适用事件-cnb-apply-applicable-events","适用事件 {#cnb-apply-applicable-events}",[123,3983,3984,3989,3994,3999,4004,4009,4014,4019,4024,4029,4034],{},[126,3985,3986],{},[32,3987,3988],{},"push",[126,3990,3991],{},[32,3992,3993],{},"commit.add",[126,3995,3996],{},[32,3997,3998],{},"branch.create",[126,4000,4001],{},[32,4002,4003],{},"pull_request.target",[126,4005,4006],{},[32,4007,4008],{},"pull_request.mergeable",[126,4010,4011],{},[32,4012,4013],{},"tag_push",[126,4015,4016],{},[32,4017,4018],{},"pull_request.merged",[126,4020,4021],{},[32,4022,4023],{},"api_trigger",[126,4025,4026],{},[32,4027,4028],{},"web_trigger",[126,4030,4031],{},[32,4032,4033],{},"crontab",[126,4035,4036],{},[32,4037,4038],{},"tag_deploy",[2671,4040,4042],{"id":4041},"参数-cnb-apply-parameters","参数 {#cnb-apply-parameters}",[123,4044,4045,4051,4057,4063,4068,4074],{},[126,4046,4047],{},[129,4048,4050],{"href":4049},"#cnb-apply-parameters-config","config",[126,4052,4053],{},[129,4054,4056],{"href":4055},"#cnb-apply-parameters-configFrom","configFrom",[126,4058,4059],{},[129,4060,4062],{"href":4061},"#cnb-apply-parameters-event","event",[126,4064,4065],{},[129,4066,2722],{"href":4067},"#cnb-apply-parameters-sync",[126,4069,4070],{},[129,4071,4073],{"href":4072},"#cnb-apply-parameters-continueOnBuildError","continueOnBuildError",[126,4075,4076],{},[129,4077,4079],{"href":4078},"#cnb-apply-parameters-title","title",[2730,4081,4083],{"id":4082},"config-cnb-apply-parameters-config","config {#cnb-apply-parameters-config}",[123,4085,4086,4090],{},[126,4087,2738,4088],{},[32,4089,2741],{},[126,4091,2744,4092,4094],{},[32,4093,2777],{},"\n完整的 CI 配置文件内容",[2730,4096,4098],{"id":4097},"configfrom-cnb-apply-parameters-configfrom","configFrom {#cnb-apply-parameters-configFrom}",[123,4100,4101,4105],{},[126,4102,2738,4103],{},[32,4104,2741],{},[126,4106,2744,4107,4109],{},[32,4108,2777],{},"\n指定一个本地文件作为配置文件。",[2730,4111,4113],{"id":4112},"event-cnb-apply-parameters-event","event {#cnb-apply-parameters-event}",[123,4115,4116,4120,4124],{},[126,4117,2738,4118],{},[32,4119,2741],{},[126,4121,2744,4122],{},[32,4123,2777],{},[126,4125,2890,4126,4128,4129,4131,4132,4135],{},[32,4127,4023],{},"\n要执行的自定义事件名，必须为 ",[32,4130,4023],{}," 或以 ",[32,4133,4134],{},"api_trigger_"," 开头。",[2730,4137,4139],{"id":4138},"sync-cnb-apply-parameters-sync","sync {#cnb-apply-parameters-sync}",[123,4141,4142,4146,4150],{},[126,4143,2738,4144],{},[32,4145,2883],{},[126,4147,2744,4148],{},[32,4149,2777],{},[126,4151,2890,4152,4154],{},[32,4153,2777],{},"\n是否同步执行。",[17,4156,4157],{},"同步模式下会等待本次 apply 流水线执行成功，再执行下一个任务。",[2730,4159,4161],{"id":4160},"continueonbuilderror-cnb-apply-parameters-continueonbuilderror","continueOnBuildError {#cnb-apply-parameters-continueOnBuildError}",[123,4163,4164,4168,4172],{},[126,4165,2738,4166],{},[32,4167,2883],{},[126,4169,2744,4170],{},[32,4171,2777],{},[126,4173,2890,4174,4176],{},[32,4175,2777],{},"\n同步模式下，触发的流水线构建失败时，是否继续执行下个任务。",[2730,4178,4180],{"id":4179},"title-cnb-apply-parameters-title","title {#cnb-apply-parameters-title}",[123,4182,4183,4187],{},[126,4184,2738,4185],{},[32,4186,2741],{},[126,4188,2744,4189,4191],{},[32,4190,2777],{},"\n自定义流水线标题",[2671,4193,4195],{"id":4194},"环境变量相关-cnb-apply-environment-variables","环境变量相关 {#cnb-apply-environment-variables}",[17,4197,4198,4199,4202],{},"当前 ",[32,4200,4201],{},"Job"," 可见的，业务定义的环境变量全部传递给新的流水线。",[17,4204,4205,4206,4209],{},"默认值中有如下环境变量，",[2782,4207,4208],{},"用户无法覆盖","：",[123,4211,4212,4221,4229,4237,4245,4253,4261,4269,4277,4285,4292,4299],{},[126,4213,4214,4217,4218],{},[32,4215,4216],{},"APPLY_TRIGGER_BUILD_ID","，含义同 CI 默认环境变量中的 ",[32,4219,4220],{},"CNB_BUILD_ID",[126,4222,4223,4217,4226],{},[32,4224,4225],{},"APPLY_TRIGGER_PIPELINE_ID",[32,4227,4228],{},"CNB_PIPELINE_ID",[126,4230,4231,4217,4234],{},[32,4232,4233],{},"APPLY_TRIGGER_REPO_SLUG",[32,4235,4236],{},"CNB_REPO_SLUG",[126,4238,4239,4217,4242],{},[32,4240,4241],{},"APPLY_TRIGGER_REPO_ID",[32,4243,4244],{},"CNB_REPO_ID",[126,4246,4247,4217,4250],{},[32,4248,4249],{},"APPLY_TRIGGER_USER",[32,4251,4252],{},"CNB_BUILD_USER",[126,4254,4255,4217,4258],{},[32,4256,4257],{},"APPLY_TRIGGER_BRANCH",[32,4259,4260],{},"CNB_BRANCH",[126,4262,4263,4217,4266],{},[32,4264,4265],{},"APPLY_TRIGGER_COMMIT",[32,4267,4268],{},"CNB_COMMIT",[126,4270,4271,4217,4274],{},[32,4272,4273],{},"APPLY_TRIGGER_COMMIT_SHORT",[32,4275,4276],{},"CNB_COMMIT_SHORT",[126,4278,4279,4217,4282],{},[32,4280,4281],{},"APPLY_TRIGGER_ORIGIN_EVENT",[32,4283,4284],{},"CNB_EVENT",[126,4286,4287,4217,4290],{},[32,4288,4289],{},"CNB_PULL_REQUEST_ID",[32,4291,4289],{},[126,4293,4294,4217,4297],{},[32,4295,4296],{},"CNB_PULL_REQUEST_IID",[32,4298,4296],{},[126,4300,4301,4217,4304],{},[32,4302,4303],{},"CNB_PULL_REQUEST_MERGE_SHA",[32,4305,4303],{},[2730,4307,4309],{"id":4308},"config-取值优先级-cnb-apply-config-priority","config 取值优先级 {#cnb-apply-config-priority}",[17,4311,4312],{},"按以下顺序依次取值，取到为止：",[3427,4314,4315,4319,4323,4328,4337,4346],{},[126,4316,4317],{},[32,4318,4050],{},[126,4320,4321],{},[32,4322,4056],{},[126,4324,4325,4326],{},"当前仓库 ",[32,4327,2400],{},[126,4329,4330,4331,4333,4334,4336],{},"若在 ",[32,4332,4018],{}," 事件中调用 ",[32,4335,3358],{}," 内置任务，取合并后的配置文件",[126,4338,4330,4339,3359,4341,4333,4343,4345],{},[32,4340,4003],{},[32,4342,4008],{},[32,4344,3358],{}," 内置任务，取目标分支的配置文件",[126,4347,4348],{},"其他情况取当前分支配置文件",[17,4350,4351,4353,4354,4357],{},[32,4352,4056],{}," 只支持本地文件如 ",[32,4355,4356],{},".\u002Ftest\u002F.cnb.yml","，远程文件可先自行下到本地。",[2671,4359,4361],{"id":4360},"输出结果-cnb-apply-output","输出结果 {#cnb-apply-output}",[25,4363,4367],{"className":4364,"code":4365,"language":4366,"meta":30,"style":30},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  \"sn\": \"cnb-i5o-1ht8e12hi\", \u002F\u002F 构建号\n  \"buildLogUrl\": \"http:\u002F\u002Fxxx\u002Fmy-group\u002Fmy-repo\u002F-\u002Fbuild\u002Flogs\u002Fcnb-i5o-1ht8e12hi\", \u002F\u002F 构建日志链接\n  \"message\": \"success\",\n  \"buildSuccess\": true, \u002F\u002F 触发的构建是否成功，此key仅在同步模式下存在\n  \"lastJobExports\": {} \u002F\u002F 触发的流水线最后一个job导出的环境变量\n}\n","json",[32,4368,4369,4373,4401,4424,4445,4462,4479],{"__ignoreMap":30},[35,4370,4371],{"class":37,"line":38},[35,4372,87],{"class":86},[35,4374,4375,4378,4382,4385,4387,4390,4393,4395,4398],{"class":37,"line":90},[35,4376,4377],{"class":86},"  \"",[35,4379,4381],{"class":4380},"smZ93","sn",[35,4383,4384],{"class":86},"\"",[35,4386,59],{"class":86},[35,4388,4389],{"class":86}," \"",[35,4391,4392],{"class":45},"cnb-i5o-1ht8e12hi",[35,4394,4384],{"class":86},[35,4396,4397],{"class":86},",",[35,4399,4400],{"class":2949}," \u002F\u002F 构建号\n",[35,4402,4403,4405,4408,4410,4412,4414,4417,4419,4421],{"class":37,"line":112},[35,4404,4377],{"class":86},[35,4406,4407],{"class":4380},"buildLogUrl",[35,4409,4384],{"class":86},[35,4411,59],{"class":86},[35,4413,4389],{"class":86},[35,4415,4416],{"class":45},"http:\u002F\u002Fxxx\u002Fmy-group\u002Fmy-repo\u002F-\u002Fbuild\u002Flogs\u002Fcnb-i5o-1ht8e12hi",[35,4418,4384],{"class":86},[35,4420,4397],{"class":86},[35,4422,4423],{"class":2949}," \u002F\u002F 构建日志链接\n",[35,4425,4426,4428,4431,4433,4435,4437,4440,4442],{"class":37,"line":162},[35,4427,4377],{"class":86},[35,4429,4430],{"class":4380},"message",[35,4432,4384],{"class":86},[35,4434,59],{"class":86},[35,4436,4389],{"class":86},[35,4438,4439],{"class":45},"success",[35,4441,4384],{"class":86},[35,4443,4444],{"class":86},",\n",[35,4446,4447,4449,4452,4454,4456,4459],{"class":37,"line":166},[35,4448,4377],{"class":86},[35,4450,4451],{"class":4380},"buildSuccess",[35,4453,4384],{"class":86},[35,4455,59],{"class":86},[35,4457,4458],{"class":86}," true,",[35,4460,4461],{"class":2949}," \u002F\u002F 触发的构建是否成功，此key仅在同步模式下存在\n",[35,4463,4464,4466,4469,4471,4473,4476],{"class":37,"line":170},[35,4465,4377],{"class":86},[35,4467,4468],{"class":4380},"lastJobExports",[35,4470,4384],{"class":86},[35,4472,59],{"class":86},[35,4474,4475],{"class":86}," {}",[35,4477,4478],{"class":2949}," \u002F\u002F 触发的流水线最后一个job导出的环境变量\n",[35,4480,4481],{"class":37,"line":174},[35,4482,2963],{"class":86},[2671,4484,4486],{"id":4485},"配置样例-cnb-apply-configuration-examples","配置样例 {#cnb-apply-configuration-examples}",[25,4488,4490],{"className":2970,"code":4489,"language":2972,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: trigger\n          type: cnb:apply\n          options:\n            configFrom: .\u002Ftest\u002F.cnb.yml\n            event: api_trigger_test\n",[32,4491,4492,4498,4504,4513,4524,4533,4539,4549],{"__ignoreMap":30},[35,4493,4494,4496],{"class":37,"line":38},[35,4495,210],{"class":93},[35,4497,2981],{"class":86},[35,4499,4500,4502],{"class":37,"line":90},[35,4501,2986],{"class":93},[35,4503,2981],{"class":86},[35,4505,4506,4508,4511],{"class":37,"line":112},[35,4507,2993],{"class":86},[35,4509,4510],{"class":93}," stages",[35,4512,2981],{"class":86},[35,4514,4515,4517,4519,4521],{"class":37,"line":162},[35,4516,3020],{"class":86},[35,4518,3023],{"class":93},[35,4520,59],{"class":86},[35,4522,4523],{"class":45}," trigger\n",[35,4525,4526,4528,4530],{"class":37,"line":166},[35,4527,3033],{"class":93},[35,4529,59],{"class":86},[35,4531,4532],{"class":45}," cnb:apply\n",[35,4534,4535,4537],{"class":37,"line":170},[35,4536,3043],{"class":93},[35,4538,2981],{"class":86},[35,4540,4541,4544,4546],{"class":37,"line":174},[35,4542,4543],{"class":93},"            configFrom",[35,4545,59],{"class":86},[35,4547,4548],{"class":45}," .\u002Ftest\u002F.cnb.yml\n",[35,4550,4551,4554,4556],{"class":37,"line":178},[35,4552,4553],{"class":93},"            event",[35,4555,59],{"class":86},[35,4557,4558],{"class":45}," api_trigger_test\n",[25,4560,4562],{"className":2970,"code":4561,"language":2972,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: trigger\n          type: cnb:apply\n          options:\n            config: |\n              main:\n                api_trigger_test: \n                - stages:\n                  - name: test\n                    script: echo test\n\n            event: api_trigger_test\n",[32,4563,4564,4570,4576,4584,4594,4602,4608,4618,4623,4628,4633,4638,4643,4647],{"__ignoreMap":30},[35,4565,4566,4568],{"class":37,"line":38},[35,4567,210],{"class":93},[35,4569,2981],{"class":86},[35,4571,4572,4574],{"class":37,"line":90},[35,4573,2986],{"class":93},[35,4575,2981],{"class":86},[35,4577,4578,4580,4582],{"class":37,"line":112},[35,4579,2993],{"class":86},[35,4581,4510],{"class":93},[35,4583,2981],{"class":86},[35,4585,4586,4588,4590,4592],{"class":37,"line":162},[35,4587,3020],{"class":86},[35,4589,3023],{"class":93},[35,4591,59],{"class":86},[35,4593,4523],{"class":45},[35,4595,4596,4598,4600],{"class":37,"line":166},[35,4597,3033],{"class":93},[35,4599,59],{"class":86},[35,4601,4532],{"class":45},[35,4603,4604,4606],{"class":37,"line":170},[35,4605,3043],{"class":93},[35,4607,2981],{"class":86},[35,4609,4610,4613,4615],{"class":37,"line":174},[35,4611,4612],{"class":93},"            config",[35,4614,59],{"class":86},[35,4616,4617],{"class":71}," |\n",[35,4619,4620],{"class":37,"line":178},[35,4621,4622],{"class":45},"              main:\n",[35,4624,4625],{"class":37,"line":181},[35,4626,4627],{"class":45},"                api_trigger_test: \n",[35,4629,4630],{"class":37,"line":185},[35,4631,4632],{"class":45},"                - stages:\n",[35,4634,4635],{"class":37,"line":1000},[35,4636,4637],{"class":45},"                  - name: test\n",[35,4639,4640],{"class":37,"line":1025},[35,4641,4642],{"class":45},"                    script: echo test\n",[35,4644,4645],{"class":37,"line":1256},[35,4646,3219],{"emptyLinePlaceholder":201},[35,4648,4649,4651,4653],{"class":37,"line":164},[35,4650,4553],{"class":93},[35,4652,59],{"class":86},[35,4654,4558],{"class":45},[25,4656,4658],{"className":2970,"code":4657,"language":2972,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: trigger\n          type: cnb:apply\n          options:\n            # 执行当前配置文件的其它事件\n            event: api_trigger_test\n  api_trigger_test:\n    - stages:\n        - name: test\n          script: echo test\n",[32,4659,4660,4666,4672,4680,4690,4698,4704,4709,4717,4724,4732,4743],{"__ignoreMap":30},[35,4661,4662,4664],{"class":37,"line":38},[35,4663,210],{"class":93},[35,4665,2981],{"class":86},[35,4667,4668,4670],{"class":37,"line":90},[35,4669,2986],{"class":93},[35,4671,2981],{"class":86},[35,4673,4674,4676,4678],{"class":37,"line":112},[35,4675,2993],{"class":86},[35,4677,4510],{"class":93},[35,4679,2981],{"class":86},[35,4681,4682,4684,4686,4688],{"class":37,"line":162},[35,4683,3020],{"class":86},[35,4685,3023],{"class":93},[35,4687,59],{"class":86},[35,4689,4523],{"class":45},[35,4691,4692,4694,4696],{"class":37,"line":166},[35,4693,3033],{"class":93},[35,4695,59],{"class":86},[35,4697,4532],{"class":45},[35,4699,4700,4702],{"class":37,"line":170},[35,4701,3043],{"class":93},[35,4703,2981],{"class":86},[35,4705,4706],{"class":37,"line":174},[35,4707,4708],{"class":2949},"            # 执行当前配置文件的其它事件\n",[35,4710,4711,4713,4715],{"class":37,"line":178},[35,4712,4553],{"class":93},[35,4714,59],{"class":86},[35,4716,4558],{"class":45},[35,4718,4719,4722],{"class":37,"line":181},[35,4720,4721],{"class":93},"  api_trigger_test",[35,4723,2981],{"class":86},[35,4725,4726,4728,4730],{"class":37,"line":185},[35,4727,2993],{"class":86},[35,4729,4510],{"class":93},[35,4731,2981],{"class":86},[35,4733,4734,4736,4738,4740],{"class":37,"line":1000},[35,4735,3020],{"class":86},[35,4737,3023],{"class":93},[35,4739,59],{"class":86},[35,4741,4742],{"class":45}," test\n",[35,4744,4745,4747,4749],{"class":37,"line":1025},[35,4746,3179],{"class":93},[35,4748,59],{"class":86},[35,4750,4751],{"class":45}," echo test\n",[25,4753,4755],{"className":2970,"code":4754,"language":2972,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: trigger\n          type: cnb:apply\n          options:\n            configFrom: .xxx.yml\n            event: api_trigger_test\n            sync: true\n",[32,4756,4757,4763,4769,4777,4787,4795,4801,4810,4818],{"__ignoreMap":30},[35,4758,4759,4761],{"class":37,"line":38},[35,4760,210],{"class":93},[35,4762,2981],{"class":86},[35,4764,4765,4767],{"class":37,"line":90},[35,4766,2986],{"class":93},[35,4768,2981],{"class":86},[35,4770,4771,4773,4775],{"class":37,"line":112},[35,4772,2993],{"class":86},[35,4774,4510],{"class":93},[35,4776,2981],{"class":86},[35,4778,4779,4781,4783,4785],{"class":37,"line":162},[35,4780,3020],{"class":86},[35,4782,3023],{"class":93},[35,4784,59],{"class":86},[35,4786,4523],{"class":45},[35,4788,4789,4791,4793],{"class":37,"line":166},[35,4790,3033],{"class":93},[35,4792,59],{"class":86},[35,4794,4532],{"class":45},[35,4796,4797,4799],{"class":37,"line":170},[35,4798,3043],{"class":93},[35,4800,2981],{"class":86},[35,4802,4803,4805,4807],{"class":37,"line":174},[35,4804,4543],{"class":93},[35,4806,59],{"class":86},[35,4808,4809],{"class":45}," .xxx.yml\n",[35,4811,4812,4814,4816],{"class":37,"line":178},[35,4813,4553],{"class":93},[35,4815,59],{"class":86},[35,4817,4558],{"class":45},[35,4819,4820,4823,4825],{"class":37,"line":181},[35,4821,4822],{"class":93},"            sync",[35,4824,59],{"class":86},[35,4826,4828],{"class":4827},"sbKd-"," true\n",[2622,4830,4832],{"id":4831},"read-file-cnb-read-file","read-file {#cnb-read-file}",[17,4834,4835],{},[32,4836,4837],{},"cnb:read-file",[17,4839,4840],{},"读取文件内容解析输出给后续任务。",[17,4842,4843,4844,4847],{},"用 ",[32,4845,4846],{},"##[set-output key=value]"," 指令输出变量更便捷，但会将内容输出到日志，不适用于敏感信息。",[17,4849,4850,4851,4854],{},"对于事先确定的敏感信息可以用 ",[32,4852,4853],{},"imports"," 导入，对于构建过程中生成的敏感信息，可写入文件，用该内置任务读取。",[17,4856,4857,4859],{},[32,4858,4853],{}," 只支持远端仓库存在的文件，该内置任务只支持读取本地存在的文件。",[17,4861,4862,4863,4866],{},"文件类型通过后缀判断，目前支持 json、 yml(yaml)、 纯文本（",[32,4864,4865],{},"key=value"," 结构）。",[123,4868,4869,4874,4879,4884],{},[126,4870,4871],{},[129,4872,2651],{"href":4873},"#cnb-read-file-applicable-events",[126,4875,4876],{},[129,4877,2657],{"href":4878},"#cnb-read-file-parameters",[126,4880,4881],{},[129,4882,2663],{"href":4883},"#cnb-read-file-output",[126,4885,4886],{},[129,4887,2669],{"href":4888},"#cnb-read-file-configuration-examples",[2671,4890,4892],{"id":4891},"适用事件-cnb-read-file-适用事件","适用事件 {#cnb-read-file-适用事件}",[17,4894,4895],{},[129,4896,2680],{"href":2679},[2671,4898,4900],{"id":4899},"参数-cnb-read-file-parameters","参数 {#cnb-read-file-parameters}",[2730,4902,4904],{"id":4903},"filepath","filePath",[123,4906,4907,4909],{},[126,4908,3582],{},[126,4910,3585],{},[17,4912,4913],{},"本地文件路径",[2671,4915,4917],{"id":4916},"输出结果-cnb-read-file-output","输出结果 {#cnb-read-file-output}",[25,4919,4921],{"className":4364,"code":4920,"language":4366,"meta":30,"style":30},"{\n  \u002F\u002F 读到的对象\n}\n",[32,4922,4923,4927,4932],{"__ignoreMap":30},[35,4924,4925],{"class":37,"line":38},[35,4926,87],{"class":86},[35,4928,4929],{"class":37,"line":90},[35,4930,4931],{"class":2949},"  \u002F\u002F 读到的对象\n",[35,4933,4934],{"class":37,"line":112},[35,4935,2963],{"class":86},[2671,4937,4939],{"id":4938},"配置样例-cnb-read-file-configuration-examples","配置样例 {#cnb-read-file-configuration-examples}",[17,4941,4942],{},"将一些后续任务需要的变量写入文件，用该内置任务读取文件导出为环境变量，供后续任务使用。",[25,4944,4947],{"className":4364,"code":4945,"language":4366,"meta":4946,"style":30},"{\n  \"myVar\": \"myVar\",\n  \"deep\": {\n    \"myVar\": \"myVar in deep\"\n  },\n  \"deepWithEnvKey\": {\n    \"myVar\": \"myVar in deepWithEnvKey\"\n  }\n}\n","title=\"myJson.json\"",[32,4948,4949,4953,4972,4986,5005,5010,5023,5040,5045],{"__ignoreMap":30},[35,4950,4951],{"class":37,"line":38},[35,4952,87],{"class":86},[35,4954,4955,4957,4960,4962,4964,4966,4968,4970],{"class":37,"line":90},[35,4956,4377],{"class":86},[35,4958,4959],{"class":4380},"myVar",[35,4961,4384],{"class":86},[35,4963,59],{"class":86},[35,4965,4389],{"class":86},[35,4967,4959],{"class":45},[35,4969,4384],{"class":86},[35,4971,4444],{"class":86},[35,4973,4974,4976,4979,4981,4983],{"class":37,"line":112},[35,4975,4377],{"class":86},[35,4977,4978],{"class":4380},"deep",[35,4980,4384],{"class":86},[35,4982,59],{"class":86},[35,4984,4985],{"class":86}," {\n",[35,4987,4988,4991,4993,4995,4997,4999,5002],{"class":37,"line":162},[35,4989,4990],{"class":86},"    \"",[35,4992,4959],{"class":41},[35,4994,4384],{"class":86},[35,4996,59],{"class":86},[35,4998,4389],{"class":86},[35,5000,5001],{"class":45},"myVar in deep",[35,5003,5004],{"class":86},"\"\n",[35,5006,5007],{"class":37,"line":166},[35,5008,5009],{"class":86},"  },\n",[35,5011,5012,5014,5017,5019,5021],{"class":37,"line":170},[35,5013,4377],{"class":86},[35,5015,5016],{"class":4380},"deepWithEnvKey",[35,5018,4384],{"class":86},[35,5020,59],{"class":86},[35,5022,4985],{"class":86},[35,5024,5025,5027,5029,5031,5033,5035,5038],{"class":37,"line":174},[35,5026,4990],{"class":86},[35,5028,4959],{"class":41},[35,5030,4384],{"class":86},[35,5032,59],{"class":86},[35,5034,4389],{"class":86},[35,5036,5037],{"class":45},"myVar in deepWithEnvKey",[35,5039,5004],{"class":86},[35,5041,5042],{"class":37,"line":178},[35,5043,5044],{"class":86},"  }\n",[35,5046,5047],{"class":37,"line":181},[35,5048,2963],{"class":86},[25,5050,5053],{"className":2970,"code":5051,"language":2972,"meta":5052,"style":30},"main:\n  push:\n    - env:\n        myKey: deepWithEnvKey\n      stages:\n        - name: write env file\n          script: echo \"write env to myJson.json\"\n        - name: export env\n          type: cnb:read-file\n          options:\n            filePath: myJson.json\n          exports:\n            myVar: ENV_MY_VAR\n            deep.myVar: ENV_DEEP_MY_VAR #指定多级的key\n            $myKey.myVar: ENV_ENV_KEY_MY_VAR #通过环境变量指定获取的key\n        - name: echo env\n          script:\n            - echo $ENV_MY_VAR\n            - echo $ENV_DEEP_MY_VAR\n            - echo $ENV_ENV_KEY_MY_VAR\n","title=\"cnb.yml\"",[32,5054,5055,5061,5067,5076,5086,5092,5103,5112,5123,5132,5138,5148,5154,5164,5177,5190,5201,5207,5214,5221],{"__ignoreMap":30},[35,5056,5057,5059],{"class":37,"line":38},[35,5058,210],{"class":93},[35,5060,2981],{"class":86},[35,5062,5063,5065],{"class":37,"line":90},[35,5064,2986],{"class":93},[35,5066,2981],{"class":86},[35,5068,5069,5071,5074],{"class":37,"line":112},[35,5070,2993],{"class":86},[35,5072,5073],{"class":93}," env",[35,5075,2981],{"class":86},[35,5077,5078,5081,5083],{"class":37,"line":162},[35,5079,5080],{"class":93},"        myKey",[35,5082,59],{"class":86},[35,5084,5085],{"class":45}," deepWithEnvKey\n",[35,5087,5088,5090],{"class":37,"line":166},[35,5089,3013],{"class":93},[35,5091,2981],{"class":86},[35,5093,5094,5096,5098,5100],{"class":37,"line":170},[35,5095,3020],{"class":86},[35,5097,3023],{"class":93},[35,5099,59],{"class":86},[35,5101,5102],{"class":45}," write env file\n",[35,5104,5105,5107,5109],{"class":37,"line":174},[35,5106,3179],{"class":93},[35,5108,59],{"class":86},[35,5110,5111],{"class":45}," echo \"write env to myJson.json\"\n",[35,5113,5114,5116,5118,5120],{"class":37,"line":178},[35,5115,3020],{"class":86},[35,5117,3023],{"class":93},[35,5119,59],{"class":86},[35,5121,5122],{"class":45}," export env\n",[35,5124,5125,5127,5129],{"class":37,"line":181},[35,5126,3033],{"class":93},[35,5128,59],{"class":86},[35,5130,5131],{"class":45}," cnb:read-file\n",[35,5133,5134,5136],{"class":37,"line":185},[35,5135,3043],{"class":93},[35,5137,2981],{"class":86},[35,5139,5140,5143,5145],{"class":37,"line":1000},[35,5141,5142],{"class":93},"            filePath",[35,5144,59],{"class":86},[35,5146,5147],{"class":45}," myJson.json\n",[35,5149,5150,5152],{"class":37,"line":1025},[35,5151,3107],{"class":93},[35,5153,2981],{"class":86},[35,5155,5156,5159,5161],{"class":37,"line":1256},[35,5157,5158],{"class":93},"            myVar",[35,5160,59],{"class":86},[35,5162,5163],{"class":45}," ENV_MY_VAR\n",[35,5165,5166,5169,5171,5174],{"class":37,"line":164},[35,5167,5168],{"class":93},"            deep.myVar",[35,5170,59],{"class":86},[35,5172,5173],{"class":45}," ENV_DEEP_MY_VAR",[35,5175,5176],{"class":2949}," #指定多级的key\n",[35,5178,5179,5182,5184,5187],{"class":37,"line":3090},[35,5180,5181],{"class":93},"            $myKey.myVar",[35,5183,59],{"class":86},[35,5185,5186],{"class":45}," ENV_ENV_KEY_MY_VAR",[35,5188,5189],{"class":2949}," #通过环境变量指定获取的key\n",[35,5191,5192,5194,5196,5198],{"class":37,"line":157},[35,5193,3020],{"class":86},[35,5195,3023],{"class":93},[35,5197,59],{"class":86},[35,5199,5200],{"class":45}," echo env\n",[35,5202,5203,5205],{"class":37,"line":3104},[35,5204,3179],{"class":93},[35,5206,2981],{"class":86},[35,5208,5209,5211],{"class":37,"line":864},[35,5210,3158],{"class":86},[35,5212,5213],{"class":45}," echo $ENV_MY_VAR\n",[35,5215,5216,5218],{"class":37,"line":881},[35,5217,3158],{"class":86},[35,5219,5220],{"class":45}," echo $ENV_DEEP_MY_VAR\n",[35,5222,5223,5225],{"class":37,"line":1009},[35,5224,3158],{"class":86},[35,5226,5227],{"class":45}," echo $ENV_ENV_KEY_MY_VAR\n",[2622,5229,5231],{"id":5230},"trigger-cnb-trigger","trigger {#cnb-trigger}",[17,5233,5234],{},[32,5235,5236],{},"cnb:trigger",[17,5238,5239],{},"在当前仓库中，触发另外一个仓库的自定义事件流水线。",[123,5241,5242,5247,5252,5257],{},[126,5243,5244],{},[129,5245,2651],{"href":5246},"#cnb-trigger-applicable-events",[126,5248,5249],{},[129,5250,2657],{"href":5251},"#cnb-trigger-parameters",[126,5253,5254],{},[129,5255,2663],{"href":5256},"#cnb-trigger-output",[126,5258,5259,5262],{},[129,5260,2669],{"href":5261},"#cnb-trigger-configuration-examples",[123,5263,5264],{},[126,5265,5266],{},[129,5267,5269],{"href":5268},"#cnb-trigger-configuration-examples-basic-usage","基本使用",[2671,5271,5273],{"id":5272},"适用事件-cnb-trigger-applicable-events","适用事件 {#cnb-trigger-applicable-events}",[17,5275,5276],{},[129,5277,2680],{"href":2679},[2671,5279,5281],{"id":5280},"参数-cnb-trigger-parameters","参数 {#cnb-trigger-parameters}",[123,5283,5284,5290,5296,5301,5307,5313,5319,5324,5329],{},[126,5285,5286],{},[129,5287,5289],{"href":5288},"#cnb-trigger-parameters-token","token",[126,5291,5292],{},[129,5293,5295],{"href":5294},"#cnb-trigger-parameters-slug","slug",[126,5297,5298],{},[129,5299,4062],{"href":5300},"#cnb-trigger-parameters-event",[126,5302,5303],{},[129,5304,5306],{"href":5305},"#cnb-trigger-parameters-branch","branch",[126,5308,5309],{},[129,5310,5312],{"href":5311},"#cnb-trigger-parameters-sha","sha",[126,5314,5315],{},[129,5316,5318],{"href":5317},"#cnb-trigger-parameters-env","env",[126,5320,5321],{},[129,5322,2722],{"href":5323},"#cnb-trigger-parameters-sync",[126,5325,5326],{},[129,5327,4073],{"href":5328},"#cnb-trigger-parameters-continueOnBuildError",[126,5330,5331],{},[129,5332,4079],{"href":5333},"#cnb-trigger-parameters-title",[2730,5335,5337],{"id":5336},"token-cnb-trigger-parameters-token","token {#cnb-trigger-parameters-token}",[123,5339,5340,5344],{},[126,5341,2738,5342],{},[32,5343,2741],{},[126,5345,2744,5346],{},[32,5347,2747],{},[17,5349,5350],{},"个人访问令牌。",[17,5352,5353],{},"新流水线触发者为令牌对应用户，会判断有无目标仓库权限。",[2730,5355,5357],{"id":5356},"slug-cnb-trigger-parameters-slug","slug {#cnb-trigger-parameters-slug}",[123,5359,5360,5364],{},[126,5361,2738,5362],{},[32,5363,2741],{},[126,5365,2744,5366],{},[32,5367,2747],{},[17,5369,5370],{},"目标仓库的完整路径，如：group\u002Frepo。",[2730,5372,5374],{"id":5373},"event-cnb-trigger-parameters-event","event {#cnb-trigger-parameters-event}",[123,5376,5377,5381],{},[126,5378,2738,5379],{},[32,5380,2741],{},[126,5382,2744,5383],{},[32,5384,2747],{},[17,5386,5387,5388,4131,5390,4135],{},"触发的自定义事件名，必须是 ",[32,5389,4023],{},[32,5391,4134],{},[17,5393,5394],{},"需要目标仓库配置了对应事件的流水线，才可以触发。",[2730,5396,5398],{"id":5397},"branch-cnb-trigger-parameters-branch","branch {#cnb-trigger-parameters-branch}",[123,5400,5401,5405],{},[126,5402,2738,5403],{},[32,5404,2741],{},[126,5406,2744,5407],{},[32,5408,2777],{},[17,5410,5411],{},"触发分支，默认为主分支。",[2730,5413,5415],{"id":5414},"sha-cnb-trigger-parameters-sha","sha {#cnb-trigger-parameters-sha}",[123,5417,5418,5422],{},[126,5419,2738,5420],{},[32,5421,2741],{},[126,5423,2744,5424],{},[32,5425,2777],{},[17,5427,5428],{},"触发分支中的 CommitId，默认取 branch 的最新提交记录。",[2730,5430,5432],{"id":5431},"env-cnb-trigger-parameters-env","env {#cnb-trigger-parameters-env}",[123,5434,5435,5441],{},[126,5436,2738,5437],{},[129,5438,5440],{"href":5439},"#cnb-trigger-parameters-type-definitions-TriggerEnv","TriggerEnv",[126,5442,2744,5443],{},[32,5444,2777],{},[17,5446,5447],{},"触发目标仓库流水线时的环境变量。",[17,5449,5450],{},"默认值中有如下环境变量，用户无法覆盖：",[123,5452,5453,5460,5467,5474,5481,5488,5495,5502],{},[126,5454,5455,4217,5458],{},[32,5456,5457],{},"API_TRIGGER_BUILD_ID",[32,5459,4220],{},[126,5461,5462,4217,5465],{},[32,5463,5464],{},"API_TRIGGER_PIPELINE_ID",[32,5466,4228],{},[126,5468,5469,4217,5472],{},[32,5470,5471],{},"API_TRIGGER_REPO_SLUG",[32,5473,4236],{},[126,5475,5476,4217,5479],{},[32,5477,5478],{},"API_TRIGGER_REPO_ID",[32,5480,4244],{},[126,5482,5483,4217,5486],{},[32,5484,5485],{},"API_TRIGGER_USER",[32,5487,4252],{},[126,5489,5490,4217,5493],{},[32,5491,5492],{},"API_TRIGGER_BRANCH",[32,5494,4260],{},[126,5496,5497,4217,5500],{},[32,5498,5499],{},"API_TRIGGER_COMMIT",[32,5501,4268],{},[126,5503,5504,4217,5507],{},[32,5505,5506],{},"API_TRIGGER_COMMIT_SHORT",[32,5508,4276],{},[2730,5510,5512],{"id":5511},"sync-cnb-trigger-parameters-sync","sync {#cnb-trigger-parameters-sync}",[123,5514,5515,5518,5520],{},[126,5516,5517],{},"type: Boolean",[126,5519,3617],{},[126,5521,5522],{},"default: false",[17,5524,5525],{},"是否同步执行，同步模式下会等待本次 trigger 流水线执行成功后，再执行下一个任务。",[2730,5527,5529],{"id":5528},"continueonbuilderror-cnb-trigger-parameters-continueonbuilderror","continueOnBuildError {#cnb-trigger-parameters-continueOnBuildError}",[123,5531,5532,5534,5536],{},[126,5533,5517],{},[126,5535,3617],{},[126,5537,5522],{},[17,5539,5540],{},"同步模式下，触发的流水线构建失败时，是否继续执行下个任务。",[2730,5542,5544],{"id":5543},"title-cnb-trigger-parameters-title","title {#cnb-trigger-parameters-title}",[123,5546,5547,5549],{},[126,5548,3582],{},[126,5550,3617],{},[17,5552,5553],{},"自定义流水线标题",[2730,5555,5557],{"id":5556},"类型定义-cnb-trigger-parameters-type-definitions","类型定义 {#cnb-trigger-parameters-type-definitions}",[3594,5559,5561],{"id":5560},"triggerenv-cnb-trigger-parameters-type-definitions-triggerenv","TriggerEnv {#cnb-trigger-parameters-type-definitions-TriggerEnv}",[25,5563,5567],{"className":5564,"code":5565,"language":5566,"meta":30,"style":30},"language-txt shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n    [key: String]: String | Number | Boolean\n}\n","txt",[32,5568,5569,5573,5578],{"__ignoreMap":30},[35,5570,5571],{"class":37,"line":38},[35,5572,87],{},[35,5574,5575],{"class":37,"line":90},[35,5576,5577],{},"    [key: String]: String | Number | Boolean\n",[35,5579,5580],{"class":37,"line":112},[35,5581,2963],{},[2671,5583,5585],{"id":5584},"输出结果-cnb-trigger-output","输出结果 {#cnb-trigger-output}",[25,5587,5588],{"className":4364,"code":4365,"language":4366,"meta":30,"style":30},[32,5589,5590,5594,5614,5634,5652,5666,5680],{"__ignoreMap":30},[35,5591,5592],{"class":37,"line":38},[35,5593,87],{"class":86},[35,5595,5596,5598,5600,5602,5604,5606,5608,5610,5612],{"class":37,"line":90},[35,5597,4377],{"class":86},[35,5599,4381],{"class":4380},[35,5601,4384],{"class":86},[35,5603,59],{"class":86},[35,5605,4389],{"class":86},[35,5607,4392],{"class":45},[35,5609,4384],{"class":86},[35,5611,4397],{"class":86},[35,5613,4400],{"class":2949},[35,5615,5616,5618,5620,5622,5624,5626,5628,5630,5632],{"class":37,"line":112},[35,5617,4377],{"class":86},[35,5619,4407],{"class":4380},[35,5621,4384],{"class":86},[35,5623,59],{"class":86},[35,5625,4389],{"class":86},[35,5627,4416],{"class":45},[35,5629,4384],{"class":86},[35,5631,4397],{"class":86},[35,5633,4423],{"class":2949},[35,5635,5636,5638,5640,5642,5644,5646,5648,5650],{"class":37,"line":162},[35,5637,4377],{"class":86},[35,5639,4430],{"class":4380},[35,5641,4384],{"class":86},[35,5643,59],{"class":86},[35,5645,4389],{"class":86},[35,5647,4439],{"class":45},[35,5649,4384],{"class":86},[35,5651,4444],{"class":86},[35,5653,5654,5656,5658,5660,5662,5664],{"class":37,"line":166},[35,5655,4377],{"class":86},[35,5657,4451],{"class":4380},[35,5659,4384],{"class":86},[35,5661,59],{"class":86},[35,5663,4458],{"class":86},[35,5665,4461],{"class":2949},[35,5667,5668,5670,5672,5674,5676,5678],{"class":37,"line":170},[35,5669,4377],{"class":86},[35,5671,4468],{"class":4380},[35,5673,4384],{"class":86},[35,5675,59],{"class":86},[35,5677,4475],{"class":86},[35,5679,4478],{"class":2949},[35,5681,5682],{"class":37,"line":174},[35,5683,2963],{"class":86},[2671,5685,5687],{"id":5686},"配置样例-cnb-trigger-configuration-examples","配置样例 {#cnb-trigger-configuration-examples}",[2730,5689,5691],{"id":5690},"基本使用-cnb-trigger-configuration-examples-basic-usage","基本使用 {#cnb-trigger-configuration-examples-basic-usage}",[17,5693,5694,5695,5697,5698,5701],{},"在当前仓库触发一个仓库 ",[32,5696,210],{}," 分支的事件名为 ",[32,5699,5700],{},"api_trigger_test"," 的流水线。",[17,5703,5704,5705,5707,5708,5710],{},"该流水线配置文件使用仓库 ",[32,5706,210],{}," 分支的 ",[32,5709,2400],{}," 文件。",[17,5712,5713,5714,5717],{},"使用访问令牌 ",[32,5715,5716],{},"$TOKEN"," 查询用户是否有仓库权限。",[25,5719,5721],{"className":2970,"code":5720,"language":2972,"meta":5052,"style":30},"main:\n  push:\n    - stages:\n        - name: trigger\n          type: cnb:trigger\n          imports: https:\u002F\u002Fcnb.cool\u002F\u003Cyour-repo-slug>\u002F-\u002Fblob\u002Fmain\u002Fxxx\u002Fenvs.yml\n          options:\n            token: $TOKEN\n            slug: a\u002Fb\n            branch: main\n            event: api_trigger_test\n",[32,5722,5723,5729,5735,5743,5753,5762,5772,5778,5788,5798,5808],{"__ignoreMap":30},[35,5724,5725,5727],{"class":37,"line":38},[35,5726,210],{"class":93},[35,5728,2981],{"class":86},[35,5730,5731,5733],{"class":37,"line":90},[35,5732,2986],{"class":93},[35,5734,2981],{"class":86},[35,5736,5737,5739,5741],{"class":37,"line":112},[35,5738,2993],{"class":86},[35,5740,4510],{"class":93},[35,5742,2981],{"class":86},[35,5744,5745,5747,5749,5751],{"class":37,"line":162},[35,5746,3020],{"class":86},[35,5748,3023],{"class":93},[35,5750,59],{"class":86},[35,5752,4523],{"class":45},[35,5754,5755,5757,5759],{"class":37,"line":166},[35,5756,3033],{"class":93},[35,5758,59],{"class":86},[35,5760,5761],{"class":45}," cnb:trigger\n",[35,5763,5764,5767,5769],{"class":37,"line":170},[35,5765,5766],{"class":93},"          imports",[35,5768,59],{"class":86},[35,5770,5771],{"class":45}," https:\u002F\u002Fcnb.cool\u002F\u003Cyour-repo-slug>\u002F-\u002Fblob\u002Fmain\u002Fxxx\u002Fenvs.yml\n",[35,5773,5774,5776],{"class":37,"line":174},[35,5775,3043],{"class":93},[35,5777,2981],{"class":86},[35,5779,5780,5783,5785],{"class":37,"line":178},[35,5781,5782],{"class":93},"            token",[35,5784,59],{"class":86},[35,5786,5787],{"class":45}," $TOKEN\n",[35,5789,5790,5793,5795],{"class":37,"line":181},[35,5791,5792],{"class":93},"            slug",[35,5794,59],{"class":86},[35,5796,5797],{"class":45}," a\u002Fb\n",[35,5799,5800,5803,5805],{"class":37,"line":185},[35,5801,5802],{"class":93},"            branch",[35,5804,59],{"class":86},[35,5806,5807],{"class":45}," main\n",[35,5809,5810,5812,5814],{"class":37,"line":1000},[35,5811,4553],{"class":93},[35,5813,59],{"class":86},[35,5815,4558],{"class":45},[21,5817,5818],{"id":5818},"vscode",[2622,5820,5822],{"id":5821},"go-vscode-go","go {#vscode-go}",[17,5824,5825],{},[32,5826,5827],{},"vscode:go",[17,5829,5830],{},"远程开发中是否配置该内置任务的区别：",[123,5832,5833,5836],{},[126,5834,5835],{},"==使用该任务==： 启动云原生开发时，需等待该任务执行完，才出现 WebIDE 和 VSCode\u002FCursor 客户端入口。",[126,5837,5838],{},"==不使用该任务==： 流水线 prepare 阶段执行完（code-server 代码服务启动），stages 任务执行前，就会出现 WebIDE 和 VSCode\u002FCursor 客户端入口。",[17,5840,5841,5842,5845,5846,5849],{},"上述入口出现时机区别：仅指从 ",[32,5843,5844],{},"loading"," 等待页到跳转入口选择页出现的时机。 实际上无论是否使用该任务，在 ",[32,5847,5848],{},"code-server"," 代码服务启动后，远程开发已经是可用状态。",[17,5851,5852],{},"注意：使用该任务将增加等待时间。如果需要延迟开发者进入时机，在某些任务执行完才允许进入远程开发环境，可使用该任务。",[123,5854,5855,5860,5865],{},[126,5856,5857],{},[129,5858,2651],{"href":5859},"#vscode-go-applicable-events",[126,5861,5862],{},[129,5863,2663],{"href":5864},"#vscode-go-output",[126,5866,5867],{},[129,5868,2669],{"href":5869},"#vscode-go-configuration-examples",[2671,5871,5873],{"id":5872},"适用事件-vscode-go-applicable-events","适用事件 {#vscode-go-applicable-events}",[123,5875,5876,5880,5884,5888],{},[126,5877,5878],{},[32,5879,5818],{},[126,5881,5882],{},[32,5883,3998],{},[126,5885,5886],{},[32,5887,4023],{},[126,5889,5890],{},[32,5891,4028],{},[2671,5893,5895],{"id":5894},"输出结果-vscode-go-output","输出结果 {#vscode-go-output}",[25,5897,5899],{"className":4364,"code":5898,"language":4366,"meta":30,"style":30},"{\n  \u002F\u002F webide url\n  \"url\": \"\"\n}\n",[32,5900,5901,5905,5910,5924],{"__ignoreMap":30},[35,5902,5903],{"class":37,"line":38},[35,5904,87],{"class":86},[35,5906,5907],{"class":37,"line":90},[35,5908,5909],{"class":2949},"  \u002F\u002F webide url\n",[35,5911,5912,5914,5917,5919,5921],{"class":37,"line":112},[35,5913,4377],{"class":86},[35,5915,5916],{"class":4380},"url",[35,5918,4384],{"class":86},[35,5920,59],{"class":86},[35,5922,5923],{"class":86}," \"\"\n",[35,5925,5926],{"class":37,"line":162},[35,5927,2963],{"class":86},[2671,5929,5931],{"id":5930},"配置样例-vscode-go-configuration-examples","配置样例 {#vscode-go-configuration-examples}",[25,5933,5936],{"className":2970,"code":5934,"language":2972,"meta":5935,"style":30},"$:\n  # vscode 事件：专供页面中启动远程开发用\n  vscode:\n    - docker:\n        # 使用自定义镜像作为开发环境，未传入此参数，将使用默认镜像 cnbcool\u002Fdefault-dev-env:latest\n        image: cnbcool\u002Fdefault-dev-env:latest\n      services:\n        - vscode\n        - docker\n      stages:\n        # 希望等该任务执行完再进入开发环境\n        - name: ls\n          script: ls -al\n        - name: vscode go\n          type: vscode:go\n        # 可以在进入开发环境后再执行的任务\n        - name: ls\n          script: ls -al\n","title=\".cnb.yml\"",[32,5937,5938,5945,5950,5957,5965,5970,5979,5986,5993,6000,6006,6011,6022,6031,6042,6051,6056,6066],{"__ignoreMap":30},[35,5939,5940,5943],{"class":37,"line":38},[35,5941,5942],{"class":93},"$",[35,5944,2981],{"class":86},[35,5946,5947],{"class":37,"line":90},[35,5948,5949],{"class":2949},"  # vscode 事件：专供页面中启动远程开发用\n",[35,5951,5952,5955],{"class":37,"line":112},[35,5953,5954],{"class":93},"  vscode",[35,5956,2981],{"class":86},[35,5958,5959,5961,5963],{"class":37,"line":162},[35,5960,2993],{"class":86},[35,5962,2996],{"class":93},[35,5964,2981],{"class":86},[35,5966,5967],{"class":37,"line":166},[35,5968,5969],{"class":2949},"        # 使用自定义镜像作为开发环境，未传入此参数，将使用默认镜像 cnbcool\u002Fdefault-dev-env:latest\n",[35,5971,5972,5974,5976],{"class":37,"line":170},[35,5973,3003],{"class":93},[35,5975,59],{"class":86},[35,5977,5978],{"class":45}," cnbcool\u002Fdefault-dev-env:latest\n",[35,5980,5981,5984],{"class":37,"line":174},[35,5982,5983],{"class":93},"      services",[35,5985,2981],{"class":86},[35,5987,5988,5990],{"class":37,"line":178},[35,5989,3020],{"class":86},[35,5991,5992],{"class":45}," vscode\n",[35,5994,5995,5997],{"class":37,"line":181},[35,5996,3020],{"class":86},[35,5998,5999],{"class":45}," docker\n",[35,6001,6002,6004],{"class":37,"line":185},[35,6003,3013],{"class":93},[35,6005,2981],{"class":86},[35,6007,6008],{"class":37,"line":1000},[35,6009,6010],{"class":2949},"        # 希望等该任务执行完再进入开发环境\n",[35,6012,6013,6015,6017,6019],{"class":37,"line":1025},[35,6014,3020],{"class":86},[35,6016,3023],{"class":93},[35,6018,59],{"class":86},[35,6020,6021],{"class":45}," ls\n",[35,6023,6024,6026,6028],{"class":37,"line":1256},[35,6025,3179],{"class":93},[35,6027,59],{"class":86},[35,6029,6030],{"class":45}," ls -al\n",[35,6032,6033,6035,6037,6039],{"class":37,"line":164},[35,6034,3020],{"class":86},[35,6036,3023],{"class":93},[35,6038,59],{"class":86},[35,6040,6041],{"class":45}," vscode go\n",[35,6043,6044,6046,6048],{"class":37,"line":3090},[35,6045,3033],{"class":93},[35,6047,59],{"class":86},[35,6049,6050],{"class":45}," vscode:go\n",[35,6052,6053],{"class":37,"line":157},[35,6054,6055],{"class":2949},"        # 可以在进入开发环境后再执行的任务\n",[35,6057,6058,6060,6062,6064],{"class":37,"line":3104},[35,6059,3020],{"class":86},[35,6061,3023],{"class":93},[35,6063,59],{"class":86},[35,6065,6021],{"class":45},[35,6067,6068,6070,6072],{"class":37,"line":864},[35,6069,3179],{"class":93},[35,6071,59],{"class":86},[35,6073,6030],{"class":45},[21,6075,6076],{"id":6076},"git",[2622,6078,6080],{"id":6079},"auto-merge-git-auto-merge","auto-merge {#git-auto-merge}",[17,6082,6083],{},[32,6084,6085],{},"git:auto-merge",[17,6087,6088,6089,6092,6093,6096,6097,6099,6100,6103],{},"==自动合并 Pull Request==，一般用于 PR 通过 ",[32,6090,6091],{},"pull_request"," 流水线检查 和 ",[32,6094,6095],{},"Code Review"," 后，在 ",[32,6098,4008],{}," 流水线中自动合并 ",[32,6101,6102],{},"PR","。无需人工点击合并按钮。",[17,6105,6106,6108,6109,2923],{},[32,6107,4008],{}," 事件触发条件和时机参考",[129,6110,6111],{"href":2679},"事件",[123,6113,6114,6119,6124,6129,6148],{},[126,6115,6116],{},[129,6117,2651],{"href":6118},"#git-auto-merge-applicable-events",[126,6120,6121],{},[129,6122,2657],{"href":6123},"#git-auto-merge-parameters",[126,6125,6126],{},[129,6127,2663],{"href":6128},"#git-auto-merge-output",[126,6130,6131,6134],{},[129,6132,2669],{"href":6133},"#git-auto-merge-configuration-examples",[123,6135,6136,6142],{},[126,6137,6138],{},[129,6139,6141],{"href":6140},"#git-auto-merge-configuration-examples-standalone-usage","单独使用",[126,6143,6144],{},[129,6145,6147],{"href":6146},"#git-auto-merge-configuration-examples-used-with-target-branch-push-event","配合目标分支的 push 事件使用",[126,6149,6150,6154],{},[129,6151,6153],{"href":6152},"#git-auto-merge-best-practices","最佳实践",[123,6155,6156,6162,6168],{},[126,6157,6158],{},[129,6159,6161],{"href":6160},"#git-auto-merge-best-practices-using-squash-auto-merge","使用 squash 自动合并",[126,6163,6164],{},[129,6165,6167],{"href":6166},"#git-auto-merge-best-practices-using-auto-automatically-select-merge-type","使用 auto 自动选择合并类型",[126,6169,6170],{},[129,6171,6173],{"href":6172},"#git-auto-merge-best-practices-establishing-dedicated-cr-group-cross-review-auto-merge","建立专用的 CR 群交叉走查自动合并",[2671,6175,6177],{"id":6176},"适用事件-git-auto-merge-applicable-events","适用事件 {#git-auto-merge-applicable-events}",[17,6179,6180],{},[32,6181,4008],{},[2671,6183,6185],{"id":6184},"参数-git-auto-merge-parameters","参数 {#git-auto-merge-parameters}",[123,6187,6188,6194,6200,6206,6212],{},[126,6189,6190],{},[129,6191,6193],{"href":6192},"#git-auto-merge-parameters-mergeType","mergeType",[126,6195,6196],{},[129,6197,6199],{"href":6198},"#git-auto-merge-parameters-mergeCommitMessage","mergeCommitMessage",[126,6201,6202],{},[129,6203,6205],{"href":6204},"#git-auto-merge-parameters-mergeCommitFooter","mergeCommitFooter",[126,6207,6208],{},[129,6209,6211],{"href":6210},"#git-auto-merge-parameters-removeSourceBranch","removeSourceBranch",[126,6213,6214],{},[129,6215,6217],{"href":6216},"#git-auto-merge-parameters-ignoreAssignee","ignoreAssignee",[2730,6219,6221],{"id":6220},"mergetype-git-auto-merge-parameters-mergetype","mergeType {#git-auto-merge-parameters-mergeType}",[123,6223,6224,6228,6230,6233],{},[126,6225,2738,6226],{},[32,6227,2741],{},[126,6229,3617],{},[126,6231,6232],{},"default: auto",[126,6234,6235],{},"合并策略，默认为 auto：如果多人提交走 merge ，否则走 squash 。",[2730,6237,6239],{"id":6238},"mergecommitmessage-git-auto-merge-parameters-mergecommitmessage","mergeCommitMessage {#git-auto-merge-parameters-mergeCommitMessage}",[123,6241,6242,6244,6246],{},[126,6243,3582],{},[126,6245,3617],{},[126,6247,6248],{},"合并点提交信息。",[17,6250,6251,6252,6255],{},"当合并策略为 ",[32,6253,6254],{},"rebase"," 的时候，该信息无效，无需填写。",[17,6257,6251,6258,6261,6262,6265,6266,6268,6269,6272,6273,6275],{},[32,6259,6260],{},"merge"," ，默认为 ",[32,6263,6264],{},"chore: merge node(merged by CNB)"," ，会自动追加 ",[32,6267,6102],{}," 引用、",[32,6270,6271],{},"reviewers"," 名单、",[32,6274,6102],{}," 包含的提交人名单。举例说明：",[25,6277,6279],{"className":5564,"code":6278,"language":5566,"meta":30,"style":30},"chore: merge node(merged by CNB)\n\nPR-URL: !916\nReviewed-By: tom\nReviewed-By: jerry\nCo-authored-by: jack\n",[32,6280,6281,6286,6290,6295,6300,6305],{"__ignoreMap":30},[35,6282,6283],{"class":37,"line":38},[35,6284,6285],{},"chore: merge node(merged by CNB)\n",[35,6287,6288],{"class":37,"line":90},[35,6289,3219],{"emptyLinePlaceholder":201},[35,6291,6292],{"class":37,"line":112},[35,6293,6294],{},"PR-URL: !916\n",[35,6296,6297],{"class":37,"line":162},[35,6298,6299],{},"Reviewed-By: tom\n",[35,6301,6302],{"class":37,"line":166},[35,6303,6304],{},"Reviewed-By: jerry\n",[35,6306,6307],{"class":37,"line":170},[35,6308,6309],{},"Co-authored-by: jack\n",[17,6311,6312],{},"当合并策略为 squash 时，默认值为该 pr 的第一条 commit message。并会自动追加 pr 引用和 reviewers 名单、pr 包含的提交人名单。举例说明：",[25,6314,6316],{"className":2970,"code":6315,"language":2972,"meta":5935,"style":30},"main:\n  pull_request.mergeable:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: squash\n",[32,6317,6318,6324,6331,6339,6350,6359,6365],{"__ignoreMap":30},[35,6319,6320,6322],{"class":37,"line":38},[35,6321,210],{"class":93},[35,6323,2981],{"class":86},[35,6325,6326,6329],{"class":37,"line":90},[35,6327,6328],{"class":93},"  pull_request.mergeable",[35,6330,2981],{"class":86},[35,6332,6333,6335,6337],{"class":37,"line":112},[35,6334,2993],{"class":86},[35,6336,4510],{"class":93},[35,6338,2981],{"class":86},[35,6340,6341,6343,6345,6347],{"class":37,"line":162},[35,6342,3020],{"class":86},[35,6344,3023],{"class":93},[35,6346,59],{"class":86},[35,6348,6349],{"class":45}," automerge\n",[35,6351,6352,6354,6356],{"class":37,"line":166},[35,6353,3033],{"class":93},[35,6355,59],{"class":86},[35,6357,6358],{"class":45}," git:auto-merge\n",[35,6360,6361,6363],{"class":37,"line":170},[35,6362,3043],{"class":93},[35,6364,2981],{"class":86},[35,6366,6367,6370,6372],{"class":37,"line":174},[35,6368,6369],{"class":93},"            mergeType",[35,6371,59],{"class":86},[35,6373,6374],{"class":45}," squash\n",[17,6376,6377],{},"该配置会产生如下效果：",[17,6379,6380,6381,6383],{},"某个 ",[32,6382,6102],{}," (feat\u002Fmodel-a -> main) 中有两条提交记录：",[17,6385,6386],{},"提交记录 1，2023-10-1 日提交",[25,6388,6390],{"className":5564,"code":6389,"language":5566,"meta":30,"style":30},"feat(model-a): 给模块 A 增加一个新特性\n\n由于某某原因，新增某某特性\n\nclose #10\n",[32,6391,6392,6397,6401,6406,6410],{"__ignoreMap":30},[35,6393,6394],{"class":37,"line":38},[35,6395,6396],{},"feat(model-a): 给模块 A 增加一个新特性\n",[35,6398,6399],{"class":37,"line":90},[35,6400,3219],{"emptyLinePlaceholder":201},[35,6402,6403],{"class":37,"line":112},[35,6404,6405],{},"由于某某原因，新增某某特性\n",[35,6407,6408],{"class":37,"line":162},[35,6409,3219],{"emptyLinePlaceholder":201},[35,6411,6412],{"class":37,"line":166},[35,6413,6414],{},"close #10\n",[17,6416,6417],{},"提交记录 2，修复了在 cr 时被指出的一些问题，2023-10-2 日提交",[25,6419,6421],{"className":5564,"code":6420,"language":5566,"meta":30,"style":30},"fix(model-a): 修复评审中指出的问题\n",[32,6422,6423],{"__ignoreMap":30},[35,6424,6425],{"class":37,"line":38},[35,6426,6420],{},[17,6428,6429,6430,6432],{},"在自动合并后将会在 ",[32,6431,210],{}," 分支上产生一个这样的提交节点，即后续的提交记录（也就是提交记录 2）将会被抹掉",[25,6434,6436],{"className":5564,"code":6435,"language":5566,"meta":30,"style":30},"feat(model-a): 给模块 A 增加一个新特性\n\n由于某某原因，新增某某特性\n\nclose #10\n\nPR-URL: !3976\nReviewed-By: tom\nReviewed-By: jerry\nCo-authored-by: jack\n",[32,6437,6438,6442,6446,6450,6454,6458,6462,6467,6471,6475],{"__ignoreMap":30},[35,6439,6440],{"class":37,"line":38},[35,6441,6396],{},[35,6443,6444],{"class":37,"line":90},[35,6445,3219],{"emptyLinePlaceholder":201},[35,6447,6448],{"class":37,"line":112},[35,6449,6405],{},[35,6451,6452],{"class":37,"line":162},[35,6453,3219],{"emptyLinePlaceholder":201},[35,6455,6456],{"class":37,"line":166},[35,6457,6414],{},[35,6459,6460],{"class":37,"line":170},[35,6461,3219],{"emptyLinePlaceholder":201},[35,6463,6464],{"class":37,"line":174},[35,6465,6466],{},"PR-URL: !3976\n",[35,6468,6469],{"class":37,"line":178},[35,6470,6299],{},[35,6472,6473],{"class":37,"line":181},[35,6474,6304],{},[35,6476,6477],{"class":37,"line":185},[35,6478,6309],{},[2730,6480,6482],{"id":6481},"mergecommitfooter-git-auto-merge-parameters-mergecommitfooter","mergeCommitFooter {#git-auto-merge-parameters-mergeCommitFooter}",[123,6484,6485,6489],{},[126,6486,2738,6487],{},[32,6488,2741],{},[126,6490,2744,6491],{},[32,6492,2777],{},[17,6494,6495,6496,6499,6500,3437,6502,6505],{},"合并点需要设置的脚注，多个脚注用 ",[32,6497,6498],{},"\\n"," 分隔，仅在 ",[32,6501,6260],{},[32,6503,6504],{},"squash"," 生效。",[17,6507,6251,6508,6255],{},[32,6509,6254],{},[17,6511,6251,6512,6514,6515,6517,6518,6268,6520,6272,6522,6275],{},[32,6513,6260],{}," 或 ",[32,6516,6504],{}," 时，会将传入信息按行加入到脚注中，再追加 ",[32,6519,6102],{},[32,6521,6271],{},[32,6523,6524],{},"pr",[25,6526,6528],{"className":2970,"code":6527,"language":2972,"meta":5935,"style":30},"main:\n  pull_request.mergeable:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: squash\n            mergeCommitMessage: 'add feature for some jobs'\n            mergeCommitFooter: \"--story=123\\n--story=456\"\n",[32,6529,6530,6536,6542,6550,6560,6568,6574,6582,6598],{"__ignoreMap":30},[35,6531,6532,6534],{"class":37,"line":38},[35,6533,210],{"class":93},[35,6535,2981],{"class":86},[35,6537,6538,6540],{"class":37,"line":90},[35,6539,6328],{"class":93},[35,6541,2981],{"class":86},[35,6543,6544,6546,6548],{"class":37,"line":112},[35,6545,2993],{"class":86},[35,6547,4510],{"class":93},[35,6549,2981],{"class":86},[35,6551,6552,6554,6556,6558],{"class":37,"line":162},[35,6553,3020],{"class":86},[35,6555,3023],{"class":93},[35,6557,59],{"class":86},[35,6559,6349],{"class":45},[35,6561,6562,6564,6566],{"class":37,"line":166},[35,6563,3033],{"class":93},[35,6565,59],{"class":86},[35,6567,6358],{"class":45},[35,6569,6570,6572],{"class":37,"line":170},[35,6571,3043],{"class":93},[35,6573,2981],{"class":86},[35,6575,6576,6578,6580],{"class":37,"line":174},[35,6577,6369],{"class":93},[35,6579,59],{"class":86},[35,6581,6374],{"class":45},[35,6583,6584,6587,6589,6592,6595],{"class":37,"line":178},[35,6585,6586],{"class":93},"            mergeCommitMessage",[35,6588,59],{"class":86},[35,6590,6591],{"class":86}," '",[35,6593,6594],{"class":45},"add feature for some jobs",[35,6596,6597],{"class":86},"'\n",[35,6599,6600,6603,6605,6607,6610,6612,6615],{"class":37,"line":181},[35,6601,6602],{"class":93},"            mergeCommitFooter",[35,6604,59],{"class":86},[35,6606,4389],{"class":86},[35,6608,6609],{"class":45},"--story=123",[35,6611,6498],{"class":82},[35,6613,6614],{"class":45},"--story=456",[35,6616,5004],{"class":86},[25,6618,6620],{"className":5564,"code":6619,"language":5566,"meta":30,"style":30},"add feature for some jobs\n\n--story=123\n--story=456\nPR-URL: !916\nReviewed-By: tom\nReviewed-By: jerry\nCo-authored-by: jack\n",[32,6621,6622,6627,6631,6636,6641,6645,6649,6653],{"__ignoreMap":30},[35,6623,6624],{"class":37,"line":38},[35,6625,6626],{},"add feature for some jobs\n",[35,6628,6629],{"class":37,"line":90},[35,6630,3219],{"emptyLinePlaceholder":201},[35,6632,6633],{"class":37,"line":112},[35,6634,6635],{},"--story=123\n",[35,6637,6638],{"class":37,"line":162},[35,6639,6640],{},"--story=456\n",[35,6642,6643],{"class":37,"line":166},[35,6644,6294],{},[35,6646,6647],{"class":37,"line":170},[35,6648,6299],{},[35,6650,6651],{"class":37,"line":174},[35,6652,6304],{},[35,6654,6655],{"class":37,"line":178},[35,6656,6309],{},[2730,6658,6660],{"id":6659},"removesourcebranch-git-auto-merge-parameters-removesourcebranch","removeSourceBranch {#git-auto-merge-parameters-removeSourceBranch}",[123,6662,6663,6665,6667],{},[126,6664,5517],{},[126,6666,3617],{},[126,6668,5522],{},[17,6670,6671],{},"合并后是否删除源分支。",[17,6673,6674],{},"源分支与目标分支不同仓库时，该值无效。",[2730,6676,6678],{"id":6677},"ignoreassignee-git-auto-merge-parameters-ignoreassignee","ignoreAssignee {#git-auto-merge-parameters-ignoreAssignee}",[123,6680,6681,6683,6685],{},[126,6682,5517],{},[126,6684,3617],{},[126,6686,5522],{},[17,6688,6689,6690,2923],{},"是否忽略 ",[32,6691,6692],{},"assignee",[17,6694,6695,6696,6698,6699,6701,6702,6704],{},"当该 ",[32,6697,6102],{}," 有指定 ",[32,6700,6692],{}," （指派人）的时候，本任务不会执行自动合并的逻辑。 因为 ",[32,6703,6692],{}," 的本意就是指派某人手动来处理。",[17,6706,6707,6708,6710,6711,6713],{},"当为 ",[32,6709,2747],{}," 时，可忽略 ",[32,6712,6692],{}," 强行合并。",[2671,6715,6717],{"id":6716},"输出结果-git-auto-merge-output","输出结果 {#git-auto-merge-output}",[25,6719,6721],{"className":5564,"code":6720,"language":5566,"meta":30,"style":30},"{\n    reviewedBy, \u002F\u002F String，追加在提交信息后面的提交者信息\n    reviewers, \u002F\u002F Array\u003CString>, 走查者列表\n}\n",[32,6722,6723,6727,6732,6737],{"__ignoreMap":30},[35,6724,6725],{"class":37,"line":38},[35,6726,87],{},[35,6728,6729],{"class":37,"line":90},[35,6730,6731],{},"    reviewedBy, \u002F\u002F String，追加在提交信息后面的提交者信息\n",[35,6733,6734],{"class":37,"line":112},[35,6735,6736],{},"    reviewers, \u002F\u002F Array\u003CString>, 走查者列表\n",[35,6738,6739],{"class":37,"line":162},[35,6740,2963],{},[2671,6742,6744],{"id":6743},"配置样例-git-auto-merge-configuration-examples","配置样例 {#git-auto-merge-configuration-examples}",[2730,6746,6748],{"id":6747},"单独使用-git-auto-merge-configuration-examples-standalone-usage","单独使用 {#git-auto-merge-configuration-examples-standalone-usage}",[25,6750,6752],{"className":5564,"code":6751,"language":5566,"meta":30,"style":30},"main:\n  pull_request.mergeable:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: merge\n",[32,6753,6754,6759,6764,6769,6774,6779,6784],{"__ignoreMap":30},[35,6755,6756],{"class":37,"line":38},[35,6757,6758],{},"main:\n",[35,6760,6761],{"class":37,"line":90},[35,6762,6763],{},"  pull_request.mergeable:\n",[35,6765,6766],{"class":37,"line":112},[35,6767,6768],{},"    - stages:\n",[35,6770,6771],{"class":37,"line":162},[35,6772,6773],{},"        - name: automerge\n",[35,6775,6776],{"class":37,"line":166},[35,6777,6778],{},"          type: git:auto-merge\n",[35,6780,6781],{"class":37,"line":170},[35,6782,6783],{},"          options:\n",[35,6785,6786],{"class":37,"line":174},[35,6787,6788],{},"            mergeType: merge\n",[17,6790,6791,6792,6794,6795,6797,6798,6800,6801,6803,6804,6806],{},"当分支 ",[32,6793,210],{}," 上 的 ",[32,6796,6102],{}," 触发了 ",[32,6799,4008],{}," 事件，那么会将这个 ",[32,6802,6102],{}," 以 ",[32,6805,6260],{}," 的方式自动合并。",[2730,6808,6810],{"id":6809},"配合目标分支的-push-事件使用-git-auto-merge-configuration-examples-used-with-target-branch-push-event","配合目标分支的 push 事件使用 {#git-auto-merge-configuration-examples-used-with-target-branch-push-event}",[25,6812,6814],{"className":2970,"code":6813,"language":2972,"meta":5935,"style":30},"main:\n  push:\n    - stages:\n        - name: build\n          script: npm run build\n        - name: publish\n          script: npm run publish\n  pull_request.mergeable:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: merge\n",[32,6815,6816,6822,6828,6836,6847,6855,6866,6875,6881,6889,6899,6907,6913],{"__ignoreMap":30},[35,6817,6818,6820],{"class":37,"line":38},[35,6819,210],{"class":93},[35,6821,2981],{"class":86},[35,6823,6824,6826],{"class":37,"line":90},[35,6825,2986],{"class":93},[35,6827,2981],{"class":86},[35,6829,6830,6832,6834],{"class":37,"line":112},[35,6831,2993],{"class":86},[35,6833,4510],{"class":93},[35,6835,2981],{"class":86},[35,6837,6838,6840,6842,6844],{"class":37,"line":162},[35,6839,3020],{"class":86},[35,6841,3023],{"class":93},[35,6843,59],{"class":86},[35,6845,6846],{"class":45}," build\n",[35,6848,6849,6851,6853],{"class":37,"line":166},[35,6850,3179],{"class":93},[35,6852,59],{"class":86},[35,6854,3188],{"class":45},[35,6856,6857,6859,6861,6863],{"class":37,"line":170},[35,6858,3020],{"class":86},[35,6860,3023],{"class":93},[35,6862,59],{"class":86},[35,6864,6865],{"class":45}," publish\n",[35,6867,6868,6870,6872],{"class":37,"line":174},[35,6869,3179],{"class":93},[35,6871,59],{"class":86},[35,6873,6874],{"class":45}," npm run publish\n",[35,6876,6877,6879],{"class":37,"line":178},[35,6878,6328],{"class":93},[35,6880,2981],{"class":86},[35,6882,6883,6885,6887],{"class":37,"line":181},[35,6884,2993],{"class":86},[35,6886,4510],{"class":93},[35,6888,2981],{"class":86},[35,6890,6891,6893,6895,6897],{"class":37,"line":185},[35,6892,3020],{"class":86},[35,6894,3023],{"class":93},[35,6896,59],{"class":86},[35,6898,6349],{"class":45},[35,6900,6901,6903,6905],{"class":37,"line":1000},[35,6902,3033],{"class":93},[35,6904,59],{"class":86},[35,6906,6358],{"class":45},[35,6908,6909,6911],{"class":37,"line":1025},[35,6910,3043],{"class":93},[35,6912,2981],{"class":86},[35,6914,6915,6917,6919],{"class":37,"line":1256},[35,6916,6369],{"class":93},[35,6918,59],{"class":86},[35,6920,6921],{"class":45}," merge\n",[17,6923,6791,6924,6794,6926,6797,6928,6800,6930,6803,6932,6934,6935,6937,6938,3437,6941,6944],{},[32,6925,210],{},[32,6927,6102],{},[32,6929,4008],{},[32,6931,6102],{},[32,6933,6260],{}," 的方式自动合并。 在自动合并之后，会触发目标分支（main）上的 ",[32,6936,3988],{}," 事件，继续执行声明的 ",[32,6939,6940],{},"build",[32,6942,6943],{},"publish"," 流程。",[17,6946,6947],{},[2782,6948,6949],{},"这里有一个谁应该对产生的 push 事件流程负责的问题，这里的设定是这样的：",[3427,6951,6952,6967],{},[126,6953,6954,6955,6957,6958,6960,6961,6963,6964,6966],{},"如果提出 ",[32,6956,6102],{}," 者，是目标仓库的成员，那么提出 ",[32,6959,6102],{}," 的人对后续产生的 ",[32,6962,3988],{}," 事件流程负责（即 ",[32,6965,3988],{}," 构建流水会推送到这里）。",[126,6968,6954,6969,6971,6972,6975,6976,6978,6979,3376,6981,6984,6985,6987],{},[32,6970,6102],{}," 者，不是目标仓库的成员（比如在开源项目中，从 ",[32,6973,6974],{},"Forked Repo"," 提出 ",[32,6977,6102],{},"）。那么最后一个 ",[32,6980,6095],{},[32,6982,6983],{},"Reviewer"," 将对后续产生的 ",[32,6986,3988],{}," 事件流程负责。",[2671,6989,6991],{"id":6990},"最佳实践-git-auto-merge-best-practices","最佳实践 {#git-auto-merge-best-practices}",[2730,6993,6995],{"id":6994},"使用-squash-自动合并-git-auto-merge-best-practices-using-squash-auto-merge","使用 squash 自动合并 {#git-auto-merge-best-practices-using-squash-auto-merge}",[17,6997,6998,6999,7001,7002,7004,7005,7008],{},"使用 ",[32,7000,6504],{}," 合并，一次 ",[32,7003,6102],{}," 操作只在目标分支产生一个 ",[32,7006,7007],{},"commit"," 节点，并且在有权限的情况下删除源分支。",[25,7010,7012],{"className":2970,"code":7011,"language":2972,"meta":5935,"style":30},"main:\n  review:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: squash\n            removeSourceBranch: true\n",[32,7013,7014,7020,7027,7035,7045,7053,7059,7067],{"__ignoreMap":30},[35,7015,7016,7018],{"class":37,"line":38},[35,7017,210],{"class":93},[35,7019,2981],{"class":86},[35,7021,7022,7025],{"class":37,"line":90},[35,7023,7024],{"class":93},"  review",[35,7026,2981],{"class":86},[35,7028,7029,7031,7033],{"class":37,"line":112},[35,7030,2993],{"class":86},[35,7032,4510],{"class":93},[35,7034,2981],{"class":86},[35,7036,7037,7039,7041,7043],{"class":37,"line":162},[35,7038,3020],{"class":86},[35,7040,3023],{"class":93},[35,7042,59],{"class":86},[35,7044,6349],{"class":45},[35,7046,7047,7049,7051],{"class":37,"line":166},[35,7048,3033],{"class":93},[35,7050,59],{"class":86},[35,7052,6358],{"class":45},[35,7054,7055,7057],{"class":37,"line":170},[35,7056,3043],{"class":93},[35,7058,2981],{"class":86},[35,7060,7061,7063,7065],{"class":37,"line":174},[35,7062,6369],{"class":93},[35,7064,59],{"class":86},[35,7066,6374],{"class":45},[35,7068,7069,7072,7074],{"class":37,"line":178},[35,7070,7071],{"class":93},"            removeSourceBranch",[35,7073,59],{"class":86},[35,7075,4828],{"class":4827},[2730,7077,7079],{"id":7078},"使用-auto-自动选择合并类型-git-auto-merge-best-practices-using-auto-automatically-select-merge-type","使用 auto 自动选择合并类型 {#git-auto-merge-best-practices-using-auto-automatically-select-merge-type}",[17,7081,7082,7083,7085,7086,2923],{},"如果多人提交走 ",[32,7084,6260],{}," ，否则走 ",[32,7087,6504],{},[25,7089,7091],{"className":2970,"code":7090,"language":2972,"meta":5935,"style":30},"main:\n  review:\n    - stages:\n        - name: automerge\n          type: git:auto-merge\n          options:\n            mergeType: auto\n",[32,7092,7093,7099,7105,7113,7123,7131,7137],{"__ignoreMap":30},[35,7094,7095,7097],{"class":37,"line":38},[35,7096,210],{"class":93},[35,7098,2981],{"class":86},[35,7100,7101,7103],{"class":37,"line":90},[35,7102,7024],{"class":93},[35,7104,2981],{"class":86},[35,7106,7107,7109,7111],{"class":37,"line":112},[35,7108,2993],{"class":86},[35,7110,4510],{"class":93},[35,7112,2981],{"class":86},[35,7114,7115,7117,7119,7121],{"class":37,"line":162},[35,7116,3020],{"class":86},[35,7118,3023],{"class":93},[35,7120,59],{"class":86},[35,7122,6349],{"class":45},[35,7124,7125,7127,7129],{"class":37,"line":166},[35,7126,3033],{"class":93},[35,7128,59],{"class":86},[35,7130,6358],{"class":45},[35,7132,7133,7135],{"class":37,"line":170},[35,7134,3043],{"class":93},[35,7136,2981],{"class":86},[35,7138,7139,7141,7143],{"class":37,"line":174},[35,7140,6369],{"class":93},[35,7142,59],{"class":86},[35,7144,7145],{"class":45}," auto\n",[2730,7147,7149],{"id":7148},"建立专用的-cr-群交叉走查自动合并-git-auto-merge-best-practices-establishing-dedicated-cr-group-cross-review-auto-merge","建立专用的 CR 群交叉走查自动合并 {#git-auto-merge-best-practices-establishing-dedicated-cr-group-cross-review-auto-merge}",[3427,7151,7152,7155],{},[126,7153,7154],{},"走查通过后自动合并",[126,7156,7157],{},"记录走查者信息在提交信息中",[25,7159,7161],{"className":2970,"code":7160,"language":2972,"meta":5935,"style":30},"main:\n  pull_request.mergeable:\n    - stages:\n        - name: CR 通过后自动合并\n          type: git:auto-merge\n          options:\n            mergeType: squash\n            mergeCommitMessage: $CNB_LATEST_COMMIT_MESSAGE\n          exports:\n            reviewedBy: REVIEWED_BY\n        - name: notify\n          image: tencentcom\u002Fwecom-message\n          settings:\n            robot: '155af237-6041-4125-9340-000000000000'\n            msgType: markdown\n            content: |\n              > CR 通过后自动合并 \u003C@${CNB_BUILD_USER}> \n              > 　\n              > ${CNB_PULL_REQUEST_TITLE}\n              > [${CNB_EVENT_URL}](${CNB_EVENT_URL})\n              > \n              > ${REVIEWED_BY}\n\n  pull_request:\n    - stages:\n        # ...省略其它任务\n        - name: notify\n          image: tencentcom\u002Fwecom-message\n          options:\n            robot: '155af237-6041-4125-9340-000000000000'\n            msgType: markdown\n            content: |\n              > ${CURR_REVIEWER_FOR_AT}\n              > \n              > ${CNB_PULL_REQUEST_TITLE}\n              > [${CNB_EVENT_URL}](${CNB_EVENT_URL})\n              > \n              > from ${CNB_BUILD_USER}\n",[32,7162,7163,7169,7175,7183,7194,7202,7208,7216,7225,7231,7241,7252,7261,7268,7282,7292,7301,7306,7311,7316,7321,7326,7331,7335,7342,7350,7355,7365,7373,7379,7391,7399,7407,7412,7417,7421,7425,7429],{"__ignoreMap":30},[35,7164,7165,7167],{"class":37,"line":38},[35,7166,210],{"class":93},[35,7168,2981],{"class":86},[35,7170,7171,7173],{"class":37,"line":90},[35,7172,6328],{"class":93},[35,7174,2981],{"class":86},[35,7176,7177,7179,7181],{"class":37,"line":112},[35,7178,2993],{"class":86},[35,7180,4510],{"class":93},[35,7182,2981],{"class":86},[35,7184,7185,7187,7189,7191],{"class":37,"line":162},[35,7186,3020],{"class":86},[35,7188,3023],{"class":93},[35,7190,59],{"class":86},[35,7192,7193],{"class":45}," CR 通过后自动合并\n",[35,7195,7196,7198,7200],{"class":37,"line":166},[35,7197,3033],{"class":93},[35,7199,59],{"class":86},[35,7201,6358],{"class":45},[35,7203,7204,7206],{"class":37,"line":170},[35,7205,3043],{"class":93},[35,7207,2981],{"class":86},[35,7209,7210,7212,7214],{"class":37,"line":174},[35,7211,6369],{"class":93},[35,7213,59],{"class":86},[35,7215,6374],{"class":45},[35,7217,7218,7220,7222],{"class":37,"line":178},[35,7219,6586],{"class":93},[35,7221,59],{"class":86},[35,7223,7224],{"class":45}," $CNB_LATEST_COMMIT_MESSAGE\n",[35,7226,7227,7229],{"class":37,"line":181},[35,7228,3107],{"class":93},[35,7230,2981],{"class":86},[35,7232,7233,7236,7238],{"class":37,"line":185},[35,7234,7235],{"class":93},"            reviewedBy",[35,7237,59],{"class":86},[35,7239,7240],{"class":45}," REVIEWED_BY\n",[35,7242,7243,7245,7247,7249],{"class":37,"line":1000},[35,7244,3020],{"class":86},[35,7246,3023],{"class":93},[35,7248,59],{"class":86},[35,7250,7251],{"class":45}," notify\n",[35,7253,7254,7256,7258],{"class":37,"line":1025},[35,7255,3135],{"class":93},[35,7257,59],{"class":86},[35,7259,7260],{"class":45}," tencentcom\u002Fwecom-message\n",[35,7262,7263,7266],{"class":37,"line":1256},[35,7264,7265],{"class":93},"          settings",[35,7267,2981],{"class":86},[35,7269,7270,7273,7275,7277,7280],{"class":37,"line":164},[35,7271,7272],{"class":93},"            robot",[35,7274,59],{"class":86},[35,7276,6591],{"class":86},[35,7278,7279],{"class":45},"155af237-6041-4125-9340-000000000000",[35,7281,6597],{"class":86},[35,7283,7284,7287,7289],{"class":37,"line":3090},[35,7285,7286],{"class":93},"            msgType",[35,7288,59],{"class":86},[35,7290,7291],{"class":45}," markdown\n",[35,7293,7294,7297,7299],{"class":37,"line":157},[35,7295,7296],{"class":93},"            content",[35,7298,59],{"class":86},[35,7300,4617],{"class":71},[35,7302,7303],{"class":37,"line":3104},[35,7304,7305],{"class":45},"              > CR 通过后自动合并 \u003C@${CNB_BUILD_USER}> \n",[35,7307,7308],{"class":37,"line":864},[35,7309,7310],{"class":45},"              > 　\n",[35,7312,7313],{"class":37,"line":881},[35,7314,7315],{"class":45},"              > ${CNB_PULL_REQUEST_TITLE}\n",[35,7317,7318],{"class":37,"line":1009},[35,7319,7320],{"class":45},"              > [${CNB_EVENT_URL}](${CNB_EVENT_URL})\n",[35,7322,7323],{"class":37,"line":3143},[35,7324,7325],{"class":45},"              > \n",[35,7327,7328],{"class":37,"line":732},[35,7329,7330],{"class":45},"              > ${REVIEWED_BY}\n",[35,7332,7333],{"class":37,"line":461},[35,7334,3219],{"emptyLinePlaceholder":201},[35,7336,7337,7340],{"class":37,"line":3164},[35,7338,7339],{"class":93},"  pull_request",[35,7341,2981],{"class":86},[35,7343,7344,7346,7348],{"class":37,"line":3176},[35,7345,2993],{"class":86},[35,7347,4510],{"class":93},[35,7349,2981],{"class":86},[35,7351,7352],{"class":37,"line":1396},[35,7353,7354],{"class":2949},"        # ...省略其它任务\n",[35,7356,7357,7359,7361,7363],{"class":37,"line":1528},[35,7358,3020],{"class":86},[35,7360,3023],{"class":93},[35,7362,59],{"class":86},[35,7364,7251],{"class":45},[35,7366,7367,7369,7371],{"class":37,"line":1674},[35,7368,3135],{"class":93},[35,7370,59],{"class":86},[35,7372,7260],{"class":45},[35,7374,7375,7377],{"class":37,"line":472},[35,7376,3043],{"class":93},[35,7378,2981],{"class":86},[35,7380,7381,7383,7385,7387,7389],{"class":37,"line":1014},[35,7382,7272],{"class":93},[35,7384,59],{"class":86},[35,7386,6591],{"class":86},[35,7388,7279],{"class":45},[35,7390,6597],{"class":86},[35,7392,7393,7395,7397],{"class":37,"line":1937},[35,7394,7286],{"class":93},[35,7396,59],{"class":86},[35,7398,7291],{"class":45},[35,7400,7401,7403,7405],{"class":37,"line":183},[35,7402,7296],{"class":93},[35,7404,59],{"class":86},[35,7406,4617],{"class":71},[35,7408,7409],{"class":37,"line":729},[35,7410,7411],{"class":45},"              > ${CURR_REVIEWER_FOR_AT}\n",[35,7413,7415],{"class":37,"line":7414},34,[35,7416,7325],{"class":45},[35,7418,7419],{"class":37,"line":740},[35,7420,7315],{"class":45},[35,7422,7423],{"class":37,"line":187},[35,7424,7320],{"class":45},[35,7426,7427],{"class":37,"line":329},[35,7428,7325],{"class":45},[35,7430,7431],{"class":37,"line":873},[35,7432,7433],{"class":45},"              > from ${CNB_BUILD_USER}\n",[2622,7435,7437],{"id":7436},"issue-update-git-issue-update","issue-update {#git-issue-update}",[17,7439,7440],{},[32,7441,7442],{},"git:issue-update",[17,7444,7445,7446,7449,7450,7452],{},"==更新 Issue 状态==，关闭或打开 ",[32,7447,7448],{},"Issue","，修改 ",[32,7451,7448],{}," 标签。",[123,7454,7455,7460,7466,7472,7478,7483,7488],{},[126,7456,7457],{},[129,7458,2651],{"href":7459},"#git-issue-update-applicable-events",[126,7461,7462],{},[129,7463,7465],{"href":7464},"#git-issue-update-work-mechanism","工作机制",[126,7467,7468],{},[129,7469,7471],{"href":7470},"#git-issue-update-how-to-get-issue-id","Issue ID 获取方式",[126,7473,7474],{},[129,7475,7477],{"href":7476},"#git-issue-update-how-to-include-issue-id-in-commit-logs","提交日志中如何带上 Issue ID",[126,7479,7480],{},[129,7481,2657],{"href":7482},"#git-issue-update-parameters",[126,7484,7485],{},[129,7486,2663],{"href":7487},"#git-issue-update-output",[126,7489,7490],{},[129,7491,2669],{"href":7492},"#git-issue-update-configuration-examples",[2671,7494,7496],{"id":7495},"适用事件-git-issue-update-applicable-events","适用事件 {#git-issue-update-applicable-events}",[17,7498,7499],{},[129,7500,2680],{"href":2679},[2671,7502,7504],{"id":7503},"工作机制-git-issue-update-work-mechanism","工作机制 {#git-issue-update-work-mechanism}",[17,7506,7507,7508,7510],{},"查找 ",[32,7509,7448],{}," 是否存在 -> 检查是否符合 when 条件（可选） -> 检查是否符合 lint 条件（可选）-> 更新 issue 状态或标签",[2671,7512,7514],{"id":7513},"issue-id-获取方式-git-issue-update-how-to-get-issue-id","Issue ID 获取方式 {#git-issue-update-how-to-get-issue-id}",[123,7516,7517,7534],{},[126,7518,7519,7520,7523,7524,7526,7527,7530,7531,7533],{},"如果传入了 ",[32,7521,7522],{},"fromText"," 参数，则从 ",[32,7525,7522],{}," 中获取。其中 ",[32,7528,7529],{},"branch.delete"," 必传 ",[32,7532,7522],{},"（分支已删除，无法从上下文中获取）。",[126,7535,7536,7537,7539,7540],{},"如果没传入 ",[32,7538,7522],{}," 参数，则从上下文中获取。\n",[123,7541,7542,7550,7555],{},[126,7543,7544,7546,7547,7549],{},[32,7545,3988],{}," 事件：从本次推送的所有 ",[32,7548,7007],{}," 的提交日志中获取。",[126,7551,7552,7553,7549],{},"合并请求类事件：从合并请求中的所有 ",[32,7554,7007],{},[126,7556,7557,7558,7549],{},"其他事件：从最新的一个 ",[32,7559,7007],{},[17,7561,7562],{},"获取方式：提取上述文本中如下两种格式",[123,7564,7565,7568],{},[126,7566,7567],{},"#issueID：表示当前仓库的 issue。例如 #123，表示当前仓库 id 为 123 的 issue。",[126,7569,7570],{},"groupName\u002FrepoName#issueID：表示跨仓库（其他仓库）的 issue。例如：test\u002Ftest#123，表示 test\u002Ftest 仓库中 id 为 123 的 issue。",[17,7572,7573],{},"注意 #123 或 test\u002Ftest#123 前需要有空格。",[2671,7575,7577],{"id":7576},"提交日志中如何带上-issue-id-git-issue-update-how-to-include-issue-id-in-commit-logs","提交日志中如何带上 Issue ID {#git-issue-update-how-to-include-issue-id-in-commit-logs}",[17,7579,7580,7581,7584,7585,7587,7588,7590],{},"提交代码时，可以在提交日志中加上关联的 ",[32,7582,7583],{},"Issue ID","， 可以在使用当前内置任务时可以自动提取到关联 ",[32,7586,7448],{},"，用来更新 ",[32,7589,7448],{}," 标签和状态",[17,7592,7593,7594,7596],{},"推荐在提交日志的 body 中带上 ",[32,7595,7583],{},"，命令行操作方式如下：",[123,7598,7599],{},[126,7600,7601,7602,7605],{},"方法一：用 ",[32,7603,7604],{},"shift + enter"," 换行，建议 title 和 body 之间加上一个空行",[25,7607,7609],{"className":5564,"code":7608,"language":5566,"meta":30,"style":30},"git commit -m \"fix(云原生构建): 修复一个错误\n\ncnb\u002Ffeedback#123\"\n",[32,7610,7611,7616,7620],{"__ignoreMap":30},[35,7612,7613],{"class":37,"line":38},[35,7614,7615],{},"git commit -m \"fix(云原生构建): 修复一个错误\n",[35,7617,7618],{"class":37,"line":90},[35,7619,3219],{"emptyLinePlaceholder":201},[35,7621,7622],{"class":37,"line":112},[35,7623,7624],{},"cnb\u002Ffeedback#123\"\n",[123,7626,7627],{},[126,7628,7629],{},"方法二：",[17,7631,7632],{},"以下提交方式 title 和 body 之间会产生两个换行",[25,7634,7636],{"className":5564,"code":7635,"language":5566,"meta":30,"style":30},"git commit -m \"fix(云原生构建): 修复一个错误\" -m \"cnb\u002Ffeedback#123\"\n",[32,7637,7638],{"__ignoreMap":30},[35,7639,7640],{"class":37,"line":38},[35,7641,7635],{},[2671,7643,7645],{"id":7644},"参数-git-issue-update-parameters","参数 {#git-issue-update-parameters}",[123,7647,7648,7653,7659,7665,7671,7677],{},[126,7649,7650],{},[129,7651,7522],{"href":7652},"#git-issue-update-parameters-fromText",[126,7654,7655],{},[129,7656,7658],{"href":7657},"#git-issue-update-parameters-state","state",[126,7660,7661],{},[129,7662,7664],{"href":7663},"#git-issue-update-parameters-label","label",[126,7666,7667],{},[129,7668,7670],{"href":7669},"#git-issue-update-parameters-when","when",[126,7672,7673],{},[129,7674,7676],{"href":7675},"#git-issue-update-parameters-lint","lint",[126,7678,7679],{},[129,7680,7682],{"href":7681},"#git-issue-update-parameters-defaultColor","defaultColor",[2730,7684,7686],{"id":7685},"fromtext",[129,7687,7522],{"href":7652},[123,7689,7690,7694],{},[126,7691,2738,7692],{},[32,7693,2741],{},[126,7695,2744,7696],{},[32,7697,2777],{},[17,7699,7700,7701,2923],{},"从给定的文本中解析 ",[32,7702,7703],{},"Issue Id",[17,7705,7706],{},"不声明时，自动从上下文里的提交记录解析。",[7708,7709,7710],"blockquote",{},[17,7711,7712],{},"可以指定一个包含 issue id 引用的文本来声明操作对象，比如： ${LATEST_CHANGE_LOG} 。",[2730,7714,7715],{"id":7658},[129,7716,7658],{"href":7657},[123,7718,7719,7725],{},[126,7720,2738,7721],{},[129,7722,7724],{"href":7723},"#git-issue-update-parameters-type-definitions-IssueStateMap","IssueStateMap",[126,7726,2744,7727],{},[32,7728,2777],{},[17,7730,7731,7732,7734,7735,7738,7739,2923],{},"对应 ",[32,7733,7658],{}," 属性，为 ",[32,7736,7737],{},"close"," 时，可关闭 ",[32,7740,7448],{},[2730,7742,7743],{"id":7664},[129,7744,7664],{"href":7663},[123,7746,7747,7753],{},[126,7748,2738,7749],{},[129,7750,7752],{"href":7751},"#git-issue-update-parameters-type-definitions-IssueUpdateLabel","IssueUpdateLabel",[126,7754,2744,7755],{},[32,7756,2777],{},[17,7758,7759,7760,7762],{},"对 ",[32,7761,7664],{}," 的操作描述。",[2730,7764,7765],{"id":7670},[129,7766,7670],{"href":7669},[123,7768,7769,7775],{},[126,7770,2738,7771],{},[129,7772,7774],{"href":7773},"#git-issue-update-parameters-type-definitions-IssueUpdateStatus","IssueUpdateStatus",[126,7776,2744,7777],{},[32,7778,2777],{},[17,7780,7781,7782,7785,7786,7788],{},"过滤条件，多个条件之间是 ",[32,7783,7784],{},"or"," 关系。为空时表示对所有 ",[32,7787,7448],{}," 操作。",[2730,7790,7791],{"id":7676},[129,7792,7676],{"href":7675},[123,7794,7795,7799],{},[126,7796,2738,7797],{},[129,7798,7774],{"href":7773},[126,7800,2744,7801],{},[32,7802,2777],{},[17,7804,7805,7806,7808],{},"检查 ",[32,7807,7448],{}," 是否满足条件，不满足时抛出异常，多个条件之间是 or 关系，为空时表示不做检查。",[2730,7810,7812],{"id":7811},"defaultcolor",[129,7813,7682],{"href":7681},[123,7815,7816,7820],{},[126,7817,2738,7818],{},[32,7819,2741],{},[126,7821,2744,7822],{},[32,7823,2777],{},[17,7825,7826,7827,7830],{},"添加的标签的默认颜色，当有传入 ",[32,7828,7829],{},"label.add"," 参数时才有效。",[2730,7832,7834],{"id":7833},"类型定义-git-issue-update-parameters-type-definitions","类型定义 {#git-issue-update-parameters-type-definitions}",[3594,7836,7838],{"id":7837},"issuestatemap-git-issue-update-parameters-type-definitions-issuestatemap","IssueStateMap {#git-issue-update-parameters-type-definitions-IssueStateMap}",[123,7840,7841],{},[126,7842,7843],{},[32,7844,7845],{},"Enum\u003CString>",[17,7847,7848],{},"open | close",[3594,7850,7852],{"id":7851},"issueupdatelabel-git-issue-update-parameters-type-definitions-issueupdatelabel","IssueUpdateLabel {#git-issue-update-parameters-type-definitions-IssueUpdateLabel}",[123,7854,7855,7873],{},[126,7856,7857,7858],{},"add",[123,7859,7860,7866,7870],{},[126,7861,2738,7862,2770,7864],{},[32,7863,2769],{},[32,7865,2741],{},[126,7867,2744,7868],{},[32,7869,2777],{},[126,7871,7872],{},"要添加的标签列表，标签不存在时，会自动创建。",[126,7874,7875,7876],{},"remove",[123,7877,7878,7884,7888],{},[126,7879,2738,7880,2770,7882],{},[32,7881,2769],{},[32,7883,2741],{},[126,7885,2744,7886],{},[32,7887,2777],{},[126,7889,7890],{},"要移除的标签列表",[3594,7892,7894],{"id":7893},"issueupdatestatus-git-issue-update-parameters-type-definitions-issueupdatestatus","IssueUpdateStatus {#git-issue-update-parameters-type-definitions-IssueUpdateStatus}",[123,7896,7897],{},[126,7898,7899,7900],{},"label\n",[123,7901,7902,7908,7912],{},[126,7903,2738,7904,2770,7906],{},[32,7905,2769],{},[32,7907,2741],{},[126,7909,2744,7910],{},[32,7911,2777],{},[126,7913,7914,7915,7917],{},"标签，多个值之间是 ",[32,7916,7784],{}," 关系",[2671,7919,7921],{"id":7920},"输出结果-git-issue-update-output","输出结果 {#git-issue-update-output}",[25,7923,7925],{"className":5564,"code":7924,"language":5566,"meta":30,"style":30},"{\n    issues \u002F\u002F issue 列表\n}\n",[32,7926,7927,7931,7936],{"__ignoreMap":30},[35,7928,7929],{"class":37,"line":38},[35,7930,87],{},[35,7932,7933],{"class":37,"line":90},[35,7934,7935],{},"    issues \u002F\u002F issue 列表\n",[35,7937,7938],{"class":37,"line":112},[35,7939,2963],{},[2671,7941,7943],{"id":7942},"配置样例-git-issue-update-configuration-examples","配置样例 {#git-issue-update-configuration-examples}",[123,7945,7946],{},[126,7947,7948],{},"合并到 main 后，更新标签",[25,7950,7952],{"className":2970,"code":7951,"language":2972,"meta":5935,"style":30},"main:\n  push:\n    - stages:\n        - name: update issue\n          type: git:issue-update\n          options:\n            # 移除 “开发中” 标签，添加 “预发布” 标签\n            label:\n              add: 预发布\n              remove: 开发中\n            # 当有 “feature” 或 “bug” 标签才进行上述标签操作\n            when:\n              label:\n                - feature\n                - bug\n",[32,7953,7954,7960,7966,7974,7985,7994,8000,8005,8012,8022,8032,8037,8044,8051,8059],{"__ignoreMap":30},[35,7955,7956,7958],{"class":37,"line":38},[35,7957,210],{"class":93},[35,7959,2981],{"class":86},[35,7961,7962,7964],{"class":37,"line":90},[35,7963,2986],{"class":93},[35,7965,2981],{"class":86},[35,7967,7968,7970,7972],{"class":37,"line":112},[35,7969,2993],{"class":86},[35,7971,4510],{"class":93},[35,7973,2981],{"class":86},[35,7975,7976,7978,7980,7982],{"class":37,"line":162},[35,7977,3020],{"class":86},[35,7979,3023],{"class":93},[35,7981,59],{"class":86},[35,7983,7984],{"class":45}," update issue\n",[35,7986,7987,7989,7991],{"class":37,"line":166},[35,7988,3033],{"class":93},[35,7990,59],{"class":86},[35,7992,7993],{"class":45}," git:issue-update\n",[35,7995,7996,7998],{"class":37,"line":170},[35,7997,3043],{"class":93},[35,7999,2981],{"class":86},[35,8001,8002],{"class":37,"line":174},[35,8003,8004],{"class":2949},"            # 移除 “开发中” 标签，添加 “预发布” 标签\n",[35,8006,8007,8010],{"class":37,"line":178},[35,8008,8009],{"class":93},"            label",[35,8011,2981],{"class":86},[35,8013,8014,8017,8019],{"class":37,"line":181},[35,8015,8016],{"class":93},"              add",[35,8018,59],{"class":86},[35,8020,8021],{"class":45}," 预发布\n",[35,8023,8024,8027,8029],{"class":37,"line":185},[35,8025,8026],{"class":93},"              remove",[35,8028,59],{"class":86},[35,8030,8031],{"class":45}," 开发中\n",[35,8033,8034],{"class":37,"line":1000},[35,8035,8036],{"class":2949},"            # 当有 “feature” 或 “bug” 标签才进行上述标签操作\n",[35,8038,8039,8042],{"class":37,"line":1025},[35,8040,8041],{"class":93},"            when",[35,8043,2981],{"class":86},[35,8045,8046,8049],{"class":37,"line":1256},[35,8047,8048],{"class":93},"              label",[35,8050,2981],{"class":86},[35,8052,8053,8056],{"class":37,"line":164},[35,8054,8055],{"class":86},"                -",[35,8057,8058],{"class":45}," feature\n",[35,8060,8061,8063],{"class":37,"line":3090},[35,8062,8055],{"class":86},[35,8064,8065],{"class":45}," bug\n",[123,8067,8068],{},[126,8069,8070],{},"tag_push 时，关闭 issue，更新标签",[25,8072,8074],{"className":2970,"code":8073,"language":2972,"meta":5935,"style":30},"$:\n  tag_push:\n    - stages:\n        - name: 发布操作\n          script: echo \"可用发布任务替代当前任务\"\n        # 发布操作后执行 issue 更新操作\n        - name: update issue\n          type: git:issue-update\n          options:\n            # 关闭 issue\n            state: close\n            # 移除 “预发布” 标签，添加 “已发布” 标签\n            label:\n              add: 已发布\n              remove: 预发布\n            # 当有 “feature” 或 “bug” 标签才进行上述操作\n            when:\n              label:\n                - feature\n                - bug\n",[32,8075,8076,8082,8089,8097,8108,8117,8122,8132,8140,8146,8151,8161,8166,8172,8181,8189,8194,8200,8206,8212],{"__ignoreMap":30},[35,8077,8078,8080],{"class":37,"line":38},[35,8079,5942],{"class":93},[35,8081,2981],{"class":86},[35,8083,8084,8087],{"class":37,"line":90},[35,8085,8086],{"class":93},"  tag_push",[35,8088,2981],{"class":86},[35,8090,8091,8093,8095],{"class":37,"line":112},[35,8092,2993],{"class":86},[35,8094,4510],{"class":93},[35,8096,2981],{"class":86},[35,8098,8099,8101,8103,8105],{"class":37,"line":162},[35,8100,3020],{"class":86},[35,8102,3023],{"class":93},[35,8104,59],{"class":86},[35,8106,8107],{"class":45}," 发布操作\n",[35,8109,8110,8112,8114],{"class":37,"line":166},[35,8111,3179],{"class":93},[35,8113,59],{"class":86},[35,8115,8116],{"class":45}," echo \"可用发布任务替代当前任务\"\n",[35,8118,8119],{"class":37,"line":170},[35,8120,8121],{"class":2949},"        # 发布操作后执行 issue 更新操作\n",[35,8123,8124,8126,8128,8130],{"class":37,"line":174},[35,8125,3020],{"class":86},[35,8127,3023],{"class":93},[35,8129,59],{"class":86},[35,8131,7984],{"class":45},[35,8133,8134,8136,8138],{"class":37,"line":178},[35,8135,3033],{"class":93},[35,8137,59],{"class":86},[35,8139,7993],{"class":45},[35,8141,8142,8144],{"class":37,"line":181},[35,8143,3043],{"class":93},[35,8145,2981],{"class":86},[35,8147,8148],{"class":37,"line":185},[35,8149,8150],{"class":2949},"            # 关闭 issue\n",[35,8152,8153,8156,8158],{"class":37,"line":1000},[35,8154,8155],{"class":93},"            state",[35,8157,59],{"class":86},[35,8159,8160],{"class":45}," close\n",[35,8162,8163],{"class":37,"line":1025},[35,8164,8165],{"class":2949},"            # 移除 “预发布” 标签，添加 “已发布” 标签\n",[35,8167,8168,8170],{"class":37,"line":1256},[35,8169,8009],{"class":93},[35,8171,2981],{"class":86},[35,8173,8174,8176,8178],{"class":37,"line":164},[35,8175,8016],{"class":93},[35,8177,59],{"class":86},[35,8179,8180],{"class":45}," 已发布\n",[35,8182,8183,8185,8187],{"class":37,"line":3090},[35,8184,8026],{"class":93},[35,8186,59],{"class":86},[35,8188,8021],{"class":45},[35,8190,8191],{"class":37,"line":157},[35,8192,8193],{"class":2949},"            # 当有 “feature” 或 “bug” 标签才进行上述操作\n",[35,8195,8196,8198],{"class":37,"line":3104},[35,8197,8041],{"class":93},[35,8199,2981],{"class":86},[35,8201,8202,8204],{"class":37,"line":864},[35,8203,8048],{"class":93},[35,8205,2981],{"class":86},[35,8207,8208,8210],{"class":37,"line":881},[35,8209,8055],{"class":86},[35,8211,8058],{"class":45},[35,8213,8214,8216],{"class":37,"line":1009},[35,8215,8055],{"class":86},[35,8217,8065],{"class":45},[123,8219,8220],{},[126,8221,8222],{},"根据 changelog 添加标签",[25,8224,8226],{"className":2970,"code":8225,"language":2972,"meta":5935,"style":30},"$:\n  tag_push:\n    - stages:\n        - name: changelog\n          image: cnbcool\u002Fchangelog\n          exports:\n            latestChangeLog: LATEST_CHANGE_LOG\n        - name: update issue\n          type: git:issue-update\n          options:\n            fromText: ${LATEST_CHANGE_LOG}\n            label:\n              add: 需求已接收\n            when:\n              label: feature\n",[32,8227,8228,8234,8240,8248,8259,8268,8274,8284,8294,8302,8308,8318,8324,8333,8339],{"__ignoreMap":30},[35,8229,8230,8232],{"class":37,"line":38},[35,8231,5942],{"class":93},[35,8233,2981],{"class":86},[35,8235,8236,8238],{"class":37,"line":90},[35,8237,8086],{"class":93},[35,8239,2981],{"class":86},[35,8241,8242,8244,8246],{"class":37,"line":112},[35,8243,2993],{"class":86},[35,8245,4510],{"class":93},[35,8247,2981],{"class":86},[35,8249,8250,8252,8254,8256],{"class":37,"line":162},[35,8251,3020],{"class":86},[35,8253,3023],{"class":93},[35,8255,59],{"class":86},[35,8257,8258],{"class":45}," changelog\n",[35,8260,8261,8263,8265],{"class":37,"line":166},[35,8262,3135],{"class":93},[35,8264,59],{"class":86},[35,8266,8267],{"class":45}," cnbcool\u002Fchangelog\n",[35,8269,8270,8272],{"class":37,"line":170},[35,8271,3107],{"class":93},[35,8273,2981],{"class":86},[35,8275,8276,8279,8281],{"class":37,"line":174},[35,8277,8278],{"class":93},"            latestChangeLog",[35,8280,59],{"class":86},[35,8282,8283],{"class":45}," LATEST_CHANGE_LOG\n",[35,8285,8286,8288,8290,8292],{"class":37,"line":178},[35,8287,3020],{"class":86},[35,8289,3023],{"class":93},[35,8291,59],{"class":86},[35,8293,7984],{"class":45},[35,8295,8296,8298,8300],{"class":37,"line":181},[35,8297,3033],{"class":93},[35,8299,59],{"class":86},[35,8301,7993],{"class":45},[35,8303,8304,8306],{"class":37,"line":185},[35,8305,3043],{"class":93},[35,8307,2981],{"class":86},[35,8309,8310,8313,8315],{"class":37,"line":1000},[35,8311,8312],{"class":93},"            fromText",[35,8314,59],{"class":86},[35,8316,8317],{"class":45}," ${LATEST_CHANGE_LOG}\n",[35,8319,8320,8322],{"class":37,"line":1025},[35,8321,8009],{"class":93},[35,8323,2981],{"class":86},[35,8325,8326,8328,8330],{"class":37,"line":1256},[35,8327,8016],{"class":93},[35,8329,59],{"class":86},[35,8331,8332],{"class":45}," 需求已接收\n",[35,8334,8335,8337],{"class":37,"line":164},[35,8336,8041],{"class":93},[35,8338,2981],{"class":86},[35,8340,8341,8343,8345],{"class":37,"line":3090},[35,8342,8048],{"class":93},[35,8344,59],{"class":86},[35,8346,8058],{"class":45},[2622,8348,8350],{"id":8349},"reviewer-git-reviewer","reviewer {#git-reviewer}",[17,8352,8353],{},[32,8354,8355],{},"git:reviewer",[17,8357,8358],{},"==配置评审人或处理人==给 PR 添加、删除评审人\u002F处理人，可指定备选评审人\u002F处理人范围。",[123,8360,8361,8366,8371,8376,8381],{},[126,8362,8363],{},[129,8364,2651],{"href":8365},"#git-reviewer-applicable-events",[126,8367,8368],{},[129,8369,2657],{"href":8370},"#git-reviewer-parameters",[126,8372,8373],{},[129,8374,2663],{"href":8375},"#git-reviewer-output",[126,8377,8378],{},[129,8379,2669],{"href":8380},"#git-reviewer-configuration-examples",[126,8382,8383],{},[129,8384,6153],{"href":8385},"#git-reviewer-best-practices",[2671,8387,8389],{"id":8388},"适用事件-git-reviewer-applicable-events","适用事件 {#git-reviewer-applicable-events}",[123,8391,8392,8396,8400],{},[126,8393,8394],{},[32,8395,6091],{},[126,8397,8398],{},[32,8399,4003],{},[126,8401,8402],{},[32,8403,8404],{},"pull_request.update",[2671,8406,8408],{"id":8407},"参数-git-reviewer-parameters","参数 {#git-reviewer-parameters}",[123,8410,8411,8417,8422,8428,8434,8440],{},[126,8412,8413],{},[129,8414,8416],{"href":8415},"#git-reviewer-parameters-type","type",[126,8418,8419],{},[129,8420,6271],{"href":8421},"#git-reviewer-parameters-reviewers",[126,8423,8424],{},[129,8425,8427],{"href":8426},"#git-reviewer-parameters-count","count",[126,8429,8430],{},[129,8431,8433],{"href":8432},"#git-reviewer-parameters-exclude","exclude",[126,8435,8436],{},[129,8437,8439],{"href":8438},"#git-reviewer-parameters-reviewersConfig","reviewersConfig",[126,8441,8442],{},[129,8443,8445],{"href":8444},"#git-reviewer-parameters-role","role",[2730,8447,8449],{"id":8448},"type-git-reviewer-parameters-type","type {#git-reviewer-parameters-type}",[123,8451,8452,8458,8462],{},[126,8453,2738,8454],{},[129,8455,8457],{"href":8456},"#git-reviewer-parameters-type-definitions-REVIEW_OPERATION_TYPE","REVIEW_OPERATION_TYPE",[126,8459,2744,8460],{},[32,8461,2777],{},[126,8463,2890,8464],{},[32,8465,8466],{},"add-reviewer",[17,8468,8469],{},"操作类型：",[123,8471,8472,8480,8486,8492,8498,8504,8513],{},[126,8473,8474,8476,8477,8479],{},[32,8475,8466],{},": 添加评审人，会从 ",[32,8478,6271],{}," 参数中选择指定数量的评审人",[126,8481,8482,8485],{},[32,8483,8484],{},"add-reviewer-from-repo-members",": 从仓库直接成员里选一名，添加为评审人",[126,8487,8488,8491],{},[32,8489,8490],{},"add-reviewer-from-group-members",": 从仓库父组织（直接上级组织）里选一名，添加为评审人",[126,8493,8494,8497],{},[32,8495,8496],{},"add-reviewer-from-outside-collaborator-members",": 从仓库的外部协作者里选一名，添加为评审人",[126,8499,8500,8503],{},[32,8501,8502],{},"remove-reviewer",": 从已有的评审人中删除指定的成员",[126,8505,8506,8509,8510,8512],{},[32,8507,8508],{},"add-assignee",": 添加处理人，添加 ",[32,8511,6271],{}," 参数传入的成员",[126,8514,8515,8518],{},[32,8516,8517],{},"remove-assignee",": 从已有的处理人中删除指定的成员",[2730,8520,8522],{"id":8521},"reviewers-git-reviewer-parameters-reviewers","reviewers {#git-reviewer-parameters-reviewers}",[123,8524,8525,8531],{},[126,8526,2738,8527,2770,8529],{},[32,8528,2769],{},[32,8530,2741],{},[126,8532,2744,8533],{},[32,8534,2777],{},[17,8536,8537,8538,6514,8541,3376,8544,8547,8548,6514,8550,8553],{},"要 ",[32,8539,8540],{},"添加",[32,8542,8543],{},"删除",[32,8545,8546],{},"reviewer"," 用户名。多个使用 ",[32,8549,4397],{},[32,8551,8552],{},";"," 分隔。",[17,8555,8556,8558,8559,3359,8561,3359,8563,3359,8565,8567],{},[32,8557,8416],{}," 为 ",[32,8560,8466],{},[32,8562,8502],{},[32,8564,8508],{},[32,8566,8517],{}," 时有效。",[17,8569,8570,8571,8573,8574,8576],{},"若同时配置了 ",[32,8572,6271],{}," 、 ",[32,8575,8439],{}," ，则会在两者中随机选指定数量的评审人或处理人",[2730,8578,8580],{"id":8579},"count-git-reviewer-parameters-count","count {#git-reviewer-parameters-count}",[123,8582,8583,8588],{},[126,8584,2738,8585],{},[32,8586,8587],{},"Number",[126,8589,2744,8590],{},[32,8591,2777],{},[17,8593,8594],{},"指定要添加的评审人或处理人数量，随机抽取指定数量的评审人或处理人。",[123,8596,8597,8607,8613,8618,8623],{},[126,8598,8599,8600,8603,8604,8606],{},"当 ",[32,8601,8602],{},"type=add-reviewer","，count 缺省值为 ",[32,8605,6271],{}," 的数量，即全部添加",[126,8608,8599,8609,8612],{},[32,8610,8611],{},"type=add-reviewer-from-repo-members","，count 缺省值为 1",[126,8614,8599,8615,8612],{},[32,8616,8617],{},"type=add-reviewer-from-group-members",[126,8619,8599,8620,8612],{},[32,8621,8622],{},"type=add-reviewer-from-outside-collaborator-members",[126,8624,8599,8625,8603,8628,8606],{},[32,8626,8627],{},"type=add-assignee",[32,8629,6271],{},[17,8631,8632,8633,8636],{},"如果已有评审人或处理人的数量 ",[32,8634,8635],{},"\u003C count"," ，那么补齐。",[17,8638,8632,8639,8642],{},[32,8640,8641],{},">= count"," ，那么什么也不做。",[2730,8644,8646],{"id":8645},"exclude-git-reviewer-parameters-exclude","exclude {#git-reviewer-parameters-exclude}",[123,8648,8649,8655],{},[126,8650,2738,8651,2770,8653],{},[32,8652,2769],{},[32,8654,2741],{},[126,8656,2744,8657],{},[32,8658,2777],{},[17,8660,8661],{},"排除指定的用户。",[2730,8663,8665],{"id":8664},"reviewersconfig-git-reviewer-parameters-reviewersconfig","reviewersConfig {#git-reviewer-parameters-reviewersConfig}",[123,8667,8668,8676],{},[126,8669,2738,8670,2770,8674],{},[129,8671,8673],{"href":8672},"#git-reviewer-parameters-type-definitions-IReviewersConfig","IReviewersConfig",[32,8675,2741],{},[126,8677,2744,8678],{},[32,8679,2777],{},[17,8681,8682],{},"文件评审人或处理人配置，如果配置中有配置当前变更文件的评审人或处理人，则会被添加为评审人或处理人。",[17,8684,8685,8558,8687,6514,8689,8567],{},[32,8686,8416],{},[32,8688,8466],{},[32,8690,8508],{},[17,8692,8693],{},"支持两种格式：",[123,8695,8696],{},[126,8697,8698,8699,8701],{},"字符串格式，传入配置文件相对路径(支持 ",[32,8700,4366],{}," 文件)：",[25,8703,8705],{"className":5564,"code":8704,"language":5566,"meta":30,"style":30},"reviewersConfig: config.json\n",[32,8706,8707],{"__ignoreMap":30},[35,8708,8709],{"class":37,"line":38},[35,8710,8704],{},[25,8712,8714],{"className":5564,"code":8713,"language":5566,"meta":30,"style":30},"{\n   \".\u002Fsrc\": \"name1,name2\",\n   \".cnb.yml\": \"name3\"\n}\n",[32,8715,8716,8720,8725,8730],{"__ignoreMap":30},[35,8717,8718],{"class":37,"line":38},[35,8719,87],{},[35,8721,8722],{"class":37,"line":90},[35,8723,8724],{},"   \".\u002Fsrc\": \"name1,name2\",\n",[35,8726,8727],{"class":37,"line":112},[35,8728,8729],{},"   \".cnb.yml\": \"name3\"\n",[35,8731,8732],{"class":37,"line":162},[35,8733,2963],{},[123,8735,8736],{},[126,8737,8738],{},"对象格式，传入文件评审人配置：",[25,8740,8742],{"className":5564,"code":8741,"language":5566,"meta":30,"style":30},"reviewersConfig:\n  .\u002Fsrc: name1,name2\n  .cnb.yml: name3\n",[32,8743,8744,8749,8754],{"__ignoreMap":30},[35,8745,8746],{"class":37,"line":38},[35,8747,8748],{},"reviewersConfig:\n",[35,8750,8751],{"class":37,"line":90},[35,8752,8753],{},"  .\u002Fsrc: name1,name2\n",[35,8755,8756],{"class":37,"line":112},[35,8757,8758],{},"  .cnb.yml: name3\n",[17,8760,8761,8762,8764,8765,8768],{},"其中，文件评审人或处理人配置的 ",[32,8763,3375],{}," 为文件相对路径；",[32,8766,8767],{},"value"," 为评审人或处理人英文名，用英文逗号分隔。",[17,8770,8570,8771,8773,8774,8776],{},[32,8772,6271],{}," 、",[32,8775,8439],{},"，则会在两者中随机选指定数量的评审人或处理人。",[2730,8778,8780],{"id":8779},"role-git-reviewer-parameters-role","role {#git-reviewer-parameters-role}",[123,8782,8783,8789],{},[126,8784,2738,8785],{},[129,8786,8788],{"href":8787},"#git-reviewer-parameters-type-definitions-ROLE_TYPE","ROLE_TYPE",[126,8790,2744,8791],{},[32,8792,2777],{},[17,8794,8795,8796,3359,8799,3359,8802,8805,8806,8808,8809,8811,8812,3359,8814,3359,8816],{},"评审人或处理人可以添加的角色可选包括：",[32,8797,8798],{},"Developer",[32,8800,8801],{},"Master",[32,8803,8804],{},"Owner"," 如果选择 ",[32,8807,8798],{},"，则可添加 ",[32,8810,8798],{}," 及以上权限成员，包括 ",[32,8813,8798],{},[32,8815,8801],{},[32,8817,8804],{},[2730,8819,8821],{"id":8820},"类型定义-git-reviewer-parameters-type-definitions","类型定义 {#git-reviewer-parameters-type-definitions}",[3594,8823,8825],{"id":8824},"review_operation_type-git-reviewer-parameters-type-definitions-review_operation_type","REVIEW_OPERATION_TYPE {#git-reviewer-parameters-type-definitions-REVIEW_OPERATION_TYPE}",[123,8827,8828],{},[126,8829,8830],{},[32,8831,7845],{},[17,8833,8834],{},"add-reviewer | add-reviewer-from-repo-members | add-reviewer-from-group-members | add-reviewer-from-outside-collaborator-members | remove-reviewer | add-assignee | remove-assignee",[3594,8836,8838],{"id":8837},"ireviewersconfig-git-reviewer-parameters-type-definitions-ireviewersconfig","IReviewersConfig {#git-reviewer-parameters-type-definitions-IReviewersConfig}",[25,8840,8842],{"className":5564,"code":8841,"language":5566,"meta":30,"style":30},"{\n    [key: String]: String\n}\n",[32,8843,8844,8848,8853],{"__ignoreMap":30},[35,8845,8846],{"class":37,"line":38},[35,8847,87],{},[35,8849,8850],{"class":37,"line":90},[35,8851,8852],{},"    [key: String]: String\n",[35,8854,8855],{"class":37,"line":112},[35,8856,2963],{},[3594,8858,8860],{"id":8859},"role_type-git-reviewer-parameters-type-definitions-role_type","ROLE_TYPE {#git-reviewer-parameters-type-definitions-ROLE_TYPE}",[123,8862,8863],{},[126,8864,8865],{},[32,8866,7845],{},[17,8868,8869],{},"Developer | Master | Owner",[2671,8871,8873],{"id":8872},"输出结果-git-reviewer-output","输出结果 {#git-reviewer-output}",[17,8875,8876],{},"添加评审人的输出结果：",[25,8878,8880],{"className":4364,"code":8879,"language":4366,"meta":30,"style":30},"{\n  \u002F\u002F 当前有效的评审人\n  \"reviewers\": [],\n\n  \u002F\u002F reviewers 对应的 at 消息格式，方便发送通知\n  \"reviewersForAt\": []\n}\n",[32,8881,8882,8886,8891,8904,8908,8913,8927],{"__ignoreMap":30},[35,8883,8884],{"class":37,"line":38},[35,8885,87],{"class":86},[35,8887,8888],{"class":37,"line":90},[35,8889,8890],{"class":2949},"  \u002F\u002F 当前有效的评审人\n",[35,8892,8893,8895,8897,8899,8901],{"class":37,"line":112},[35,8894,4377],{"class":86},[35,8896,6271],{"class":4380},[35,8898,4384],{"class":86},[35,8900,59],{"class":86},[35,8902,8903],{"class":86}," [],\n",[35,8905,8906],{"class":37,"line":162},[35,8907,3219],{"emptyLinePlaceholder":201},[35,8909,8910],{"class":37,"line":166},[35,8911,8912],{"class":2949},"  \u002F\u002F reviewers 对应的 at 消息格式，方便发送通知\n",[35,8914,8915,8917,8920,8922,8924],{"class":37,"line":170},[35,8916,4377],{"class":86},[35,8918,8919],{"class":4380},"reviewersForAt",[35,8921,4384],{"class":86},[35,8923,59],{"class":86},[35,8925,8926],{"class":86}," []\n",[35,8928,8929],{"class":37,"line":174},[35,8930,2963],{"class":86},[17,8932,8933],{},"添加处理人的输出结果：",[25,8935,8937],{"className":4364,"code":8936,"language":4366,"meta":30,"style":30},"{\n  \u002F\u002F 当前有效的处理人\n  \"assignees\": [],\n\n  \u002F\u002F assignees 对应的 at 消息格式，方便发送通知\n  \"assigneesForAt\": []\n}\n",[32,8938,8939,8943,8948,8961,8965,8970,8983],{"__ignoreMap":30},[35,8940,8941],{"class":37,"line":38},[35,8942,87],{"class":86},[35,8944,8945],{"class":37,"line":90},[35,8946,8947],{"class":2949},"  \u002F\u002F 当前有效的处理人\n",[35,8949,8950,8952,8955,8957,8959],{"class":37,"line":112},[35,8951,4377],{"class":86},[35,8953,8954],{"class":4380},"assignees",[35,8956,4384],{"class":86},[35,8958,59],{"class":86},[35,8960,8903],{"class":86},[35,8962,8963],{"class":37,"line":162},[35,8964,3219],{"emptyLinePlaceholder":201},[35,8966,8967],{"class":37,"line":166},[35,8968,8969],{"class":2949},"  \u002F\u002F assignees 对应的 at 消息格式，方便发送通知\n",[35,8971,8972,8974,8977,8979,8981],{"class":37,"line":170},[35,8973,4377],{"class":86},[35,8975,8976],{"class":4380},"assigneesForAt",[35,8978,4384],{"class":86},[35,8980,59],{"class":86},[35,8982,8926],{"class":86},[35,8984,8985],{"class":37,"line":174},[35,8986,2963],{"class":86},[2671,8988,8990],{"id":8989},"配置样例-git-reviewer-configuration-examples","配置样例 {#git-reviewer-configuration-examples}",[123,8992,8993],{},[126,8994,8995],{},"添加评审人和处理人",[25,8997,8999],{"className":2970,"code":8998,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: 添加评审人\n          type: git:reviewer\n          options:\n            type: add-reviewer\n            reviewers: aaa;bbb\n\n        - name: 添加处理人\n          type: git:reviewer\n          options:\n            type: add-assignee\n            reviewers: ccc;ddd\n",[32,9000,9001,9007,9013,9021,9032,9041,9047,9057,9067,9071,9082,9090,9096,9105],{"__ignoreMap":30},[35,9002,9003,9005],{"class":37,"line":38},[35,9004,210],{"class":93},[35,9006,2981],{"class":86},[35,9008,9009,9011],{"class":37,"line":90},[35,9010,7339],{"class":93},[35,9012,2981],{"class":86},[35,9014,9015,9017,9019],{"class":37,"line":112},[35,9016,2993],{"class":86},[35,9018,4510],{"class":93},[35,9020,2981],{"class":86},[35,9022,9023,9025,9027,9029],{"class":37,"line":162},[35,9024,3020],{"class":86},[35,9026,3023],{"class":93},[35,9028,59],{"class":86},[35,9030,9031],{"class":45}," 添加评审人\n",[35,9033,9034,9036,9038],{"class":37,"line":166},[35,9035,3033],{"class":93},[35,9037,59],{"class":86},[35,9039,9040],{"class":45}," git:reviewer\n",[35,9042,9043,9045],{"class":37,"line":170},[35,9044,3043],{"class":93},[35,9046,2981],{"class":86},[35,9048,9049,9052,9054],{"class":37,"line":174},[35,9050,9051],{"class":93},"            type",[35,9053,59],{"class":86},[35,9055,9056],{"class":45}," add-reviewer\n",[35,9058,9059,9062,9064],{"class":37,"line":178},[35,9060,9061],{"class":93},"            reviewers",[35,9063,59],{"class":86},[35,9065,9066],{"class":45}," aaa;bbb\n",[35,9068,9069],{"class":37,"line":181},[35,9070,3219],{"emptyLinePlaceholder":201},[35,9072,9073,9075,9077,9079],{"class":37,"line":185},[35,9074,3020],{"class":86},[35,9076,3023],{"class":93},[35,9078,59],{"class":86},[35,9080,9081],{"class":45}," 添加处理人\n",[35,9083,9084,9086,9088],{"class":37,"line":1000},[35,9085,3033],{"class":93},[35,9087,59],{"class":86},[35,9089,9040],{"class":45},[35,9091,9092,9094],{"class":37,"line":1025},[35,9093,3043],{"class":93},[35,9095,2981],{"class":86},[35,9097,9098,9100,9102],{"class":37,"line":1256},[35,9099,9051],{"class":93},[35,9101,59],{"class":86},[35,9103,9104],{"class":45}," add-assignee\n",[35,9106,9107,9109,9111],{"class":37,"line":164},[35,9108,9061],{"class":93},[35,9110,59],{"class":86},[35,9112,9113],{"class":45}," ccc;ddd\n",[123,9115,9116],{},[126,9117,9118],{},"删除指定成员的评审人和处理人",[25,9120,9122],{"className":2970,"code":9121,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: 删除评审人\n          type: git:reviewer\n          options:\n            type: remove-reviewer\n            reviewers: aaa\n\n        - name: 删除处理人\n          type: git:reviewer\n          options:\n            type: remove-assignee\n            reviewers: aaa\n",[32,9123,9124,9130,9136,9144,9155,9163,9169,9178,9187,9191,9202,9210,9216,9225],{"__ignoreMap":30},[35,9125,9126,9128],{"class":37,"line":38},[35,9127,210],{"class":93},[35,9129,2981],{"class":86},[35,9131,9132,9134],{"class":37,"line":90},[35,9133,7339],{"class":93},[35,9135,2981],{"class":86},[35,9137,9138,9140,9142],{"class":37,"line":112},[35,9139,2993],{"class":86},[35,9141,4510],{"class":93},[35,9143,2981],{"class":86},[35,9145,9146,9148,9150,9152],{"class":37,"line":162},[35,9147,3020],{"class":86},[35,9149,3023],{"class":93},[35,9151,59],{"class":86},[35,9153,9154],{"class":45}," 删除评审人\n",[35,9156,9157,9159,9161],{"class":37,"line":166},[35,9158,3033],{"class":93},[35,9160,59],{"class":86},[35,9162,9040],{"class":45},[35,9164,9165,9167],{"class":37,"line":170},[35,9166,3043],{"class":93},[35,9168,2981],{"class":86},[35,9170,9171,9173,9175],{"class":37,"line":174},[35,9172,9051],{"class":93},[35,9174,59],{"class":86},[35,9176,9177],{"class":45}," remove-reviewer\n",[35,9179,9180,9182,9184],{"class":37,"line":178},[35,9181,9061],{"class":93},[35,9183,59],{"class":86},[35,9185,9186],{"class":45}," aaa\n",[35,9188,9189],{"class":37,"line":181},[35,9190,3219],{"emptyLinePlaceholder":201},[35,9192,9193,9195,9197,9199],{"class":37,"line":185},[35,9194,3020],{"class":86},[35,9196,3023],{"class":93},[35,9198,59],{"class":86},[35,9200,9201],{"class":45}," 删除处理人\n",[35,9203,9204,9206,9208],{"class":37,"line":1000},[35,9205,3033],{"class":93},[35,9207,59],{"class":86},[35,9209,9040],{"class":45},[35,9211,9212,9214],{"class":37,"line":1025},[35,9213,3043],{"class":93},[35,9215,2981],{"class":86},[35,9217,9218,9220,9222],{"class":37,"line":1256},[35,9219,9051],{"class":93},[35,9221,59],{"class":86},[35,9223,9224],{"class":45}," remove-assignee\n",[35,9226,9227,9229,9231],{"class":37,"line":164},[35,9228,9061],{"class":93},[35,9230,59],{"class":86},[35,9232,9186],{"class":45},[123,9234,9235],{},[126,9236,9237],{},"结合 ifModify，指定文件被修改时添加评审人和处理人",[25,9239,9241],{"className":2970,"code":9240,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: 改配置？需要特别 review\n          ifModify:\n            - '.cnb.yml'\n            - 'configs\u002F**'\n          type: git:reviewer\n          options:\n            type: add-reviewer\n            reviewers: bbb\n\n        - name: 改配置？需要特别处理\n          ifModify:\n            - '.cnb.yml'\n            - 'configs\u002F**'\n          type: git:reviewer\n          options:\n            type: add-assignee\n            reviewers: ccc\n",[32,9242,9243,9249,9255,9263,9274,9281,9291,9302,9310,9316,9324,9333,9337,9348,9354,9364,9374,9382,9388,9396],{"__ignoreMap":30},[35,9244,9245,9247],{"class":37,"line":38},[35,9246,210],{"class":93},[35,9248,2981],{"class":86},[35,9250,9251,9253],{"class":37,"line":90},[35,9252,7339],{"class":93},[35,9254,2981],{"class":86},[35,9256,9257,9259,9261],{"class":37,"line":112},[35,9258,2993],{"class":86},[35,9260,4510],{"class":93},[35,9262,2981],{"class":86},[35,9264,9265,9267,9269,9271],{"class":37,"line":162},[35,9266,3020],{"class":86},[35,9268,3023],{"class":93},[35,9270,59],{"class":86},[35,9272,9273],{"class":45}," 改配置？需要特别 review\n",[35,9275,9276,9279],{"class":37,"line":166},[35,9277,9278],{"class":93},"          ifModify",[35,9280,2981],{"class":86},[35,9282,9283,9285,9287,9289],{"class":37,"line":170},[35,9284,3158],{"class":86},[35,9286,6591],{"class":86},[35,9288,2400],{"class":45},[35,9290,6597],{"class":86},[35,9292,9293,9295,9297,9300],{"class":37,"line":174},[35,9294,3158],{"class":86},[35,9296,6591],{"class":86},[35,9298,9299],{"class":45},"configs\u002F**",[35,9301,6597],{"class":86},[35,9303,9304,9306,9308],{"class":37,"line":178},[35,9305,3033],{"class":93},[35,9307,59],{"class":86},[35,9309,9040],{"class":45},[35,9311,9312,9314],{"class":37,"line":181},[35,9313,3043],{"class":93},[35,9315,2981],{"class":86},[35,9317,9318,9320,9322],{"class":37,"line":185},[35,9319,9051],{"class":93},[35,9321,59],{"class":86},[35,9323,9056],{"class":45},[35,9325,9326,9328,9330],{"class":37,"line":1000},[35,9327,9061],{"class":93},[35,9329,59],{"class":86},[35,9331,9332],{"class":45}," bbb\n",[35,9334,9335],{"class":37,"line":1025},[35,9336,3219],{"emptyLinePlaceholder":201},[35,9338,9339,9341,9343,9345],{"class":37,"line":1256},[35,9340,3020],{"class":86},[35,9342,3023],{"class":93},[35,9344,59],{"class":86},[35,9346,9347],{"class":45}," 改配置？需要特别处理\n",[35,9349,9350,9352],{"class":37,"line":164},[35,9351,9278],{"class":93},[35,9353,2981],{"class":86},[35,9355,9356,9358,9360,9362],{"class":37,"line":3090},[35,9357,3158],{"class":86},[35,9359,6591],{"class":86},[35,9361,2400],{"class":45},[35,9363,6597],{"class":86},[35,9365,9366,9368,9370,9372],{"class":37,"line":157},[35,9367,3158],{"class":86},[35,9369,6591],{"class":86},[35,9371,9299],{"class":45},[35,9373,6597],{"class":86},[35,9375,9376,9378,9380],{"class":37,"line":3104},[35,9377,3033],{"class":93},[35,9379,59],{"class":86},[35,9381,9040],{"class":45},[35,9383,9384,9386],{"class":37,"line":864},[35,9385,3043],{"class":93},[35,9387,2981],{"class":86},[35,9389,9390,9392,9394],{"class":37,"line":881},[35,9391,9051],{"class":93},[35,9393,59],{"class":86},[35,9395,9104],{"class":45},[35,9397,9398,9400,9402],{"class":37,"line":1009},[35,9399,9061],{"class":93},[35,9401,59],{"class":86},[35,9403,9404],{"class":45}," ccc\n",[123,9406,9407],{},[126,9408,9409],{},"结合 if，在指定条件下将某些人添加为评审人或处理人",[25,9411,9413],{"className":2970,"code":9412,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: 下班时间发版本？需指定人评审。\n          if: |\n            [ $(date +%H) -ge 18 ]\n          type: git:reviewer\n          options:\n            type: add-reviewer\n            reviewers: bbb\n\n        - name: 下班时间发版本？需指定人处理。\n          if: |\n            [ $(date +%H) -ge 18 ]\n          type: git:reviewer\n          options:\n            type: add-assignee\n            reviewers: ccc\n",[32,9414,9415,9421,9427,9435,9446,9455,9460,9468,9474,9482,9490,9494,9505,9513,9517,9525,9531,9539],{"__ignoreMap":30},[35,9416,9417,9419],{"class":37,"line":38},[35,9418,210],{"class":93},[35,9420,2981],{"class":86},[35,9422,9423,9425],{"class":37,"line":90},[35,9424,7339],{"class":93},[35,9426,2981],{"class":86},[35,9428,9429,9431,9433],{"class":37,"line":112},[35,9430,2993],{"class":86},[35,9432,4510],{"class":93},[35,9434,2981],{"class":86},[35,9436,9437,9439,9441,9443],{"class":37,"line":162},[35,9438,3020],{"class":86},[35,9440,3023],{"class":93},[35,9442,59],{"class":86},[35,9444,9445],{"class":45}," 下班时间发版本？需指定人评审。\n",[35,9447,9448,9451,9453],{"class":37,"line":166},[35,9449,9450],{"class":93},"          if",[35,9452,59],{"class":86},[35,9454,4617],{"class":71},[35,9456,9457],{"class":37,"line":170},[35,9458,9459],{"class":45},"            [ $(date +%H) -ge 18 ]\n",[35,9461,9462,9464,9466],{"class":37,"line":174},[35,9463,3033],{"class":93},[35,9465,59],{"class":86},[35,9467,9040],{"class":45},[35,9469,9470,9472],{"class":37,"line":178},[35,9471,3043],{"class":93},[35,9473,2981],{"class":86},[35,9475,9476,9478,9480],{"class":37,"line":181},[35,9477,9051],{"class":93},[35,9479,59],{"class":86},[35,9481,9056],{"class":45},[35,9483,9484,9486,9488],{"class":37,"line":185},[35,9485,9061],{"class":93},[35,9487,59],{"class":86},[35,9489,9332],{"class":45},[35,9491,9492],{"class":37,"line":1000},[35,9493,3219],{"emptyLinePlaceholder":201},[35,9495,9496,9498,9500,9502],{"class":37,"line":1025},[35,9497,3020],{"class":86},[35,9499,3023],{"class":93},[35,9501,59],{"class":86},[35,9503,9504],{"class":45}," 下班时间发版本？需指定人处理。\n",[35,9506,9507,9509,9511],{"class":37,"line":1256},[35,9508,9450],{"class":93},[35,9510,59],{"class":86},[35,9512,4617],{"class":71},[35,9514,9515],{"class":37,"line":164},[35,9516,9459],{"class":45},[35,9518,9519,9521,9523],{"class":37,"line":3090},[35,9520,3033],{"class":93},[35,9522,59],{"class":86},[35,9524,9040],{"class":45},[35,9526,9527,9529],{"class":37,"line":157},[35,9528,3043],{"class":93},[35,9530,2981],{"class":86},[35,9532,9533,9535,9537],{"class":37,"line":3104},[35,9534,9051],{"class":93},[35,9536,59],{"class":86},[35,9538,9104],{"class":45},[35,9540,9541,9543,9545],{"class":37,"line":864},[35,9542,9061],{"class":93},[35,9544,59],{"class":86},[35,9546,9404],{"class":45},[123,9548,9549],{},[126,9550,9551],{},"随机选择一名负责人走查代码",[25,9553,9555],{"className":2970,"code":9554,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: random\n          image: tencentcom\u002Frandom\n          settings:\n            from:\n              - aaa\n              - bbb\n          exports:\n            result: CURR_REVIEWER\n        - name: show  CURR_REVIEWER\n          script: echo ${CURR_REVIEWER}\n        - name: add reviewer\n          type: git:reviewer\n          options:\n            type: add-reviewer\n            reviewers: ${CURR_REVIEWER}\n",[32,9556,9557,9563,9569,9577,9588,9597,9603,9610,9616,9622,9628,9638,9649,9658,9669,9677,9683,9691],{"__ignoreMap":30},[35,9558,9559,9561],{"class":37,"line":38},[35,9560,210],{"class":93},[35,9562,2981],{"class":86},[35,9564,9565,9567],{"class":37,"line":90},[35,9566,7339],{"class":93},[35,9568,2981],{"class":86},[35,9570,9571,9573,9575],{"class":37,"line":112},[35,9572,2993],{"class":86},[35,9574,4510],{"class":93},[35,9576,2981],{"class":86},[35,9578,9579,9581,9583,9585],{"class":37,"line":162},[35,9580,3020],{"class":86},[35,9582,3023],{"class":93},[35,9584,59],{"class":86},[35,9586,9587],{"class":45}," random\n",[35,9589,9590,9592,9594],{"class":37,"line":166},[35,9591,3135],{"class":93},[35,9593,59],{"class":86},[35,9595,9596],{"class":45}," tencentcom\u002Frandom\n",[35,9598,9599,9601],{"class":37,"line":170},[35,9600,7265],{"class":93},[35,9602,2981],{"class":86},[35,9604,9605,9608],{"class":37,"line":174},[35,9606,9607],{"class":93},"            from",[35,9609,2981],{"class":86},[35,9611,9612,9614],{"class":37,"line":178},[35,9613,3072],{"class":86},[35,9615,9186],{"class":45},[35,9617,9618,9620],{"class":37,"line":181},[35,9619,3072],{"class":86},[35,9621,9332],{"class":45},[35,9623,9624,9626],{"class":37,"line":185},[35,9625,3107],{"class":93},[35,9627,2981],{"class":86},[35,9629,9630,9633,9635],{"class":37,"line":1000},[35,9631,9632],{"class":93},"            result",[35,9634,59],{"class":86},[35,9636,9637],{"class":45}," CURR_REVIEWER\n",[35,9639,9640,9642,9644,9646],{"class":37,"line":1025},[35,9641,3020],{"class":86},[35,9643,3023],{"class":93},[35,9645,59],{"class":86},[35,9647,9648],{"class":45}," show  CURR_REVIEWER\n",[35,9650,9651,9653,9655],{"class":37,"line":1256},[35,9652,3179],{"class":93},[35,9654,59],{"class":86},[35,9656,9657],{"class":45}," echo ${CURR_REVIEWER}\n",[35,9659,9660,9662,9664,9666],{"class":37,"line":164},[35,9661,3020],{"class":86},[35,9663,3023],{"class":93},[35,9665,59],{"class":86},[35,9667,9668],{"class":45}," add reviewer\n",[35,9670,9671,9673,9675],{"class":37,"line":3090},[35,9672,3033],{"class":93},[35,9674,59],{"class":86},[35,9676,9040],{"class":45},[35,9678,9679,9681],{"class":37,"line":157},[35,9680,3043],{"class":93},[35,9682,2981],{"class":86},[35,9684,9685,9687,9689],{"class":37,"line":3104},[35,9686,9051],{"class":93},[35,9688,59],{"class":86},[35,9690,9056],{"class":45},[35,9692,9693,9695,9697],{"class":37,"line":864},[35,9694,9061],{"class":93},[35,9696,59],{"class":86},[35,9698,9699],{"class":45}," ${CURR_REVIEWER}\n",[123,9701,9702],{},[126,9703,9704],{},"从当前仓库成员里选一名评审人进行 review",[25,9706,9708],{"className":2970,"code":9707,"language":2972,"meta":5935,"style":30},"main:\n  pull_request:\n    - stages:\n        - name: add reviewer\n          type: git:reviewer\n          options:\n            type: add-reviewer-from-repo-members\n",[32,9709,9710,9716,9722,9730,9740,9748,9754],{"__ignoreMap":30},[35,9711,9712,9714],{"class":37,"line":38},[35,9713,210],{"class":93},[35,9715,2981],{"class":86},[35,9717,9718,9720],{"class":37,"line":90},[35,9719,7339],{"class":93},[35,9721,2981],{"class":86},[35,9723,9724,9726,9728],{"class":37,"line":112},[35,9725,2993],{"class":86},[35,9727,4510],{"class":93},[35,9729,2981],{"class":86},[35,9731,9732,9734,9736,9738],{"class":37,"line":162},[35,9733,3020],{"class":86},[35,9735,3023],{"class":93},[35,9737,59],{"class":86},[35,9739,9668],{"class":45},[35,9741,9742,9744,9746],{"class":37,"line":166},[35,9743,3033],{"class":93},[35,9745,59],{"class":86},[35,9747,9040],{"class":45},[35,9749,9750,9752],{"class":37,"line":170},[35,9751,3043],{"class":93},[35,9753,2981],{"class":86},[35,9755,9756,9758,9760],{"class":37,"line":174},[35,9757,9051],{"class":93},[35,9759,59],{"class":86},[35,9761,9762],{"class":45}," add-reviewer-from-repo-members\n",[2671,9764,9766],{"id":9765},"最佳实践-git-reviewer-best-practices","最佳实践 {#git-reviewer-best-practices}",[17,9768,9769],{},"建立专用的 CR 群，交叉评审自动合并",[3427,9771,9772,9777,9780,9783],{},[126,9773,9774,9776],{},[32,9775,6102],{}," 随机选择N名评审者，通知到群",[126,9778,9779],{},"评审通过后自动合并",[126,9781,9782],{},"记录评审者信息在提交信息中",[126,9784,9785,9788],{},[32,9786,9787],{},"Git"," 设置满足多人评审自动合并策略实现多人交叉评审",[25,9790,9792],{"className":2970,"code":9791,"language":2972,"meta":5935,"style":30},"main:\n  review:\n    - stages:\n        - name: CR 通过后自动合并\n          type: git:auto-merge\n          options:\n            mergeType: squash\n            removeSourceBranch: true\n            mergeCommitMessage: $CNB_LATEST_COMMIT_MESSAGE\n          exports:\n            reviewedBy: REVIEWED_BY\n        # 将评审消息发送到企业微信机器人\n        - name: notify\n          image: tencentcom\u002Fwecom-message\n          settings:\n            msgType: markdown\n            robot: '155af237-6041-4125-9340-000000000000'\n            content: |\n              > CR 通过后自动合并 \u003C@${CNB_BUILD_USER}> \n              > 　\n              > ${CNB_PULL_REQUEST_TITLE}\n              > [${CNB_EVENT_URL}](${CNB_EVENT_URL})\n              > \n              > ${REVIEWED_BY}\n\n  pull_request:\n    - stages:\n        # ...省略其它任务\n\n        # 发送到 CR 专用群\n        - name: add reviewer\n          type: git:reviewer\n          options:\n            reviewers: aaa,bbb,ccc,ddd\n            count: 2\n          exports:\n            reviewersForAt: CURR_REVIEWER_FOR_AT\n        - name: notify\n          image: tencentcom\u002Fwecom-message\n          settings:\n            msgType: markdown\n            robot: '155af237-6041-4125-9340-000000000000'\n            message: |\n              > ${CURR_REVIEWER_FOR_AT}\n              > 　\n              > ${CNB_PULL_REQUEST_TITLE}\n              > [${CNB_EVENT_URL}](${CNB_EVENT_URL})\n              > 　\n              > from ${CNB_BUILD_USER}\n",[32,9793,9794,9800,9806,9814,9824,9832,9838,9846,9854,9862,9868,9876,9881,9891,9899,9905,9913,9925,9933,9937,9941,9945,9949,9953,9957,9961,9967,9975,9979,9983,9988,9998,10006,10012,10021,10030,10036,10046,10056,10064,10071,10079,10091,10100,10104,10108,10112,10116,10120],{"__ignoreMap":30},[35,9795,9796,9798],{"class":37,"line":38},[35,9797,210],{"class":93},[35,9799,2981],{"class":86},[35,9801,9802,9804],{"class":37,"line":90},[35,9803,7024],{"class":93},[35,9805,2981],{"class":86},[35,9807,9808,9810,9812],{"class":37,"line":112},[35,9809,2993],{"class":86},[35,9811,4510],{"class":93},[35,9813,2981],{"class":86},[35,9815,9816,9818,9820,9822],{"class":37,"line":162},[35,9817,3020],{"class":86},[35,9819,3023],{"class":93},[35,9821,59],{"class":86},[35,9823,7193],{"class":45},[35,9825,9826,9828,9830],{"class":37,"line":166},[35,9827,3033],{"class":93},[35,9829,59],{"class":86},[35,9831,6358],{"class":45},[35,9833,9834,9836],{"class":37,"line":170},[35,9835,3043],{"class":93},[35,9837,2981],{"class":86},[35,9839,9840,9842,9844],{"class":37,"line":174},[35,9841,6369],{"class":93},[35,9843,59],{"class":86},[35,9845,6374],{"class":45},[35,9847,9848,9850,9852],{"class":37,"line":178},[35,9849,7071],{"class":93},[35,9851,59],{"class":86},[35,9853,4828],{"class":4827},[35,9855,9856,9858,9860],{"class":37,"line":181},[35,9857,6586],{"class":93},[35,9859,59],{"class":86},[35,9861,7224],{"class":45},[35,9863,9864,9866],{"class":37,"line":185},[35,9865,3107],{"class":93},[35,9867,2981],{"class":86},[35,9869,9870,9872,9874],{"class":37,"line":1000},[35,9871,7235],{"class":93},[35,9873,59],{"class":86},[35,9875,7240],{"class":45},[35,9877,9878],{"class":37,"line":1025},[35,9879,9880],{"class":2949},"        # 将评审消息发送到企业微信机器人\n",[35,9882,9883,9885,9887,9889],{"class":37,"line":1256},[35,9884,3020],{"class":86},[35,9886,3023],{"class":93},[35,9888,59],{"class":86},[35,9890,7251],{"class":45},[35,9892,9893,9895,9897],{"class":37,"line":164},[35,9894,3135],{"class":93},[35,9896,59],{"class":86},[35,9898,7260],{"class":45},[35,9900,9901,9903],{"class":37,"line":3090},[35,9902,7265],{"class":93},[35,9904,2981],{"class":86},[35,9906,9907,9909,9911],{"class":37,"line":157},[35,9908,7286],{"class":93},[35,9910,59],{"class":86},[35,9912,7291],{"class":45},[35,9914,9915,9917,9919,9921,9923],{"class":37,"line":3104},[35,9916,7272],{"class":93},[35,9918,59],{"class":86},[35,9920,6591],{"class":86},[35,9922,7279],{"class":45},[35,9924,6597],{"class":86},[35,9926,9927,9929,9931],{"class":37,"line":864},[35,9928,7296],{"class":93},[35,9930,59],{"class":86},[35,9932,4617],{"class":71},[35,9934,9935],{"class":37,"line":881},[35,9936,7305],{"class":45},[35,9938,9939],{"class":37,"line":1009},[35,9940,7310],{"class":45},[35,9942,9943],{"class":37,"line":3143},[35,9944,7315],{"class":45},[35,9946,9947],{"class":37,"line":732},[35,9948,7320],{"class":45},[35,9950,9951],{"class":37,"line":461},[35,9952,7325],{"class":45},[35,9954,9955],{"class":37,"line":3164},[35,9956,7330],{"class":45},[35,9958,9959],{"class":37,"line":3176},[35,9960,3219],{"emptyLinePlaceholder":201},[35,9962,9963,9965],{"class":37,"line":1396},[35,9964,7339],{"class":93},[35,9966,2981],{"class":86},[35,9968,9969,9971,9973],{"class":37,"line":1528},[35,9970,2993],{"class":86},[35,9972,4510],{"class":93},[35,9974,2981],{"class":86},[35,9976,9977],{"class":37,"line":1674},[35,9978,7354],{"class":2949},[35,9980,9981],{"class":37,"line":472},[35,9982,3219],{"emptyLinePlaceholder":201},[35,9984,9985],{"class":37,"line":1014},[35,9986,9987],{"class":2949},"        # 发送到 CR 专用群\n",[35,9989,9990,9992,9994,9996],{"class":37,"line":1937},[35,9991,3020],{"class":86},[35,9993,3023],{"class":93},[35,9995,59],{"class":86},[35,9997,9668],{"class":45},[35,9999,10000,10002,10004],{"class":37,"line":183},[35,10001,3033],{"class":93},[35,10003,59],{"class":86},[35,10005,9040],{"class":45},[35,10007,10008,10010],{"class":37,"line":729},[35,10009,3043],{"class":93},[35,10011,2981],{"class":86},[35,10013,10014,10016,10018],{"class":37,"line":7414},[35,10015,9061],{"class":93},[35,10017,59],{"class":86},[35,10019,10020],{"class":45}," aaa,bbb,ccc,ddd\n",[35,10022,10023,10026,10028],{"class":37,"line":740},[35,10024,10025],{"class":93},"            count",[35,10027,59],{"class":86},[35,10029,3704],{"class":3211},[35,10031,10032,10034],{"class":37,"line":187},[35,10033,3107],{"class":93},[35,10035,2981],{"class":86},[35,10037,10038,10041,10043],{"class":37,"line":329},[35,10039,10040],{"class":93},"            reviewersForAt",[35,10042,59],{"class":86},[35,10044,10045],{"class":45}," CURR_REVIEWER_FOR_AT\n",[35,10047,10048,10050,10052,10054],{"class":37,"line":873},[35,10049,3020],{"class":86},[35,10051,3023],{"class":93},[35,10053,59],{"class":86},[35,10055,7251],{"class":45},[35,10057,10058,10060,10062],{"class":37,"line":1814},[35,10059,3135],{"class":93},[35,10061,59],{"class":86},[35,10063,7260],{"class":45},[35,10065,10067,10069],{"class":37,"line":10066},40,[35,10068,7265],{"class":93},[35,10070,2981],{"class":86},[35,10072,10073,10075,10077],{"class":37,"line":1017},[35,10074,7286],{"class":93},[35,10076,59],{"class":86},[35,10078,7291],{"class":45},[35,10080,10081,10083,10085,10087,10089],{"class":37,"line":884},[35,10082,7272],{"class":93},[35,10084,59],{"class":86},[35,10086,6591],{"class":86},[35,10088,7279],{"class":45},[35,10090,6597],{"class":86},[35,10092,10093,10096,10098],{"class":37,"line":154},[35,10094,10095],{"class":93},"            message",[35,10097,59],{"class":86},[35,10099,4617],{"class":71},[35,10101,10102],{"class":37,"line":876},[35,10103,7411],{"class":45},[35,10105,10106],{"class":37,"line":1006},[35,10107,7310],{"class":45},[35,10109,10110],{"class":37,"line":1817},[35,10111,7315],{"class":45},[35,10113,10114],{"class":37,"line":1803},[35,10115,7320],{"class":45},[35,10117,10118],{"class":37,"line":743},[35,10119,7310],{"class":45},[35,10121,10123],{"class":37,"line":10122},49,[35,10124,7433],{"class":45},[2622,10126,10128],{"id":10127},"release-git-release","release {#git-release}",[17,10130,10131],{},[32,10132,10133],{},"git:release",[17,10135,10136],{},"==仓库发布 Release==",[123,10138,10139,10144,10149,10154],{},[126,10140,10141],{},[129,10142,2651],{"href":10143},"#git-release-applicable-events",[126,10145,10146],{},[129,10147,2657],{"href":10148},"#git-release-parameters",[126,10150,10151],{},[129,10152,2663],{"href":10153},"#git-release-output",[126,10155,10156],{},[129,10157,2669],{"href":10158},"#git-release-configuration-examples",[2671,10160,10162],{"id":10161},"适用事件-git-release-applicable-events","适用事件 {#git-release-applicable-events}",[123,10164,10165,10169,10173,10177,10181,10185,10189,10193],{},[126,10166,10167],{},[32,10168,3988],{},[126,10170,10171],{},[32,10172,3993],{},[126,10174,10175],{},[32,10176,3998],{},[126,10178,10179],{},[32,10180,4013],{},[126,10182,10183],{},[32,10184,4018],{},[126,10186,10187],{},[32,10188,4023],{},[126,10190,10191],{},[32,10192,4028],{},[126,10194,10195],{},[32,10196,4038],{},[2671,10198,10200],{"id":10199},"参数-git-release-parameters","参数 {#git-release-parameters}",[123,10202,10203,10209,10215,10220,10226,10232],{},[126,10204,10205],{},[129,10206,10208],{"href":10207},"#git-release-parameters-overlying","overlying",[126,10210,10211],{},[129,10212,10214],{"href":10213},"#git-release-parameters-tag","tag",[126,10216,10217],{},[129,10218,4079],{"href":10219},"#git-release-parameters-title",[126,10221,10222],{},[129,10223,10225],{"href":10224},"#git-release-parameters-description","description",[126,10227,10228],{},[129,10229,10231],{"href":10230},"#git-release-parameters-preRelease","preRelease",[126,10233,10234],{},[129,10235,10237],{"href":10236},"#git-release-parameters-latest","latest",[2730,10239,10241],{"id":10240},"overlying-git-release-parameters-overlying","overlying {#git-release-parameters-overlying}",[123,10243,10244,10248,10252],{},[126,10245,2738,10246],{},[32,10247,2883],{},[126,10249,2744,10250],{},[32,10251,2777],{},[126,10253,2890,10254],{},[32,10255,2777],{},[17,10257,10258],{},"叠加模式",[123,10260,10261,10273],{},[126,10262,10263,10265,10266,10269,10270,10272],{},[32,10264,2747],{},"：叠加模式，同一个 ",[32,10267,10268],{},"release"," 可以提交多次，最终的 ",[32,10271,10268],{}," 是多次提交的并集。如果同名附件已经存在，会先删除再上传，达到更新的效果。",[126,10274,10275,10277],{},[32,10276,2777],{},"：非叠加模式，以最后一个提交的为准，前面的会被清除。",[17,10279,10280],{},"::: warning\n默认情况下，当 release 版本已经存在时，会先删除这个版本，重新生成。\n:::",[2730,10282,10284],{"id":10283},"tag-git-release-parameters-tag","tag {#git-release-parameters-tag}",[123,10286,10287,10291],{},[126,10288,2738,10289],{},[32,10290,2741],{},[126,10292,2744,10293],{},[32,10294,2777],{},[17,10296,10297,10299,10300,10302],{},[32,10298,10268],{}," 对应的 ",[32,10301,10214],{}," 名，非必填",[17,10304,10305,10307,10308,10310,10311,10313],{},[32,10306,4013],{}," 事件无需传入，直接取触发 ",[32,10309,4013],{}," 事件的 ",[32,10312,10214],{}," 名。",[17,10315,10316,10317,10319,10320,10299,10322,10313],{},"非 ",[32,10318,4013],{}," 事件必填，用来作为 ",[32,10321,10268],{},[32,10323,10214],{},[2730,10325,10327],{"id":10326},"title-git-release-parameters-title","title {#git-release-parameters-title}",[123,10329,10330,10334,10338],{},[126,10331,2738,10332],{},[32,10333,2741],{},[126,10335,2744,10336],{},[32,10337,2777],{},[126,10339,2890,10340,10342],{},[32,10341,10214],{}," 名",[17,10344,10345],{},"release 的标题",[2730,10347,10349],{"id":10348},"description-git-release-parameters-description","description {#git-release-parameters-description}",[123,10351,10352,10356],{},[126,10353,2738,10354],{},[32,10355,2741],{},[126,10357,2744,10358],{},[32,10359,2777],{},[17,10361,10362,10364],{},[32,10363,10268],{}," 的描述",[2730,10366,10368],{"id":10367},"prerelease-git-release-parameters-prerelease","preRelease {#git-release-parameters-preRelease}",[123,10370,10371,10375,10379],{},[126,10372,2738,10373],{},[32,10374,2883],{},[126,10376,2744,10377],{},[32,10378,2777],{},[126,10380,2890,10381],{},[32,10382,2777],{},[17,10384,10385,10386,10388],{},"是否将 ",[32,10387,10268],{}," 设置为 预发布",[2730,10390,10392],{"id":10391},"latest-git-release-parameters-latest","latest {#git-release-parameters-latest}",[123,10394,10395,10398,10402],{},[126,10396,10397],{},"type: \"true\" | \"false\" | true | false",[126,10399,2744,10400],{},[32,10401,2777],{},[126,10403,2890,10404],{},[32,10405,2777],{},[17,10407,10385,10408,10410],{},[32,10409,10268],{}," 设置为最新版本",[2671,10412,10414],{"id":10413},"输出结果-git-release-output","输出结果 {#git-release-output}",[17,10416,10417],{},"无",[2671,10419,10421],{"id":10420},"配置样例-git-release-configuration-examples","配置样例 {#git-release-configuration-examples}",[123,10423,10424],{},[126,10425,10426],{},"生成 changelog 并自动更新 release 描述",[25,10428,10430],{"className":2970,"code":10429,"language":2972,"meta":5935,"style":30},"$:\n  tag_push:\n    - stages:\n        - name: changelog\n          image: cnbcool\u002Fchangelog\n          exports:\n            latestChangeLog: LATEST_CHANGE_LOG\n        - name: upload release\n          type: git:release\n          options:\n            title: release\n            description: ${LATEST_CHANGE_LOG}\n",[32,10431,10432,10438,10444,10452,10462,10470,10476,10484,10495,10504,10510,10520],{"__ignoreMap":30},[35,10433,10434,10436],{"class":37,"line":38},[35,10435,5942],{"class":93},[35,10437,2981],{"class":86},[35,10439,10440,10442],{"class":37,"line":90},[35,10441,8086],{"class":93},[35,10443,2981],{"class":86},[35,10445,10446,10448,10450],{"class":37,"line":112},[35,10447,2993],{"class":86},[35,10449,4510],{"class":93},[35,10451,2981],{"class":86},[35,10453,10454,10456,10458,10460],{"class":37,"line":162},[35,10455,3020],{"class":86},[35,10457,3023],{"class":93},[35,10459,59],{"class":86},[35,10461,8258],{"class":45},[35,10463,10464,10466,10468],{"class":37,"line":166},[35,10465,3135],{"class":93},[35,10467,59],{"class":86},[35,10469,8267],{"class":45},[35,10471,10472,10474],{"class":37,"line":170},[35,10473,3107],{"class":93},[35,10475,2981],{"class":86},[35,10477,10478,10480,10482],{"class":37,"line":174},[35,10479,8278],{"class":93},[35,10481,59],{"class":86},[35,10483,8283],{"class":45},[35,10485,10486,10488,10490,10492],{"class":37,"line":178},[35,10487,3020],{"class":86},[35,10489,3023],{"class":93},[35,10491,59],{"class":86},[35,10493,10494],{"class":45}," upload release\n",[35,10496,10497,10499,10501],{"class":37,"line":181},[35,10498,3033],{"class":93},[35,10500,59],{"class":86},[35,10502,10503],{"class":45}," git:release\n",[35,10505,10506,10508],{"class":37,"line":185},[35,10507,3043],{"class":93},[35,10509,2981],{"class":86},[35,10511,10512,10515,10517],{"class":37,"line":1000},[35,10513,10514],{"class":93},"            title",[35,10516,59],{"class":86},[35,10518,10519],{"class":45}," release\n",[35,10521,10522,10525,10527],{"class":37,"line":1025},[35,10523,10524],{"class":93},"            description",[35,10526,59],{"class":86},[35,10528,8317],{"class":45},[123,10530,10531],{},[126,10532,10533],{},"主分支 push 时发布 release",[25,10535,10537],{"className":2970,"code":10536,"language":2972,"meta":5935,"style":30},"main:\n  push:\n    - stages:\n        - name: git release\n          type: git:release\n          options:\n            tag: Nightly\n            description: description\n",[32,10538,10539,10545,10551,10559,10570,10578,10584,10594],{"__ignoreMap":30},[35,10540,10541,10543],{"class":37,"line":38},[35,10542,210],{"class":93},[35,10544,2981],{"class":86},[35,10546,10547,10549],{"class":37,"line":90},[35,10548,2986],{"class":93},[35,10550,2981],{"class":86},[35,10552,10553,10555,10557],{"class":37,"line":112},[35,10554,2993],{"class":86},[35,10556,4510],{"class":93},[35,10558,2981],{"class":86},[35,10560,10561,10563,10565,10567],{"class":37,"line":162},[35,10562,3020],{"class":86},[35,10564,3023],{"class":93},[35,10566,59],{"class":86},[35,10568,10569],{"class":45}," git release\n",[35,10571,10572,10574,10576],{"class":37,"line":166},[35,10573,3033],{"class":93},[35,10575,59],{"class":86},[35,10577,10503],{"class":45},[35,10579,10580,10582],{"class":37,"line":170},[35,10581,3043],{"class":93},[35,10583,2981],{"class":86},[35,10585,10586,10589,10591],{"class":37,"line":174},[35,10587,10588],{"class":93},"            tag",[35,10590,59],{"class":86},[35,10592,10593],{"class":45}," Nightly\n",[35,10595,10596,10598,10600],{"class":37,"line":178},[35,10597,10524],{"class":93},[35,10599,59],{"class":86},[35,10601,10602],{"class":45}," description\n",[21,10604,10605],{"id":10605},"testing",[2622,10607,10609],{"id":10608},"coverage-testing-coverage","coverage {#testing-coverage}",[17,10611,10612],{},[32,10613,10614],{},"testing:coverage",[17,10616,10617],{},"==单测覆盖率==，通过单测结果报告，计算单测覆盖率结果，并上报徽章。",[123,10619,10620,10625,10631,10637,10642,10647],{},[126,10621,10622],{},[129,10623,2651],{"href":10624},"#testing-coverage-applicable-events",[126,10626,10627],{},[129,10628,10630],{"href":10629},"#testing-coverage-full-coverage","全量覆盖率",[126,10632,10633],{},[129,10634,10636],{"href":10635},"#testing-coverage-incremental-coverage","增量覆盖率",[126,10638,10639],{},[129,10640,2657],{"href":10641},"#testing-coverage-parameters",[126,10643,10644],{},[129,10645,2663],{"href":10646},"#testing-coverage-output",[126,10648,10649],{},[129,10650,2669],{"href":10651},"#testing-coverage-configuration-examples",[2671,10653,10655],{"id":10654},"适用事件-testing-coverage-applicable-events","适用事件 {#testing-coverage-applicable-events}",[17,10657,10658],{},[129,10659,2680],{"href":2679},[2671,10661,10663],{"id":10662},"全量覆盖率-testing-coverage-full-coverage","全量覆盖率 {#testing-coverage-full-coverage}",[17,10665,10666,10671,10674,10677],{},[10667,10668],"img",{"alt":10669,"src":10670},"coverage","https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage?message=18.67%25&color=l2",[10667,10672],{"alt":10669,"src":10673},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage?message=38.67%25&color=l3",[10667,10675],{"alt":10669,"src":10676},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage?message=58.67%25&color=l4",[10667,10678],{"alt":10669,"src":10679},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage?message=78.67%25&color=l5",[17,10681,10682],{},"从本地覆盖率报告文件解析而来，目前可识别以下格式的报告：",[123,10684,10685,10691,10696,10701,10706],{},[126,10686,10687,10690],{},[32,10688,10689],{},"json(js)","（推荐使用）",[126,10692,10693],{},[32,10694,10695],{},"json-summary",[126,10697,10698,10690],{},[32,10699,10700],{},"lcov",[126,10702,10703],{},[32,10704,10705],{},"jacoco",[126,10707,10708],{},[32,10709,10710],{},"golang",[2671,10712,10714],{"id":10713},"增量覆盖率-testing-coverage-incremental-coverage","增量覆盖率 {#testing-coverage-incremental-coverage}",[17,10716,10717,10721,10724,10727],{},[10667,10718],{"alt":10719,"src":10720},"coverage-pr","https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage%20%40pr?message=18.67%25&color=l2",[10667,10722],{"alt":10719,"src":10723},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage%20%40pr?message=38.67%25&color=l3",[10667,10725],{"alt":10719,"src":10726},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage%20%40pr?message=58.67%25&color=l4",[10667,10728],{"alt":10719,"src":10729},"https:\u002F\u002Fcnb.cool\u002Fsvg\u002Fbadge\u002Fcoverage%20%40pr?message=78.67%25&color=l5",[17,10731,10732,10733,3359,10735,3359,10737,10739],{},"变更行对应的单测覆盖率，仅支持 ",[32,10734,6091],{},[32,10736,8404],{},[32,10738,4003],{}," 事件",[2671,10741,10743],{"id":10742},"参数-testing-coverage-parameters","参数 {#testing-coverage-parameters}",[123,10745,10746,10752,10758,10764,10770,10776],{},[126,10747,10748],{},[129,10749,10751],{"href":10750},"#testing-coverage-parameters-pattern","pattern",[126,10753,10754],{},[129,10755,10757],{"href":10756},"#testing-coverage-parameters-lines","lines",[126,10759,10760],{},[129,10761,10763],{"href":10762},"#testing-coverage-parameters-diffLines","diffLines",[126,10765,10766],{},[129,10767,10769],{"href":10768},"#testing-coverage-parameters-allowExts","allowExts",[126,10771,10772],{},[129,10773,10775],{"href":10774},"#testing-coverage-parameters-lang","lang",[126,10777,10778],{},[129,10779,10781],{"href":10780},"#testing-coverage-parameters-breakIfNoCoverage","breakIfNoCoverage",[2730,10783,10785],{"id":10784},"pattern-testing-coverage-parameters-pattern","pattern {#testing-coverage-parameters-pattern}",[123,10787,10788,10792],{},[126,10789,2738,10790],{},[32,10791,2741],{},[126,10793,2744,10794],{},[32,10795,2777],{},[17,10797,10798],{},"Glob 格式，指定覆盖率报告文件位置，相对于当前工作目录。 缺省时，将尝试查找当前目录（包括子目录）下的以下文件：coverage.json、jacoco*.xml、lcov.info、*.lcov。",[2730,10800,10802],{"id":10801},"lines-testing-coverage-parameters-lines","lines {#testing-coverage-parameters-lines}",[123,10804,10805,10809],{},[126,10806,2738,10807],{},[32,10808,8587],{},[126,10810,2744,10811],{},[32,10812,2777],{},[17,10814,10815],{},"指定全量覆盖率红线，判断如果全量覆盖率百分比小于该值，阻断工作流退出流水线。",[2730,10817,10819],{"id":10818},"difflines-testing-coverage-parameters-difflines","diffLines {#testing-coverage-parameters-diffLines}",[123,10821,10822,10826],{},[126,10823,2738,10824],{},[32,10825,8587],{},[126,10827,2744,10828],{},[32,10829,2777],{},[17,10831,10832,10833,3359,10835,3359,10837,10839],{},"指定增量覆盖率红线，判断如果全量覆盖率百分比小于该值，阻断工作流退出流水线。 ",[32,10834,6091],{},[32,10836,8404],{},[32,10838,4003],{}," 事件支持计算增量覆盖率结果，其他事件只计算全量覆盖率。",[2730,10841,10843],{"id":10842},"allowexts-testing-coverage-parameters-allowexts","allowExts {#testing-coverage-parameters-allowExts}",[123,10845,10846,10850],{},[126,10847,2738,10848],{},[32,10849,2741],{},[126,10851,2744,10852],{},[32,10853,2777],{},[17,10855,10856,10857,10860],{},"参与覆盖率计算的代码文件类型白名单，逗号分隔, 如：",[32,10858,10859],{},".json,.ts,.js","。 缺省时报告中的文件都会参与计算。",[2730,10862,10864],{"id":10863},"lang-testing-coverage-parameters-lang","lang {#testing-coverage-parameters-lang}",[123,10866,10867,10871],{},[126,10868,2738,10869],{},[32,10870,2741],{},[126,10872,2744,10873],{},[32,10874,2777],{},[17,10876,10877,10878,10880,10881,10884],{},"当覆盖率结果报告目标格式为 ",[32,10879,10710],{}," 时，请指定此参数 为 ",[32,10882,10883],{},"go","，否则会出现计算误差。其他情况可忽略该参数。",[2730,10886,10888],{"id":10887},"breakifnocoverage-testing-coverage-parameters-breakifnocoverage","breakIfNoCoverage {#testing-coverage-parameters-breakIfNoCoverage}",[123,10890,10891,10895],{},[126,10892,2738,10893],{},[32,10894,2883],{},[126,10896,2744,10897],{},[32,10898,2777],{},[17,10900,10901],{},"没有找到覆盖率报告文件时，是否抛出错误终止流程。",[2671,10903,10905],{"id":10904},"输出结果-testing-coverage-output","输出结果 {#testing-coverage-output}",[25,10907,10909],{"className":4364,"code":10908,"language":4366,"meta":30,"style":30},"{\n  \u002F\u002F 代码行覆盖率，例如 100，计算出错时值为 NA\n  \"lines\": 100,\n  \u002F\u002F 代码增量行覆盖率，例如 100，计算出错时值为 NA\n  \"diff_pct\": 100\n}\n",[32,10910,10911,10915,10920,10935,10940,10954],{"__ignoreMap":30},[35,10912,10913],{"class":37,"line":38},[35,10914,87],{"class":86},[35,10916,10917],{"class":37,"line":90},[35,10918,10919],{"class":2949},"  \u002F\u002F 代码行覆盖率，例如 100，计算出错时值为 NA\n",[35,10921,10922,10924,10926,10928,10930,10933],{"class":37,"line":112},[35,10923,4377],{"class":86},[35,10925,10757],{"class":4380},[35,10927,4384],{"class":86},[35,10929,59],{"class":86},[35,10931,10932],{"class":3211}," 100",[35,10934,4444],{"class":86},[35,10936,10937],{"class":37,"line":162},[35,10938,10939],{"class":2949},"  \u002F\u002F 代码增量行覆盖率，例如 100，计算出错时值为 NA\n",[35,10941,10942,10944,10947,10949,10951],{"class":37,"line":166},[35,10943,4377],{"class":86},[35,10945,10946],{"class":4380},"diff_pct",[35,10948,4384],{"class":86},[35,10950,59],{"class":86},[35,10952,10953],{"class":3211}," 100\n",[35,10955,10956],{"class":37,"line":170},[35,10957,2963],{"class":86},[2671,10959,10961],{"id":10960},"配置样例-testing-coverage-configuration-examples","配置样例 {#testing-coverage-configuration-examples}",[25,10963,10965],{"className":2970,"code":10964,"language":2972,"meta":5935,"style":30},"main:\n  push:\n    - stages:\n        - name: coverage\n          type: testing:coverage\n          options:\n            breakIfNoCoverage: false\n          exports:\n            lines: LINES\n        - name: result\n          script: echo $LINES\n",[32,10966,10967,10973,10979,10987,10998,11007,11013,11023,11029,11039,11050],{"__ignoreMap":30},[35,10968,10969,10971],{"class":37,"line":38},[35,10970,210],{"class":93},[35,10972,2981],{"class":86},[35,10974,10975,10977],{"class":37,"line":90},[35,10976,2986],{"class":93},[35,10978,2981],{"class":86},[35,10980,10981,10983,10985],{"class":37,"line":112},[35,10982,2993],{"class":86},[35,10984,4510],{"class":93},[35,10986,2981],{"class":86},[35,10988,10989,10991,10993,10995],{"class":37,"line":162},[35,10990,3020],{"class":86},[35,10992,3023],{"class":93},[35,10994,59],{"class":86},[35,10996,10997],{"class":45}," coverage\n",[35,10999,11000,11002,11004],{"class":37,"line":166},[35,11001,3033],{"class":93},[35,11003,59],{"class":86},[35,11005,11006],{"class":45}," testing:coverage\n",[35,11008,11009,11011],{"class":37,"line":170},[35,11010,3043],{"class":93},[35,11012,2981],{"class":86},[35,11014,11015,11018,11020],{"class":37,"line":174},[35,11016,11017],{"class":93},"            breakIfNoCoverage",[35,11019,59],{"class":86},[35,11021,11022],{"class":4827}," false\n",[35,11024,11025,11027],{"class":37,"line":178},[35,11026,3107],{"class":93},[35,11028,2981],{"class":86},[35,11030,11031,11034,11036],{"class":37,"line":181},[35,11032,11033],{"class":93},"            lines",[35,11035,59],{"class":86},[35,11037,11038],{"class":45}," LINES\n",[35,11040,11041,11043,11045,11047],{"class":37,"line":185},[35,11042,3020],{"class":86},[35,11044,3023],{"class":93},[35,11046,59],{"class":86},[35,11048,11049],{"class":45}," result\n",[35,11051,11052,11054,11056],{"class":37,"line":1000},[35,11053,3179],{"class":93},[35,11055,59],{"class":86},[35,11057,11058],{"class":45}," echo $LINES\n",[21,11060,11061],{"id":11061},"artifact",[2622,11063,11065],{"id":11064},"remove-tag-artifact-remove-tag","remove-tag {#artifact-remove-tag}",[17,11067,11068],{},[32,11069,11070],{},"artifact:remove-tag",[17,11072,11073],{},"==删除 CNB 制品标签==，目前仅删除支持 CNB docker 和 helm 标签。需要有仓库写权限。",[123,11075,11076,11081,11086],{},[126,11077,11078],{},[129,11079,2651],{"href":11080},"#artifact-remove-tag-applicable-events",[126,11082,11083],{},[129,11084,2657],{"href":11085},"#artifact-remove-tag-parameters",[126,11087,11088],{},[129,11089,2669],{"href":11090},"#artifact-remove-tag-configuration-examples",[2671,11092,11094],{"id":11093},"适用事件-artifact-remove-tag-applicable-events","适用事件 {#artifact-remove-tag-applicable-events}",[123,11096,11097,11101,11105,11109,11113,11117,11121,11125,11129],{},[126,11098,11099],{},[32,11100,3988],{},[126,11102,11103],{},[32,11104,3993],{},[126,11106,11107],{},[32,11108,4013],{},[126,11110,11111],{},[32,11112,4038],{},[126,11114,11115],{},[32,11116,4018],{},[126,11118,11119],{},[32,11120,4023],{},[126,11122,11123],{},[32,11124,4028],{},[126,11126,11127],{},[32,11128,4033],{},[126,11130,11131],{},[32,11132,3998],{},[2671,11134,11136],{"id":11135},"参数-artifact-remove-tag-parameters","参数 {#artifact-remove-tag-parameters}",[123,11138,11139,11145,11151],{},[126,11140,11141],{},[129,11142,11144],{"href":11143},"#artifact-remove-tag-parameters-name","name",[126,11146,11147],{},[129,11148,11150],{"href":11149},"#artifact-remove-tag-parameters-tags","tags",[126,11152,11153],{},[129,11154,8416],{"href":11155},"#artifact-remove-tag-parameters-type",[2730,11157,11159],{"id":11158},"name-artifact-remove-tag-parameters-name","name {#artifact-remove-tag-parameters-name}",[123,11161,11162,11166],{},[126,11163,2738,11164],{},[32,11165,2741],{},[126,11167,2744,11168],{},[32,11169,2747],{},[17,11171,11172],{},"制品包名",[2730,11174,11176],{"id":11175},"tags-artifact-remove-tag-parameters-tags","tags {#artifact-remove-tag-parameters-tags}",[123,11178,11179,11184],{},[126,11180,2738,11181],{},[32,11182,11183],{},"Array\u003Cstring>",[126,11185,3585],{},[2730,11187,11189],{"id":11188},"type-artifact-remove-tag-parameters-type","type {#artifact-remove-tag-parameters-type}",[123,11191,11192,11196,11200],{},[126,11193,2738,11194],{},[32,11195,2741],{},[126,11197,2744,11198],{},[32,11199,2777],{},[126,11201,2890,11202],{},[32,11203,2619],{},[17,11205,11206],{},"制品类型，目前仅支持 docker 和 helm",[2671,11208,11210],{"id":11209},"配置样例-artifact-remove-tag-configuration-examples","配置样例 {#artifact-remove-tag-configuration-examples}",[25,11212,11214],{"className":2970,"code":11213,"language":2972,"meta":5935,"style":30},"main:\n  push:\n    - stages:\n        - name: remove tag\n          type: artifact:remove-tag\n          options:\n            # 包名\n            # 包名示例1，仓库同名制品：reponame\n            # 包名示例2，仓库非同名制品：reponame\u002Fname\n            name: reponame\u002Fname\n            tags:\n              - tag1\n              - tag2\n            type: docker\n",[32,11215,11216,11222,11228,11236,11247,11256,11262,11267,11272,11277,11286,11293,11300,11307],{"__ignoreMap":30},[35,11217,11218,11220],{"class":37,"line":38},[35,11219,210],{"class":93},[35,11221,2981],{"class":86},[35,11223,11224,11226],{"class":37,"line":90},[35,11225,2986],{"class":93},[35,11227,2981],{"class":86},[35,11229,11230,11232,11234],{"class":37,"line":112},[35,11231,2993],{"class":86},[35,11233,4510],{"class":93},[35,11235,2981],{"class":86},[35,11237,11238,11240,11242,11244],{"class":37,"line":162},[35,11239,3020],{"class":86},[35,11241,3023],{"class":93},[35,11243,59],{"class":86},[35,11245,11246],{"class":45}," remove tag\n",[35,11248,11249,11251,11253],{"class":37,"line":166},[35,11250,3033],{"class":93},[35,11252,59],{"class":86},[35,11254,11255],{"class":45}," artifact:remove-tag\n",[35,11257,11258,11260],{"class":37,"line":170},[35,11259,3043],{"class":93},[35,11261,2981],{"class":86},[35,11263,11264],{"class":37,"line":174},[35,11265,11266],{"class":2949},"            # 包名\n",[35,11268,11269],{"class":37,"line":178},[35,11270,11271],{"class":2949},"            # 包名示例1，仓库同名制品：reponame\n",[35,11273,11274],{"class":37,"line":181},[35,11275,11276],{"class":2949},"            # 包名示例2，仓库非同名制品：reponame\u002Fname\n",[35,11278,11279,11281,11283],{"class":37,"line":185},[35,11280,3114],{"class":93},[35,11282,59],{"class":86},[35,11284,11285],{"class":45}," reponame\u002Fname\n",[35,11287,11288,11291],{"class":37,"line":1000},[35,11289,11290],{"class":93},"            tags",[35,11292,2981],{"class":86},[35,11294,11295,11297],{"class":37,"line":1025},[35,11296,3072],{"class":86},[35,11298,11299],{"class":45}," tag1\n",[35,11301,11302,11304],{"class":37,"line":1256},[35,11303,3072],{"class":86},[35,11305,11306],{"class":45}," tag2\n",[35,11308,11309,11311,11313],{"class":37,"line":164},[35,11310,9051],{"class":93},[35,11312,59],{"class":86},[35,11314,5999],{"class":45},[142,11316,11317],{},"html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sWuyu, html code.shiki .sWuyu{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}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 .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}",{"title":30,"searchDepth":90,"depth":90,"links":11319},[11320,11323,11331,11334,11340,11343],{"id":2619,"depth":90,"text":2620,"children":11321},[11322],{"id":2624,"depth":112,"text":2625},{"id":3286,"depth":90,"text":3286,"children":11324},[11325,11326,11327,11328,11329,11330],{"id":3289,"depth":112,"text":3290},{"id":3300,"depth":112,"text":3301},{"id":3308,"depth":112,"text":3309},{"id":3935,"depth":112,"text":3936},{"id":4831,"depth":112,"text":4832},{"id":5230,"depth":112,"text":5231},{"id":5818,"depth":90,"text":5818,"children":11332},[11333],{"id":5821,"depth":112,"text":5822},{"id":6076,"depth":90,"text":6076,"children":11335},[11336,11337,11338,11339],{"id":6079,"depth":112,"text":6080},{"id":7436,"depth":112,"text":7437},{"id":8349,"depth":112,"text":8350},{"id":10127,"depth":112,"text":10128},{"id":10605,"depth":90,"text":10605,"children":11341},[11342],{"id":10608,"depth":112,"text":10609},{"id":11061,"depth":90,"text":11061,"children":11344},[11345],{"id":11064,"depth":112,"text":11065},"该文本介绍了CNB（Cloud Native Build）的多种内置任务，包括Docker缓存、cnb任务（如await-resolve）、vscode、git和测试相关任务，以及artifact相关任务。每个任务都有其适用事件、参数、输出结果及配置样例，可用于丰富CI\u002FCD流程。",{},{"title":2085,"description":11346},"8HJwg8PoojVXV6UOkzcG7ZFxH-DcF6qpNcFfd0Z_EyY",[11351,11353],{"title":2075,"path":2076,"stem":2077,"description":11352,"children":-1},"云原生构建的权限与代码仓库的权限对齐。具体而言，具有代码仓库写权限的用户能触发云原生构建，而有读权限的用户可查看构建日志 。",{"title":2087,"path":2088,"stem":2089,"description":11354,"children":-1},"该文本定义了一个名为“插件市场”的页面，其永久链接为“\u002Fzh\u002Fplugins.html”，并使用“page”作为页面布局，页面主体内容包含了一个名为“\u003Cplugins \u002F>”的插件组件。",1775504723317]