CI/CD(持续集成/持续交付)

CI/CD(持续集成/持续交付)是现代软件开发中非常重要的实践,它旨在提高软件开发的效率和质量。以下是一些关于CI/CD的基本概念和学习资源,帮助你入门:

基本概念

  1. 持续集成(CI)

    • 持续集成是一种软件开发实践,开发人员频繁地将代码集成到主干(主分支)中。每次集成都通过自动化构建和测试来验证,从而尽早发现集成错误。
  2. 持续交付(CD)

    • 持续交付是指将代码的更改自动化到生产环境的过程,确保软件在任何时候都可以安全地部署到生产环境。持续交付的目标是使软件交付过程尽可能快速和可靠。
  3. 持续部署

    • 持续部署是持续交付的进一步扩展,指的是每次通过测试的代码更改都会自动部署到生产环境中。

CI/CD 流程

  1. 代码提交:开发人员将代码提交到版本控制系统(如Git)。
  2. 自动构建:触发构建过程,编译代码并生成可执行文件。
  3. 自动测试:运行单元测试、集成测试等,确保代码的质量。
  4. 部署:将通过测试的代码自动部署到测试环境或生产环境。
  5. 监控:监控应用程序的性能和错误,确保系统的健康状态。

常用工具

  • 版本控制:Git, GitHub, GitLab, Bitbucket
  • CI/CD 工具:Jenkins, Travis CI, CircleCI, GitHub Actions, GitLab CI/CD, Azure DevOps
  • 容器化:Docker, Kubernetes
  • 自动化测试:JUnit, Selenium, Postman, pytest

学习资源

  1. 在线课程

    • Coursera、Udemy 和 Pluralsight 上有许多关于CI/CD的课程。
    • Google Cloud 和 AWS 提供的云服务课程也涵盖CI/CD实践。
  2. 书籍

    • 《Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation》 by Jez Humble 和 David Farley
    • 《The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win》 by Gene Kim 等
  3. 文档和博客

    • CI/CD工具的官方文档(如Jenkins、GitLab CI等)
    • DevOps和CI/CD相关的技术博客
  4. 实践

    • 在GitHub上创建一个项目,尝试设置CI/CD流程。
    • 使用Docker容器化应用程序,并将其部署到云服务上。

使用 GitHub Actions 来自动化 Python 项目的 CI/CD 流程是一个很好的选择。以下是一个简单的示例,展示如何为 Python 项目设置 GitHub Actions,以实现持续集成和持续交付。

示例项目结构

假设你有一个简单的 Python 项目,项目结构如下:

my-python-project/
├── .github/
│   └── workflows/
│       └── python-app.yml
├── my_app/
│   ├── __init__.py
│   └── main.py
├── tests/
│   ├── __init__.py
│   └── test_main.py
├── requirements.txt
└── README.md

1. 创建 requirements.txt

在项目根目录下创建一个 requirements.txt 文件,列出你的项目依赖,例如:

pytest

2. 编写测试代码

tests/test_main.py 中,编写一些简单的测试代码:

# tests/test_main.py

from my_app.main import add

def test_add():
    assert add(1, 2) == 3

假设在 my_app/main.py 中有一个简单的 add 函数:

# my_app/main.py

def add(x, y):
    return x + y

3. 创建 GitHub Actions 工作流

.github/workflows/ 目录下创建一个名为 python-app.yml 的文件,内容如下:

name: Python application

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Check out code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'  # 可以根据需要更改 Python 版本

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run tests
      run: |
        pytest

4. 提交代码到 GitHub

将所有更改提交到 GitHub:

git add .
git commit -m "Add GitHub Actions workflow for Python project"
git push origin main

5. 查看 GitHub Actions 运行结果

  • 登录到你的 GitHub 仓库。
  • 点击 "Actions" 标签,你将看到刚刚创建的工作流。
  • 点击工作流名称,可以查看工作流的运行情况和日志。

解释工作流文件

  • name: 定义工作流的名称。
  • on: 指定触发工作流的事件,这里我们选择在 main 分支的推送和拉取请求时触发。
  • jobs: 定义一个或多个作业,这里我们定义了一个名为 build 的作业。
  • runs-on: 指定运行作业的操作系统,这里使用的是 ubuntu-latest
  • steps: 定义作业的步骤:
    • Check out code: 使用 actions/checkout 来检出代码。
    • Set up Python: 使用 actions/setup-python 来设置 Python 环境。
    • Install dependencies: 安装项目依赖。
    • Run tests: 使用 pytest 运行测试。
posted @ 2021-11-28 19:50  John-Python  阅读(280)  评论(0编辑  收藏  举报