[{"data":1,"prerenderedAt":921},["ShallowReactive",2],{"content:\u002F2026\u002F02\u002Fgit-semantic-release":3,"surround:\u002F2026\u002F02\u002Fgit-semantic-release":911},{"id":4,"title":5,"body":6,"categories":888,"date":890,"description":891,"draft":892,"extension":893,"image":894,"meta":895,"navigation":126,"path":897,"permalink":894,"published":894,"readingTime":898,"recommend":894,"references":894,"seo":903,"sitemap":904,"stem":905,"tags":906,"type":908,"updated":909,"__hash__":910},"content\u002Fposts\u002F2026\u002F02\u002Fgit-semantic-release.md","Github CI自动发版",{"type":7,"value":8,"toc":881},"minimark",[9,18,65,71,77,81,88,95,717,723,866,869,877],[10,11,12,13,17],"p",{},"介绍一款CI插件, 叫",[14,15,16],"code",{"code":16},"semantic-release",", 根据提交信息, 自动打tag后发布release",[19,20,21,34],"table",{},[22,23,24],"thead",{},[25,26,27,31],"tr",{},[28,29,30],"th",{},"提交类型",[28,32,33],{},"版本提升",[35,36,37,52],"tbody",{},[25,38,39,45],{},[40,41,42],"td",{},[14,43,44],{"code":44},"feat",[40,46,47,51],{},[48,49,50],"strong",{},"MINOR","(1.1.2 -> 1.2.0)",[25,53,54,59],{},[40,55,56],{},[14,57,58],{"code":58},"fix",[40,60,61,64],{},[48,62,63],{},"PATCH","(1.1.2 -> 1.1.3)",[10,66,67,68,70],{},"我们在生产环境经常需要发版, 所以",[14,69,16],{"code":16},"是比较好的选择, 无需我们手动打tag并发布",[72,73,74],"blockquote",{},[10,75,76],{},"不过需要注意的是, 需要对代码进行测试, 能够正常build的才能走自动化打包发版的流程",[78,79,80],"h2",{"id":80},"例子",[10,82,83,84,87],{},"下面用github发版",[14,85,86],{"code":86},"Go SDK","包为例子",[89,90,92],"h3",{"id":91},"releaseyml",[14,93,94],{"code":94},"release.yml",[96,97,102],"pre",{"className":98,"code":99,"language":100,"meta":101,"style":101},"language-yaml shiki shiki-themes github-light github-dark","name: Go SDK Release\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n\n    steps:\n      # 拉代码\n      - name: Checkout\n        uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0\n\n      # ---------- Go 环境 ----------\n      - name: Setup Go\n        uses: actions\u002Fsetup-go@v5\n        with:\n          go-version: '1.22'\n          cache: true\n\n      - name: Go mod tidy\n        run: go mod tidy\n\n      - name: Go build\n        run: go build .\u002F...\n\n      # ---------- Node 环境 ----------\n      - name: Setup Node\n        uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n\n      # ---------- Semantic Release ----------\n      - name: Run semantic-release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: npx semantic-release\n","yaml","",[14,103,104,121,128,138,150,162,177,182,190,203,208,216,226,241,246,258,271,289,308,324,345,350,362,380,398,413,434,455,460,478,497,502,520,538,543,555,573,591,606,627,632,644,662,678,699],{"__ignoreMap":101},[105,106,109,113,117],"span",{"class":107,"data-line":108,"line":108},"line",1,[105,110,112],{"class":111},"s9eBZ","name",[105,114,116],{"class":115},"sVt8B",": ",[105,118,120],{"class":119},"sZZnC","Go SDK Release\n",[105,122,124],{"class":107,"data-line":123,"line":123},2,[105,125,127],{"emptyLinePlaceholder":126},true,"\n",[105,129,131,135],{"class":107,"data-line":130,"line":130},3,[105,132,134],{"class":133},"sj4cs","on",[105,136,137],{"class":115},":\n",[105,139,141,145,148],{"class":107,"data-line":140,"line":140},4,[105,142,144],{"class":143},"indent","  ",[105,146,147],{"class":111},"push",[105,149,137],{"class":115},[105,151,153,155,157,160],{"class":107,"data-line":152,"line":152},5,[105,154,144],{"class":143},[105,156,144],{"class":143},[105,158,159],{"class":111},"branches",[105,161,137],{"class":115},[105,163,165,167,169,171,174],{"class":107,"data-line":164,"line":164},6,[105,166,144],{"class":143},[105,168,144],{"class":143},[105,170,144],{"class":143},[105,172,173],{"class":115},"- ",[105,175,176],{"class":119},"main\n",[105,178,180],{"class":107,"data-line":179,"line":179},7,[105,181,127],{"emptyLinePlaceholder":126},[105,183,185,188],{"class":107,"data-line":184,"line":184},8,[105,186,187],{"class":111},"permissions",[105,189,137],{"class":115},[105,191,193,195,198,200],{"class":107,"data-line":192,"line":192},9,[105,194,144],{"class":143},[105,196,197],{"class":111},"contents",[105,199,116],{"class":115},[105,201,202],{"class":119},"write\n",[105,204,206],{"class":107,"data-line":205,"line":205},10,[105,207,127],{"emptyLinePlaceholder":126},[105,209,211,214],{"class":107,"data-line":210,"line":210},11,[105,212,213],{"class":111},"jobs",[105,215,137],{"class":115},[105,217,219,221,224],{"class":107,"data-line":218,"line":218},12,[105,220,144],{"class":143},[105,222,223],{"class":111},"release",[105,225,137],{"class":115},[105,227,229,231,233,236,238],{"class":107,"data-line":228,"line":228},13,[105,230,144],{"class":143},[105,232,144],{"class":143},[105,234,235],{"class":111},"runs-on",[105,237,116],{"class":115},[105,239,240],{"class":119},"ubuntu-latest\n",[105,242,244],{"class":107,"data-line":243,"line":243},14,[105,245,127],{"emptyLinePlaceholder":126},[105,247,249,251,253,256],{"class":107,"data-line":248,"line":248},15,[105,250,144],{"class":143},[105,252,144],{"class":143},[105,254,255],{"class":111},"steps",[105,257,137],{"class":115},[105,259,261,263,265,267],{"class":107,"data-line":260,"line":260},16,[105,262,144],{"class":143},[105,264,144],{"class":143},[105,266,144],{"class":143},[105,268,270],{"class":269},"sJ8bj","# 拉代码\n",[105,272,274,276,278,280,282,284,286],{"class":107,"data-line":273,"line":273},17,[105,275,144],{"class":143},[105,277,144],{"class":143},[105,279,144],{"class":143},[105,281,173],{"class":115},[105,283,112],{"class":111},[105,285,116],{"class":115},[105,287,288],{"class":119},"Checkout\n",[105,290,292,294,296,298,300,303,305],{"class":107,"data-line":291,"line":291},18,[105,293,144],{"class":143},[105,295,144],{"class":143},[105,297,144],{"class":143},[105,299,144],{"class":143},[105,301,302],{"class":111},"uses",[105,304,116],{"class":115},[105,306,307],{"class":119},"actions\u002Fcheckout@v4\n",[105,309,311,313,315,317,319,322],{"class":107,"data-line":310,"line":310},19,[105,312,144],{"class":143},[105,314,144],{"class":143},[105,316,144],{"class":143},[105,318,144],{"class":143},[105,320,321],{"class":111},"with",[105,323,137],{"class":115},[105,325,327,329,331,333,335,337,340,342],{"class":107,"data-line":326,"line":326},20,[105,328,144],{"class":143},[105,330,144],{"class":143},[105,332,144],{"class":143},[105,334,144],{"class":143},[105,336,144],{"class":143},[105,338,339],{"class":111},"fetch-depth",[105,341,116],{"class":115},[105,343,344],{"class":133},"0\n",[105,346,348],{"class":107,"data-line":347,"line":347},21,[105,349,127],{"emptyLinePlaceholder":126},[105,351,353,355,357,359],{"class":107,"data-line":352,"line":352},22,[105,354,144],{"class":143},[105,356,144],{"class":143},[105,358,144],{"class":143},[105,360,361],{"class":269},"# ---------- Go 环境 ----------\n",[105,363,365,367,369,371,373,375,377],{"class":107,"data-line":364,"line":364},23,[105,366,144],{"class":143},[105,368,144],{"class":143},[105,370,144],{"class":143},[105,372,173],{"class":115},[105,374,112],{"class":111},[105,376,116],{"class":115},[105,378,379],{"class":119},"Setup Go\n",[105,381,383,385,387,389,391,393,395],{"class":107,"data-line":382,"line":382},24,[105,384,144],{"class":143},[105,386,144],{"class":143},[105,388,144],{"class":143},[105,390,144],{"class":143},[105,392,302],{"class":111},[105,394,116],{"class":115},[105,396,397],{"class":119},"actions\u002Fsetup-go@v5\n",[105,399,401,403,405,407,409,411],{"class":107,"data-line":400,"line":400},25,[105,402,144],{"class":143},[105,404,144],{"class":143},[105,406,144],{"class":143},[105,408,144],{"class":143},[105,410,321],{"class":111},[105,412,137],{"class":115},[105,414,416,418,420,422,424,426,429,431],{"class":107,"data-line":415,"line":415},26,[105,417,144],{"class":143},[105,419,144],{"class":143},[105,421,144],{"class":143},[105,423,144],{"class":143},[105,425,144],{"class":143},[105,427,428],{"class":111},"go-version",[105,430,116],{"class":115},[105,432,433],{"class":119},"'1.22'\n",[105,435,437,439,441,443,445,447,450,452],{"class":107,"data-line":436,"line":436},27,[105,438,144],{"class":143},[105,440,144],{"class":143},[105,442,144],{"class":143},[105,444,144],{"class":143},[105,446,144],{"class":143},[105,448,449],{"class":111},"cache",[105,451,116],{"class":115},[105,453,454],{"class":133},"true\n",[105,456,458],{"class":107,"data-line":457,"line":457},28,[105,459,127],{"emptyLinePlaceholder":126},[105,461,463,465,467,469,471,473,475],{"class":107,"data-line":462,"line":462},29,[105,464,144],{"class":143},[105,466,144],{"class":143},[105,468,144],{"class":143},[105,470,173],{"class":115},[105,472,112],{"class":111},[105,474,116],{"class":115},[105,476,477],{"class":119},"Go mod tidy\n",[105,479,481,483,485,487,489,492,494],{"class":107,"data-line":480,"line":480},30,[105,482,144],{"class":143},[105,484,144],{"class":143},[105,486,144],{"class":143},[105,488,144],{"class":143},[105,490,491],{"class":111},"run",[105,493,116],{"class":115},[105,495,496],{"class":119},"go mod tidy\n",[105,498,500],{"class":107,"data-line":499,"line":499},31,[105,501,127],{"emptyLinePlaceholder":126},[105,503,505,507,509,511,513,515,517],{"class":107,"data-line":504,"line":504},32,[105,506,144],{"class":143},[105,508,144],{"class":143},[105,510,144],{"class":143},[105,512,173],{"class":115},[105,514,112],{"class":111},[105,516,116],{"class":115},[105,518,519],{"class":119},"Go build\n",[105,521,523,525,527,529,531,533,535],{"class":107,"data-line":522,"line":522},33,[105,524,144],{"class":143},[105,526,144],{"class":143},[105,528,144],{"class":143},[105,530,144],{"class":143},[105,532,491],{"class":111},[105,534,116],{"class":115},[105,536,537],{"class":119},"go build .\u002F...\n",[105,539,541],{"class":107,"data-line":540,"line":540},34,[105,542,127],{"emptyLinePlaceholder":126},[105,544,546,548,550,552],{"class":107,"data-line":545,"line":545},35,[105,547,144],{"class":143},[105,549,144],{"class":143},[105,551,144],{"class":143},[105,553,554],{"class":269},"# ---------- Node 环境 ----------\n",[105,556,558,560,562,564,566,568,570],{"class":107,"data-line":557,"line":557},36,[105,559,144],{"class":143},[105,561,144],{"class":143},[105,563,144],{"class":143},[105,565,173],{"class":115},[105,567,112],{"class":111},[105,569,116],{"class":115},[105,571,572],{"class":119},"Setup Node\n",[105,574,576,578,580,582,584,586,588],{"class":107,"data-line":575,"line":575},37,[105,577,144],{"class":143},[105,579,144],{"class":143},[105,581,144],{"class":143},[105,583,144],{"class":143},[105,585,302],{"class":111},[105,587,116],{"class":115},[105,589,590],{"class":119},"actions\u002Fsetup-node@v4\n",[105,592,594,596,598,600,602,604],{"class":107,"data-line":593,"line":593},38,[105,595,144],{"class":143},[105,597,144],{"class":143},[105,599,144],{"class":143},[105,601,144],{"class":143},[105,603,321],{"class":111},[105,605,137],{"class":115},[105,607,609,611,613,615,617,619,622,624],{"class":107,"data-line":608,"line":608},39,[105,610,144],{"class":143},[105,612,144],{"class":143},[105,614,144],{"class":143},[105,616,144],{"class":143},[105,618,144],{"class":143},[105,620,621],{"class":111},"node-version",[105,623,116],{"class":115},[105,625,626],{"class":133},"20\n",[105,628,630],{"class":107,"data-line":629,"line":629},40,[105,631,127],{"emptyLinePlaceholder":126},[105,633,635,637,639,641],{"class":107,"data-line":634,"line":634},41,[105,636,144],{"class":143},[105,638,144],{"class":143},[105,640,144],{"class":143},[105,642,643],{"class":269},"# ---------- Semantic Release ----------\n",[105,645,647,649,651,653,655,657,659],{"class":107,"data-line":646,"line":646},42,[105,648,144],{"class":143},[105,650,144],{"class":143},[105,652,144],{"class":143},[105,654,173],{"class":115},[105,656,112],{"class":111},[105,658,116],{"class":115},[105,660,661],{"class":119},"Run semantic-release\n",[105,663,665,667,669,671,673,676],{"class":107,"data-line":664,"line":664},43,[105,666,144],{"class":143},[105,668,144],{"class":143},[105,670,144],{"class":143},[105,672,144],{"class":143},[105,674,675],{"class":111},"env",[105,677,137],{"class":115},[105,679,681,683,685,687,689,691,694,696],{"class":107,"data-line":680,"line":680},44,[105,682,144],{"class":143},[105,684,144],{"class":143},[105,686,144],{"class":143},[105,688,144],{"class":143},[105,690,144],{"class":143},[105,692,693],{"class":111},"GITHUB_TOKEN",[105,695,116],{"class":115},[105,697,698],{"class":119},"${{ secrets.GITHUB_TOKEN }}\n",[105,700,702,704,706,708,710,712,714],{"class":107,"data-line":701,"line":701},45,[105,703,144],{"class":143},[105,705,144],{"class":143},[105,707,144],{"class":143},[105,709,144],{"class":143},[105,711,491],{"class":111},[105,713,116],{"class":115},[105,715,716],{"class":119},"npx semantic-release\n",[89,718,720],{"id":719},"releasercjson",[14,721,722],{"code":722},".releaserc.json",[96,724,728],{"className":725,"code":726,"language":727,"meta":101,"style":101},"language-json shiki shiki-themes github-light github-dark","{\n    \"branches\": [\n        \"main\"\n    ],\n    \"tagFormat\": \"v${version}\",\n    \"plugins\": [\n        \"@semantic-release\u002Fcommit-analyzer\",\n        \"@semantic-release\u002Frelease-notes-generator\",\n        \"@semantic-release\u002Fgithub\"\n    ]\n}\n","json",[14,729,730,736,751,764,778,794,807,822,837,850,861],{"__ignoreMap":101},[105,731,732],{"class":107,"data-line":108,"line":108},[105,733,735],{"class":734},"sSDpw","{\n",[105,737,738,740,742,745,747],{"class":107,"data-line":123,"line":123},[105,739,144],{"class":143},[105,741,144],{"class":143},[105,743,744],{"class":133},"\"branches\"",[105,746,116],{"class":115},[105,748,750],{"class":749},"sJX2D","[\n",[105,752,753,755,757,759,761],{"class":107,"data-line":130,"line":130},[105,754,144],{"class":143},[105,756,144],{"class":143},[105,758,144],{"class":143},[105,760,144],{"class":143},[105,762,763],{"class":119},"\"main\"\n",[105,765,766,768,770,772,775],{"class":107,"data-line":140,"line":140},[105,767,144],{"class":143},[105,769,144],{"class":143},[105,771,101],{"class":115},[105,773,774],{"class":749},"]",[105,776,777],{"class":115},",\n",[105,779,780,782,784,787,789,792],{"class":107,"data-line":152,"line":152},[105,781,144],{"class":143},[105,783,144],{"class":143},[105,785,786],{"class":133},"\"tagFormat\"",[105,788,116],{"class":115},[105,790,791],{"class":119},"\"v${version}\"",[105,793,777],{"class":115},[105,795,796,798,800,803,805],{"class":107,"data-line":164,"line":164},[105,797,144],{"class":143},[105,799,144],{"class":143},[105,801,802],{"class":133},"\"plugins\"",[105,804,116],{"class":115},[105,806,750],{"class":749},[105,808,809,811,813,815,817,820],{"class":107,"data-line":179,"line":179},[105,810,144],{"class":143},[105,812,144],{"class":143},[105,814,144],{"class":143},[105,816,144],{"class":143},[105,818,819],{"class":119},"\"@semantic-release\u002Fcommit-analyzer\"",[105,821,777],{"class":115},[105,823,824,826,828,830,832,835],{"class":107,"data-line":184,"line":184},[105,825,144],{"class":143},[105,827,144],{"class":143},[105,829,144],{"class":143},[105,831,144],{"class":143},[105,833,834],{"class":119},"\"@semantic-release\u002Frelease-notes-generator\"",[105,836,777],{"class":115},[105,838,839,841,843,845,847],{"class":107,"data-line":192,"line":192},[105,840,144],{"class":143},[105,842,144],{"class":143},[105,844,144],{"class":143},[105,846,144],{"class":143},[105,848,849],{"class":119},"\"@semantic-release\u002Fgithub\"\n",[105,851,852,854,856,858],{"class":107,"data-line":205,"line":205},[105,853,144],{"class":143},[105,855,144],{"class":143},[105,857,101],{"class":115},[105,859,860],{"class":749},"]\n",[105,862,863],{"class":107,"data-line":210,"line":210},[105,864,865],{"class":734},"}\n",[78,867,868],{"id":868},"具体仓库参考",[10,870,871],{},[872,873,874],"a",{"href":874,"rel":875},"https:\u002F\u002Fgithub.com\u002Fcodepzj\u002Fgo-lib",[876],"nofollow",[878,879,880],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sSDpw, html code.shiki .sSDpw{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .sJX2D, html code.shiki .sJX2D{--shiki-default:#e36209;--shiki-dark:#ffab70}",{"title":101,"searchDepth":140,"depth":140,"links":882},[883,887],{"id":80,"depth":123,"text":80,"children":884},[885,886],{"id":91,"depth":130,"text":94},{"id":719,"depth":130,"text":722},{"id":868,"depth":123,"text":868},[889],"工程实践","2026-02-15","介绍如何通过 GitHub Actions 和 Semantic Release 自动生成版本号、Tag 与发布记录。",false,"md",null,{"slots":896},{},"\u002F2026\u002F02\u002Fgit-semantic-release",{"text":899,"minutes":900,"time":901,"words":902},"2 min read",1.13,67800,226,{"title":5,"description":891},{"loc":897},"posts\u002F2026\u002F02\u002Fgit-semantic-release",[907],"git","tech","2026-02-18","vaGge3gou5n-WrKwEX2otUor6Ut8Em3B5AS0yTdJJZU",[912,917],{"title":913,"path":914,"stem":915,"date":916,"type":908,"children":-1},"git-filter-repo 清理敏感信息","\u002F2026\u002F01\u002Fgit-filter-repo","posts\u002F2026\u002F01\u002Fgit-filter-repo","2026-01-21",{"title":918,"path":919,"stem":920,"date":909,"type":908,"children":-1},"MySQL 表结构常用操作","\u002F2026\u002F02\u002Fmysql-dev-table","posts\u002F2026\u002F02\u002Fmysql-dev-table",1786555054398]