【python】基于jenkins参数化构建的远程触发构建

一、场景

  由于公司需要对内部项目管理软件提交流程进行校验,基于公司现有的jenkins,gitlab,内部研发平台等基础设施,采用jenkins参数化流水线方案,研发平台远程触发的方式进行CD流程

 

二、jenkins配置

2.1创建一个自由风格的流水线项目

 

 

 

2.2配置参数

image

2.3配置流水线pipeline

pipeline {
    agent any
    
    // 1. 参数化配置(供前端开发传递的变量)
    parameters {
        string(
            name: 'ITERATION_VERSION',
            description: '迭代版本号(如:V2.3.0)',
            defaultValue: ''
        )
        string(
            name: 'ONES_LINK',
            description: 'ONES任务链接(样例:http://xxx/project/#/team/xxxxx/task/NvnAHvdWfHOATeuL)',
            defaultValue: ''
        )
    }
    
    environment {
        ONES_ID = ""  // 提取的onesid
        TEST_SCRIPT_PATH = "./test.py"  // test.py 校验脚本路径
    }
    
    options {
        gitLabConnection('gitlab')
        disableConcurrentBuilds()  // 禁止并发构建
    }
    
    stages {
        stage('初始化与清理') {
            steps {
                dir("$BUILD_NUMBER") {
                    deleteDir()
                }
                script {
                    echo "参数校验开始..."
                    if (!params.ITERATION_VERSION) {
                        error "迭代版本号(ITERATION_VERSION)不能为空"
                    }
                    echo "ITERATION_VERSION: ${ITERATION_VERSION}"
                    if (!params.ONES_LINK) {
                        error "ONES任务链接(ONES_LINK)不能为空"
                    }
                    echo "ONES_LINK: ${ONES_LINK}"
                    echo "参数校验通过"
                }
            }
        }
        
        
        stage('后续流程') {
            steps {
                echo "ONES任务校验通过,执行后续上线流程..."
                // 此处添加实际上线流程(如构建、部署等)
            }
        }
    }
    
    post {
        success {
            updateGitlabCommitStatus name: 'build', state: 'success'
            addGitLabMRComment comment: "构建成功!日志地址:${env.BUILD_URL}console"
        }
        failure {
            updateGitlabCommitStatus name: 'build', state: 'failed'
            addGitLabMRComment comment: "构建失败!日志地址:${env.BUILD_URL}console"
        }
        always {
            cleanWs()
        }
    }
}

配置好然后保存即可

2.4创建测试的jenkins api token

image

 添加token并记住,不然还得重新建

image

下面脚本认证要用 

 

 

三、调用脚本

import requests
from requests.auth import HTTPBasicAuth

# Jenkins配置信息
JENKINS_URL = "http://xxxxxx"  # 替换为你的jenkins 地址
JOB_NAME = "your-job-name" # 替换为你的job 名称
USERNAME = "{username}"  # 替换为你的Jenkins用户名
API_TOKEN = "xxxxxxxxxxxxxxxxxxxxx"  # 替换为你的Jenkins API Token

# 构建参数
params = {
    "ONES_LINK": "6YKpNQAKNVGCMGK3",  # 替换为实际ONES_LINK值
    "ITERATION_VERSION": "3.22.0"  # 替换为实际ITERATION_VERSION值
}

# 构建请求URL
job_url = f"{JENKINS_URL}/job/{JOB_NAME}/buildWithParameters"

try:
    # 发送POST请求
    response = requests.post(
        job_url,
        auth=HTTPBasicAuth(USERNAME, API_TOKEN),
        params=params
    )

    # 检查响应状态
    if response.status_code == 201:
        print("Jenkins Job触发成功!")
        print(f"查看构建队列: {JENKINS_URL}/queue/item/{response.headers.get('Location').split('/')[-2]}/")
    else:
        print(f"触发失败,状态码: {response.status_code}")
        print(f"响应内容: {response.text}")
except Exception as e:
    print(f"发生错误: {str(e)}")

 

 

四、测试

右键运行,然后去jenkins上检查即可

 

posted @ 2025-09-30 16:27  代码诠释的世界  阅读(6)  评论(0)    收藏  举报