通过Github Action自动化部署静态文件在COS存储桶
如果您有自动化部署 VuePress/dumi/Astro
等文档站或者是 Hexo
等静态个人博客的需求,您可能需要 Github Action
的帮助。如果你部署在Vercel上,Vercel会全自动完成所有配置操作,只需提交项目源文件即可,无需按照此教程配置工作流文件。
本篇教程建立在你有将静态网站全自动部署在腾讯云COS的需求。
本教程将以部署
Astro站点
为例向你演示如何编写Workflow File,不同框架的指令/Node版本可能不同,请以实际为准。
准备项目源文件
首先,你需要在Github上创建一个空仓库,创建后将项目源文件提交到仓库中。提交后,你需要确保仓库中包含构建dist的必要文件。例如 src
和 package.json
。
创建Workflow File
新仓库正常情况下不会有 .github
目录,这时候你可以手动创建 .github/workflows
文件夹。创建后在此文件夹内创建一个yml文件,这个文件就是你的Action工作流配置文件,我们将在这个文件中配置Action。
比如,我们创建一个 push-online.yml
文件,用于将构建后的dist上传到COS存储桶中
配置yml
基础配置
首先,我们要对工作流进行命名,还要设置对应的分支(同时可以配置运行时忽略的文件/目录)。
1 |
|
最好不要使用中文命名,否则可能会出现部分问题。
运行环境配置
得益于Github的强大配置,我们可以在上面运行Ubuntu虚拟机以及各种虚拟环境。在这个示例中我们使用 Ubuntu&Node.JS 环境进行build和upload。
- node-version:设置Node版本,可以是latest最新版也可以指定版本号。
- cache:包管理器选择,用于缓存依赖,默认情况下是
npm
。 - cache-dependency-path:你的包管理文件名,通常情况下是
package.json
。 - run:安装依赖指令,通常情况下是
包管理器+install
。
1 |
|
如果试运行通过,可以进行最后一步配置文件上传到COS存储桶的步骤。
COS配置
首先,感谢zkqiang的贡献,提供了在Action上上传文件到TencentCOS的程式。
- args:COS命令,可参考TencentCOSCLI文档。
- secret_id&secret_key:RAM账户密钥,在“控制台-访问管理”配置。建议新建一个专用RAM账户用于Action。这些字符切忌不要直接写在yml中,在仓库的环境值中配置。
- bucket:存储桶名称,建议在环境值中配置。
- region:存储桶ap地域,复制完整。
1 |
|
环境值配置
完成yml的配置,我们需要写入环境值以替换Workflow File中的 ${{ secrets.XXXXXXX }}
字样。配置环境值可以保护您的数据安全,以防被不法分子替换COS文件。
点击仓库的“setting”,进入设置页面。在设置菜单中选择“Secrets and variables”,并在二级菜单中选择“Actions”。在“Repository secrets”中点击右侧绿色按钮“New repository secret”即可创建一个仓库环境值。
在新页面中,输入相应的Name和Secret并单击“Add secret”以完成配置这个变量。
我们需要配置的Secret:
- BUCKET:存储桶名称(如下图)
- SECRET_ID:子账户操作ID
- SECRET_KEY:子账户操作密钥
提交变量之后,您的Action理应自动运行并会把构建后的dist文件上传到COS桶中。这些操作是即时生效的。流程大概在1分钟之内,除非你的依赖非常非常多。