3

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

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

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

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

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

4

4 回答 4

1

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

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

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

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

hooks:
  BeforeInstall:
    - location: /scripts/before_install.sh
  AfterInstall:
    - location: /scripts/after_install.sh
于 2019-09-19T15:24:19.087 回答
0

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

将应用数据与部署包保存在同一目录中并不是一个好方法。

于 2017-05-14T05:37:26.247 回答
0

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

然后,每次添加新目录或根文件时都需要更新 appspec 文件。

于 2017-05-27T01:23:30.890 回答
-2

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

于 2017-05-26T00:34:56.727 回答