Можем ли мы разрешить codepipeline хранить только обновленный файл на S3?

У меня возникли проблемы с AWS Codepipeline, вместо развертывания всего репозитория Codecommit в корзине S3 я бы хотел, чтобы Codepipeline развертывал только один обновленный файл. Здесь задается тот же вопрос: Codepipeline: развертывание только определенных файлов на s3 но мне не нужен какой-то конкретный файл. Любой файл, будь то HTML или Css, только тот, который обновлен, должен быть развернут на S3.

Я использую AWS CodeBuild, мой файл yaml развертывания таков:

version: 0.2

phases:
  install:
    commands:
      - echo Entered the install phase...
      - apt-get update -y
build:
  commands:
    - echo Building...
artifacts:
  files:
    - index.html
  discard-paths: yes
  secondary-artifacts:
    artifact1:
      files:
        - index.html

Теперь в приведенном выше коде вместо index.html в артефактах, что я должен написать, чтобы даже если какой-либо другой файл был изменен или обновлен, то только этот единственный файл должен был быть обновлен в корзине S3.


person Hetul Sheth    schedule 01.05.2020    source источник
comment
Вы можете уточнить? Вы хотите, чтобы артефактом был только index.html?   -  person Marcin    schedule 01.05.2020
comment
Нет, я хочу, чтобы любой зафиксированный файл отражался. Я хочу, чтобы это было динамично   -  person Hetul Sheth    schedule 01.05.2020
comment
где файлы будут в конечном итоге обновлены? У вас даже нет команд сборки.   -  person Logemann    schedule 01.05.2020


Ответы (1)


К сожалению, в CodeBuild нет встроенной функциональности для этого. Это означает, что вам придется программировать ее самостоятельно в вашей процедуре CodeBuild.

Возможным способом может быть перечисление файлов в вашем репозитории CodeCommit, которые были изменены в последнем коммите. Вы можете сделать это, используя функциональность git.

person Marcin    schedule 01.05.2020
comment
Вы имеете в виду применить функциональность git и ничего не делать с артефактами сборки кода? Если да, я также пытался искать в Интернете на основе этого, но тщетно. Не подскажете, куда добавить этот функционал и как. Также нельзя ли что-то сделать с переменными окружения? - person Hetul Sheth; 02.05.2020
comment
@HetulSheth Я хочу сказать, что в CodeBuild нет такой функциональности. Вы должны реализовать такой функционал самостоятельно. Используя git, как вы используете CodeCommit, можно получить список файлов, которые изменились между двумя последними фиксациями или в последней фиксации. Один из примеров этого показан здесь< /а>. Возможно, другим способом было бы что-то делать с переменными среды, хотя я не знаю, как для этого использовать переменные env в CodeCommit. - person Marcin; 02.05.2020
comment
@HetulSheth Когда я думаю об этом, CodeBuild также поддерживает кэширование. Так что, возможно, вы могли бы использовать это. Иметь предыдущую версию в кэше, и когда новая версия должна быть развернута, можно сравнить две и выбрать только измененные файлы. Или напрямую сравнить файлы с теми, что уже размещены на s3, и определить измененные. - person Marcin; 02.05.2020