一、背景
随着AI大模型的应用越来越广泛,编程语言Python也更显得更加实用。 许多对接AI的库都是先在python中应用,才逐步推广至其他编程语言。
接下来,我们将介绍python编程的CI/CD流程及其实现。
包括以下几个部分:
- jenkins pod template配置
- jenkins jenkinsfile文件
- jenkins job配置
- docker私有仓库
- k8s的deployment和service(略)
限于篇幅,将按CI/CD分为两部分,本文阐述CI部分,有了docker镜像,想要部署到k8s就容易了。(换句话说,k8s部署本身是不区分语言,java还是python,或者go等等)
二、pod template

1、新增pod template
输入Pod模板的名称和命名空间。
2、新增容器jnlp
jenkins集群是采用k8s动态扩展,每运行一个job,就是创建一个k8s pod节点,所以job之间互不干扰。
jnlp镜像是我自己私库的地址,你可以使用外网的,更倾向于使用私库的。
3、新增容器docker
制作docker镜像,推送至仓库

4、配置pod环境变量

5、添加卷
docker镜像必须要添加Host Path Volume,主机路径和挂载路径均为/var/run/docker.sock 
6、拉取镜像的Secret

7、节点选择器
保证pod是在worker角色的节点上创建。node-role.kubernetes.io/worker=worker

三、jenkinsfile
docker构建并推送至私库,封装在类docker.groovy里
- 版本号默认写在项目的根目录的.version文件里
- 项目的根目录还需要编写自己的Dockerfile文件,用于构建docker镜像
因为编译打包的过程都在Dockerfile中,所以整个jenkinsfile的流程就三步:
- 第一步,拉取git代码
- 第二步,读取程序的版本号
- 第三步,构建docker镜像,并推送
对项目的要求,见下图:

#!groovy
@Library(\’jenkinslib\’) _
// gitlab的ssh密钥,修改为你自己的
String gitlabCredentialsId = \”xxx\”
def tools = new com.xxx.devops.tools()
def docker = new com.xxx.devops.docker()
// 服务名称
String serviceName = \”${env.servi

