在这方面已经做了一些工作。
http://purelyinstinctual.com/2013/03/18/automated-deployment-to-amazon-elastic-beanstalk-using-jenkins-on-ec2-part-2-guide/
基本上,这只是添加一个构建后任务来运行标准命令行部署脚本。
在引用的页面中,假设您在 Jenkins 上安装了构建后任务插件并安装了 AWS 命令行工具:
步骤1
在 Jenkins 作业配置屏幕中,添加“构建后操作”并选择插件“将工件发布到 S3 存储桶”,指定源(在我们的示例中,我们使用 Maven,因此源是 target/.war,目标是您的S3 存储桶名称)
第2步
然后,将“构建后任务”(如果没有,这是 Maven repo 中的插件)添加到上面的同一部分(“构建后操作”)并将其拖到“将工件发布到 S3”下方桶”。这一点很重要,我们要确保在继续执行脚本之前将 war 文件上传到 S3。
在构建后任务部分中,确保选中“仅在所有先前步骤都成功时运行脚本”框</p>
在脚本文本区域中,输入脚本的路径以自动部署(在下面的步骤 3 中描述)。对我们来说,我们放了这样的东西:
<path_to_script_file>/deploy.sh "$VERSION_NUMBER" "$VERSION_DESCRIPTION"
$VERSION_NUMBER 和 $VERSION_DESCRIPTION 是 Jenkins 的构建参数,必须在触发部署时指定。这两个变量都将用于 AEB 部署
第 3 步
剧本
#!/bin/sh
export AWS_CREDENTIAL_FILE=<path_to_your aws.key file>
export PATH=$PATH:<path to bin file inside the "api" folder inside the AEB Command line tool (A)>
export PATH=$PATH:<path to root folder of s3cmd (B)>
//get the current time and append to the name of .war file that's being deployed.
//This will create a unique identifier for each .war file and allow us to rollback easily.
current_time=$(date +"%Y%m%d%H%M%S")
original_file="app.war"
new_file="app_$current_time.war"
//Rename the deployed war file with the new name.
s3cmd mv "s3://<your S3 bucket>/$original_file" "s3://<your S3 bucket>/$new_file"
//Create application version in AEB and link it with the renamed WAR file
elastic-beanstalk-create-application-version -a "Hoiio App" -l "$1" -d "$2" -s "<your S3 bucket>/$new_file"