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。