上一回,我们学会了如何利用Github Action完成脚本的自动化部署,我们学会了自动化部署的步骤,接下来我们聊聊部署过程中一些小细节。
Github Action
Github Action 是 GitHub 的持续集成服务,于2018年10月推出,利用Github Action能够完成自动化构建,轻松部署我们的github项目。
Github Action的入门教程这里不再赘述,感兴趣的同学,可以从这里(https://help.github.com/en/categories/automating-your-workflow-with-github-actions)自行了解。
OK,话不多说,让我们开始今天的内容吧。
Github Action
上一回我们创建了自己的workflow,每当有代码提交到github仓库,就会自动部署代码到云函数,那我们具体看下workflow文件的这些字段都有什么含义。
name: deploy2scf # 自定义workflow名称
on: [push] # push时触发
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: install SCF CLI # 安装SCF CLI
run: sudo pip install scf
- name: scf configure # scf cofigure, 配置appid, 地域和api秘钥等信息
env:
APPID: 1306479574
REGION: ap-guangzhou
SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} # 值存放在第二步所说的secrets中
SECRET_KEY: ${{ secrets.TENCENT_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 ./scf-python/serverless.yml -f
GitHub Actions 对应的配置文件是 workflow 文件,它存放在代码仓库的.github/workflows目录中。
workflow 文件固定为 YAML 格式,它的文件名可以任意取,但是后缀名统一为.yml,比如我们例子中的python-publish.yml。
一个代码库可以有多个 workflow 文件。
GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。
workflow 文件的配置字段很多,详见官方文档(https://help.github.com/en/articles/workflow-syntax-for-github-actions)。这里我们介绍一下基本字段。
1)name
name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名。
name: deploy2scf # 自定义workflow名称
2)on
on字段指定触发 workflow 的条件。
on: [push] # push时触发
上面代码指定了,push事件触发 workflow,也就是有代码push到仓库的时候触发。
3)jobs..runs-on
runs-on字段指定运行所需要的虚拟机环境。它是必填字段。目前可用的虚拟机如下。
ubuntu-latest,ubuntu-18.04或ubuntu-16.04
windows-latest,windows-2019或windows-2016
macOS-latest或macOS-10.14
4)jobs..steps
steps字段指定每个 Job 的运行步骤,可以包含一个或多个步骤。每个步骤都可以指定以下三个字段。
jobs.<job_id>.steps.name:步骤名称。
jobs.<job_id>.steps.run:该步骤运行的命令或者 action。
jobs.<job_id>.steps.env:该步骤所需的环境变量。
完整的steps案例
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: install SCF CLI # 安装SCF CLI
run: sudo pip install scf
- name: scf configure # scf cofigure, 配置appid, 地域和api秘钥等信息
env:
APPID: 1306479574
REGION: ap-guangzhou
SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} # 值存放在第二步所说的secrets中
SECRET_KEY: ${{ secrets.TENCENT_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 ./scf-python/serverless.yml -f
可以看到“run”字段的值是具体的可以执行的命令,比如sudo pip install scf
“env”字段的值对应环境变量的值(代码仓库 settings-Secrets 配置的变量)
总结
通过上面的教程,我们了解了Github Action自动将代码部署到云函数的配置的一些小细节,还不快尝试修改下看看效果吧。
欢迎关注我的公众号“NullPointer”,原创技术文章第一时间推送。