Pytest + Docker + Gitlab-CICD 搭建流水线

本文介绍了如何利用Celery、Pytest、Docker和Gitlab-CI/CD搭建自动化测试和部署流水线。内容包括GitLab CI/CD的简介、配置Gitlab Runner、创建.gitlab-ci.yml文件、实现Celery+Pytest的自动化测试,以及结合Docker和Gitlab-CICD实现完整的CI/CD流程,包括K8s自动化部署的初步探讨。

Celery + Pytest+ Docker + Gitlab-CI/CD 搭建流水线

其他博文链接

Ubuntu 搭建Gitlab

Celery-4.1用户指南: Testing with celery

Ubuntu 安装Docker

基于 Python 项目的 GitLab-CI 演示

GitLab集成Docker和K8S完成CI/CD持续集成部署工作

一、GitLab CI/CD介绍

首先一张图说明Gitlab CI的工作流程

Gitlab-CI/CD的工作流程

GitLab CI是 GitLab 提供的持续集成服务,只要在你的仓库根目录 创建一个.gitlab-ci.yml 文件, 并为该项目指派一个Runner,当有合并请求或者 push的时候就会触发build。

这个.gitlab-ci.yml 文件定义GitLab runner要做哪些操作。 默认有3个[stages(阶段)]: build、test、deploy。

当build完成后(返回非零值),你会看到push的 commit或者合并请求前面出现一个绿色的对号。 这个功能很方便的让你检查出来合并请求是否会导致build失败, 免的你去检查代码。

大部分项目用GitLab’s CI服务跑build测试, 开发者会很快得到反馈,知道自己是否写出了BUG。

所以简单的说,要让CI工作可总结为以下几点:

在仓库根目录创建一个名为.gitlab-ci.yml 的文件
为该项目配置一个Runner
完成上面的步骤后,每次push代码到Git仓库, Runner就会自动开始pipeline。

二、配置Runner

详细的使用说明,请阅读官方文档:https://docs.gitlab.com/runner/

安装Gitlab Runner

#在ubuntu server16.04~20.04版本下使用命令即可安装
$ sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

#接着授予可执行权限
$ sudo chmod +x /usr/local/bin/gitlab-runner

#创建一个gitlab-ci用户
$ sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

#安装,并作为服务启动
$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

注册Runner(Gitlab管理员权限)

$ sudo gitlab-runner register

需要输入项目的url和Token,查找过程如下

以管理员权限进入仓库->settings->CI/CD,找到Runner Settings这一项,点击Expend,即可在Setup a specific Runner manually这项中找到。如下:

其中的url和Token就是遮起来的内容,只需要在注册过程中填入即可。
命令输入完,点击回车后,会进入注册步骤,共分为以下几步:

  • 输入Gitlab实例的URL
    可在上图中查看
  • 输入要注册的仓库的Token
    可在上图中查看
  • 输入Runner的描述
    这里可以随便输入
  • 输入Runner的标签
    这里也可以随便输入
  • 选择Runner执行器
    执行器这里以Docker为示例
  • 选择默认镜像(Docker执行器)
    默认执行器是当在.gitlab-ci.yml中没有指定镜像(image)是默认的。

这些做完之后就可以启动Runner

$ gitlab-runner start

官方文档说是用gitlab-runner start,有博主说start不生效,用了gitlab-runner run才生效,建议视情况测试。

启动成功后就可以看到,gitlab对应的仓库下(操作:进入仓库->settings->CI/CD,找到Runner Settings这一项,点击Expend,即可在Setup a specific Runner manually)看到注册的runner已经在运行了。

注:如果状态颜色是灰色的表示没有运行成功,也可以选择“Pause”和“Remove Runner”

三、celery+pytest+gitlab-ci 搭建自动化测试

Show me code.

Celery With Pytest.

celery在4.1版本后已经支持Pytest了,并发布了官方文档,更多用法请移步官方文档。

Celery简易Demo
# app.py
from celery import Celery

celery_demo_app = Celery('celery_app',broker='redis://172.18.21.254:6379/1',backend='redis://172.18.21.254:6379/2')

@celery_demo_app.task
def add(x, y)
### 使用 GitLab CI/CD 进行持续集成和部署 GitLab 提供了一个强大的内置工具链来支持持续集成 (CI) 和持续交付/部署 (CD),这使得开发者可以轻松实现自动化构建、测试以及部署流程。以下是关于如何配置并使用 GitLab CI/CD 的详细介绍。 #### 配置 `.gitlab-ci.yml` 文件 为了启用 GitLab CI/CD 功能,需要在项目的根目录下创建一个名为 `.gitlab-ci.yml` 的 YAML 文件。此文件定义了整个 CI/CD 流程的行为模式[^1]。该文件通常包含以下几个部分: - **stages**: 定义流水线的不同阶段(例如 `build`, `test`, `deploy`),这些阶段会按顺序执行。 - **jobs**: 每个 job 是流水线中的具体任务,job 可以分配到不同的 stages 下运行。 下面是一个简单的 `.gitlab-ci.yml` 示例,用于演示基本的 CI/CD 设置: ```yaml stages: - build - test - deploy variables: IMAGE_NAME: my-app-image build_job: stage: build script: - echo "Building the application..." - docker build -t $IMAGE_NAME . test_job: stage: test script: - echo "Running tests..." - pytest --junitxml=report.xml ./tests/ deploy_job: stage: deploy script: - echo "Deploying application..." - ssh user@server 'cd /path/to/app && git pull origin main' only: - main ``` 上述脚本展示了三个主要阶段:构建 (`build`)、测试 (`test`) 和部署 (`deploy`)。其中,在 `deploy_job` 中还设置了仅当分支为 `main` 时才触发部署逻辑。 #### 注册与管理 Runner 完成 `.gitlab-ci.yml` 文件编写之后,还需要注册至少一个 GitLab Runner 来实际执行流水线的任务。Runner 负责处理由 GitLab 发起的各种作业请求。可以通过命令行安装并注册共享或专用 runner 到指定实例上。 对于更复杂的环境需求,比如隔离的应用程序上下文或者依赖特定操作系统版本的情况,则可考虑利用 Docker 执行器类型的 Runners 或者其他高级选项如 Kubernetes Executor 等[^2]。 #### 凭证管理和安全性设置 如果项目涉及敏感数据访问权限控制等问题,那么合理地存储密码及其他机密信息就显得尤为重要。Jenkins 用户可能熟悉通过插件方式添加凭证的操作方法;而在 GitLab 中同样提供了类似的机制——即变量功能。可以在 Web UI 上面的安全区域里设定加密后的全局变量或是每条 pipeline 特定参数,并将其引用至 .yml 文件当中以便安全调用[^3]。 综上所述,借助完善的文档指导和技术社区的支持,任何团队都可以快速入门并充分利用好 GitLab 平台所提供的强大 CI/CD 工具集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值