jenkins 每次编译前清理workspace空间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins 每次编译前清理workspace空间相关的知识,希望对你有一定的参考价值。
参考技术A 在某种环境下,workspace已经存在的内容会影响下次编译,需要在编译前删除该空间下的内容需要安装一个插件,然后在编译前 清除workspace空间
Workspace Cleanup Plugin
直接在插件管理界面,搜索安装即可
安装完成之后(该插件不启用的话,是不会自动应用到所有jobs的),在需要删除workspace的job配置界面,会增加一个选项
勾选即可
Jenkins 学习笔记:我们的JAVA 项目是这么发布的
发布拓扑
1. 拓扑图
2. 流程说明:
- Git 插件从 Git Server 上面拉取源代码.
- Maven 插件将源代码安装我们设定的指令进行编译打包,存放于项目的 WorkSpace.
- Publish Over SSH 插件将 WorkSpace 中准备好的数据发送到跳板机
- 跳板机上面的发布脚本将数据同步到 Target Server
3. 细节说明
Maven 如何对代码进行编译打包,这个是开发来提的。
Jenkins 可以直接将项目发布到 Target Server,但是我们的生产服务器是好几个内网网段。所以思路是:先将代码发布到跳板机,跳板机上面有一个 shell 脚本,脚本内容无非是 scp,rsync 工具,将数据同步到目标服务器指定的路径。
我们的配置
1. 参数配置
为了在底层保留每次构建的代码,我们创建了两个参数:版本号。 这样可以让底层 jobs 目录中的项目的目录结构很清晰,版本号用的是日期,更加好区分。
2. 源码管理
配置 Git Repository URL,构建的时候 Jenkins Server 会从仓库拉取代码到 $JENKINS_HOME/workspace/$JOB_NAME 目录下面。 (ps:JOB_NAME 是 Jenkins 内置环境变量
3. 构建环境
我选择每次构建之前都将项目的 workspace 中的内容删除,彻底重来。
4. Pre Steps
构建之前准备环境。
如果选择 "Execute Shell", 那么就把自己想在构建之前准备的文件、目录等等 shell 命令写出来。
5. Build
开始构建。
第一行指定 pom文件,默认为 pom.xml. 第二行指定 maven 的执行序列。具体可以了解 maven 的相关知识,这个命令开发来定。
6. Post Steps
开始发布。
这一步的目的是在Build 之后,数据的二次整理,为『构建后的操作』做准备。所以,如果不需要再次操作,构建好的数据可以直接发布,那无需这一步的设置。
7. 构建后的操作
增加构建后的操作步骤 --> Send build artifacts over SSH. 用 Publish Over SSH 这个插件的功能完成最后的发布工作。
这一步是将在 Jenkins Server 上构建好的数据推送到 Jump Server ,然后又在 Jump server 上面执行一个shell 脚本,将数据推送到 Target Server,脚本内容就是rsync 或者 scp。
(1)推送构件好的数据
(2)执行推送脚本
说明:
- 将 update.sh 推送到跳板机的 脚本存放目录下
- 执行 update.sh 这个内容rsync 为主的脚本,将数据同步到 target,后面是脚本的参数:项目名称,灰度发布,项目版本
参数构建
1. 点击对应的项目
2. 选择 ”用参数构建“
3. 输入参数值
这样就可以实现参数化构建项目,如果选择 ”立即构建“,则这里的参数是 设定时候给定的 ”默认值“。
以上.
以上是关于jenkins 每次编译前清理workspace空间的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins启动报 Caused by: java.io.IOException: 结构需要清理