云開(kāi)發(fā) Github Action 自動(dòng)化部署

2020-07-22 15:34 更新

云開(kāi)發(fā)靜態(tài)托管是云開(kāi)發(fā)提供的靜態(tài)網(wǎng)站托管的能力,靜態(tài)資源(HTML、CSS、JavaScript、字體等)的分發(fā)由騰訊云對(duì)象存儲(chǔ) COS 和擁有多個(gè)邊緣網(wǎng)點(diǎn)的騰訊云 CDN 提供支持

Github 為開(kāi)源項(xiàng)目提供了用于靜態(tài)頁(yè)面展示的 Pages 服務(wù),很多開(kāi)發(fā)者都在上面托管了自己的靜態(tài)網(wǎng)站和博客,不少開(kāi)源項(xiàng)目的案例和文檔頁(yè)面也采用了這種方式。不過(guò)由于 Pages 的 CDN 節(jié)點(diǎn)大部分在國(guó)外,在國(guó)內(nèi)的訪問(wèn)速度不是很理想,不少開(kāi)發(fā)者希望能提升網(wǎng)站在國(guó)內(nèi)的訪問(wèn)速度和穩(wěn)定性,今天會(huì)介紹如何配合 Github Action 的持續(xù)集成服務(wù)和 云開(kāi)發(fā) Github Action 擴(kuò)展,自動(dòng)部署到訪問(wèn)速度更快的云開(kāi)發(fā)靜態(tài)托管服務(wù)。

云開(kāi)發(fā)靜態(tài)托管介紹

云開(kāi)發(fā)靜態(tài)托管是云開(kāi)發(fā)提供的靜態(tài)網(wǎng)站托管的能力,靜態(tài)資源(HTML、CSS、JavaScript、字體等)的分發(fā)由騰訊云對(duì)象存儲(chǔ) COS 和擁有多個(gè)邊緣網(wǎng)點(diǎn)的騰訊云 CDN 提供支持。可以通過(guò)騰訊云控制臺(tái)、命令行工具以及下面會(huì)提到的云開(kāi)發(fā) Github Action 進(jìn)行管理部署。云開(kāi)發(fā)提供了免費(fèi)的二級(jí)域名(未綁定自定義域名時(shí)下行速度有限制),同時(shí)支持免費(fèi)綁定開(kāi)發(fā)者自己的自定義域名。

首個(gè)環(huán)境可享受 1GB 容量和每月 5GB 流量的免費(fèi)額度,對(duì)于訪問(wèn)量不是很大的個(gè)人博客應(yīng)該足夠了。如果流量大也沒(méi)關(guān)系,計(jì)費(fèi)是按照具體使用收費(fèi)的按量付費(fèi)方式,具體信息可以查看計(jì)費(fèi)價(jià)格文檔 https://cloud.tencent.com/product/wh/pricing

云開(kāi)發(fā)靜態(tài)托管部署的網(wǎng)站,還可以使用云開(kāi)發(fā)的提供的一站式 Serverless 后端能力,例如云函數(shù)、云數(shù)據(jù)庫(kù)、云存儲(chǔ)、身份服務(wù)等。比如可以在靜態(tài)托管的個(gè)人博客上面使用云函數(shù)和云數(shù)據(jù)庫(kù)實(shí)現(xiàn)評(píng)論、留言板功能等,或者可以把博客的內(nèi)容管理從原來(lái)的靜態(tài)文件部署變?yōu)閯?dòng)態(tài)內(nèi)容管理等,拓展的用法非常的多,開(kāi)發(fā)者可以繼續(xù)深入探索。

如何通過(guò) Github Action 一鍵部署到云開(kāi)發(fā)

下面演示如何將 Github 靜態(tài)頁(yè)面自動(dòng)部署到云開(kāi)發(fā)的靜態(tài)托管,來(lái)獲得穩(wěn)定的訪問(wèn)速度和更多的擴(kuò)展能力。

例如開(kāi)發(fā)者的個(gè)人博客 Github 項(xiàng)目結(jié)構(gòu)如下:

|-- src

|-- build

|-- README.md

希望將項(xiàng)目下 build 目錄生成的靜態(tài)網(wǎng)站代碼部署到云開(kāi)發(fā)這邊開(kāi)通的靜態(tài)網(wǎng)站托管的根目錄下。

編寫(xiě) Github Action 文件

首先在項(xiàng)目目錄配置如下的 Github Action 文件 .github/workflows/main.yml,如果已經(jīng)配置過(guò) Github Action 就不需要重新創(chuàng)建了,然后參考下面的配置填寫(xiě)。

    on: [push] # push 代碼時(shí)觸發(fā)




    jobs:


    deploy:


        runs-on: ubuntu-latest


        name: Tencent Cloudbase Github Action Example


        steps:


        - name: Checkout


            uses: actions/checkout@v2



        


        # 使用云開(kāi)發(fā) Github Action 部署


        - name: Deploy static to Tencent CloudBase


            id: deployStatic


            uses: TencentCloudBase/cloudbase-action@v1


            with:


                # 云開(kāi)發(fā)的訪問(wèn)密鑰 secretId 和 secretKey


            secretId: ${{ secrets.SECRET_ID }}


            secretKey: ${{ secrets.SECRET_KEY }}


            # 云開(kāi)發(fā)的環(huán)境id


            envId: ${{ secrets.ENV_ID }}


            # Github 項(xiàng)目靜態(tài)文件的路徑


            staticSrcPath: build

可以看到配置中主要用到了 云開(kāi)發(fā) Github Action 擴(kuò)展 TencentCloudBase/cloudbase-action@v1 來(lái)部署靜態(tài)文件。

注意配置文件中參數(shù)部分的 secretId、secretKey 、envId屬于敏感信息,需要放在項(xiàng)目的 secret 存儲(chǔ)中,這里不用填寫(xiě)真實(shí)的值,只需要按照上面實(shí)例填寫(xiě)變量即可。

staticSrcPath 這里填寫(xiě)了靜態(tài)網(wǎng)站構(gòu)建產(chǎn)生的目錄 build,如果想把靜態(tài)資源部署到云端的某個(gè)子目錄而不是根目錄,可以再配置一個(gè)參數(shù) staticDestPath 。

配置云開(kāi)發(fā)訪問(wèn)信息

我們還需要在項(xiàng)目的 Secrets 中配置 SECRET_ID、SECRET_KEY、ENV_ID 這幾個(gè)私密信息,下面是具體的配置方式。

首先要開(kāi)通云開(kāi)發(fā)靜態(tài)網(wǎng)站,可以參考開(kāi)通指南:https://docs.cloudbase.net/hosting/,開(kāi)通環(huán)境后即可得到環(huán)境ID ENV_ID,然后在騰訊云 訪問(wèn)管理 頁(yè)面可以配置一對(duì) API 訪問(wèn)密鑰,也就是SECRET_ID、SECRET_KEY。

然后在自己的 Github 項(xiàng)目?jī)?nèi)的 Setting/Secrets 里設(shè)置 SECRET_ID, SECRET_KEY, ENV_ID 信息即可。

配置完之后就可以提交代碼體驗(yàn)自動(dòng)部署了,每次 git push Actions 都會(huì)自動(dòng)運(yùn)行,將項(xiàng)目的靜態(tài)資源部署到自己的云開(kāi)發(fā)靜態(tài)托管環(huán)境,部署成功之后即可通過(guò)云開(kāi)發(fā)提供的二級(jí)域名訪問(wèn)來(lái)自己的網(wǎng)站。

配置自定義域名

云開(kāi)發(fā)提供的免費(fèi)的二級(jí)域名下行速度有所限制,開(kāi)發(fā)者最好綁定一個(gè)自己的域名,綁定域名是免費(fèi)的,還可以在騰訊云配置一個(gè)免費(fèi)的 SSL 證書(shū),來(lái)通過(guò) HTTPS 訪問(wèn)自己的網(wǎng)站。

自定義域名的方法可以參考這篇文檔 https://docs.cloudbase.net/hosting/custom-domain.html

配置完成后,測(cè)試下部署在云開(kāi)發(fā)靜態(tài)托管的網(wǎng)站的訪問(wèn)速度,根據(jù)測(cè)速數(shù)據(jù)可以看到各地的訪問(wèn)速度都非??臁?/p>

更多擴(kuò)展玩法

云開(kāi)發(fā) Tencent CloudBase Github Action 這個(gè)擴(kuò)展會(huì) Github 項(xiàng)目自動(dòng)部署到云開(kāi)發(fā)環(huán)境,目前支持靜態(tài)托管功能,后續(xù)會(huì)支持其他資源的部署,比如可以把用 Node JS 、 Java、PHP 等語(yǔ)言開(kāi)發(fā)的服務(wù)端項(xiàng)目一鍵部署到云開(kāi)發(fā),來(lái)獲得 Serverless 化的動(dòng)態(tài)網(wǎng)站服務(wù)?;蛘咦詣?dòng)化部署帶有數(shù)據(jù)庫(kù)、前端、后端的全棧應(yīng)用。

Tencent CloudBase Github Action 擴(kuò)展市場(chǎng)地址

https://github.com/marketplace/actions/tencent-cloudbase-github-action

Tencent CloudBase Github Action 代碼開(kāi)源地址

https://github.com/TencentCloudBase/cloudbase-action

歡迎大家多多體驗(yàn)、Star 支持或者提交 Issue / Pull request 來(lái)參與貢獻(xiàn)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)