Jenkins Freestyle项目:清理工作区保留.gitignore并支持开关控制
Jenkins Freestyle 保留.gitignore文件的清理方案及开关控制
Git插件自带的"构建前清理工作区"行为会默认删除所有未跟踪文件(包括.gitignore中标记的),而且没有内置开关选项。要实现仅清理未被忽略的文件+开关控制,可按以下方案操作:
方案1:自定义脚本替代默认清理(推荐)
1. 关闭Git插件的默认清理
进入项目配置,找到Git的「高级行为」,移除「构建前清理工作区」的配置项。
2. 添加开关参数
在「此项目已参数化」中,添加布尔参数:
- 参数名:
CLEAN_IGNORED_FILES - 描述:是否清理.gitignore中的文件
- 默认值:
false(默认保留忽略文件)
3. 添加构建前脚本步骤
根据Jenkins服务器的操作系统,选择对应的脚本步骤:
Linux/macOS 用Shell脚本:
# 根据参数决定清理范围 if [ "$CLEAN_IGNORED_FILES" = "true" ]; then git clean -fdx # 清理所有未跟踪文件(含.gitignore内的) else git clean -fd # 仅清理未被.gitignore忽略的未跟踪文件 fi # 可选:重置已修改的跟踪文件到HEAD状态 git reset --hard HEAD
Windows 用PowerShell脚本:
if ($env:CLEAN_IGNORED_FILES -eq "true") { git clean -fdx # 清理所有未跟踪文件(含.gitignore内的) } else { git clean -fd # 仅清理未被.gitignore忽略的未跟踪文件 } # 可选:重置已修改的跟踪文件到HEAD状态 git reset --hard HEAD
方案2:插件增强(可选)
如果偏好可视化配置,可使用支持.gitignore过滤的清理插件,在「构建环境」中添加清理步骤,同时配合上述布尔参数来切换清理模式。核心逻辑和脚本方案一致,都是通过git clean的-x参数控制是否包含.gitignore内容。
内容的提问来源于stack exchange,提问作者Huỳnh Thăng Lệ
相关产品推荐
相关产品推荐

