标签: aws-codebuild

AWS Codebuild容器非常非常慢

我只是通过phpunit为PHP Symfony2测试设置我的Codebuild管道.


情况:
我们的一些测试与本地数据库(经典的mysql-server)对话

Codebuild使用我们的基于的自定义Docker镜像php:5.6-apache
OS : Linux Alpine PHP VERSION : 5.6

我们执行以下步骤:

  1. 拉动来源
  2. 设置数据库(全部没有延迟)
  3. 作曲家安装(5分钟)
  4. php app/console doctrine:schema:update --force
  5. php app/console broadway:event-store:schema:init
  6. 启动phpUnit.

在本地环境(具有6GB RAM允许的Docker)一切都很好.
整个过程需要15分钟 ......完美.


问题:

当我在AWS-CodeBuild上的相同图像上启动构建时,这个时间要长得多:

  1. 拉源(即时)
  2. 设置数据库(即时)
  3. Composer安装(5分钟)
  4. php app/console doctrine:schema:update --force(14分钟)
  5. php app/console broadway:event-store:schema:init(即时)
  6. phpUnit(无限 CodeBuild超时)

假设:
似乎所有php进程访问数据库都非常慢.
经典MySQL请求具有"正常"速度......

如果有人有想法?
谢谢你的帮助
@ Rops42

mysql phpunit amazon-web-services symfony aws-codebuild

6
推荐指数
1
解决办法
1063
查看次数

如何在 buildspec.yaml 中检索 Secret Manager 数据

我正在创建与 SonarQube 集成的 CodeBuild,因此我直接在 Buildspec.yaml 中传递值和声纳凭据

我尝试使用以下命令从 SecretManager 中检索,而不是直接进行硬编码,如以下链接中所述。但它没有得到正确的值。它抛出一个错误。

命令:'{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}'

链接https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager

错误[ERROR] SonarQube 服务器 [{{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:********:secret:**********:SecretString:SonarURL }}] 无法连接

我如何使用echo '{{resolve:secretsmanager:arn:aws:secretsmanager:us-east-1:***:secret:**************:SecretString:**** ***}}'

注意:我的命令中的所有 * 都是 secretname 和 secreturl

yaml amazon-web-services aws-codepipeline aws-codebuild aws-secrets-manager

6
推荐指数
3
解决办法
9061
查看次数

如何在 CodePipeline 中处理 ECS 部署以更改任务定义

我正在使用两个容器部署 ECS Fargate 任务:1 个反向代理 nginx 和 1 个 python 服务器。对于每个我有一个 ECR 存储库,我有一个 CI/CD CodePipeline 设置

CodeCommit -> CodeBuild -> CodeDeploy

此流程适用于简单的代码更改。但是如果我想添加另一个容器怎么办?我当然可以更新 mybuildspec.yml以添加容器的构建,但我还需要 1) 更新我的任务定义,以及 2) 将此任务定义分配给我的服务。

问题:

1) 如果我在 CodeBuild 阶段使用 CLI 创建新的任务定义并将其与我的服务相关联,这不会触发部署吗?然后我的 CodeDeploy 会尝试再次部署,所以我最终会部署两次?

2) 这种方法最终会创建一个新的任务定义并在每次部署时更新服务。这很糟糕吗?我是否应该有一些逻辑来拉下最新的任务修订版并将 JSON 与 CodeCommit 版本进行比较,并且仅在存在差异时才进行更新?

谢谢!

amazon-ecs aws-code-deploy aws-codepipeline aws-codebuild

6
推荐指数
1
解决办法
1308
查看次数

创建 AWS Codebuild 存储库时出现“未找到存储库或权限被拒绝”

我们正在尝试在 aws 中创建代码构建并在 github 中有一个私有的 github 存储库,而在创建代码构建部分时,我在点击代码构建部分中的创建按钮后出现了未找到存储库或权限被拒绝错误。

有没有人遇到过这个问题,如果有的话,请您提出建议。

提前致谢。

aws-codebuild

6
推荐指数
1
解决办法
2890
查看次数

AWS CodeBuild - 操作配置中指定的环境变量与预期格式不匹配

我正在尝试向使用 AWS Codebuild 的 Pipeline 操作添加环境变量。但是,无论我添加什么,如果我选择一种类型的 Secret Manager,该步骤都会失败并显示以下错误:

无效的动作配置

操作配置中指定的环境变量与预期格式不匹配,预期格式为遵循以下格式的 JSON 数组:[{"name": "string", "type": "string", "value": "string"}]

这是我在 UI 中输入的内容:

在此处输入图片说明

CodePipeline 生成的 JSON 如下所示:

[{"name":"SERVICE_CREDS","value":"my-secret:service_creds","type":"SECRETS_MANAGER"}]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么??我不知道我最后可能会做错什么。我正在他们提供的框中输入文本。Pipelines 从它们的输入框中生成的 JSON 在我看来是有效的。所以,我不知道为什么说环境变量与预期的格式不匹配!

aws-codepipeline aws-codebuild

6
推荐指数
1
解决办法
974
查看次数

Amazon ECR 的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”

  1. 我在名为 Workshop 的 Amazon ECR 存储库中有一个图像
  2. 我有一个 Dockerfile 来拉取那个镜像
  3. CodeBuild 应该从 Dockerfile 构建新镜像

问题:

xxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/workshop 的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”

在我的 buildspec 文件中,我尝试使用 docker 登录,但没有任何变化。

 phases:
  pre_build:
  commands:
   - echo Logging in to Amazon ECR...
   - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
   - aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 
     xxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com
   - CODEBUILD_RESOLVED_SOURCE_VERSION="${CODEBUILD_RESOLVED_SOURCE_VERSION:-$IMAGE_TAG}"
   - IMAGE_TAG=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
Run Code Online (Sandbox Code Playgroud)

Dockerfile 看起来像这样:

FROM xxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/workshop:latest

CMD ["echo", "Hallo!"]

RUN code-server
Run Code Online (Sandbox Code Playgroud)

什么可能导致问题?

aws-cloudformation docker dockerfile amazon-ecr aws-codebuild

6
推荐指数
1
解决办法
1606
查看次数

如何在 AWS CodeBuild 期间调用 git 命令

我需要在我的应用程序中显示“构建版本”。为此,我使用 npm 包“git-describe”,它从最后一个 Git 标签获取当前 Git 提交的“距离”。它在本地运行良好,其中 .git 文件夹与源代码一起可用。但在服务器上,它不起作用,可能是因为“.git”文件夹不是部署代码的一部分。因此,我在 package.json 中添加了一个脚本,将“距离”写入文件,以便代码稍后可以读取其值以显示在应用程序中。

我假设“.git”文件夹可用于在 CodeBuild 期间执行 git 命令。因此,我将上述 package.json 脚本添加到 AWS CodeBuild 管道中。但我认为我错了,因为 git 命令似乎在服务器上不起作用。

有人可以建议我如何实现所需的功能吗?

git git-describe aws-codebuild

6
推荐指数
1
解决办法
2957
查看次数

尝试在 buildspec.yml 中添加 CloudFront 失效命令会引发 254 错误

我试图在构建完成后使 Cloudfront 缓存失效,并且在 Codebuild 中得到以下错误:[Container] 2022/05/16 15:46:11 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: aws cloudfront create-invalidation --distribution-id myid --paths '/*'. Reason: exit status 254

这是我的 BuildSpec 定义

version: 0.2
env:
  variables:
    APP_NAME: "managerui"
phases:
  install:
    runtime-versions:
      nodejs: 14.x
    commands:
      - echo install process started
      - cd src/UI/managerui/
      - ls 
      - npm install && npm install -g @angular/cli
  build:
    commands:
      - echo build process started now
      - ls 
      - ng build --configuration=production
  post_build:
    commands:
      - echo …
Run Code Online (Sandbox Code Playgroud)

amazon-cloudfront aws-codebuild

6
推荐指数
0
解决办法
2563
查看次数

AWS CodeBuild:如何运行需要启动 Docker 的测试?

我有一个 Node.js 项目,其中包含Testcontainers,用于启动 Redis 和 Prostgress 进行测试。

我想将这些测试作为 CI 的一部分来运行。为此,我使用 Node.js 的 alpine 镜像,并在其上安装了 Docker。我可以运行不需要 Docker 的测试,但如果涉及 Docker,我会从 Testcontainers 收到此错误:

未找到 Docker 客户端策略

这是我在日志中得到的内容:

2022-05-25T13:09:11.494Z testcontainers DEBUG Found applicable Docker client strategy: UnixSocketStrategy
2022-05-25T13:09:11.531Z testcontainers DEBUG Testing Docker client strategy URI: unix:///var/run/docker.sock
2022-05-25T13:09:11.539Z testcontainers DEBUG No registry auth locator found for registry: "https://index.docker.io/v1/"
2022-05-25T13:09:11.543Z testcontainers WARN  Docker daemon is not reachable: Error: connect ENOENT /var/run/docker.sock
2022-05-25T13:09:11.543Z testcontainers WARN  Docker client strategy UnixSocketStrategy is not reachable
2022-05-25T13:09:11.544Z testcontainers ERROR …
Run Code Online (Sandbox Code Playgroud)

javascript node.js docker aws-codebuild testcontainers

6
推荐指数
1
解决办法
1823
查看次数

在 AWS CodePipeline 中运行 `npm ci` 失败:“无法读取未定义的属性‘aws-cdk-lib’”

npm ci在 AWS CodePipeline 中调用时,我遇到了一些奇怪的行为。

NPM文档建议使用npm ci(“全新安装”)而不是npm install在自动化环境中。AWS CDK 文档在其CDK 管道示例中遵循此建议:

const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
  synth: new pipelines.ShellStep('Synth', {
    ...
    commands: [
      'npm ci',
      'npm run build',
      'npx cdk synth',
    ],
  }),
});
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试此操作时,我的管道在npm ci命令中失败,并出现奇怪的错误消息:

[Container] 2022/12/14 16:00:37 Running command npm ci
npm ERR! Cannot read property 'aws-cdk-lib' of undefined
Run Code Online (Sandbox Code Playgroud)

该包aws-cdk-lib是我的依赖项中的第一个条目package.json。所以看起来 CodeBuild 在通过安装时无法解析我的依赖项npm cinpm ci奇怪的是,当我替换为...时,一切正常npm install,但我想找到一种方法来使其与 …

amazon-web-services npm aws-codepipeline aws-codebuild aws-cdk

6
推荐指数
1
解决办法
3226
查看次数