本文主要是想通过以Pytest + Playwright + Allure + BDD框架为demo的项目,介绍项目怎样与 Github的持续集成工具GitHub Action进行集成并展示allure report,如果大家对框架搭建感兴趣,可以参考另一篇文章 自动化框架设计及落地的那些事。
1 GitHub 基础知识
1.1 GitHub Action是什么
首先我们先来了解一下GitHub Action基础知识。GitHub Action是GitHub 推出的持续集成的工具,持续集成由很多操作组成,比如获取代码、安装依赖、运行测试、上传测试结果等等。GitHub 把这些操作就称为 actions。很多的actions在不同的项目里面是相同的,因此GitHub是允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用的。
到目前当我们要集成一个项目到GitHub Action时,基本就只需要引用他人已经写好的多个action即可,整个持续集成过程,就变成了一个 actions 的组合。我们可以到官方网站搜索更多的actions。
引用action的语法: userName/repoName@版本号。 如actions/setup-python@v5,就表示github.com/actions/setup-python这个仓库,它代表一个 action,作用是安装 Python,@后面指出的是安装的版本号。后面集成到GitHub Action时还会详讲用法。
1.2 怎么集成到GitHub Action
知道了action之后,我们就来聊聊怎么将项目集成到Github Action :就是在我们仓库的根目录下,创建一个 workflow文件,放在.github/workflows目录下,workflow文件是一个 *.yml 文件——这个 Yaml 文件就是 Github Action 的配置文件。
一些术语介绍:
- workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
- job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
- step(步骤):每个 job 由多个 step 构成,一步步完成。
- action (动作):每个 step 可以依次执行一个或多个命令(action)。
Workflow 是由一个或多个 job 组成的可配置的自动化过程。workflow的配置文件字段比较多,可以参考官网介绍Workflow syntax for GitHub Actions。下面是一些基本字段。
(1)name
Workflow 的名称,Github 在存储库的 Action 页面上显示 Workflow 的名称,如:
name: playwright pytest bdd demo CI
(2)on
触发 Workflow 执行的 event 名称,比如:每当我提交代码到 Github 上的时候执行workflow可以写为:
on:push
(3)on.<push|pull_request>.<tags|branches>
指定触发事件时,可以限定分支或标签
(4)jobs.<job