github构建一个CI/CD流水线

119 阅读2分钟

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… ···