Создайте угловой проект, используя AWS CodeBuild

У нас есть проект Angular, и мы пытаемся использовать AWS CodePipeline для его развертывания.

Мы перенесли наш проект в репозиторий CodeCommit.

Теперь перед нами стоит задача создать сборку с помощью AWS CodeBuild. В CodeBuild определение сборки

phases:
  build:
    commands:
      - npm install && ng build-prod

Мы получаем ошибку ng: not found

Мы также попробовали следующее определение сборки:

phases:
      build:
        commands:
          - npm install && run build-prod

Ошибка, которую мы получаем run: not found

Также мы не уверены, что мы должны вводить в поле "Выходные файлы".

Пожалуйста помоги..!!

2 ответа

Контейнер Node.js из CodeBuild не имеет установленного angular-cli. Просто Node.js и npm. Вы должны установить angular-cli перед сборкой проекта. Выше приведен пример buildspec.yml для углового проекта, который будет развернут в сегменте S3:

version: 0.2
env:
    variables:
        CACHE_CONTROL: "86400"
        S3_BUCKET: {-INSERT BUCKET NAME FOR STATIC WEBSITE HERE-}
        BUILD_FOLDER: {-INSERT THE NAME OF THE BUILD FOLDER HERE-}
        BUILD_ENV: "prod"
phases:
    install:
        commands:
            - echo Installing source NPM dependencies...
            - npm install
            - npm install -g @angular/cli
    build:
        commands:
            - echo Build started on `date`
            - ng build --${BUILD_ENV}
    post_build:
         commands:
            - aws s3 cp ${BUILD_FOLDER} s3://${S3_BUCKET} --recursive --acl public-read --cache-control "max-age=${CACHE_CONTROL}"
            - echo Build completed on `date`
artifacts:
    files:
        - '**/*'
    base-directory: 'dist*'
    discard-paths: yes

Кажется, что-то не так с вашей установкой npm. Ссылка: https://www.npmjs.com/package/angular-cli

Выходными файлами должны быть файлы, которые вы хотите загрузить в корзину артефакта s3, например: appspec.yml, target / my-app.jar. Вы можете проверить раздел Артефакт в нашем документе: https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html?icmpid=docs_acb_console. Спасибо, Синь.

В вашем случае, я думаю, вы используете angular-cli как devDependencies. С devDependencies вы должны использовать node для его запуска или написать сценарий для его запуска в файле package.json. Например:

node ./node_module/@angular/cli/bin/ng <rest of the params>

или внутри файла package.json, вы должны добавить определение команды в свойстве scripts и запустить с npm: npm run <command-name>

{
  ...
  scripts: {
    ...
    "ng": "ng"
  }
  ...
}

В вашем вопросе вы уже используете опции 2. Но похоже, что вам не хватает npm в начале команды. Это должно быть так:

phases:
  build:
    commands:
      - npm install && npm run build-prod

Надеюсь, поможет!

Другие вопросы по тегам