您的位置:首页 > 运维架构 > Shell

jenkins中使用脚本来节省资源空间和使用shell提取文件名或目录名的方法

2017-07-31 17:44 656 查看

环境

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%/*}
中的
WORKSPACE
jenkins
的内置变量,表示当前项目的工作目录。而后面的
%/*
的意思是从右边开始的第一个
/
(包括
/
)开始,后面的内容都删除掉。

比如:
WORKSPACE
的路径是:
/home/jenkins/workspace/ggnews-pro


那么
${WORKSPACE%/*}
,显示的结果就是:
/home/jenkins/workspace


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


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


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

总结

这一块是纯脚本知识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: