我正在尝试为我的golang项目在本地运行CodeBuild。我拉出了docker镜像amazon/aws-codebuild-local:latest并运行了CodeBuild脚本./codebuild_build.sh -i aws/codebuild/standard:2.0 -s "/project/src",但什么也没有发生。然后,我捕获了脚本中生成的docker命令:docker run -it -v //var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/standard:2.0" -e "SOURCE=/project/src" -e "INITIATOR=me" amazon/aws-codebuild-local:latest。
当我运行docker命令时,我得到了以下错误:
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
Pulling build (aws/codebuild/standard:2.0)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.
Continue with the new image? [yN]y
Pulling build (aws/codebuild/standard:2.0)...
ERROR: pull access denied for aws/codebuild/standard, repository does not exist or may require 'docker login': denied: requested access to the resource is denied我确定我的docker已经登录,不知道下一步该怎么做才能解决这个问题。
发布于 2020-01-05 16:02:42
一个使用带有docker image identfier/tag aws/codebuild/standard:3.0的Ubuntu 18.04本地构建平台来运行一些python单元测试(见下文)的示例。
1.制作aws/codebuild/standard:3.0的本地docker镜像
Ubuntu18.04平台采用identified作为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.sh3.运行本地构建作业
./codebuild_build.sh -i aws/codebuild/standard:3.0 -a /tmp/artifacts -s ./application/其中的./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,因为我只在构建阶段执行单元测试。test.py只是Python文档中的一个示例:https://docs.python.org/3/library/unittest.html#basic-example
./codebuild_build.sh也会在你第一次执行它的时候拉出Docker镜像amazon/aws-codebuild-local 。
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 ...
agent_1 |
agent_1 | [Container] 2020/01/05 07:50:36 Phase complete: INSTALL 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 PRE_BUILD
agent_1 | [Container] 2020/01/05 07:50:36 Running command echo Nothing to do in the pre_build phase...
agent_1 | Nothing to do in the pre_build phase...
agent_1 |
agent_1 | [Container] 2020/01/05 07:50:36 Phase complete: PRE_BUILD 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 BUILD
agent_1 | [Container] 2020/01/05 07:50:36 Running command echo Runing my python unittests on `date`
agent_1 | Runing my python unittests on Sun Jan 5 07:50:36 UTC 2020
agent_1 |
agent_1 | [Container] 2020/01/05 07:50:36 Running command python -m unittest test.py
agent_1 | ...
agent_1 | ----------------------------------------------------------------------
agent_1 | Ran 3 tests in 0.000s
agent_1 |
agent_1 | OK
agent_1 |
agent_1 | [Container] 2020/01/05 07:50:37 Phase complete: BUILD State: SUCCEEDED
agent_1 | [Container] 2020/01/05 07:50:37 Phase context status code: Message:
agent_1 | [Container] 2020/01/05 07:50:37 Entering phase POST_BUILD
agent_1 | [Container] 2020/01/05 07:50:37 Running command echo Build completed on `date`
agent_1 | Build completed on Sun Jan 5 07:50:37 UTC 2020
agent_1 |
agent_1 | [Container] 2020/01/05 07:50:37 Phase complete: POST_BUILD State: SUCCEEDED
agent_1 | [Container] 2020/01/05 07:50:37 Phase context status code: Message:
agent-resources_agent_1 exited with code 0
Stopping agent-resources_build_1 ... done
Aborting on container exit...5.检查构建作业是否成功?
在我的例子中,我只想知道test.py中的所有单元测试是否都成功。为此,您只需检查codebuild_build.sh中的退出代码
echo ${?}如果测试成功,则返回0,否则返回1。可以通过修改test.py使单元测试失败并重新运行codebuild_build.sh来验证这一点。这之所以有效,是因为当所有测试都通过时,python -m unittest test.py将以0代码退出,否则将以1代码退出。
发布于 2019-10-28 07:26:29
首先构建并标记CodeBuild docker镜像,如下所述:
https://github.com/aws/aws-codebuild-docker-images
然后运行以下命令,确保更新命令中的镜像名称和标签:
./codebuild_build.sh -i <image_name>:<image_tag> -a /home/ec2-user/environment/artifacts -s /home/ec2-user/environment/sample-web-app发布于 2019-10-27 17:10:31
对于每个https://aws.amazon.com/blogs/devops/announcing-local-build-support-for-aws-codebuild/,您必须对包含这些映像定义的GitHub存储库执行git clone操作:https://github.com/aws/aws-codebuild-docker-images。aws/codebuild/standard不是DockerHub存储库,也不是有效的ECR存储库。
https://stackoverflow.com/questions/58576277
复制相似问题