AWS CodePipeline с CodeDeploy для ECS не может найти appspec.yml - PullRequest
0 голосов
/ 08 января 2019

Я создал CodePipeline с использованием CodeBuild и CodeDeploy, которые должны быть развернуты в активном кластере ECS.

Контейнер собирается без проблем.

И buildspec.yml, и appspec.yml находятся в корне хранилища и имеют следующий вид:

buildspec.yml:

version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws --version
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
      - REPOSITORY_URI=555.dkr.ecr.us-east-1.amazonaws.com/name
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"name","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
    files:
      - appspec.yml
      - imagedefinitions.json

appspec.yml:

version: 1.0
Resources:
  - TargetService:
      Type: AWS::ECS::Service
      Properties:
        TaskDefinition: "arn:aws:ecs:us-east-1:555:task-definition/name:1"
        LoadBalancerInfo:
          ContainerName: "name"
          ContainerPort: "80"
        PlatformVersion: "LATEST"

CodeDeploy завершается ошибкой со следующим сообщением об ошибке:

Требуется файл AppSpec, но он не найден в ревизии

После просмотра ссылочных артефактов ревизии в S3 я могу убедиться, что правильный файл appspec.yml существует в корневом каталоге архива и соответствует описанному выше.

Что может быть не так с этой конфигурацией?

1 Ответ

0 голосов
/ 05 февраля 2019

Измените appspec.yml на appspec.yaml как в имени файла, так и в buildspec.yml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...