1 什么是 CI/CD?
CI/CD 是一种软件开发实践,旨在通过自动化的方式提高开发效率和产品质量。其中:
CI(持续集成):开发人员频繁地将代码更改合并到主分支中,每次提交都会触发自动化的构建和测试过程,确保代码的质量。 CD(持续部署):在 CI 的基础上,自动化地将经过测试的代码部署到生产环境或预发布环境中。 CI/CD 的核心目标是减少手动干预,加快反馈周期,从而更快地响应市场需求。
2 GitHub Actions 简介
GitHub Actions 是 GitHub 提供的一种工作流自动化工具,允许开发者定义和执行自定义的工作流。通过 YAML 文件,用户可以配置从代码提交到部署的整个流程。
GitHub Actions 的主要优势包括:
无缝集成到 GitHub 平台中。 支持多种编程语言和框架。 灵活的工作流定义,支持复杂的多步骤操作。
3 创建一个python项目
目录树
my_python_project/
├── app.py
├── tests/
│ └── test_app.py
├── requirements.txt
└── .github/
└── workflows/
└── ci-cd.yml
4 调试代码
app.py
# app.py
def greet(name):
return f"Hello, {name}!"
if __name__ == "__main__":
print(greet("World"))
test_app.py
# tests/test_app.py
import sys
import os
import unittest
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from app import greet
class TestGreet(unittest.TestCase):
def test_greet(self):
self.assertEqual(greet("World"), "Hello, World!")
ci-cd.yml
# 定义工作流的名称,显示在GitHub Actions的UI中
name: Python CI/CD
# 定义触发工作流的事件
on:
# 当代码推送到main分支时触发工作流
push:
branches:
- main
# 当有针对main分支的拉取请求时触发工作流
pull_request:
branches:
- main
# 定义工作流中的任务(jobs)
jobs:
# 定义一个名为build的任务
build:
# 指定任务运行的环境,这里使用最新的Ubuntu环境
runs-on: ubuntu-latest
# 定义任务中的步骤(steps)
steps:
# 第一步:检出代码到工作区
- name: Checkout code
# 使用GitHub官方的checkout动作,版本为v3
uses: actions/checkout@v3
# 第二步:设置Python环境
- name: Set up Python
# 使用GitHub官方的setup-python动作,版本为v4
uses: actions/setup-python@v4
# 设置Python版本为3.9
with:
python-version: '3.9'
# 第三步:安装项目依赖
- name: Install dependencies
# 运行shell命令来安装依赖
run: |
# 升级pip到最新版本
python -m pip install --upgrade pip
# 安装requirements.txt文件中列出的依赖
pip install -r requirements.txt
# 第四步:运行测试
- name: Run tests
# 运行shell命令来安装pytest并运行测试
run: |
# 安装pytest测试框架
pip install pytest
# 运行tests/目录下的所有测试
pytest tests/
# 指定工作目录为GitHub Actions的工作区
working-directory: ${{ github.workspace }}
5 查看结果
在action标签下面可以查看结果
6 vscode查看CI/CD结果
vscode下载GitHub Actions插件
可以查看具体的流水线的执行情况
7 demo下载
··· github.com/hanwang66/p… ···