天天看點

雲開發 Action,賦予 GitHub 雲上超能力

背景

來自社群的@beetcb ,前幾天參與了 Tencent CloudBase Github Action V2 ( AKA 雲開發 Atcion) 的代碼與文檔貢獻。如果你對使用 GitHub 自動建構和部署雲開發項目感興趣,歡迎随我來共同嘗鮮 V2 版雲開發 Action:

TencentCloudBase/cloudbase-action

為何需要在意 GitHub Actions ?

GitHub Actions 是 GitHub 推出的一項解放雙手、自動化開發流程的 CI/CD 服務。舉個直覺的例子,我們在浏覽許多開源項目的時候,Git Commit 右邊經常出現小紅叉、小綠勾:

雲開發 Action,賦予 GitHub 雲上超能力

那麼這個項目一定使用了 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 :

雲開發 Action,賦予 GitHub 雲上超能力

本示例将示範:如何快速部署雲函數到 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

資訊

雲開發 Action,賦予 GitHub 雲上超能力

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

最新資訊關注微信公衆号【騰訊雲雲開發】