表:git tag自動(dòng)發(fā)布完整指南)
如何用OTF搭建私有Terraform模塊注冊(cè)表git tag自動(dòng)發(fā)布完整指南【免費(fèi)下載鏈接】otfAn open source alternative to terraform enterprise.項(xiàng)目地址: https://gitcode.com/gh_mirrors/ot/otfOTF是一個(gè)開(kāi)源的 Terraform Enterprise 替代方案內(nèi)置了私有 Terraform 模塊注冊(cè)表Module Registry只需連接你的 Git 倉(cāng)庫(kù)OTF 就能讀取倉(cāng)庫(kù)中的git tag如v1.0.0并自動(dòng)發(fā)布對(duì)應(yīng)版本的模塊之后還能通過(guò) Webhook 在你每次打 tag 時(shí)自動(dòng)發(fā)布新版本整個(gè)過(guò)程無(wú)需手動(dòng)打包上傳。 核心機(jī)制倉(cāng)庫(kù)打 tag → OTF 下載該 tag 對(duì)應(yīng)的代碼 → 發(fā)布為一個(gè)模塊版本 → 在 Terraform 配置中直接source引用。原理git tag 如何變成模塊版本在 registry.md 官方文檔中OTF 描述了這套流程你發(fā)布模塊時(shí)OTF 會(huì)拉取倉(cāng)庫(kù)的所有 git tag對(duì)每一個(gè)符合語(yǔ)義化版本SemVer格式的 tag例如v1.0.0或0.10.3OTF 下載該 tag 對(duì)應(yīng)的倉(cāng)庫(kù)內(nèi)容發(fā)布為一個(gè)模塊版本OTF 同時(shí)會(huì)在倉(cāng)庫(kù)上添加一個(gè)Webhook——此后你向倉(cāng)庫(kù)推送任何新 tag都會(huì)自動(dòng)觸發(fā)新版本的發(fā)布。這個(gè)自動(dòng)發(fā)布邏輯的核心在 internal/module/publisher.go 中只有「新建 tag 事件」且 tag 名是合法 SemVer 時(shí)才會(huì)觸發(fā)發(fā)布并自動(dòng)去掉 tag 的v前綴相關(guān)代碼publisher.go、internal/module/service.go發(fā)布前的關(guān)鍵規(guī)則倉(cāng)庫(kù)名必須帶模塊名和 ProviderOTF 用倉(cāng)庫(kù)名本身來(lái)決定模塊名和 Provider。在 internal/module/repo.go 中可以看到倉(cāng)庫(kù)名必須以/標(biāo)識(shí)-name-provider結(jié)尾name和provider部分會(huì)直接用作模塊名和 Provider 名。例如你的倉(cāng)庫(kù)叫platform-vpc-aws那么發(fā)布出來(lái)的模塊就是組織名 / aws / vpc?? 如果倉(cāng)庫(kù)名不符合這個(gè)規(guī)則或者倉(cāng)庫(kù)里至少有一個(gè) SemVer 格式的 tag發(fā)布會(huì)失敗。建議發(fā)布前先git tag v1.0.0并推送。三步在 Web 界面發(fā)布模塊整個(gè)過(guò)程只需在瀏覽器里點(diǎn)幾下具體步驟與官方 registry.md 文檔一致第 1 步進(jìn)入組織主菜單選擇Modules點(diǎn)擊Publish第 2 步選擇一個(gè) VCS Provider。如果沒(méi)有可選的 Provider需要先創(chuàng)建一個(gè)支持 Github App、Github/Gitlab/Forgejo 的個(gè)人訪問(wèn)令牌見(jiàn) VCS Providers 文檔第 3 步連接后選擇包含模塊的 Git 倉(cāng)庫(kù)。如果列表里沒(méi)有你的倉(cāng)庫(kù)可以直接輸入倉(cāng)庫(kù)路徑注意每個(gè) Provider 最多只顯示前 100 個(gè)倉(cāng)庫(kù)確認(rèn)倉(cāng)庫(kù)信息后完成發(fā)布發(fā)布成功后會(huì)跳轉(zhuǎn)到模塊詳情頁(yè)展示模塊的資源、輸入、輸出以及使用方式說(shuō)明在 Terraform 配置中使用你的私有模塊OTF 實(shí)現(xiàn)了標(biāo)準(zhǔn)的 Module Registry Protocol因此 Terraform CLI 可以像使用官方 Registry 一樣引用你發(fā)布到 OTF 的模塊。在配置中為模塊地址添加 provider 塊即可provider terraform { organization my-org address https://你的OTF地址 } module vpc { source my-org/vpc/aws version 1.0.0 }Terraform 執(zhí)行init時(shí)會(huì)向 OTF 的注冊(cè)表接口查詢(xún)可用版本并下載模塊壓縮包相關(guān)實(shí)現(xiàn)位于 internal/module/registry.go 與 internal/module/terraform.go。日常使用打 tag 即自動(dòng)發(fā)布首次發(fā)布后倉(cāng)庫(kù)上已掛好 Webhook。以后每次迭代只需git tag v1.1.0 git push origin v1.1.0OTF 收到 push 事件后自動(dòng)拉取該 tag 的代碼并發(fā)布新版本全程無(wú)需人工干預(yù)。你可以在模塊詳情頁(yè)的版本列表中隨時(shí)查看每個(gè)版本的發(fā)布狀態(tài)pending/cloning/ok等狀態(tài)定義見(jiàn) internal/module/module.go。常見(jiàn)問(wèn)題排查現(xiàn)象原因與解決發(fā)布失敗倉(cāng)庫(kù)沒(méi)有 SemVer 格式的 tag先打一個(gè)如v1.0.0的 tag倉(cāng)庫(kù)不在列表中Provider 最多顯示 100 個(gè)倉(cāng)庫(kù)手動(dòng)輸入倉(cāng)庫(kù)路徑模塊地址不對(duì)檢查倉(cāng)庫(kù)名是否符合標(biāo)識(shí)-name-provider格式打 tag 后沒(méi)自動(dòng)發(fā)布確認(rèn) tag 是合法 SemVer且由「新建 tag」事件觸發(fā)刪除重推的 tag 不會(huì)發(fā)布小結(jié)OTF 讓「私有 Terraform 模塊注冊(cè)表」變得極其簡(jiǎn)單一次點(diǎn)選發(fā)布 之后 tag 驅(qū)動(dòng)自動(dòng)更新并且完全兼容標(biāo)準(zhǔn) Terraform 模塊注冊(cè)表協(xié)議可平滑替換 Terraform Cloud 的模塊托管能力。更多細(xì)節(jié)可查閱項(xiàng)目源碼 internal/module/ 目錄以及官方文檔 registry.md 和 VCS Providers 文檔?!久赓M(fèi)下載鏈接】otfAn open source alternative to terraform enterprise.項(xiàng)目地址: https://gitcode.com/gh_mirrors/ot/otf創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考