.ebextensions 与 CodePipeline 和 Elastic Beanstalk
.ebextensions with CodePipeline and Elastic Beanstalk
我开始使用托管在 github 上的 node.js 应用开发我的第一个 CodePipeline。我想创建简单的管道如下:
- Github 回购触发管道
- 测试环境(Elastic Beanstalk 应用程序)是从 S3 .zip 文件构建的
- 测试环境 运行s
npm test
和 npm lint
- 如果一切正常,则构建 QA 环境(另一个 EB 应用)
对于上面的管道,我在 .ebextensions
目录下创建了 .config
个文件:
- 我想将
npm install --production
用于 QA 和 PROD 环境,但似乎 EC2 找不到节点或 npm。我检查了日志,默认情况下在临时文件夹中触发了 EC2 npm install
,然后它在我的第一个脚本上失败并且应用程序目录始终为空。
container_commands:
install-dev:
command: "npm install"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
install-prod:
command: "npm install --production"
test: "[ \"$NODE_ENV\" != \"TEST\" ]"
ignoreErrors: false
- 是否可以在没有 jenkins 的情况下 运行 单元测试和 linting?
container_commands:
lint:
command: "npm run lint"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
test:
command: "npm run test"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
我为每个 Elastic Beanstalk 实例设置了 NODE_ENV
。不管每次我的管道因为 npm is not recognized
而失败时我会做什么,但是如果我 运行 宁 64 位亚马逊 Linux 和 node.js 怎么可能?更重要的是,我在 AWS Docs 中找不到任何关于带有 node.js 的 CodePipeline 的示例。提前致谢!
您是否已将 CodeBuild 整合到您的管道中?
你应该
1) 创建一个管道,其来源是您的 github 帐户。完成设置过程,以便在特定分支上提交会触发 Codepipeline
2) 在您的 Codepipeline 中创建一个利用 CodeBuild 服务的测试阶段。为了 运行 您的 Node 测试,您可能需要提供配置好的构建环境。您可能还需要提供一个构建规范文件,该文件将测试指定为 运行 等
3) 假设测试阶段通过,您可以确定管道是否继续到另一个阶段,该阶段链接到支持 Node 平台的 elasticbeanstalk 应用程序环境。这些环境纯粹用于已通过测试的工件,因此我认为没有必要编写上面的 .ebextensions 命令。
阅读 CodeBuild 可以做什么来帮助您 运行 测试 Node,
https://aws.amazon.com/codebuild/
祝你好运!
如果您将 AWS 用于 CI/CD,则可以将 CodeBuild. However, Github provides a great feature called Actions 用于 运行 单元测试,我发现这比 AWS 简单得多。无论如何,我将引导您完成这两个示例:
使用 AWS 进行 运行 单元测试
基本上,您可以在 CodePipeline 中创建一个新阶段,并为 运行 单元测试配置 CodeBuild,例如
首先,在您的应用程序的根文件夹中添加一个 buildspec.yml 文件,以便您可以使用以下示例:
version: 0.2
phases:
install:
runtime-versions:
nodejs: 10
commands:
- echo Installing Mocha globally...
- npm install -g mocha
pre_build:
commands:
- echo Installing dependencies...
- npm install
- npm install unit.js
build:
commands:
- echo Build started on `date`
- echo Run Unit Tests and so on
- npm run test
- npm run lint
post_build:
commands:
- echo Build completed on `date`
# THIS IS OPTIONAL
artifacts:
files:
- app.js
- package.json
- src/app/*
- node_modules/**/*
您可以在 BackSpace Academy 找到您需要的一切,本课程是免费:
AWS DevOps CI/CD - CodePipeline, Elastic Beanstalk and Mocha
使用 Github 进行 运行 单元测试
您可以使用 Github 创建您的自定义操作,它会自动在您的根文件夹中设置您需要的所有内容,例如
选择合适的工作流后,会自动生成一个folder/file".github>工作流>nodejs.yml".
所以它看起来像这样:
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
env:
CI: true
我希望你能在这个答案中找到你需要的一切。干杯
我开始使用托管在 github 上的 node.js 应用开发我的第一个 CodePipeline。我想创建简单的管道如下:
- Github 回购触发管道
- 测试环境(Elastic Beanstalk 应用程序)是从 S3 .zip 文件构建的
- 测试环境 运行s
npm test
和npm lint
- 如果一切正常,则构建 QA 环境(另一个 EB 应用)
对于上面的管道,我在 .ebextensions
目录下创建了 .config
个文件:
- 我想将
npm install --production
用于 QA 和 PROD 环境,但似乎 EC2 找不到节点或 npm。我检查了日志,默认情况下在临时文件夹中触发了 EC2npm install
,然后它在我的第一个脚本上失败并且应用程序目录始终为空。
container_commands:
install-dev:
command: "npm install"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
install-prod:
command: "npm install --production"
test: "[ \"$NODE_ENV\" != \"TEST\" ]"
ignoreErrors: false
- 是否可以在没有 jenkins 的情况下 运行 单元测试和 linting?
container_commands:
lint:
command: "npm run lint"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
test:
command: "npm run test"
test: "[ \"$NODE_ENV\" = \"TEST\" ]"
ignoreErrors: false
我为每个 Elastic Beanstalk 实例设置了 NODE_ENV
。不管每次我的管道因为 npm is not recognized
而失败时我会做什么,但是如果我 运行 宁 64 位亚马逊 Linux 和 node.js 怎么可能?更重要的是,我在 AWS Docs 中找不到任何关于带有 node.js 的 CodePipeline 的示例。提前致谢!
您是否已将 CodeBuild 整合到您的管道中?
你应该
1) 创建一个管道,其来源是您的 github 帐户。完成设置过程,以便在特定分支上提交会触发 Codepipeline
2) 在您的 Codepipeline 中创建一个利用 CodeBuild 服务的测试阶段。为了 运行 您的 Node 测试,您可能需要提供配置好的构建环境。您可能还需要提供一个构建规范文件,该文件将测试指定为 运行 等
3) 假设测试阶段通过,您可以确定管道是否继续到另一个阶段,该阶段链接到支持 Node 平台的 elasticbeanstalk 应用程序环境。这些环境纯粹用于已通过测试的工件,因此我认为没有必要编写上面的 .ebextensions 命令。
阅读 CodeBuild 可以做什么来帮助您 运行 测试 Node,
https://aws.amazon.com/codebuild/
祝你好运!
如果您将 AWS 用于 CI/CD,则可以将 CodeBuild. However, Github provides a great feature called Actions 用于 运行 单元测试,我发现这比 AWS 简单得多。无论如何,我将引导您完成这两个示例:
使用 AWS 进行 运行 单元测试
基本上,您可以在 CodePipeline 中创建一个新阶段,并为 运行 单元测试配置 CodeBuild,例如
首先,在您的应用程序的根文件夹中添加一个 buildspec.yml 文件,以便您可以使用以下示例:
version: 0.2
phases:
install:
runtime-versions:
nodejs: 10
commands:
- echo Installing Mocha globally...
- npm install -g mocha
pre_build:
commands:
- echo Installing dependencies...
- npm install
- npm install unit.js
build:
commands:
- echo Build started on `date`
- echo Run Unit Tests and so on
- npm run test
- npm run lint
post_build:
commands:
- echo Build completed on `date`
# THIS IS OPTIONAL
artifacts:
files:
- app.js
- package.json
- src/app/*
- node_modules/**/*
您可以在 BackSpace Academy 找到您需要的一切,本课程是免费: AWS DevOps CI/CD - CodePipeline, Elastic Beanstalk and Mocha
使用 Github 进行 运行 单元测试
您可以使用 Github 创建您的自定义操作,它会自动在您的根文件夹中设置您需要的所有内容,例如
选择合适的工作流后,会自动生成一个folder/file".github>工作流>nodejs.yml".
所以它看起来像这样:
name: Node CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [8.x, 10.x, 12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
env:
CI: true
我希望你能在这个答案中找到你需要的一切。干杯