如何将Atlassian Bamboo与AWS Elastic Beanstalk集成

6

集成怎么做?部署? - Ker Ruben Ramos
这篇文章帮助我理解如何做到这一点:http://blog.pedago.com/2014/02/18/build-and-deploy-with-grunt-bamboo-and-elastic-beanstalk/ - ggirtsou
4个回答

5

根据您的Bamboo和Beanstalk配置以及您计划在AWS Beanstalk上部署的应用程序类型而定。

我们为Java Web应用程序做了一些事情:

由于Bamboo了解Maven,因此可以查看以下Maven插件: http://beanstalker.ingenieux.com.br/beanstalk-maven-plugin/configurations-and-templates.html

我们正在使用它来创建war并将其上传到弹性Beanstalk中的某些环境。然后,您可以在Bamboo中创建一个Maven任务来调用该插件。

如果您在自己拥有的机器上下载并安装了Bamboo,则可以使用Elastic Beanstalk命令行界面(CLI)。 这可能是最强大的方法,但您需要在Bamboo实例上安装CLI。然后,您几乎可以做任何事情。除了Java / Tomcat之外,这种方法也适用于其他环境。

另一个想法: 如果您使用了使用git的Beanstalk(即通过进行代码更改并将其推送到Beanstalk来部署),那么您还可以使用Bamboo中的新“部署项目”功能,在所有测试都通过后将代码推送。

2
只是提供信息:Beanstalk Maven插件支持基于git的部署。有关更多详细信息,请参见此网址 - aldrinleal

4

David's answer提供了关于如何使用AWS Elastic Beanstalk的好方法(+1)。现在,我推荐使用非常优秀的统一AWS Command Line Interface而不是现在已经过时的AWS Elastic Beanstalk API Command Line Interface,可以查看相关的AWS CLI commands for elasticbeanstalk

如果您正在寻找一个与Bamboo相关的解决方案,可能会对Utoolity的Tasks for AWS (Bamboo)插件(商业插件,请参阅免责声明)感兴趣,该插件提供了三个专门的任务,分别是:

  • AWS Elastic Beanstalk Application - 创建、更新或删除AWS Elastic Beanstalk应用程序。
  • AWS Elastic Beanstalk Application Version - 创建、更新或删除AWS Elastic Beanstalk应用程序版本。
  • AWS Elastic Beanstalk Environment - 创建、更新、重新构建、重启、交换或终止AWS Elastic Beanstalk环境,并指定配置设置和高级选项。

免责声明:本人是该插件供应商Utoolity的联合创始人。


为什么云竹解决方案上没有提供AWS的任务? - Ascherer
1
@Ascherer - 我们非常希望能够为Bamboo Cloud提供AWS任务。不幸的是,出于我们控制之外的原因,我们目前无法这样做:Atlassian为了安全和可扩展性的原因禁止了经典插件,但尚未在新的插件框架Atlassian Connect中支持Bamboo - 请查看我们的相关FAQ Will Tasks for AWS be available for Bamboo Cloud (Atlassian OnDemand)? 获取详细信息。 - Steffen Opel
注意:$ eb cli 是现在首选的弹性 Beanstalk 部署 CLI 工具,不是上面提到的已弃用的工具。 - jowan sebastian

0

请查看我们的代码库: https://github.com/matzegebbe/docker-aws-login 使用该片段,你可以登录AWS并推送镜像

简单的Bamboo任务脚本(当然需要在代理机上安装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)

0

如果您对C#部署感兴趣:

我们所做的就是简单地启动awsdeploy工具(应该已经安装在构建服务器上),并链接到配置脚本。我只需在Visual Studio中创建环境,当我重新部署应用程序时,保存脚本。一旦脚本在构建服务器上,我就可以在部署配置中引用它,使用awsdeploy /r c:\location\of\myscript.txt

包本身在AWS部署配置脚本中的引用是通过MSbuild /target:package命令在构建时创建的,并定义为一个artifact(ZIP包的默认位置为c:\build-dir\...\project\obj\debug\package,但可以被覆盖)。

到目前为止,一切都运作得很好,尽管我在没有可用弹性实例时(例如夜间构建)启动弹性实例时遇到了问题。


谢谢你的回复,马可。 - Khalid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接