环境

Linux:5.5
jenkins:2.5

场景

由于公司的项目不断增多,导致jenkins拉取的项目也就越来越多,项目的代码、jar包、资源文件,占用了很多磁盘空间;而且有些资源是重复的!

比如项目的jar包就是重复的。

当项目部署到jenkins后,jenkins会给每个项目都创建一个工作目录,这个工作目录就是里面就是我们拉取的项目。

今天jenkins,出现不能使用的情况,原因是磁盘空间不够,我之前也处理过一次,
可以参考 centos7中根据文件大小排序以及jenkins配置每周删除一次jobs日志信息

而这次磁盘不够处理情形是:Linux中启动jenkins时报No space left on device错误的解决办法


基于上面的情形,我想了下,还可以优化下,就是把jar包统一放到一个目录下。

目录结构

jenkins项目代码路径:/home/jenkins/workspace

下图是里面的项目名:
这里写图片描述

脚本

完整的脚本,很简单:

cd ${WORKSPACE%/*}
./mvlib.sh ${WORKSPACE##*/}

mvlib.sh的内容就是:

#!/bin/bash
cd $1
mv `find . -path "*/lib/*"  -name "*.jar"` ../lib/

稍微讲解下:

${WORKSPACE%/*} 中的WORKSPACEjenkins的内置变量,表示当前项目的工作目录。而后面的%/*的意思是从右边开始的第一个/(包括/)开始,后面的内容都删除掉。
比如:WORKSPACE的路径是:/home/jenkins/workspace/ggnews-pro
那么${WORKSPACE%/*},显示的结果就是:/home/jenkins/workspace

${WORKSPACE##*/}中的##*/表示的是从左边开始,删除最后一个/以后的内容,包括/

${WORKSPACE##*/}结果就是:ggnews-pro

这一块可以参考: Linux shell 之 提取文件名和目录名的一些方法

总结

这一块是纯脚本知识。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐