Есть ли способ исключить каталог в AWS CodeDeploy?

У нас есть автоматическое развертывание из BitBucket, настроенное для развертывания на одном из трех экземпляров EC2. В настоящее время все работает нормально, за исключением того, что наш каталог / data (который содержит загруженные CMS изображения, видео и т. Д.) Не является частью репозитория. Таким образом, во время развертывания существующий каталог / data на конкретном экземпляре удаляется.

Я вижу, что можно установить исключения для владельца файла / группы и разрешений, используя параметр «exclude»; однако такой параметр, похоже, не существует для раздела Files:

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

Кажется, что это обычная проблема, но я пока не смог найти решения. Есть ли у кого-нибудь предложения по исключению файлов для перезаписи во время развертывания?

Единственное, что я могу придумать на данный момент, - это вручную указать каждый каталог, который должен быть переопределен, а также каждый корневой файл в appspec.yml. Это далеко не идеально, так как его нужно будет редактировать каждый раз, когда добавляется новый каталог или корневой файл.


person edwardr    schedule 14.05.2017    source источник


Ответы (4)


Вы должны структурировать данные своего приложения за пределами пакета развертывания.

Хранить данные приложения в том же каталоге, что и пакет развертывания, - не лучший подход.

person Yeshodhan Kulkarni    schedule 14.05.2017
comment
Спасибо за предложение, но в данном случае это не помогает. Я унаследовал устаревшее приложение. И / data в любом случае не является частью репо. Похоже, что на данный момент единственный способ сделать это - указать каждый каталог и / или корневой файл. - person edwardr; 14.05.2017

В случае, если другие ищут, решение состоит в том, чтобы вручную указать каждый каталог и / или файл с помощью директивы appspec "files". Таким образом, файлы, не включенные в список, не будут развернуты.

Затем файл appspec необходимо будет обновлять каждый раз при добавлении нового каталога или корневого файла.

person edwardr    schedule 27.05.2017
comment
Мы ищем способ сделать это и сейчас, трудно поверить, что нет способа исключить шаблон, и вместо этого приходится включать все остальное и поддерживать структуру в актуальном состоянии. Похоже, мне необходимо иметь возможность исключать каталоги. - person pixelwiz; 17.01.2018
comment
Я согласен. Это настоящая PITA, но мы обошлись с ручным указанием каждого каталога в файле appspec. - person edwardr; 06.04.2018

Недавно я столкнулся с такой же проблемой. Мне нужно исключить один файл, но в одном каталоге слишком много файлов, и сложно указать каждый файл в файле 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
person R. dhakad    schedule 19.09.2019

Вы должны иметь возможность добиться этого с помощью свойства except раздела разрешений. См. http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-permissions.html.

person Deblina Gupta    schedule 26.05.2017
comment
Раздел разрешений за исключением предоставляет переопределения для владения файлом / каталогом, но не для включения файла в развертывание. Единственное решение, которое я нашел, - это вручную указать конкретные файлы и каталоги, которые должны быть включены в развертывание. - person edwardr; 27.05.2017