【騰訊雲Serverless】Github Actions自動部署雲函數
- 2019 年 10 月 6 日
- 筆記
Github Actions是什麼
Github,從事IT行業的各位應該都知道,即一個程式碼託管的服務平台。
Github Actions是Github近來推出的新功能,能夠自動化構建,部署我們的github項目。
個人認為,對標現成的工具,例如Travis CI,Jenkins,是Github官方的CI/CD工具。
具體的Github Actions的入門,這裡不贅述,各位可以去以下的網址進行深入了解。
Github Help: https://help.github.com/en/categories/automating-your-workflow-with-github-actions
Github Actions 入門教程:http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
騰訊云云函數與CI/CD
傳統的架構一般需要把整個可運行的程式碼,部署到伺服器。與傳統的架構不同,Serverless架構需要把項目拆成多個雲函數,然後進行部署。
個人理解,雖然架構模式不一樣,但是軟體開發的生命周期是一樣的。無論是傳統的架構還是Serverless,在部署前都得經過編譯,構建,測試等。這些大多是重複的工作,所以接入CI/CD是解放生產力,提高效率,保證項目品質的一個必經之路。Serverless架構亦是需要CI/CD。
所以此篇文章旨在,使用Github Actions來自動部署騰訊云云函數來展示,Serverless如何和現有的CI/CD工具結合,來自動化整個發布流程。
前期準備
1、得註冊一個Github的賬戶
2、得註冊一個騰訊雲的賬戶
3、Github Actions仍處於Beta階段,需要體驗得去 https://github.com/features/actions 進行排隊申請使用資格。
4、了解 SCF CLI工具的使用,https://cloud.tencent.com/document/product/583/33445
實踐過程
1、申請到使用資格後,可在github項目中看到新增了 Actions 的選項卡。可以點擊進去看看裡面會有什麼。

2、使用SCF CLI工具部署雲函數需要用到騰訊雲的API 秘鑰。
秘鑰獲取可以前往騰訊雲控制台,https://console.cloud.tencent.com/cam/capi 獲取。
然後Github Actions提供了secrets,可以將API秘鑰此類隱私資訊保存在secrets中。
點擊Settings,可以看到Secrets,點擊Secrets,可以來到如下頁面,進行編輯。

3、github新建一個項目。
git clone到本地,進入到項目根目錄,使用SCF CLI工具初始化一個函數。
eg:
git clone https://github.com/Juliiii/test-scf-github-actions.git cd test-scf-github-actions scf init --runtime nodejs8.9

4、點擊github項目的Actions的選項卡,進行編輯自動化工作流的yml文件。
具體操作,請各位自行去實踐。
下面是我實踐時編寫的一個yml文件。每一步的含義都提供給各位注釋
eg:
name: CI on: [push] # push時觸發 jobs: build: runs-on: ubuntu-latest # 執行環境為ubuntu-latest steps: - uses: actions/checkout@v1 # 現成actions,獲取源碼 - uses: actions/setup-node@v1 # 安裝nodejs,版本指定10 with: node-version: '10.x' - name: npm install # 安裝函數的依賴 run: cd hello_world && npm install - name: pip --version run: pip --version - name: install SCF CLI # 安裝SCF CLI run: sudo pip install scf - name: scf configure # scf cofigure, 配置appid, 地域和api秘鑰等資訊 env: APPID: 1252618971 REGION: ap-guangzhou SECRET_ID: ${{ secrets.TENCENTCLOUD_SECRET_ID }} # 值存放在第二步所說的secrets中 SECRET_KEY: ${{ secrets.TENCENTCLOUD_SECRET_KEY }} # 同上 run: scf configure set --appid $APPID --region $REGION --secret-id $SECRET_ID --secret-key $SECRET_KEY - name: scf deploy # scf deploy run: scf deploy -t ./hello_world/template.yaml -f 5、之後push函數程式碼到github倉庫後,github會自動根據我們編寫的yml文件進行程式碼的獲取,安裝依賴和部署。
以下是某次構建的全部流程。

總結
以上是本人了解到Github Actions後,考慮到和騰訊云云函數的結合可能性,做的一次簡單的實踐。大家可以看到流程是可以走通的。至於更多的豐富用法,例如增加自動化測試,增加程式碼檢查等,大家都可以依託自己的閱讀和實踐能力去完善。其實大家也可以發現,與傳統架構不同,其中一點在於部署的終點不一樣,傳統架構部署在虛擬機,docker等,而Serverless部署在雲供應商提供的雲服務上,只要藉助雲供應商提供的開發者工具,即可自動化Serverless項目整個的構建發布流程。
實踐項目的github地址:https://github.com/Juliiii/test-scf-github-actions
Less is More。