這個(gè)開源工具,為我省下了大量的時(shí)間!
此前,我維護(hù)的多個(gè) GitHub 項(xiàng)目都需要同時(shí)部署 GitHub Pages 和 Gitee Pages 國(guó)內(nèi)鏡像站點(diǎn)。
對(duì)于 GitHub,當(dāng)我們將項(xiàng)目的變更 push 到 GitHub 遠(yuǎn)程倉(cāng)庫(kù)時(shí),會(huì)觸發(fā) GitHub Pages 的自動(dòng)化部署,將項(xiàng)目的最新內(nèi)容更新到 GitHub Pages 站點(diǎn)。如下圖所示:

然而,對(duì)于 Gitee,一個(gè)頭疼的問(wèn)題是,雖然我們可以利用一些鏡像同步腳本或工具(如:git-mirror-action)將 GitHub 項(xiàng)目同步至 Gitee 倉(cāng)庫(kù),但我們卻無(wú)法自動(dòng)化部署 Gitee Pages,而必須手動(dòng)登錄 Gitee,并且手動(dòng)點(diǎn)擊更新。
為什么呢??因?yàn)椋?strong style="box-sizing: border-box;color: rgb(15, 76, 129);line-height: 1.75;">Gitee Pages 自動(dòng)化部署要收費(fèi)!99 塊錢一年!!如果我們想要在不交錢的情況下實(shí)現(xiàn) Gitee Pages 自動(dòng)化部署(白嫖?),那么按照此前,只能努力讓我們的 Gitee 開源項(xiàng)目變得足夠好,得到官方的推薦后,會(huì)顯示“您的項(xiàng)目為推薦項(xiàng)目,已自動(dòng)為您開通 Gitee Pages Pro”,這樣就可以自動(dòng)化了。

插播一個(gè)碼云官方最新消息,“因業(yè)務(wù)調(diào)整,Gitee Pages Pro 暫時(shí)關(guān)閉個(gè)人用戶購(gòu)買入口,已開通用戶的倉(cāng)庫(kù)不受影響。GVP 項(xiàng)目和付費(fèi)企業(yè)使用不受影響?!?也就是說(shuō),現(xiàn)在想花錢圖個(gè)省事都不行了。。
然而,對(duì)于很多私人博客,或者說(shuō)開源項(xiàng)目剛創(chuàng)建不久的,通常來(lái)說(shuō)這種項(xiàng)目 stars 數(shù)很少,想得到官方的推薦,呵呵,不可能!所以我開發(fā)了?Gitee Pages Action?工具,無(wú)須人工,即可實(shí)現(xiàn) Gitee Pages 的自動(dòng)化部署!只需要在我們的 GitHub 項(xiàng)目?Settings?頁(yè)面下配置 keys,然后在?.github/workflows/?下創(chuàng)建一個(gè)工作流,引入一些配置參數(shù)即可。
拋一下開源工具的地址,點(diǎn)擊閱讀也能直達(dá),這個(gè)開源工具將會(huì)持續(xù)維護(hù),歡迎關(guān)注!
https://github.com/yanglbme/gitee-pages-action
下面我為大家詳細(xì)講一下工具的入?yún)ⅲ约熬唧w如何使用,若有使用上的問(wèn)題,也歡迎隨時(shí)反饋。
入?yún)?/h3>參數(shù) 描述 是否必傳 默認(rèn)值 gitee-usernameGitee 用戶名 是 - gitee-passwordGitee 密碼 是 - gitee-repoGitee 倉(cāng)庫(kù)(嚴(yán)格區(qū)分大小寫) 是 - branch要部署的分支 否 masterdirectory要部署的分支上的目錄 否 '' https是否強(qiáng)制使用 HTTPS 否 true
示例
| 參數(shù) | 描述 | 是否必傳 | 默認(rèn)值 |
gitee-username | Gitee 用戶名 | 是 | - |
gitee-password | Gitee 密碼 | 是 | - |
gitee-repo | Gitee 倉(cāng)庫(kù)(嚴(yán)格區(qū)分大小寫) | 是 | - |
branch | 要部署的分支 | 否 | master |
directory | 要部署的分支上的目錄 | 否 | '' |
https | 是否強(qiáng)制使用 HTTPS | 否 | true |
以下是一個(gè)完整的使用示例。
在你的 GitHub 倉(cāng)庫(kù)?.github/workflows/?文件夾下創(chuàng)建一個(gè)?sync.yml?文件,內(nèi)容如下:
name: Syncon:push:branches: [ master ]jobs:build:runs-on: ubuntu-lateststeps:- name: Sync to Giteeuses: wearerequired/git-mirror-action@masterenv:# 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEYSSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}with:# 注意替換為你的 GitHub 源倉(cāng)庫(kù)地址source-repo: "[email protected]:doocs/advanced-java.git"# 注意替換為你的 Gitee 目標(biāo)倉(cāng)庫(kù)地址destination-repo: "[email protected]:Doocs/advanced-java.git"- name: Build Gitee Pagesuses: yanglbme/gitee-pages-action@masterwith:# 注意替換為你的 Gitee 用戶名gitee-username: yanglbme# 注意在 Settings->Secrets 配置 GITEE_PASSWORDgitee-password: ${{ secrets.GITEE_PASSWORD }}# 注意替換為你的 Gitee 倉(cāng)庫(kù),倉(cāng)庫(kù)名嚴(yán)格區(qū)分大小寫,請(qǐng)準(zhǔn)確填寫,否則會(huì)出錯(cuò)gitee-repo: doocs/advanced-java
先使用?wearerequired/git-mirror-action?將 GitHub 倉(cāng)庫(kù)同步到 Gitee 倉(cāng)庫(kù),再使用?yanglbme/gitee-pages-action?實(shí)現(xiàn) Gitee Pages 的自動(dòng)部署。
請(qǐng)確保在 GitHub 項(xiàng)目的?Settings?->?Secrets?路徑下配置好?GITEE_RSA_PRIVATE_KEY?以及?GITEE_PASSWORD?兩個(gè)密鑰。其中:
?GITEE_RSA_PRIVATE_KEY: 存放你的?id_rsa?私鑰。?GITEE_PASSWORD: 存放你的 Gitee 賬戶密碼。
如果一切配置正常,并成功觸發(fā) Gitee Pages Action ,我們可能會(huì)收到一封來(lái)自 Gitee 的告警郵件/站內(nèi)信。放心,這是 GitHub Action 程序幫我們登錄到 Gitee 官網(wǎng),并為我們點(diǎn)擊了項(xiàng)目的部署按鈕。
FAQ
問(wèn)題 1:遇到短信驗(yàn)證碼導(dǎo)致無(wú)法自動(dòng)部署,怎么解決?
因?yàn)?Gitee Pages Action 使用的是 GitHub 自家的服務(wù)器(美國(guó)),在這種情況下,當(dāng) Action 自動(dòng)幫我們登錄 Gitee 的時(shí)候,會(huì)觸發(fā) Gitee?帳號(hào)異常登錄告警,提示用戶在非正常的 IP 地址登錄了 Gitee,需要輸入驗(yàn)證碼。
解決方案是:關(guān)注「碼云 Gitee」 微信公眾號(hào),綁定個(gè)人微信到碼云帳號(hào)。這樣 Action 在登錄的過(guò)程中,Gitee 就不會(huì)下發(fā)短信驗(yàn)證碼,而是通過(guò)「碼云 Gitee」公眾號(hào)給我們發(fā)送一個(gè)登錄通知,Action 就能成功登錄了。

問(wèn)題 2:報(bào) deploy error occurred, message: 'NoneType' object has no attribute 'group' 錯(cuò)誤,怎么辦?
報(bào)了這個(gè)錯(cuò)誤,說(shuō)明 Action 已經(jīng)成功幫我們登錄 Gitee 帳號(hào)了,但在訪問(wèn) Gitee Repo 的過(guò)程中出現(xiàn)問(wèn)題。
這種情況,一般是 Gitee Pages Action 的參數(shù)配置錯(cuò)誤導(dǎo)致,請(qǐng)仔細(xì)檢查你的配置信息。
注意:gitee-repo?參數(shù)嚴(yán)格區(qū)分大小寫,請(qǐng)準(zhǔn)確填寫,比如?doocs/advanced-java,當(dāng)你寫成?doocs/Advanced-java?的時(shí)候,是訪問(wèn)不到的,不信你可以試試訪問(wèn):https://gitee.com/Doocs/Advanced-java
誰(shuí)在使用?
目前,螞蟻金服數(shù)據(jù)可視化團(tuán)隊(duì)、有贊技術(shù)團(tuán)隊(duì)、還有?Doocs 開源社區(qū)等多個(gè)開源項(xiàng)目都在使用 Gitee Pages Action,所以,我也把它推薦給你。感興趣的朋友,也可以 star 關(guān)注一波!

長(zhǎng)按識(shí)別下圖二維碼,關(guān)注公眾號(hào)「Doocs 開源社區(qū)」,第一時(shí)間跟你們分享好玩、實(shí)用的技術(shù)文章與業(yè)內(nèi)最新資訊。
