2 回答
TA贡献1803条经验 获得超6个赞
使用Ubuntu 18.04
带有 docker image identfier/tag的本地构建平台aws/codebuild/standard:3.0
来运行一些 python 单元测试(见下文)作为示例。
1.制作本地docker镜像aws/codebuild/standard:3.0
Ubuntu 18.04平台在docker中被识别为aws/codebuild/standard:3.0
# download definition of curated docker codebuild images
git clone https://github.com/aws/aws-codebuild-docker-images.git
# got ubuntu version of intrest
cd aws-codebuild-docker-images/ubuntu/standard/3.0/
# build the image (this will take a time as the final image is > 7GB)
docker build -t aws/codebuild/standard:3.0 .
2. 下载codebuild_build.sh
wget https://raw.githubusercontent.com/aws/aws-codebuild-docker-images/master/local_builds/codebuild_build.sh
chmod u+x codebuild_build.sh
3. 运行本地构建作业
./codebuild_build.sh -i aws/codebuild/standard:3.0 -a /tmp/artifacts -s ./application/
where./application/应该更改为您要构建的应用程序的文件夹。该文件夹应该包含您的buildspec.yml. 我的例子buildspec.yml是:
version: 0.2
phases:
install:
runtime-versions:
python: 3.8
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Running my python unit tests on `date`
- python -m unittest test.py
post_build:
commands:
- echo Build completed on `date`
请注意- python -m unittest test.py
,我仅在构建阶段执行单元测试。
4. 输出示例:
Removing agent-resources_build_1 ... done
Removing agent-resources_agent_1 ... done
Removing network agent-resources_default
Removing volume agent-resources_source_volume
Removing volume agent-resources_user_volume
Creating network "agent-resources_default" with the default driver
Creating volume "agent-resources_source_volume" with local driver
Creating volume "agent-resources_user_volume" with local driver
Creating agent-resources_agent_1 ... done
Creating agent-resources_build_1 ... done
Attaching to agent-resources_agent_1, agent-resources_build_1
agent_1 | 2020/01/05 07:50:34 [Customer Config] Couldn't open specified customer config file: open /root/.aws/config: no such file or directory
agent_1 | 2020/01/05 07:50:34 [Customer Config] Error parsing supplied customer config file: invalid argument
agent_1 | [Container] 2020/01/05 07:50:35 Waiting for agent ping
agent_1 | [Container] 2020/01/05 07:50:36 Waiting for DOWNLOAD_SOURCE
agent_1 | [Container] 2020/01/05 07:50:36 Phase is DOWNLOAD_SOURCE
agent_1 | [Container] 2020/01/05 07:50:36 CODEBUILD_SRC_DIR=/codebuild/output/src628986230/src
agent_1 | [Container] 2020/01/05 07:50:36 YAML location is /codebuild/output/srcDownload/src/buildspec.yml
agent_1 | [Container] 2020/01/05 07:50:36 No commands found for phase name: INSTALL
agent_1 | [Container] 2020/01/05 07:50:36 Processing environment variables
agent_1 | [Container] 2020/01/05 07:50:36 Moving to directory /codebuild/output/src628986230/src
agent_1 | [Container] 2020/01/05 07:50:36 Registering with agent
agent_1 | [Container] 2020/01/05 07:50:36 Phases found in YAML: 4
agent_1 | [Container] 2020/01/05 07:50:36 INSTALL: 0 commands
agent_1 | [Container] 2020/01/05 07:50:36 PRE_BUILD: 1 commands
agent_1 | [Container] 2020/01/05 07:50:36 BUILD: 2 commands
agent_1 | [Container] 2020/01/05 07:50:36 POST_BUILD: 1 commands
agent_1 | [Container] 2020/01/05 07:50:36 Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED
agent_1 | [Container] 2020/01/05 07:50:36 Phase context status code: Message:
agent_1 | [Container] 2020/01/05 07:50:36 Entering phase INSTALL
agent_1 | [Container] 2020/01/05 07:50:36 Running command echo "Installing Python version 3.8 ..."
agent_1 | Installing Python version 3.8 ...
5. 检查构建作业是否成功?
就我而言,我只是想知道所有单元测试test.py
是否成功。为此,您只需检查退出代码即可codebuild_build.sh
echo ${?}
0
如果测试成功或1
失败,这将返回。test.py
可以通过修改使单元测试失败并重新运行来验证这一点codebuild_build.sh
。这是有效的,因为当所有测试通过时python -m unittest test.py
退出,否则退出。0
1
TA贡献1848条经验 获得超6个赞
首先构建并标记 CodeBuild docker 映像,
然后运行以下命令,确保更新命令中的图像名称和标签:
./codebuild_build.sh -i <image_name>:<image_tag> -a /home/ec2-user/environment/artifacts -s /home/ec2-user/environment/sample-web-app
TA贡献1831条经验 获得超10个赞
根据https://aws.amazon.com/blogs/devops/announcing-local-build-support-for-aws-codebuild/,您必须git clone
包含这些图像定义的 GitHub 存储库: https: //github.com/ aws/aws-codebuild-docker-images。aws/codebuild/standard 不是 DockerHub 存储库或有效的 ECR 存储库。
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报