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

如何在Python脚本中获取Jenkins运行中任务的相关信息?

在Jenkins流水线中获取构建任务信息的Python实现

Jenkins在流水线运行时会自动注入一系列环境变量,这是获取当前构建信息最可靠的方式,完全不需要依赖socket.gethostname()这类间接方法,和你提到的Databricks上下文获取思路类似,都是直接从运行环境中拿官方提供的元数据。

关键环境变量说明

Jenkins会自动设置以下核心变量,直接用Python的os.environ就能读取:

  • BUILD_URL: 当前构建的完整链接(比如https://jenkins.foo.com/job/PYTHON-TEST/job/env_test/226/)
  • JENKINS_URL: Jenkins实例的基础地址(https://jenkins.foo.com/)
  • JOB_NAME: 完整任务名,多级任务会用/分隔(比如PYTHON-TEST/env_test)
  • BUILD_NUMBER: 当前构建的编号(比如226)

Python实现函数

下面是直接解析这些环境变量的函数,能返回你需要的完整链接和拆分后的四个部分:

import os
from urllib.parse import urlparse

def get_jenkins_build_info():
    # 从环境变量中读取Jenkins提供的元数据
    build_url = os.environ.get('BUILD_URL')
    if not build_url:
        return None  # 非Jenkins环境下返回None

    # 解析完整链接提取主机地址
    parsed_url = urlparse(build_url)
    jenkins_host = parsed_url.netloc

    # 解析多级任务路径
    path_segments = parsed_url.path.lstrip('/').split('/')
    # 从路径中提取任务名和构建号
    job_segments = []
    build_number = ''
    for i in range(len(path_segments)):
        if path_segments[i] == 'job' and i+1 < len(path_segments):
            job_segments.append(path_segments[i+1])
        if path_segments[i].isdigit():
            build_number = path_segments[i]

    parent_job = job_segments[0] if len(job_segments) >=1 else ''
    sub_job = job_segments[1] if len(job_segments) >=2 else ''

    return {
        'full_url': build_url,
        'jenkins_host': jenkins_host,
        'parent_job': parent_job,
        'sub_job': sub_job,
        'build_number': build_number
    }

# 测试调用
if __name__ == '__main__':
    info = get_jenkins_build_info()
    if info:
        print("完整构建链接:", info['full_url'])
        print("Jenkins主机:", info['jenkins_host'])
        print("父任务名:", info['parent_job'])
        print("子任务名:", info['sub_job'])
        print("构建编号:", info['build_number'])
    else:
        print("当前不在Jenkins流水线环境中运行")

为什么这是最优方案?

  • 官方可靠: 环境变量是Jenkins原生提供的,不会因为hostname变化、网络配置改变而失效
  • 无需额外依赖: 只用Python标准库,不需要安装任何第三方包
  • 信息完整: 直接拿到所有需要的元数据,不用做字符串拼接或猜测

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:05:11