Jenkins部署AWS Lambda时.gitignore文件被覆盖,如何忽略指定文件?
解决Jenkins部署时忽略指定文件的问题
你遇到的这个问题其实挺常见的——.gitignore配置好了但Jenkins还是会带上目标文件,核心原因是.gitignore的生效逻辑和Jenkins构建流程的细节需要配合起来。我给你梳理几个关键的排查和配置步骤:
1. 先确认文件是否已被Git追踪
.gitignore只对未被Git追踪的文件生效。如果helper/connection_util.py之前已经被commit到Bitbucket仓库里了,那即使后来加了.gitignore,Git还是会继续同步这个文件到Jenkins的工作空间。
解决方法:
- 在本地仓库执行命令,把这个文件从Git追踪中移除,但保留本地文件:
git rm --cached helper/connection_util.py - 提交这个变更并推送到Bitbucket:
git commit -m "Stop tracking connection_util.py" git push
这样Jenkins下次拉取代码时,就不会从仓库获取这个文件了。
2. 检查Jenkins构建的打包/部署步骤
如果你的Jenkins任务是通过打包(比如zip)然后上传到AWS Lambda,那要确保打包命令里明确排除这个文件,避免把工作空间里可能残留的文件打包进去。
比如用zip命令的话,修改成:
zip -r lambda-package.zip . -x "helper/connection_util.py" "env/*" ".vscode/*" "ve/*" ".idea/*"
这里-x参数就是用来排除指定文件或目录的,把你不想打包的内容都列进去。
3. 清理Jenkins工作空间的残留文件
有时候之前构建留下的旧文件会影响新的构建。你可以:
- 在Jenkins任务中添加构建前步骤:选择"Delete workspace before build starts"(需要安装对应的插件),这样每次构建前都会清空工作空间,确保拉取的是最新的干净代码。
- 或者在构建脚本开头手动删除这个文件:
rm -f helper/connection_util.py
4. 确认Jenkins Git插件的 checkout 配置
进入Jenkins任务的配置页面,找到Git源码管理部分,检查是否勾选了"Clean before checkout"选项。这个选项会在拉取代码前清理工作空间的未追踪文件和修改,确保仓库内容和远程完全一致。
按这几个步骤排查下来,应该就能解决Jenkins部署时覆盖connection_util.py的问题了。
内容的提问来源于stack exchange,提问作者Poorvi Nigotiya




