У меня возникли проблемы с 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.

2
Hetul Sheth 1 Май 2020 в 14:55
Вы можете уточнить? Вы хотите, чтобы артефактом был только index.html?
 – 
Marcin
1 Май 2020 в 15:07
Нет, я хочу, чтобы любой зафиксированный файл отражался. Я хочу, чтобы это было динамично
 – 
Hetul Sheth
1 Май 2020 в 16:56
Где файлы будут в конечном итоге обновлены? У вас даже нет команд сборки.
 – 
Logemann
1 Май 2020 в 20:02

1 ответ

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

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

0
Marcin 2 Май 2020 в 06:26
Вы имеете в виду применить функциональность git и ничего не делать с артефактами сборки кода? Если да, я также пытался искать в Интернете на основе этого, но тщетно. Не подскажете, куда добавить этот функционал и как. Также нельзя ли что-то сделать с переменными окружения?
 – 
Hetul Sheth
2 Май 2020 в 06:14
Я хочу сказать, что в CodeBuild нет такой функциональности. Вы должны реализовать такой функционал самостоятельно. Используя git, как вы используете CodeCommit, можно получить список файлов, которые изменились между двумя последними фиксациями или в последней фиксации. Один из примеров этого показан здесь< /а>. Возможно, другим способом было бы что-то сделать с «переменными среды», хотя я не знаю, как для этого использовать переменные env в CodeCommit.
 – 
Marcin
2 Май 2020 в 06:24
Насколько я понимаю, CodeBuild также поддерживает кэширование. Так что, возможно, вы могли бы использовать это. Иметь предыдущую версию в кэше, и когда новая версия должна быть развернута, можно сравнить две и выбрать только измененные файлы. Или напрямую сравнить файлы с теми, что уже размещены на s3, и определить измененные.
 – 
Marcin
2 Май 2020 в 07:01