有没有办法在AWS CodeDeploy中排除目录?

时间:2017-05-14 02:16:30

标签: amazon-web-services amazon-ec2 aws-code-deploy amazon-linux

我们将BitBucket的自动部署设置为部署到三个EC2实例中的一个。除了我们的/ data目录(包含CMS上传的图像,视频等)不是存储库的一部分外,目前一切正常。因此,在部署期间,将删除特定实例上的现有/ data目录。

我看到可以使用“exclude”参数为文件所有权/组和权限设置排除项;但是,“文件”部分似乎不存在这样的参数:

http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-files.html

这似乎是一个常见的问题,但我还没有找到解决方案。有没有人建议在部署期间排除文件以进行覆盖?

此时我唯一能想到的是手动指定要覆盖的每个目录以及appspec.yml中的每个根文件。这远非理想,因为每次添加新目录或根文件时都需要对其进行编辑。

4 个答案:

答案 0 :(得分:0)

您应该在部署包之外构建应用程序的数据。

将app数据保存在与部署包相同的目录中不是一个好方法。

答案 1 :(得分:0)

您应该可以使用权限部分的except属性来实现此目的。请参阅http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-permissions.html

答案 2 :(得分:0)

如果其他人正在寻找,解决方案是通过appspec"文件"手动指定每个目录和/或文件。指示。这样就不会部署列表中未包含的文件。

然后,只要添加新目录或根文件,就需要更新appspec文件。

答案 3 :(得分:0)

最近我遇到了同样的问题。我需要排除一个文件,但是同一目录中的文件太多,因此很难在appspec文件中指定每个文件。因此,我创建了两个脚本文件以在安装挂钩之前和之后运行。

OriginalSource

before_install.sh

在脚本上方将文件移动到在部署中不会更新的位置。 #!/bin/bash mv /path/to/file/need/to/exclude/on/deployment /path/to/temp/directory/which/will/not/update/on/deploment

after_install.sh

在脚本上方放置排除文件的先前版本 在appspec.yaml中添加以下行

#!/bin/bash
mv /path/to/temp/excluded/file /path/to/file/exact/location