为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕运维8079593 2023-07-31 16:08:16
我正在尝试在本地为我的 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_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 driverPulling 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]yPulling 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 已登录,不知道下一步应该做什么来解决问题。
查看完整描述

2 回答

?
慕码人8056858

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退出,否则退出。01


查看完整回答
反对 回复 2023-07-31
?
慕勒3428872

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


查看完整回答
反对 回复 2023-07-31
?
慕哥6287543

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 存储库。



查看完整回答
反对 回复 2023-07-31
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信