使用AWS CodeBuild构建角度项目

时间:2018-03-31 09:26:37

标签: node.js continuous-integration aws-codepipeline aws-codebuild aws-codecommit

我们有一个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

我们也不确定我们要输入什么"输出文件"字段。

请帮助.. !!

3 个答案:

答案 0 :(得分:7)

CodeBuild的Node.js容器未安装angular-cli。只是Node.js和npm。在构建项目之前,必须先安装angular-cli。上面是一个在S3存储桶中部署的角度项目的buildspec.yml示例:

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

答案 1 :(得分:0)

你的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#create-project-console 谢谢 辛

答案 2 :(得分:0)

在您的情况下,我认为您正在使用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

希望有帮助!