-1

我想将战争从 Jenkins 部署到 Cloud。

您能否让我知道如何将战争文件从我本地的 Jenkins 部署到 AWS Bean Stalk ?

我尝试使用 Jenkins 后处理插件将工件复制到 S3,但出现以下错误:

ERROR: Failed to upload files java.io.IOException: put Destination [bucketName=https:, objectName=/s3-eu-west-1.amazonaws.com/bucketname/test.war]:
com.amazonaws.AmazonClientException: Unable to execute HTTP request: Connect to s3.amazonaws.com/s3.amazonaws.com/ timed out at hudson.plugins.s3.S3Profile.upload(S3Profile.java:85) at hudson.plugins.s3.S3BucketPublisher.perform(S3BucketPublisher.java:143)
4

1 回答 1

1

在这方面已经做了一些工作。

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"
于 2013-07-18T15:50:13.347 回答