如何从Jenkins作业工作区删除生成

如何从Jenkins作业工作区删除生成,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我想知道是否可以从作业工作区中只删除一个构建(包括工件) 我试图在构建历史记录中“删除构建”,但它所做的只是从构建历史记录表中删除构建引用。我知道我可以通过ssh连接到服务器并从命令行删除文件,但我正在寻找一种从Jenkins web界面执行此操作的方法 安装工作区清理插件后,我可以清除当前工作区,但我希望保留工作区中的其他版本。在Jenkins实例中,可以在作业设置中设置文件夹/每个版本-设置标志“使用自定义工作区”。以下是设置说明中的简要帮助信息: For each job on Jenki

我想知道是否可以从作业工作区中只删除一个构建(包括工件)

我试图在构建历史记录中“删除构建”,但它所做的只是从构建历史记录表中删除构建引用。我知道我可以通过ssh连接到服务器并从命令行删除文件,但我正在寻找一种从Jenkins web界面执行此操作的方法


安装工作区清理插件后,我可以清除当前工作区,但我希望保留工作区中的其他版本。

在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将是“我的工作名称”,$BUILD_NUMBER是构建编号,等式为“123”

这种方法有一个严重的问题,这就是为什么我不建议使用它——Jenkins将无法为过时的构建回收磁盘空间。您将不得不手动处理过时版本的清理,这是一个很大的麻烦

另一种方法是使用默认的工作区设置,并将生成输出(文件、原始源代码、库等)存档为生成后操作,这种方法为您提供了更多的控制、工具,并且能够控制磁盘空间的使用(无需您的监督)。非常方便,让您可以访问一大堆伟大的工具,如,或在其他工作


希望这些信息能帮助您做出最符合您需要的决策。

在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将是“我的工作名称”,$BUILD_NUMBER是构建编号,等式为“123”

这种方法有一个严重的问题,这就是为什么我不建议使用它——Jenkins将无法为过时的构建回收磁盘空间。您将不得不手动处理过时版本的清理,这是一个很大的麻烦

另一种方法是使用默认的工作区设置,并将生成输出(文件、原始源代码、库等)存档为生成后操作,这种方法为您提供了更多的控制、工具,并且能够控制磁盘空间的使用(无需您的监督)。非常方便,让您可以访问一大堆伟大的工具,如,或在其他工作

希望这些信息能帮助您做出最符合您需要的决策。

我还在Windows计算机上使用“通用/高级/使用自定义工作区”(如@pabloduo的回答),包括:

C:\${JOB_NAME}\${BUILD_NUMBER}
只是想添加一个解决方案来摆脱构建作业的工作区

我用这个

使用插件的标准配置,我只使用以下Groovy脚本:

if (event == Event.JOB_DELETED){
  new File(env.WORKSPACE).deleteDir()
}
现在,当生成作业被删除时,自定义工作区被删除

请注意这也会删除非自定义工作区(因为该事件是针对Jenkins服务器上的所有作业触发的)。

我还在Windows计算机上使用“常规/高级/使用自定义工作区”(如@pabloduo的回答中所述),类似于:

C:\${JOB_NAME}\${BUILD_NUMBER}
只是想添加一个解决方案来摆脱构建作业的工作区

我用这个

使用插件的标准配置,我只使用以下Groovy脚本:

if (event == Event.JOB_DELETED){
  new File(env.WORKSPACE).deleteDir()
}
现在,当生成作业被删除时,自定义工作区被删除


请注意这也会删除非自定义工作区(因为该事件是为Jenkins服务器上的所有作业触发的)。

删除生成不仅仅是删除引用。哪些文件未被清理?如果您已将Jenkins配置为归档生成的工件,则Jenkins将在删除生成时删除这些工件,但Jenkins不会将工件存储在作业的工作区中。您的工作负责管理工作区。听起来您需要配置Jenkins来归档适当的工件,并停止使用作业的工作区进行存储。@BMitch运行作业时,我的脚本会从网络位置下载一些位图,并将它们保存在作业工作区(job_NAME/ws/BUILD_NO/)。构建完成后,我希望保留这些文件,因为其他团队可能需要它们进行进一步分析。稍后,当空间用完时,我需要删除一些构建,但不需要删除最旧的构建。当我从生成历史记录表中删除位图时,位图仍然占用磁盘空间。@DaveBacher感谢您指出这一点。问题是工件存储在主节点上,而我在从节点上运行作业,更喜欢将大部分文件保留在本地工作区中。“删除构建”不仅仅是删除引用。哪些文件未被清理?如果您已将Jenkins配置为归档生成的工件,则Jenkins将在删除生成时删除这些工件,但Jenkins不会将工件存储在作业的工作区中。您的工作负责管理工作区。听起来您需要配置Jenkins来归档适当的工件,并停止使用作业的工作区进行存储。@BMitch运行作业时,我的脚本会从网络位置下载一些位图,并将它们保存在作业工作区(job_NAME/ws/BUILD_NO/)。构建完成后,我希望保留这些文件,因为其他团队可能需要它们进行进一步分析。稍后,当空间用完时,我需要删除一些构建,但不需要删除最旧的构建。当我从生成历史记录表中删除位图时,位图仍然占用磁盘空间。@DaveBacher感谢您指出这一点。问题是工件存储在主节点上,而我在从节点上运行作业,并且更喜欢将大部分文件保存在本地工作区中。