我想将Atlassian Bamboo与AWS Elastic Beanstalk集成。有没有办法做到这一点?
4 回答
这在一定程度上取决于您的 Bamboo 和 beanstalk 配置以及您计划在 AWS Beanstalk 上部署的应用程序类型。
我们为 Java Web Apps 做了一些事情:
由于 Bamboo 了解 maven,所以可以看看下面的 maven 插件: http ://beanstalker.ingenieux.com.br/beanstalk-maven-plugin/configurations-and-templates.html
我们在一些环境中使用它来创建战争并将它们上传到弹性豆茎。然后,您可以在竹子中创建一个 Maven 任务来调用该插件。
如果您在自己拥有的机器上下载并安装了 Bamboo,则可以使用Elastic Beanstalk 命令行界面 (CLI)。这可能是最强大的方法,但您需要在竹实例上安装 CLI。然后你几乎可以做任何事情。这种方法也应该适用于除 Java/Tomcat 之外的其他环境。
另一个想法:如果您通过 git 使用 Beanstalk(即通过更改代码并推送到 Beanstalk 进行部署),那么您也可以使用 Bamboo 中新的“部署项目”功能在代码通过所有测试后推送代码。
David 的回答为AWS Elastic Beanstalk (+1)的跨产品使用提供了很好的选择。现在我会推荐优秀的统一AWS 命令行接口,而不是现在遗留的AWS Elastic Beanstalk API 命令行接口,请参阅相应的。用于 elasticbeanstalk 的 AWS CLI 命令。
如果您正在寻找Bamboo特定的解决方案,您可能会对 Utoolity 的Tasks for AWS (Bamboo)附加组件(商业,请参阅免责声明)感兴趣,它提供了三个专用任务,具体而言:
- AWS Elastic Beanstalk 应用程序- 创建、更新或删除 AWS Elastic Beanstalk 应用程序。
- AWS Elastic Beanstalk 应用程序版本- 创建、更新或删除 AWS Elastic Beanstalk 应用程序版本。
- AWS Elastic Beanstalk 环境- 创建、更新、重建、重新启动、交换或终止 AWS Elastic Beanstalk 环境并指定配置设置和高级选项。
免责声明:我是这个附加组件供应商 Utoolity 的联合创始人。
如果您对 C# 部署感兴趣:
我们所做的只是简单地启动awsdeploy
工具(应该已经安装在构建服务器上)并带有指向配置脚本的链接。我只是在 Visual Studio 中创建环境,当我重新部署应用程序一次时,我保存了脚本。一旦脚本在构建服务器上,我在部署配置中使用awsdeploy /r c:\location\of\myscript.txt
.
AWS 部署配置脚本中引用的包本身是在构建时使用MSbuild /target:package
命令创建的,并定义为工件(ZIP 包的默认位置是c:\build-dir\...\project\obj\debug\package
,但可以覆盖。
到目前为止,一切都运行良好,尽管我在没有可用的情况下启动弹性实例(例如每晚构建)时遇到问题。
看看我们的仓库:https ://github.com/matzegebbe/docker-aws-login 使用该代码段,您可以使用 aws 登录并推送图像
简单的竹子任务脚本(当然你需要在代理上安装 docker):
#!/bin/bash
docker images hellmann/awscli | grep -q awscli
[ "$?" -eq "0" ] && exit 0
cat <<'EOF' >> Dockerfile
FROM python
MAINTAINER Mathias Gebbe <mathias.gebbe@hellmann.net>
RUN pip install awscli --ignore-installed six
ENV aws_access_key_id AWS_ACCESS_KEY
ENV aws_secret_access_key AWS_SECRET_ACCESS_KEY
RUN mkdir /root/.aws/
RUN printf "[default]\nregion = eu-west-1\n" > /root/.aws/config
RUN printf "[default]\naws_access_key_id = ${aws_access_key_id}\naws_secret_access_key = ${aws_secret_access_key}\n" > /root/.aws/credentials
ENTRYPOINT ["/bin/bash","-c"]
CMD ["aws ecr get-login"]
EOF
docker build -t hellmann/awscli .
$(docker run --rm hellmann/awscli)