【腾讯云Serverless】Github Actions自动部署云函数

2019-09-21 21:48:18 浏览数 (1)

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:

代码语言:javascript复制
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:

代码语言:javascript复制
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。

0 人点赞