猿问

无法运行 AWS CodeBuild 本地构建脚本

我正在尝试在本地为我的 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 已登录,不知道下一步应该做什么来解决问题。


慕运维8079593
浏览 156回答 2
2回答

慕码人8056858

使用Ubuntu 18.04带有 docker image identfier/tag的本地构建平台aws/codebuild/standard:3.0来运行一些 python 单元测试(见下文)作为示例。1.制作本地docker镜像aws/codebuild/standard:3.0Ubuntu 18.04平台在docker中被识别为aws/codebuild/standard:3.0# download definition of curated docker codebuild imagesgit clone https://github.com/aws/aws-codebuild-docker-images.git# got ubuntu version of intrestcd 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.shwget https://raw.githubusercontent.com/aws/aws-codebuild-docker-images/master/local_builds/codebuild_build.shchmod u+x codebuild_build.sh3. 运行本地构建作业./codebuild_build.sh -i aws/codebuild/standard:3.0 -a /tmp/artifacts -s ./application/where./application/应该更改为您要构建的应用程序的文件夹。该文件夹应该包含您的buildspec.yml. 我的例子buildspec.yml是:version: 0.2phases:  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 ... doneRemoving agent-resources_agent_1 ... doneRemoving network agent-resources_defaultRemoving volume agent-resources_source_volumeRemoving volume agent-resources_user_volumeCreating network "agent-resources_default" with the default driverCreating volume "agent-resources_source_volume" with local driverCreating volume "agent-resources_user_volume" with local driverCreating agent-resources_agent_1 ... doneCreating agent-resources_build_1 ... doneAttaching to agent-resources_agent_1, agent-resources_build_1agent_1  | 2020/01/05 07:50:34 [Customer Config] Couldn't open specified customer config file: open /root/.aws/config: no such file or directoryagent_1  | 2020/01/05 07:50:34 [Customer Config] Error parsing supplied customer config file: invalid argumentagent_1  | [Container] 2020/01/05 07:50:35 Waiting for agent pingagent_1  | [Container] 2020/01/05 07:50:36 Waiting for DOWNLOAD_SOURCEagent_1  | [Container] 2020/01/05 07:50:36 Phase is DOWNLOAD_SOURCEagent_1  | [Container] 2020/01/05 07:50:36 CODEBUILD_SRC_DIR=/codebuild/output/src628986230/srcagent_1  | [Container] 2020/01/05 07:50:36 YAML location is /codebuild/output/srcDownload/src/buildspec.ymlagent_1  | [Container] 2020/01/05 07:50:36 No commands found for phase name: INSTALLagent_1  | [Container] 2020/01/05 07:50:36 Processing environment variablesagent_1  | [Container] 2020/01/05 07:50:36 Moving to directory /codebuild/output/src628986230/srcagent_1  | [Container] 2020/01/05 07:50:36 Registering with agentagent_1  | [Container] 2020/01/05 07:50:36 Phases found in YAML: 4agent_1  | [Container] 2020/01/05 07:50:36  INSTALL: 0 commandsagent_1  | [Container] 2020/01/05 07:50:36  PRE_BUILD: 1 commandsagent_1  | [Container] 2020/01/05 07:50:36  BUILD: 2 commandsagent_1  | [Container] 2020/01/05 07:50:36  POST_BUILD: 1 commandsagent_1  | [Container] 2020/01/05 07:50:36 Phase complete: DOWNLOAD_SOURCE State: SUCCEEDEDagent_1  | [Container] 2020/01/05 07:50:36 Phase context status code:  Message: agent_1  | [Container] 2020/01/05 07:50:36 Entering phase INSTALLagent_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.shecho ${?}0如果测试成功或1失败,这将返回。test.py可以通过修改使单元测试失败并重新运行来验证这一点codebuild_build.sh。这是有效的,因为当所有测试通过时python -m unittest test.py退出,否则退出。01

慕勒3428872

首先构建并标记 CodeBuild docker 映像,然后运行以下命令,确保更新命令中的图像名称和标签:./codebuild_build.sh -i <image_name>:<image_tag> -a /home/ec2-user/environment/artifacts -s /home/ec2-user/environment/sample-web-app

慕哥6287543

根据https://aws.amazon.com/blogs/devops/announcing-local-build-support-for-aws-codebuild/,您必须git clone包含这些图像定义的 GitHub 存储库: https:&nbsp;//github.com/ aws/aws-codebuild-docker-images。aws/codebuild/standard 不是 DockerHub 存储库或有效的 ECR 存储库。
随时随地看视频慕课网APP

相关分类

Go
我要回答