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

如您所见,我使用codePipeline和codeBuild来自动部署.我的后端基于无服务器框架,它在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个关于CodeBuild和Serverless的问题:
问题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
我将AWS CodeBuild设置为从GitHub自动构建.其他CI服务为分支提供环境变量,但我找不到AWS CodeBuild的环境变量.有一种CODEBUILD_SOURCE_VERSION被设置为pr/7其中7的上拉请求号码或git的承诺SHA.
鉴于提交sha,我一直试图获得分支名称,但到目前为止没有运气.
git branch --contains <commitsha>不起作用,因为它是一个独立的头.如何从CodeBuild获取提交的git分支?
我正在尝试使用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
有没有办法授予构建过程使用的IAM实例角色?
在我的特定情况下,我需要在构建期间执行一些s3操作(与归档工件无关).
到目前为止,我找到的唯一替代方法是在aws codebuild配置页面上为环境变量添加aws密钥和秘密.
将IAM角色附加到执行构建的ec2实例或容器会更安全.目前(2016-12)可能吗?
如果在CodeBuild项目中使用Github存储库作为源,则该Branch Filter选项允许仅为分支运行构建,分支的名称与特定正则表达式匹配.
在AWS管理控制台中,您可以在创建或编辑CodeBuild项目时配置分支过滤器:
对于awscli存在一个选项--update-webhook(在此记录)
$ aws codebuild update-webhook --project-name myproject --branch-filter ^master$
Run Code Online (Sandbox Code Playgroud)
在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
我在我的存储库中使用 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) 我正在努力在 AWS 上实施管道,但出现错误YAML_FILE_ERROR: YAML file does not exist,我不知道为什么。我正在使用 github repo 进行平均堆栈项目,入口文件是docker-compose. Yml.
谢谢
我已经使用所有必需的必需选项和有效的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文档,但是找不到解决方案。
随着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)
看起来这应该是相当简单的,但到目前为止我还没有运气好.
我在自定义 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)