You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes Pod中预装Python、MongoDB以运行Jenkins测试

解决方案

1. 不要放弃Helm,用它配置自定义Agent是最优解

Helm可以帮你统一管理Jenkins的所有配置,包括Agent Pod模板,完全不需要硬编码安装命令到Jenkinsfile。

2. 构建预装依赖的Jenkins Agent镜像

默认的Jenkins Agent镜像没有Python和MongoDB相关工具,你需要自己构建一个包含这些依赖的镜像:

Dockerfile示例

FROM jenkins/inbound-agent:latest

USER root
# 安装Python3.9、pip、pytest及MongoDB客户端
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3.9 python3-pip mongodb-clients \
    && rm -rf /var/lib/apt/lists/*

# 把python3.9设为默认python
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
RUN update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# 安装Python测试依赖
RUN pip install --no-cache-dir pytest pymongo

USER jenkins

构建并推送镜像到你的私有镜像仓库:

docker build -t your-registry/my-jenkins-python-agent:v1 .
docker push your-registry/my-jenkins-python-agent:v1

3. 修改Helm values.yaml配置自定义Pod模板

打开你使用的Helm values.yaml,找到agent配置段,添加自定义Pod模板:

关键配置片段

agent:
  enabled: true
  # 配置自定义Pod模板
  podTemplates:
    - name: "python-mongo-agent"
      label: "python-mongo-agent"
      containers:
        - name: "jnlp"
          image: "your-registry/my-jenkins-python-agent:v1" # 替换为你的镜像地址
          imagePullPolicy: "IfNotPresent"
          # 可选:添加MongoDB服务端作为sidecar容器(如果测试需要本地MongoDB)
          # - name: "mongodb"
          #   image: "mongo:6.0"
          #   env:
          #     - name: MONGO_INITDB_ROOT_USERNAME
          #       value: "admin"
          #     - name: MONGO_INITDB_ROOT_PASSWORD
          #       value: "password"
          #   ports:
          #     - containerPort: 27017

4. 调整Jenkinsfile使用自定义Agent

在Jenkinsfile中指定使用你配置的Agent标签,直接使用预装的依赖:

Jenkinsfile示例

pipeline {
  agent { label 'python-mongo-agent' }
  stages {
    stage('Run Tests') {
      steps {
        sh 'python --version'
        sh 'pytest --version'
        # 如果用了sidecar MongoDB,测试代码连接地址为 mongodb://admin:password@localhost:27017
        sh 'mongosh --version'
      }
    }
  }
}

5. 重新部署Jenkins

用修改后的values.yaml执行Helm升级:

helm upgrade jenkins jenkinsci/jenkins -f your-custom-values.yaml

关于MongoDB服务端的额外说明

  • 如果测试需要独立的MongoDB服务,推荐在K8s集群中单独部署MongoDB(用Helm安装官方MongoDB chart),然后在测试代码中通过K8s Service名称连接(比如mongodb://mongodb-service:27017),比sidecar更稳定。

内容的提问来源于stack exchange,提问作者Vaibhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:25:12