Jenkins修改Job工作空间、修改日志路径

本文详细介绍如何在Jenkins中配置工作空间,实现自动化编译流程。包括创建自由风格的软件项目,设置GIT地址,以及修改Jenkins的日志路径等关键步骤。
部署运行你感兴趣的模型镜像

配置Job的工作空间

Job->Configure->General->Advanced->Use custom workspace
在这里插入图片描述

搭建自动化编译

创建一个自由风格的软件项目,并输入名字
在这里插入图片描述设置项目的GIT地址
在这里插入图片描述

修改Jenkins的日志路径

在Jenkins安装路径C:\Users\Administrator.jenkins下,文件config.xml中修改配置,同理工作空间也可以在此进行修改

<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
<buildsDir>F:/NimoPC/logs/${ITEM_FULL_NAME}/builds</buildsDir>

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think> 嗯,用户这次问的是Jenkins任务取消异常后如何释放未释放的workspace路径的问题。从对话历史看,用户之前已经在研究清理workspace的方法,现在更聚焦在“异常取消”这种特定场景下的处理。 用户可能是个DevOps工程师或者CI/CD维护人员,最近遇到了jenkins任务被强制终止导致workspace残留的问题。ta的深层需求不仅是清理方法,更想建立自动化机制预防空间浪费。引用材料里提到python脚本遍历删除的思路很实用,但需要补充异常场景的特殊性。 让我拆解关键点:首先是“任务取消异常”这个触发条件,可能是手动abort或系统故障;其次是“未释放”说明jenkins没有正常回收;最后“路径”暗示需要精准定位。常规清理脚本可能漏掉这类非常规残留。 引用[1]的python方案是基础,但需要强化三点:一是增加进程锁检查,避免误删正在运行的job;二是针对abort状态设计重试机制;三是结合引用[2]的日志分析找出异常退出特征。用户没提操作系统,但linux和windows的进程检测命令差异很大,这个需要确认。 突然想到个隐患:如果任务用了Docker容器,workspace可能挂载在volume里,物理路径和逻辑路径不一致。这个虽然用户没提,但在异常终止时更容易出现残留,值得在方案里补充说明。 用户引用中特别标注“python jenkinsapi实现”,说明ta倾向编程解决。那响应应该突出代码示例的可扩展性,比如如何添加自定义异常处理模块。另外引用[3]提到workspace路径配置问题,暗示用户可能遇到多节点环境,需要强调路径解析的逻辑。 </think> 针对Jenkins任务**异常取消后未释放的workspace路径**的问题,以下是系统化的解决方案: --- ### **核心思路** 通过**自动化脚本**定期扫描并清理无效的workspace路径,需满足以下条件: 1. **关联性检测**:检查workspace路径是否对应已删除或无效的Jenkins任务 2. **状态验证**:确保目标Job当前无活跃进程占用 3. **安全删除**:移除残留文件前确认路径归属 --- ### **解决方案步骤** #### 1. **Python脚本实现(推荐)** ```python import os import jenkins import psutil # Jenkins服务配置 server = jenkins.Jenkins('http://jenkins-url:port', username='user', password='token') node_workspace_root = '/var/lib/jenkins/workspace' # 节点workspace根目录 def clean_orphaned_workspaces(): active_jobs = [job['name'] for job in server.get_all_jobs()] # 获取所有活跃Job名称 for dir_name in os.listdir(node_workspace_root): dir_path = os.path.join(node_workspace_root, dir_name) # 检查目录是否为Job目录且Job已被删除 if dir_name not in active_jobs: # 检测进程占用(关键!防止误删运行中任务) if not is_path_locked(dir_path): print(f"删除残留workspace: {dir_path}") os.system(f"rm -rf {dir_path}") # 安全删除 def is_path_locked(path): """检查路径是否被进程占用""" for proc in psutil.process_iter(): try: if path in [f.path for f in proc.open_files()]: return True except (psutil.NoSuchProcess, psutil.AccessDenied): continue return False clean_orphaned_workspaces() ``` > **说明**: > - 依赖库:`python-jenkins`, `psutil` > - 通过`get_all_jobs()`获取有效Job列表[^1] > - `psutil`检测文件锁避免误删运行中任务[^2] #### 2. **Jenkins内置清理机制** ```groovy // Jenkinsfile 配置丢弃旧构建 properties([ buildDiscarder(logRotator( daysToKeepStr: '7', numToKeepStr: '10' )) ]) ``` > **作用**:自动清理历史构建数据,间接减少workspace残留概率[^2] #### 3. **强制释放脚本(Linux节点)** ```bash #!/bin/bash # 查找并释放被锁定的workspace lsof | grep '/var/lib/jenkins/workspace' | awk '{print $2}' | xargs kill -9 ``` > **警告**:仅限紧急使用!强制终止进程可能导致数据损坏 --- ### **关键注意事项** 1. **权限控制**: - 脚本需以Jenkins进程用户(通常为`jenkins`)运行 - 删除前建议备份:`cp -Rp workspace workspace_bak` 2. **自定义路径处理**: 若Job配置了自定义workspace路径(非默认位置),需同步修改脚本中的扫描路径[^3] 3. **多节点同步**: - 在**所有Slave节点**部署清理脚本 - 建议通过Jenkins Pipeline统一触发分布式清理任务 --- ### **典型异常场景处理** | 场景 | 解决方案 | |-------------------------------|------------------------------| | 任务被`kill -9`强制终止 | 脚本自动检测进程锁并清理 | | Job配置残留但页面已删除 | `get_all_jobs()`过滤失效Job | | 硬盘空间不足导致的卡死 | 脚本优先清理超1GB的旧目录 | | Docker容器挂载的workspace | 增加`docker ps`状态检测 | --- ### **自动化建议** 1. **定时任务**:通过cron每日执行清理脚本 ```bash 0 2 * * * /opt/clean_jenkins_workspace.py >> /var/log/clean.log ``` 2. **邮件通知**:在脚本中添加邮件报警,上报删除记录 3. **审计日志**:记录删除操作的时间、路径及大小 > 通过上述方案,可有效解决**任务异常取消后的workspace残留**问题,同时避免影响正常运行中的任务[^1][^2]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值