【问题标题】:TeamCity Agent - AWS CLITeamCity 代理 - AWS CLI
【发布时间】:2020-02-11 03:28:54
【问题描述】:

我已使用 JetBrains 堆栈模板 (https://www.jetbrains.com/help/teamcity/running-teamcity-stack-in-aws.html) 将 TeamCity 服务器和代理部署到 AWS

一切似乎都很好,我的服务器启动,代理功能正常,我已经创建了几个构建,等等。 我来到了一个点,我想使用 aws-cli 命令将我的应用程序部署到 AWS 环境。

我正在努力将 aws-cli 启用/安装到代理中。我的构建步骤出错了aws: command not found 有没有人有任何想法? 到目前为止我的进展:我已经通过 ssh bastion ec2 连接到代理 EC2 机器,并且我能够以 ec2-user 的身份调用 aws --version,但构建代理看不到 aws。

【问题讨论】:

  • 用户需要哪些权限才能运行 AWS-CLI 并进行部署?您的代理在哪个用户下运行?
  • @Nanhydrin 对不起我的无知,但我如何检查我的代理在哪个用户下运行?我相信代理有足够的权限来部署应用程序(除了缺少 aws-cli),因为它能够很好地构建代码。
  • 我认为代理正在 docker 容器内运行,因此它无法“看到”本地 aws 安装。但我可能错了..
  • 老实说,恐怕我对 Docker 或 AWS 一无所知,我只是在执行 TeamCity Agent 的常规行为,因为它不能做你能做的事情。我不认为它可以构建的事实意味着它可以部署。您究竟希望它在部署期间做什么?启动新的 Dockers 实例?
  • 我希望它使用“docker build”命令构建一个 docker 镜像

标签: amazon-web-services amazon-ec2 teamcity aws-cli


【解决方案1】:

事实证明,我的 TeamCity 代理通过 docker image https://hub.docker.com/r/jetbrains/teamcity-agent 在 AWS ECS 中运行

我最终做的是使用 jetbrains 作为基础创建自己的 docker 映像。

我将 docker 映像上传到 AWS ECS 存储库。之后,我为原始任务定义创建了一个新版本。这个新版本使用我的图像而不是原始图像,因此我在那里有 aws-cli。

然后我将我的 AWS 配置文件添加到 EC2 主机并将卷添加到 docker 容器(通过任务定义),以便容器能够访问 .aws/credentials 文件。

Dockerfile 看起来像这样:

FROM jetbrains/teamcity-agent

RUN apt-get update && apt-get install -y python-pip
RUN pip install awscli --upgrade --user
ENV PATH="~/.local/bin:${PATH}"

【讨论】:

    【解决方案2】:

    我使用远程桌面连接在团队城市代理中添加了 aws-cli,因为我使用了团队城市的窗口代理。在构建步骤中,我使用 Runner Type 作为命令行并执行 aws 命令。

    有关更多信息,您可以参考我回答问题的以下链接: How to deploy to AWS Elastic Beanstalk on successful Teamcity build

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2019-04-09
      • 2015-11-15
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2016-11-29
      相关资源
      最近更新 更多