因为我本人也不是那么熟悉 GITHUB Actions 这玩意儿所以这篇文章仅仅针对性的告诉你怎样配置单单这个自动化部署而已。咕咕咕了很久也是时候应该把这篇补上了。

首先老规矩,在需要部署的仓库里直接建立:

1
2
3
4
\----workdir
|----.github\
			|---- workflows\
							|----- _config.yml

也不是什么难事吧。

接下来进入 Actions 标签,左侧新建工作流 - 建立我自己的工作流,会给出一个 web editor ,此时可以在右侧选择模板,直接搜索 Cloudbase 会出现由腾讯云提供的 workflow 模板。大致如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
- name: Tencent CloudBase Github Action
  # You may pin to the exact commit or the version.
  # uses: TencentCloudBase/cloudbase-action@98ad8f31eb7bc09a8da3699149a9f765c7d8e8a1
  uses: TencentCloudBase/cloudbase-action@v1.1.1
  with:
    # 云开发 secretId
    secretId: 
    # 云开发 secretKey
    secretKey: 
    # 云开发环境 Id
    envId: 
    # 静态资源:本地路径
    staticSrcPath: # optional, default is build
    # 静态资源:云端路径
    staticDestPath: # optional, default is 
    # 静态资源:部署时忽略的文件路径,多个路径用,隔开
    staticIgnore: # optional, default is .git,.github,node_modules

当然会与最终使用的配置文件有很大差别,我们需要逐一进行更改。首先先命名这个工作流:

1
name: CloudBase CI

然后我们需要设置一下触发工作流的动作:

1
2
3
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on: [push]

这里我印象中可以指定为如下几个动作:

  • push
  • commit
  • pull
  • merge

但是具体的还请看 Github 提供的文档。这里我们期望的是将文章在本地渲染后直接推动到远程服务器触发部署因此 on 的选择条件为监听 push 动作。

1
2
jobs:
  # This workflow contains a single job called "build"

这里会出现一个数组,此数组下所有内容均被视为这个工作流在触发以后的动作。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 deploy:
    runs-on: ubuntu-18.04
    name: Tencent Cloudbase Github Action
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Deploy static to Tencent CloudBase
        id: deployStatic
        uses: TencentCloudBase/cloudbase-action@v1.1.1
        with:
          secretId: ${{ secrets.SECRET_ID }}
          secretKey: ${{ secrets.SECRET_KEY }}
          envId: ${{ secrets.ENV_ID }}
          staticSrcPath: ./

这些部分逐一进行解释:

  • deploy:部署项目
  • runs-on:指定操作系统环境或者软件环境,我就选择了比较常用的 ubuntu 18.04
  • name:任务的名称
  • steps:部署的动作,会逐一进行,每个步骤会跟随一个 nameuses 即使用的动作

由于一般情况是部署源码上去然后直接利用工作流渲染出来部署,但是我的仓库公开担心 apikey 之类的外流,因此选择在本地渲染完,远程工作流仅仅做一个 copy 的动作就行。因为使用的是 deployStatic 动作,并在子项 staticSrcPath 指定源码目录为项目根目录,with 部分均填写在项目设置里的 secrets 即可,可以直接调用对象。CloudBase 那边只要配置一下域名什么的就可以了,几乎不需要动什么。本次操作也就是全程 copy 毫无技术含量可言。当触发动作后可以进入 Actions 标签查看状态。