我想知道是否可以从作业工作区中删除一个构建(包括工件)。
我尝试在构建历史记录中“删除构建”,但它只是从构建历史记录表中删除构建引用。我知道我可以ssh到服务器并从命令行删除文件,但我正在寻找一种方法从Jenkins Web界面。
安装Workspace Cleanup Plugin后,我可以清除当前的工作区,但我希望将其他版本保留在工作区中。
答案 0 :(得分:4)
在Jenkins实例中,为了能够拥有文件夹/每个构建 - 在作业的设置中设置标记“使用自定义工作区”。以下是设置说明的简要帮助信息:
For each job on Jenkins, Jenkins allocates a unique "workspace directory."
This is the directory where the code is checked out and builds happen.
Normally you should let Jenkins allocate and clean up workspace directories,
but in several situations this is problematic, and in such case, this option
lets you specify the workspace location manually.
One such situation is where paths are hard-coded and the code needs to be
built on a specific location. While there's no doubt that such a build is
not ideal, this option allows you to get going in such a situation.
...
您的自定义目录路径如下所示:
workspace\$JOB_NAME\$BUILD_NUMBER ~> workspace\my-job-name\123
其中$ JOB_NAME将是“my-job-name”,$ BUILD_NUMBER是内部版本号,eq。 “123”。
这种方法存在一个令人讨厌的问题,这就是为什么我不建议使用它 - Jenkins将无法为过时的构建回收磁盘空间。你必须手动清理过时的构建,这很麻烦。
替代方法,为您提供更多控制,工具并能够控制磁盘空间使用(无需监督)是使用默认工作区设置并归档您的构建输出(文件,原始源代码,库等。 )作为一个后期制作行动。非常方便,可让您在其他工作中访问一大堆优秀工具,例如Copy Artifact Plugin或ArtifactDeployer Plugin。
希望信息可以帮助您做出最符合您需求的决定。
答案 1 :(得分:0)
我还使用"常规/高级/使用自定义工作区" (如在@pabloduo的答案中)在Windows机器上使用类似于:
C:\${JOB_NAME}\${BUILD_NUMBER}
只是想添加一个解决方案来摆脱构建工作的工作区。
我使用Groovy Events Listener Plugin。
使用插件的标准配置我只使用以下Groovy脚本:
if (event == Event.JOB_DELETED){
new File(env.WORKSPACE).deleteDir()
}
现在删除构建作业时会删除自定义工作区。
请注意这也会删除非自定义工作区(因为会为Jenkins服务器上的所有作业触发事件)。