超详细 Github Action 教程:Python 项目自动化实战
一、Github Action 简介
在软件开发的世界里,我们都希望能够更高效地进行代码开发、测试和部署。Github Action 就像是一个智能助手,能在我们的 Github 仓库中自动完成各种任务。它可以在代码有新的推送、Pull Request 被创建等事件发生时,自动执行一系列预先设定好的步骤,比如运行测试用例、检查代码质量、构建项目,甚至将项目部署到服务器上。
二、核心概念与基础示例
1. 核心概念
- 工作流(Workflow) :这是整个自动化流程的蓝图,就像一个任务清单,用 YAML 格式写好放在仓库的.github/workflows 目录下。它规定了在什么情况下触发任务以及任务的执行顺序。
- 作业(Job) :工作流里可以包含一个或多个作业,每个作业就像是一个独立的工作单元,在特定的环境中运行。
- 步骤(Step) :作业又是由一个个步骤组成的,每个步骤就是一个具体要做的事情,比如运行一条命令或者执行一个脚本。
2. 基础示例
假设我们有一个 Python 项目,下面是一个简单的 Github Action 工作流,用于在代码推送到主分支时自动运行测试:
|
|
在这个例子中:
name
定义了这个工作流的名字叫 “Python Tests”。on
表示这个工作流会在主分支有代码推送时触发。jobs
里的test
作业会在ubuntu-latest
这个系统环境里运行。- 步骤里先把代码从仓库里拉取出来(
actions/checkout@v3
),然后设置好 Python 3.9 的环境(actions/setup-python@v4
),接着安装项目依赖(pip install -r requirements.txt
),最后运行测试用例(pytest
)。
三、常用操作与配置
1. 触发事件多样化
除了代码推送,还可以根据其他事件触发工作流。比如:
|
|
这就会在有针对主分支的 Pull Request 时触发工作流。
2. 环境变量巧设置
我们可以在工作流里设置环境变量,让步骤里的命令可以使用。例如:
|
|
3. 依赖缓存提速度
为了让每次构建更快,可以缓存依赖。对于 Python 项目:
|
|
四、与第三方工具集成
Github Action 可以和很多第三方工具配合。比如和 AWS 结合进行项目部署:
|
|
这里先配置 AWS 的认证信息,然后把项目文件上传到 AWS S3 存储桶。
五、工作流复用与共享
我们可以创建可复用的工作流 action。比如创建一个名为 python-lint-action
的 action 来检查 Python 代码风格。
- 在仓库中创建
.github/actions/python-lint-action
目录。 - 在该目录下创建
action.yml
文件:
|
|
然后其他 Python 项目就可以这样使用这个 action:
|
|
六、调试与故障排除
- 日志查看 :当工作流运行后,在 Github 仓库的 Actions 页面可以看到详细的日志。从日志里可以看到每个步骤的执行情况,比如命令的输出、错误信息等,这有助于我们找出问题所在。
- 调试命令添加 :在步骤里可以添加一些调试命令,比如
echo
输出变量的值,或者在脚本中添加一些打印语句来查看中间结果。
七、总结
Github Action 为 Python 项目的开发带来了极大的便利,通过自动化各种任务,不仅提高了开发效率,还能保证代码质量和部署的一致性。无论是小型的个人项目还是大型的团队协作项目,掌握 Github Action 都能让你的开发工作更加得心应手。希望这个教程能够帮助你快速入门,开启你的 Github Action 自动化之旅。
- 原文作者:虎窝小栈
- 原文链接:https://www.huwo.top/post/d1m9q8g4/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。