问题标签 [aws-codebuild]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 无法使用 CodeDeploy 部署来自 CodeBuild 的工件
使用 CodeBuild,我编译了我的 SpringBoot 应用程序并将生成的 jar 放在一个名为deploy/
. 最后,我buildspec.yml
提供:
当我将其插入 CodePipeline 时,这会在 S3 中创建一个 zip 文件。但问题是,这个 zip 文件包含根文件夹,即deploy
. 所以zip文件的结构是:
这导致 CodeDeploy 找不到 的问题appspec.yml
,因为它没有在 deploy 文件夹中查找。我一直在努力克服这个问题,在构建过程结束时提供一个 zip 文件作为工件,但随后在管道中它又被压缩了..
任何想法如何解决这个问题将不胜感激。
amazon-web-services - AWS CodeBuild + CodePipeline:“找不到匹配的工件路径”
我正在尝试让 CodePipeline 从 GitHub 获取我的代码并使用 CodeBuild 构建它。第一个(源)步骤工作正常。但是第二个(构建)步骤在“UPLOAD_ARTIFACTS”部分失败。以下是相关的日志语句:
我的应用程序在其根文件夹中有一个 buildspec.yml。看起来像:
看起来我的 buildspec.yml 中的“MyApp”应该有所不同,但我翻遍了所有 AWS 文档都无济于事(还有什么新东西?)。我怎样才能让它正确上传工件?
amazon-web-services - 如何在 CodePipeline 中处理多个环境?
我正在使用代码管道来部署我的基础架构,并且我希望能够将它部署在不同的环境中(开发、登台、产品......)。
我目前有一个 buildspec.yml 文件,其中包含一些“pip install”指令和“aws cloudformation package”命令。我还创建了 2 个管道,一个用于生产,另一个用于开发,指向 github 上的 2 个不同分支。我遇到的问题是,由于两个分支中的文件都包含相似的资源,例如,我在 S3 存储桶上存在名称冲突。
使用 AWS CLI 和 cloudformation 创建或更新堆栈时,您可以使用 --parameters 选项传递参数。我想在我创建的 2 个管道中做类似的事情。
解决这个问题的最佳解决方案是什么?
最终目标是自动化我们基础设施的部署。我们的基础设施由用户、KMS 密钥、Lamdbas(在 python 中)、组和存储桶组成。
我按照教程创建了两个管道:http: //docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html
第一个管道链接到包含代码的 repo 的主分支,第二个管道链接到暂存分支。我的目标是使用第一个管道在生产环境中自动部署主分支,并使用第二个管道在暂存环境中自动部署暂存分支。
我的 buildspec.yml 文件如下所示:
image_processing_sam.yml 文件如下所示:
我在两个管道中添加了一个部署操作,以执行在 beta 操作期间计算的更改集。
第一个管道就像一个魅力,可以完成我期望它做的所有事情。每次我在主分支中推送代码时,它都会被部署。
我面临的问题是,当我在暂存分支中推送代码时,一切都在管道中运行,直到达到部署操作。部署操作尝试创建一个新堆栈,但由于它与 buildspec.yml 和已处理的 image_processing_sam.yml 完全相同,因此我会遇到如下所示的名称冲突。
有没有办法对 buildspec.yml 进行参数化,以便能够为 image_processing_sam.yml 中的资源名称添加后缀?欢迎任何其他实现这一目标的想法。
此致。
node.js - Karma 无法在 AWS CodeBuild 上运行 PhantomJS 单元测试,但可以在本地运行
我有一个我正在整理的 AngularJS 项目。应用程序正常运行和执行。测试在本地运行和执行。在 AWS CodeBuild 上进行构建时,我的日志中出现以下错误:
我运行相同的 Gulp 任务以在两个位置执行测试:
我的 karma.conf.js 文件也是一样的:
知道发生了什么吗?
值得一提的是,我的本地项目在 Windows 上,而亚马逊上的 Node 实例在 Ubuntu 上运行。会不会是一些奇怪的文件系统或版本问题?
amazon-web-services - AWS CodePipeline 能否在不劫持 CodeBuild 的工件设置的情况下触发 AWS CodeBuild?
我设置 AWS CodeBuild 以将大量工件文件写入 S3。CodeBuild yaml 文件定义了哪些文件和 CodeBuild 项目设置定义了 S3 存储桶。一切正常。
看来,当您从 AWS CodePipeline 触发 AWS CodeBuild 时,CodePipeline 会忽略 AWS CodeBuild 的工件设置,而是将工件强制放入 codepipline S3 存储桶中的 zip 文件中。
有没有办法使用 CodePipeline 但它尊重 AWS CodeBuild 的工件设置?
amazon-web-services - 如何使用 aws code commit + aws code build + elastic beanstalk 设置 aws codepipeline?没有 jenkins、teamcity 或任何其他 3rd 方工具?
如何在不使用 jenkins、teamcity 或任何其他 3rd 方工具的情况下使用 aws code commit + aws code build + elastic beanstalk 设置 aws codepipeline?
amazon-web-services - 用于版本控制的 AWS CodeBuild 环境变量?
是否有任何类型的 AWS CodeBuild 环境变量可以帮助在构建工件上标记版本信息?. 即 Bamboo 的等价物,例如bamboo_buildNumber
. 理想情况下,我想要内部版本号和 SCM 号。
文档谈论CODEBUILD_x
内部使用的变量,但我无法找到它们的列表。
amazon-web-services - AWS codebuild 没有传递环境变量?
我们在代码构建过程中需要环境变量。Codebuild 允许您在高级设置中设置环境变量,我已经这样做了。
现在,当codebuild运行时,它似乎并没有将这些环境变量向下传递。
我打印出process.env & 这里是我得到的:
没有我的环境变量。
我设置了 DB_PASS、DB_USER、DB_NAME、DB_HOST - 这些都没有打印出来。
我尝试创建一个新的代码构建并添加环境变量,但没有运气。
请注意,它正在构建一个 docker 容器,当我尝试连接到我的 postgres 数据库时它失败了,因为没有传递环境变量(密码、主机等)
编辑
在我的 Dockerfile 中,我正在运行以下 bash 文件:
这样做是运行 knex 迁移(一个 js 脚本)——如果失败,我们将回滚迁移并退出构建。
docker - 为什么我的 AWS CodeBuild 命令没有运行?
我正在尝试将 AWS CodeBuild 用于我的项目。我的构建正在aws/codebuild/docker:1.12.1
图像上运行。这是我的buildspec.yml
,取自AWS Docker 示例
所有环境变量都在构建配置中定义。但这是我的 CodeBuild 日志输出:
CodeBuild 会看到我的命令,但它不会运行它们!构建被标记为成功。有谁知道我在这里做错了什么?
更新:我需要更改post-build
为post_build
. build 现在拉取 maven 镜像来构建 jar,然后 docker 构建镜像。这样,我的jar不包含源代码,镜像也不包含maven和jdk。这是我的工作buildspec.yml
:
amazon-web-services - 通过 Cloudformation、CodeBuild 和 CodePipeline 将 python 包部署到 AWS Lambda
我想为我的 AWS 基础设施和 AWS Lambda 函数设置 CI/CD 管道。这个想法是让一切都在代码中,版本控制和自动化。我只想到git push
一个存储库并让 CodePipeline 从那里接管,更新我的基础设施,运行测试,如果成功,使用最新代码更新我的 Lambda 函数。
我的 CloudFormation 模板基于这个出色的示例。它看起来像这样:
所以我有一个包含 3 个阶段的 CodePipeline - Source
,它从 CodeCommit 存储库中获取代码,PipelineDeploy
如果需要,它会更新我的 CloudFormation 堆栈Build
,它运行配置的 CodeBuild 项目。
我的 buildspec.yml 在这里:
它只是安装必要的库,通过 pytest 运行测试并创建一个部署 zip。这个 zip 文件然后是OutputArtifact
阶段的Build
,并存储在ArtifactsBucket
. 但是,每次它都有一个唯一的名称(例如dfVV6Uh
),这是有道理的,但我不知道如何在 LambdaFunction -> Properties -> Code -> S3Key 字段中引用它。
所以我的问题是,如何创建一个堆栈/管道,在完成所有步骤后,将最新版本部署到我的 AWS Lambda 函数?有没有办法使用 CodeDeploy 来做到这一点?这里的最佳做法是什么?