【问题标题】:Is there a way to exclude a directory in AWS CodeDeploy?有没有办法在 AWS CodeDeploy 中排除目录?
【发布时间】:2017-10-13 01:47:20
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的建议,但这在这种情况下无济于事。我继承了一个遗留应用程序。而且 /data 无论如何都不是回购的一部分。似乎目前唯一的方法是指定每个目录和/或根文件。
      【解决方案3】:

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

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

      【讨论】:

      • 我们现在也在寻找一种方法来做到这一点,很难相信没有办法排除模式,而是必须包含其他所有内容并保持结构最新。对我来说,排除目录似乎是一项必不可少的功能。
      • 我同意。这是一个真正的 PITA,但我们已经通过手动指定 appspec 文件中的每个目录来解决问题。
      【解决方案4】:

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

      【讨论】:

      • 权限“except”部分提供了文件/目录所有权的覆盖,但不包括部署中的文件。我找到的唯一解决方案是手动指定要包含在部署中的特定文件和目录。
      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多