标签: aws-codebuild

具有无服务器框架的AWS codeBuild/codePipeline

我正在尝试为我的应用程序自动化部署管道.这是自动化架构,我想出了: 自动化架构

如您所见,我使用codePipelinecodeBuild来自动部署.我的后端基于无服务器框架,它在kick sls deploy命令上部署lambda函数.这就是我没有使用codeDeploy进行传统部署的原因.buildspec.yml文件看起来像这样:

version: 0.1

phases:
  install:
    commands:
      – apt-get -y update
      – npm install -g serverless@1.9.0
  build:
    commands:
      – cd nj2jp/serverless && npm install
  post_build:
    commands:
      – serverless deploy –verbose

artifacts:
  files:
    – serverless.yml
  discard-paths: yes
Run Code Online (Sandbox Code Playgroud)

现在,我有3个关于CodeBuildServerless的问题:

问题1:该命令sls deploy取决于一个名为config.ymldb password的秘密.此文件不会被检入git.您认为config.yml在codeBuild中包含的最佳方式是什么?

问题2: 如果我们必须使用codeDeploy部署传统的EC2应用程序,则可以使用AWS完成回滚.在无服务器的情况下,我们不使用codeDeploy,无服务器也支持回滚功能.我们如何在codePipeline中利用无服务器回滚? …

amazon-web-services aws-lambda aws-codepipeline serverless-framework aws-codebuild

13
推荐指数
1
解决办法
2561
查看次数

获取AWS CodeBuild的GitHub git分支

我将AWS CodeBuild设置为从GitHub自动构建.其他CI服务为分支提供环境变量,但我找不到AWS CodeBuild的环境变量.有一种CODEBUILD_SOURCE_VERSION被设置为pr/7其中7的上拉请求号码或git的承诺SHA.

鉴于提交sha,我一直试图获得分支名称,但到目前为止没有运气.

git branch --contains <commitsha>不起作用,因为它是一个独立的头.如何从CodeBuild获取提交的git分支?

git amazon-web-services aws-codebuild

13
推荐指数
4
解决办法
6432
查看次数

如何在AWS CodeBuild上运行docker-compose?

我正在尝试使用docker-compose在AWS CodeBuild上设置自动Rails测试,但是它出错了.

在buildspec.yml中:

phases:
  build:
    commands:
        - docker-compose up -d

[Container] 2018/10/23 11:27:56 Running command docker-compose up -d
Couldn't connect to Docker daemon at http+docker://localhost - is it running?
 If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
 [Container] 2018/10/23 11:27:56 Command did not exit successfully docker-compose up -d exit status 1
[Container] 2018/10/23 11:27:56 Running command echo This always runs even if the install command fails
This always runs even if the install command …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails amazon-web-services docker docker-compose aws-codebuild

13
推荐指数
2
解决办法
3381
查看次数

在AWS CodeBuild工作线上使用IAM角色

有没有办法授予构建过程使用的IAM实例角色?

在我的特定情况下,我需要在构建期间执行一些s3操作(与归档工件无关).

到目前为止,我找到的唯一替代方法是在aws codebuild配置页面上为环境变量添加aws密钥和秘密.

将IAM角色附加到执行构建的ec2实例或容器会更安全.目前(2016-12)可能吗?

amazon-web-services aws-codepipeline aws-codebuild

12
推荐指数
1
解决办法
2495
查看次数

如何在AWS CodeBuild云形态模板中设置分支过滤器选项?

如果在CodeBuild项目中使用Github存储库作为源,则该Branch Filter选项允许仅为分支运行构建,分支的名称与特定正则表达式匹配.

  1. AWS管理控制台

在AWS管理控制台中,您可以在创建或编辑CodeBuild项目时配置分支过滤器:

AWS控制台

  1. AWS CLI

对于awscli存在一个选项--update-webhook(在此记录)

    $ aws codebuild update-webhook --project-name myproject --branch-filter ^master$
Run Code Online (Sandbox Code Playgroud)
  1. CloudFormation

在CodeBuild中,cloudformation模板存在一个选项Triggers > Webhook(此处记录),但此选项只是一个简单启用/禁用github webhook的布尔值.

Resources:
    MyCodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
        Name: myproject
        ...
        Triggers:
            Webhook: true
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何直接在云信息模板中定义分支过滤器,而无需执行awscli命令或使用AWS管理控制台?

continuous-integration amazon-web-services aws-cloudformation devops aws-codebuild

12
推荐指数
1
解决办法
3798
查看次数

AWS CodeBuild 不适用于 Yarn 工作区

我在我的存储库中使用 Yarn Workspaces 并使用 AWS CodeBuild 来构建我的包。构建开始时,CodeBuild 需要 60 秒来安装所有包,我想避免这次缓存node_modules文件夹。

当我添加:

cache:
  paths:
    - 'node_modules/**/*'
Run Code Online (Sandbox Code Playgroud)

到我的buildspec文件并启用LOCAL_CUSTOM_CACHE,我收到此错误:

错误发生意外错误:“EEXIST:文件已存在,mkdir '/codebuild/output/src637134264/src/git-codecommit.us-east-2.amazonaws.com/v1/repos/MY_REPOSITORY/node_modules/@packages/configs '”。

有没有办法消除配置 AWS CodeBuild 或 Yarn 的错误?

我的构建规范文件:

version: 0.2
phases:
  install:
    commands:
      - npm install -g yarn
      - git config --global credential.helper '!aws codecommit credential-helper $@'
      - git config --global credential.UseHttpPath true
      - yarn
  pre_build:
    commands:
      - git rev-parse HEAD
      - git pull origin master
  build:
    commands:
      - yarn run build
      - yarn run deploy …
Run Code Online (Sandbox Code Playgroud)

yarnpkg aws-codebuild yarn-workspaces

12
推荐指数
1
解决办法
2739
查看次数

YAML_FILE_ERROR:YAML 文件不存在

我正在努力在 AWS 上实施管道,但出现错误YAML_FILE_ERROR: YAML file does not exist,我不知道为什么。我正在使用 github repo 进行平均堆栈项目,入口文件是docker-compose. Yml.

谢谢

pipeline amazon-web-services aws-codebuild

12
推荐指数
2
解决办法
1万
查看次数

CodePipeline(AWS)的CodeBuild(AWS)无法正常工作

我已经使用所有必需的必需选项和有效的IAM角色通过代码管道向导创建了一个代码构建项目。我还添加了IAM角色策略,这对于访问和写入S3存储桶中的数据是必需的。我已经考虑过以下提到的访问S3的策略。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:logs:aws/codebuild",
            "arn:aws:logs:aws/codebuild:*"
        ],
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ]
    },
    {
        "Effect": "Allow",
        "Resource": [
            "arn:aws:s3:::pipeline”,
            "arn:aws:s3::: pipeline/*"
        ],
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetBucketAcl",
            "s3:GetBucketLocation"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

}

一旦启动管道,代码构建就会失败,并且出现以下提到的错误

DOWNLOAD_SOURCE Failed: 
CLIENT_ERROR: symlink /codebuild/output/.../libcrypto.1.0.0.dylib: no such file or directory for primary source and source version arn:aws:s3:::codepipeline-bucketSource/Ap4g3sv.zip
Run Code Online (Sandbox Code Playgroud)

我已经进行了很多研究,浏览了各种AWS文档,但是找不到解决方案。

amazon-web-services aws-codepipeline aws-codebuild

12
推荐指数
1
解决办法
273
查看次数

有没有办法在AWS codebuild上更改目录

随着Snap-CI的消失,我一直在努力让我们的构建工作在AWS CodeBuild上.我已经构建了buildspec.yml,但是更改目录似乎不起作用.

version: 0.1

phases:
  install:
    commands:
      - apt-get update -y
      - apt-get install -y node
      - apt-get install -y npm
  build:
    commands:
      - cd MyDir  //Expect to be in MyDir now
      - echo `pwd` //Shows /tmp/blablabla/ instead of /tmp/blablabla/MyDir
      - npm install //Fails because I'm not in the right directory
      - bower install
      - npm run ci
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - MyDir/MyFile.war
  discard-paths: yes
Run Code Online (Sandbox Code Playgroud)

看起来这应该是相当简单的,但到目前为止我还没有运气好.

continuous-integration amazon-web-services aws-codebuild

11
推荐指数
2
解决办法
6516
查看次数

AWS CodeBuild VPC_CLIENT_ERROR:意外的 EC2 错误:UnauthorizedOperation

我在自定义 VPC 和私有子网中创建了 CodeBuild 项目。私有子网可以访问 Internet,AWS 控制台也确认 Internet 连接用于此代码构建项目。我VPC_CLIENT_ERROR: Unexpected EC2 error: UnauthorizedOperation在构建的“配置”阶段不断出错。我的服务角色策略中肯定缺少某些内容,但无法弄清楚是什么。

这是 CodeBuild 项目(terraform):

resource "aws_codebuild_project" "frontend" {
  name          = "frontend"
  build_timeout = "5"
  service_role  = "${aws_iam_role.frontend_build.arn}"

  artifacts {
    type = "S3"
    location = "frontend.myapp.com"
    namespace_type = "NONE"
    packaging = "NONE"
    path = "public"
  }

  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "aws/codebuild/standard:1.0"
    type                        = "LINUX_CONTAINER"
    image_pull_credentials_type = "CODEBUILD"

    environment_variable {
      name  = "SOME_KEY1"
      value = "SOME_VALUE1"
    }
  }

  logs_config {
    cloudwatch_logs {
      group_name = "build" …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-codebuild

11
推荐指数
2
解决办法
5353
查看次数