背景
來自社群的@beetcb ,前幾天參與了 Tencent CloudBase Github Action V2 ( AKA 雲開發 Atcion) 的代碼與文檔貢獻。如果你對使用 GitHub 自動建構和部署雲開發項目感興趣,歡迎随我來共同嘗鮮 V2 版雲開發 Action:
TencentCloudBase/cloudbase-action
為何需要在意 GitHub Actions ?
GitHub Actions 是 GitHub 推出的一項解放雙手、自動化開發流程的 CI/CD 服務。舉個直覺的例子,我們在浏覽許多開源項目的時候,Git Commit 右邊經常出現小紅叉、小綠勾:

那麼這個項目一定使用了 GitHub Actions (或其他 CI/CD 服務)。
這表明了很多項目對 GitHub Actions 的高度依賴,它在社群也是被高度認可的 👍。拿騰訊雲開發來說,通過在項目中引入雲開發 Action,即時便擁有了更優雅的自動化開發流程:
- 一體化:開發、代碼審查、Issue、PR、建構、部署都不用離開 GitHub,使專注變為常态
- 一鍵部署 › 自動部署:使用或了解過 CloudBase Framework 的使用者都知道一鍵部署這個非常友善的服務,再加上雲開發 Action,每次代碼變更 (
push
pr
...) 就可觸發一鍵部署,不再需要人工幹預star
- 對私密型資料更好的保護:密鑰一經上傳到 GitHub Secrets 之後,便不可能以任何形式明文檢視該密鑰,這比本地的
安全地多 🔐.env
雲開發 Action V1 的局限
我曾使用過 V1 版本來部署我的部落格項目,十分友善,這也是我第一次上手雲開發。随着對雲開發的熟悉,回過頭來也不難發現 V1 項目的局限:隻支援靜态部署并且缺乏維護,可能是兵哥 (@binggg) 很忙吧 🙉。
打破局限,擁抱 V2
發現了 V1 的局限,我嘗試尋找一種解決方案,
cloudbase-manager-node
是我的第一個嘗試:
TencentCloudBase/cloudbase-manager-node
這也是 V1 的解決方案,它也支援很多對其它雲開發項目的管理。幸運的是,cloudbase-framework 及時出現在我的腦中:
Tencent/cloudbase-framework
它是雲開發官方出品的前後端一體化部署工具,并配有豐富的插件;使用一個簡單的配置檔案,并結合 CloudBase CLI 工具,即可一鍵部署。
有了 cloudbase-framework ,我們就可以避免在 Action 中的二次開發,相反,用一套更加成熟的部署方案來替代
開發 V2 的過程
此次 V2 的開發 GitHub Action 真的很簡單,這都要感謝 cloudbase-framework 提供的一鍵部署能力。總結下來,把大象應用裝進冰箱雲開發隻要三部:
npm install -g @cloudbase/cli
tcb login --apiKeyId "$SECRET_ID" --apiKey "$SECRET_KEY"
tcb framework deploy -e "$ENV_ID"
安裝 → 登入 → 部署, 就是如此簡單!
由于此過程不包含任何代碼上的邏輯,是以我們并沒有使用任何程式設計語言來實作這些過程;經過考量,我們選擇了執行這些指令最快的地方 —
SHELL
,用 GitHub 文檔的術語來說,它是一個
composite run steps action
,核心的功能實作後,剩下的就是體驗上的優化:
- 輸出的簡化:剔除部署時輸出的無用資訊,減少無用日志的輸出
- 步驟分組:我們将三個關鍵的步驟分為三組,并追蹤并高亮正在執行的指令,讓使用者更清楚目前的狀态
- 文檔優化:利用一個簡單的雲函數部署,手把手教你配置 ( 就在下面,點它點它 👇 )
快速上手 V2
枯燥的文字哪有代碼有趣 ? 接下來的時間,我們來快速上手一下雲開發 Action :
本示例将示範:如何快速部署雲函數到 CloudBase (同時設定部署的私密環境變量作為雲函數 RUNTIME 的環境變量)
1 、首先我們需要在項目中引入雲開發 Action,編寫如下的 Github Action 檔案
.github/workflows/main.yml
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
name: Tencent Cloudbase Github Action Example
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Deploy to Tencent CloudBase
uses: TencentCloudBase/cloudbase-action@v2
with:
secretId: ${{secrets.secretId}}
secretKey: ${{secrets.secretKey}}
envId: ${{secrets.envId}}
關于此配置檔案的詳細說明
假設我們在部署時需要設定私密型的環境變量(比如小程式 `appid` 或通路資料庫的 `accessToken`),請在以上代碼中新增以下内容:
name: Tencent Cloudbase Github Action Example
+env:
+ accessToken: ${{ secrets.accessToken }}
其中
env
下的
accessToken
鍵值對是我們部署時設定的環境變量,它的功能與本地的
.env
檔案相同
2 、為了使用雲開發 Action V2 部署雲函數,我們必須要在項目中配置
cloudbaserc.json
檔案(并引入雲函數插件和我們剛剛配置的環境變量):
{
"envId": "{{env.ENV_ID}}",
"version": "2.0",
"framework": {
"name": "gh-actions-test",
"plugins": {
"func": {
"use": "@cloudbase/framework-plugin-function",
"inputs": {
"functions": [
{
"name": "example",
"memorySize": 128,
"timeout": 5,
"runtime": "Nodejs10.15",
"handler": "index.main",
"envVariables": {
"accessToken": "{{env.accessToken}}"
}
}
]
}
}
}
}
}
3 、在項目 Settings/Secrets 裡設定
secretId
,
secretKey
envId
accessToken
資訊
4 、配置完成後,送出代碼到 Github 時,雲開發 Action V2 就會自動部署項目中的
example
函數到雲開發中,即時函數的環境變量也會設定成功
歡迎貢獻
相信你看完此篇文章,對 V2 能有更清晰的認識,也更有信心來參與到本項目中來。本項目遵循 All Contributors 規範,任何形式的貢獻都會被加入貢獻者名單,歡迎你的貢獻 💗
CloudBase Framework 開源項目介紹
🚀 CloudBase Framework 是雲開發開源的雲原生前後端一體化部署工具,支援主流前後端架構,前後端一鍵托管部署在雲端一體化平台,支援支援小程式、Web、Flutter、後端服務等多個平台。
Github 開源位址:https://github.com/Tencent/cloudbase-framework
歡迎給 CloudBase Framework 一個 🌟 star
CloudBase Framework 核心貢獻者計劃
歡迎大家參與 CloudBase Framework 的開發工作,成為我們的貢獻者,我們将會在雲開發社群展示貢獻者的作品和資訊,同時也會有驚喜獎勵。
您可以選擇如下的貢獻方式:
- 貢獻技術文章:https://github.com/Tencent/cloudbase-framework/tree/master/community/posts
- 貢獻應用:https://github.com/Tencent/cloudbase-framework/blob/master/doc/app.md
- 貢獻代碼,送出 Pull Request
- 回報 bug,送出 Issue
- 在技術會議上發表技術演講
CloudBase Framework 的發展離不開社群的積極貢獻,這是我們的核心貢獻者清單,再次感謝大家的貢獻:https://github.com/Tencent/cloudbase-framework#contributors-
産品介紹
雲開發(Tencent CloudBase,TCB)是騰訊雲提供的雲原生一體化開發環境和工具平台,為開發者提供高可用、自動彈性擴縮的後端雲服務,包含計算、存儲、托管等serverless化能力,可用于雲端一體化開發多種端應用(小程式,公衆号,Web 應用,Flutter 用戶端等),幫助開發者統一建構和管理後端服務和雲資源,避免了應用開發過程中繁瑣的伺服器搭建及運維,開發者可以專注于業務邏輯的實作,開發門檻更低,效率更高。
開通雲開發:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
産品文檔:https://cloud.tencent.com/product/tcb?from=12763
技術文檔:https://cloudbase.net?from=10004
技術交流加Q群:601134960
最新資訊關注微信公衆号【騰訊雲雲開發】