AWS codeBuild 没有 运行 .ebextension 配置
AWS codeBuild doesn't run the .ebextension config
我正在使用 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 和其他软件。
.ebextensions 用于 Elastic Beanstalk,CodeBuild 使用名为 buildspec 的文件。
参见:https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
.ebextensions 由 Elastic Beanstalk 执行。
CodeBuild 不会 运行 它们,并且您无法在 CodeBuild 中执行它们,因为它们具有特定于 Elastic Beanstalk 的格式。
要为您的测试安装依赖项,您必须使用 yum
或 apt
命令手动执行此操作,具体取决于您的 CodeBuild 映像。
您还可以在部署包中创建 bash 脚本文件,您可以在 CodeBuild 中执行这些文件。然后脚本文件可以安装所有依赖项。
或者,如果您有很多复杂的依赖项、配置文件,您可以将应用程序部署为 docker on Beanstalk。这样,您的 docker 映像将包含所有必需的依赖项,包括用于测试的依赖项。
也可以在 CodeBuild 中使用 eb cli
:
但是,我不确定这是否适合您的用例。
我正在使用 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 和其他软件。
.ebextensions 用于 Elastic Beanstalk,CodeBuild 使用名为 buildspec 的文件。
参见:https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html
.ebextensions 由 Elastic Beanstalk 执行。
CodeBuild 不会 运行 它们,并且您无法在 CodeBuild 中执行它们,因为它们具有特定于 Elastic Beanstalk 的格式。
要为您的测试安装依赖项,您必须使用 yum
或 apt
命令手动执行此操作,具体取决于您的 CodeBuild 映像。
您还可以在部署包中创建 bash 脚本文件,您可以在 CodeBuild 中执行这些文件。然后脚本文件可以安装所有依赖项。
或者,如果您有很多复杂的依赖项、配置文件,您可以将应用程序部署为 docker on Beanstalk。这样,您的 docker 映像将包含所有必需的依赖项,包括用于测试的依赖项。
也可以在 CodeBuild 中使用 eb cli
:
但是,我不确定这是否适合您的用例。