我正在尝试使用Bitbucket pipeline和AWS CodeDeploy将不同类型的文件组部署到不同的环境中。在Pipelines中,我使用zip命令(来自apt-get)将特定环境的所有文件打包,并将它们上传到CodeDeploy(使用CodeDeploy管道,它似乎期望一个zip文件)。
最近的一个更改使得使用单行命令来提供所有必要的文件以进行压缩变得笨拙,因此我想使用文件列表来代替。问题是我有几个子文件夹,我需要递归地抓取所有文件,而在其他子文件夹中,我需要抓取特定的文件。我还需要保留文件夹结构。
如果可能的话,我也不想手动添加每一个路径,因为在这些子目录中有很多文件,而且我也想减少我们忘记向这些列表添加新文件的情况。我也不想要求开发人员在本地运行脚本,但我可以创建一个脚本在管道中使用。我尝试在zip中使用-R@选项,但它给出了错误zip error: Invalid command arguments (nothing to select from)
。
文件夹结构示例:
file1.txt
ziplist.txt
folder1/file2.js
folder1/file3.txt
folder1/folder2/file4.png
folder1/folder2/file5.jpg
folder1/folder3/file6.tsx
folder1/folder3/file7.mp3
ziplist.txt:
file1.txt
folder1/file2.js
folder1/folder2/file5.jpg
folder1/folder3/*
使用命令cat ziplist.txt | zip -R@ application.zip
,我希望得到一个包含以下文件的压缩包:
file1.txt
folder1/file2.js
folder1/folder2/file5.jpg
folder1/folder3/file6.tsx
folder1/folder3/file7.mp3
谢谢你的帮助。
我能够通过删除zip列表中文件夹路径的/*
来使其工作,然后使用xargs将列表转换为命令行参数,如下所示:
cat ziplist.txt | xargs zip -r application.zip