当前位置: 首页 > wzjs >正文

哈尔滨网站建设网站开发广州门户网站建设

哈尔滨网站建设网站开发,广州门户网站建设,域名永久买入要多少钱,哈尔滨做网站价格简介 通过 Python 脚本自动化获取 Jenkins 构建日志,可以实现日志分析、错误监控、报告生成等功能。本文档将介绍以下方法: Python-Jenkins 库:官方推荐的 Python 客户端库 日志分页与流式处理:应对大日志文件场景 准备工作 …

简介

通过 Python 脚本自动化获取 Jenkins 构建日志,可以实现日志分析、错误监控、报告生成等功能。本文档将介绍以下方法:

Python-Jenkins 库:官方推荐的 Python 客户端库

日志分页与流式处理:应对大日志文件场景

准备工作

安装依赖库

# 安装 python-jenkins 库(推荐)
pip install python-jenkins

获取 Jenkins 访问凭证
登录 Jenkins Web 界面
点击右上角用户名 > Configure
在 API Token 区域生成 Token(需记录保存)

使用 python-jenkins 库

初始化客户端连接

# 创建 Jenkins 客户端实例
import jenkins
j = jenkins.Jenkins(url='http://jenkins.demonlg.cn',username='your_username',password='your_api_token'  # 或直接使用 API Token
)
# 验证连接
user = j.get_whoami()
print(f"Connected to Jenkins as {user['fullName']}")
**获取构建日志**
```python
def get_build_log(job_name, build_number):try:log = j.get_build_console_output(job_name, build_number)return logexcept jenkins.NotFoundException:print(f"Build #{build_number} not found")except jenkins.JenkinsException as e:print(f"Error: {str(e)}")# 示例:获取 job "my-project" 的最近一次构建日志
last_build = j.get_job_info('my-project')['lastCompletedBuild']['number']
log = get_build_log('my-project', last_build)
print(log[:500])  # 打印前500字符

参数说明

job_name:任务名称(区分大小写)

build_number:构建号(整数)或 ‘lastBuild’ 关键字

支持代理配置:通过 j= Jenkins(…, proxies={‘http’: ‘http://proxy:port’})

使用 Requests 直接调用 API

基础请求示例

import requests
import jenkins
j = jenkins.Jenkins(url='http://jenkins.demonlg.cn',username='your_username',password='your_api_token'  # 或直接使用 API Token
)
def fetch_log(job_name, build_number):url = f"http://jenkins.example.com/job/{job_name}/{build_number}/consoleText"response = j.jenkins_open(requests.Request('GET', url,headers=DEFAULT_HEADERS)))if response.status_code == 200:return response.textelse:raise Exception(f"Request failed: {response.status_code}")# 示例调用
log = fetch_log('android-ci', 42)

高级用法

  • 过滤特定时间段的构建
import datetimedef find_failed_builds(job_name, days=7):builds = j.get_job_info(job_name)['builds']cutoff = datetime.datetime.now() - datetime.timedelta(days=days)results = []for build in builds:build_info = j.get_build_info(job_name, build['number'])timestamp = build_info['timestamp'] / 1000  # 转换为秒if (datetime.datetime.fromtimestamp(timestamp) > cutoff andbuild_info['result'] == 'FAILURE'):results.append(build['number'])return results# 获取最近7天失败的构建号
failed_builds = find_failed_builds('backend-tests')
print(f"Failed builds: {failed_builds}")
  • 日志实时监控
from time import sleep
def monitor_running_build(job_name):while True:build_info = j.get_job_info(job_name)['lastBuild']if build_info['building']:log = j.get_build_console_output(job_name, build_info['number'])print(log.splitlines()[-10:])  # 显示最后10行sleep(10)  # 每10秒检查一次else:print("Build completed")break# 监控正在运行的构建
monitor_running_build('mobile-deploy')
  • 获取特定阶段(stage)OR特定指令(step)日志
    源生接口只能获取整个流水线的日志,如果想获取stage的日志需要自行实现。那如何实现呢?
    有2种方法 pipeline接口or BlueOcean接口。

错误处理建议

  • 常见异常处理
try:log = j.get_build_console_output('invalid-job', 999)
except jenkins.NotFoundException:print("Job or build does not exist")
except jenkins.JenkinsException as e:print(f"Jenkins API error: {str(e)}")
except requests.exceptions.ConnectionError:print("Network connection failed")
  • 重试机制
from tenacity import retry, stop_after_attempt, wait_exponential@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, max=10))
def safe_fetch_log(job_name, build_number):return fetch_log(job_name, build_number)

安全注意事项

凭证存储:避免硬编码凭证,推荐使用环境变量:

import os
username = os.environ.get('JENKINS_USER')
token = os.environ.get('JENKINS_TOKEN')

未更新完后续继续更新。。。

http://www.dtcms.com/wzjs/836732.html

相关文章:

  • 爱做片视频网站哈尔滨网站制作
  • 网站主页图片怎么换北京宣传册高端设计公司
  • 环境艺术设计网站推荐北京有哪些著名网站
  • 案例较少如何做设计公司网站南海区住房城乡建设和水务局网站
  • 做外贸纱线用什么网站长春做网站的公司哪家好
  • 网站开发与运维收费明细公司建设网站的 计划书
  • 长沙有网站建站吗网站轮播图片特效
  • 三网一体网站建设企业网站建设找智恒网络
  • 如何创建自己公司网站小公司如何做网站隔离
  • 服务器和网站的关系网页和网站做哪个好用吗
  • 微信公众平台网站建设新闻报道晋城手机网站建设
  • 163网站视频动做网络公司排名100名
  • 中国建设银行个人信息网站宽带维修
  • 如何验证网站自己做彩票网站犯法吗
  • 建设厅网站上保存键看不见可以自己做网站这么做
  • 企业网站推广方案上海建设网站企业邮箱网站建设服务
  • 怎么做软文代发平台网站珠海建设企业网站的公司
  • 峨山网站建设公众号怎么做微网站
  • 做网站 广州网站没域名
  • 荣成住房和城乡建设部网站移动端关键词优化
  • 哪些网站可以seo襄阳市建设厅官方网站
  • 夏邑网站建设营销策划公司是做什么的
  • 网站建设责任分工表巢湖网站制作
  • 江苏中南建设集团网站是多少网站推广经验
  • 长白山开发建设集团网站合肥网站建设网站建设
  • 网站名和域名厦门装修公司排名前十
  • 怎么做有趣的短视频网站一加手机官网网站
  • 广东 网站建设 公司排名盐城seo培训
  • 东莞建设局网站网站建设补充协议
  • 网站建设公司的方案公司网站管理属于什么职位