AWS codeBuild不运行.ebextension配置。

问题描述 投票:0回答:1

我正在使用AWS代码提交来测试和部署,需要在使用codeBuild运行单元测试之前预装redis、chromium。所有的安装配置都在.ebextensions上,如果我删除了构建步骤,在EB实例上工作正常。

但是当我使用codeBuild管道时,buildspec.yml似乎并没有执行 .ebextension 配置,然后再运行测试。有谁知道如何在pre_build中运行.ebextensions?

version: 0.2

phases:
install:
runtime-versions:
nodejs: 12
commands:
- echo Installing jest...
- npm install -g jest
pre_build:
commands:
- echo Installing source NPM dependencies...
- npm install
- echo Starting app...
- npm start
build:
commands:
- echo Build started on `date`
- echo Running unit tests...
- npm run test
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- **/*
- .ebextensions/**/*

代码构建日志


[2020/05/05 11:55:29 Waiting for agent ping
[2020/05/05 11:55:31 Waiting for DOWNLOAD_SOURCE
[2020/05/05 11:55:32 Phase is DOWNLOAD_SOURCE
[2020/05/05 11:55:32 CODEBUILD_SRC_DIR=/codebuild/output/src129341116/src
[2020/05/05 11:55:32 YAML location is /codebuild/output/src129341116/src/buildspec.yml
[2020/05/05 11:55:32 Processing environment variables
[2020/05/05 11:55:32 Selecting 'nodejs' runtime version '12' based on manual selections...
[2020/05/05 11:55:32 Running command echo "Installing Node.js version 12 ..."
Installing Node.js version 12 ...

[2020/05/05 11:55:32 Running command n $NODE_12_VERSION
installed : v12.16.1 (with npm 6.13.4)

[2020/05/05 11:55:41 Moving to directory /codebuild/output/src129341116/src
[2020/05/05 11:55:41 Registering with agent
[2020/05/05 11:55:41 Phases found in YAML: 4
[2020/05/05 11:55:41 BUILD: 3 commands
[2020/05/05 11:55:41 POST_BUILD: 1 commands
[2020/05/05 11:55:41 INSTALL: 2 commands
[2020/05/05 11:55:41 PRE_BUILD: 4 commands
[2020/05/05 11:55:41 Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
[2020/05/05 11:55:41 Phase context status code: Message:
[2020/05/05 11:55:41 Entering phase INSTALL
[2020/05/05 11:55:41 Running command echo Installing jest...
Installing jest...
.................
[2020/05/05 11:55:41 Running command npm install -g jest
....................
[2020/05/05 11:55:55 Entering phase PRE_BUILD
[2020/05/05 11:55:55 Running command echo Installing source NPM dependencies...
Installing source NPM dependencies...

如果我看到日志,它没有运行.ebextensions脚本,在运行测试之前安装Redis和其他软件。

node.js amazon-web-services aws-codebuild aws-codecommit
1个回答
2
投票

.ebextensions 是由Elastic Beanstalk执行的。

CodeBuild不会运行它们,你也不能在CodeBuild中执行它们,因为它们有Elastic Beanstalk特有的格式。

要为你的测试安装依赖关系,你必须手动使用 yumapt 命令,取决于您的CodeBuild镜像。

您也可以创建 bash脚本文件 中的脚本文件,您可以在CodeBuild中执行。脚本文件可以安装所有的依赖关系。

或者,如果你有很多复杂的依赖关系,配置文件,你可以将你的应用程序部署为 docker on Beanstalk. 这样一来,你的docker镜像就会包含所有需要的依赖关系,包括那些用于测试的依赖关系。

也可以使用 eb cli 中。

然而,我不确定这是否适合你的用例。


0
投票

.ebextensions 是 Elastic Beanstalk 的文件,CodeBuild 使用一个名为 buildspec 的文件。

请看 https:/docs.aws.amazon.comcodebuildlatestuserguidebuild-spec-ref.html。

© www.soinside.com 2019 - 2024. All rights reserved.