1

我有一个运行一些测试用例的 ECS 任务。我让它在 Fargate 中运行。耶!

现在我想从容器中下载测试结果文件。我手头有任务和容器 ID。我可以找到退出代码

aws ecs describe-tasks --cluster Fargate --tasks <my-task-id>

如何下载生成的日志和/或文件?

4

2 回答 2

3

看起来,截至目前,从我的服务器获取测试结果的唯一方法是在容器关闭之前将结果发送到 S3。

这个线程中,无法将卷/EFS 挂载到 Fargate 容器上。

这是我的 bash 脚本,用于运行我的测试(在 build.sh 中),然后将结果上传到 S3:

#!/bin/bash

echo Running tests...

pushd ~circleci/project/
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY

commandToRun="~/project/.circleci/build_scripts/build.sh";

# Run the command
eval $commandToRun 2>&1 | tee /tmp/build.log

# Get the exit code
exitCode=$?

aws s3 cp /tmp/build-$FEATURE.log s3://$CICD_BUCKET/build.log \
    --storage-class REDUCED_REDUNDANCY \
    --region us-east-1

exit ${exitCode}

当然,您必须传入 AWS_ACCESS_KEY、AWS_SECRET_KEY 和 CICD_BUCKET 环境变量。您选择的存储桶名称需要预先创建,但它下面的任何目录结构都不需要预先创建。

于 2018-02-05T16:11:50.250 回答
1

您可能想查看在此用例中使用 CodeBuild,它可以自动将工件复制到 S3。

使用简单的 bash 脚本和 AWS CLI 来编排以下内容实际上非常容易:

  • 幂等地创建/更新 CodeBuild 项目(使用您可以在源存储库中定义的简单 CloudFormation 模板)
  • 运行执行源存储库的给定修订版的 Codebuild 作业(再次使用在源存储库中定义的自定义 buildspec.yml 规范)
  • 为您的 CodeBuild 作业和流式日志输出附加到 CloudWatch 日志日志组
  • 最后检测作业何时成功完成,然后使用 S3 在本地下载任何工件

我使用这种方法在 CodeBuild 中运行构建,并将 Bamboo 作为总体持续交付系统。

于 2018-03-08T08:41:45.853 回答