我坚持使用Beanstalk。希望你们中的一些人可以为我提供一些帮助。我能够通过"上传和部署"部署Spring Boot fatjar。 Web界面上的窗口。我的问题是如何从CLI部署jar?我有一个Atlassian Bamboo,当有人合并为master时我会自动构建,我想通过EB CLI自动部署构建的jar文件。
答案 0 :(得分:1)
这听起来非常适合CodePipeline,AWS的免费CI / CD解决方案。
当Bamboo完成构建时,您可以告诉它将其构建工件上传到s3存储桶。可以在此处找到说明:https://confluence.atlassian.com/bamkb/how-to-automatically-archive-build-artifacts-to-amazon-s-s3-storage-707625682.html
要设置CodePipeline,您需要在GUI中为源选择S3。为CodePipeline提供所有必要的存储桶详细信息。为生成的工件命名,然后单击“下一步”。对于下一步,您将通过选择" no build"来跳过构建。 (这将由Bamboo完成)并直接进入Beta(又称Deploy)。您将选择ElasticBeanstalk作为部署提供程序,并且您将选择输入工件作为您在第一步中创建的工件的名称。那就是它。
那么这里发生了什么?当您提交或合并到Master时,您将在Bamboo处触发构建过程,这很棒。当Bamboo完成后,它会将生成的工件(fatjar文件)上传到我们指定的S3存储桶。我们已告诉CodePipeline监视该存储桶的更改以及何时检测到更改CodePipeline将获取fatjar文件,使用它创建相应的CodePipeline工件,并将其传递给ElasticBeanstalk以执行其操作。 ElasticBeanstalk接收CodePipeline工件,并根据配置文件中的设置对其进行处理
答案 1 :(得分:1)
.bash_profile
中有一个小功能,因此可以从shell部署新的jar。在积极发展中很有用。
function update_eb_jar() {
f=${FUNCNAME[0]}
app_name=$1
jar_path=$2
[ -z $3 ] && profile=default || profile=$3
if [[ $# -ne 2 ]] && [[ $# -ne 3 ]]; then
cat << EO_USAGE
usage:
$f app-name jar-path [aws-profile-name]
e.g.
$f eb-api-kashyap target/api*.jar
$f eb-api-preprod target/api*.jar preprod
EO_USAGE
return
fi
app_version="update_eb_jar_$(date +%Y%m%d_%H%M)"
eb_env_name=`aws --profile $profile elasticbeanstalk describe-environments --application-name $app_name | sed -n '/"EnvironmentName"/s/^[^"]*"EnvironmentName": "\([^"]\+\)",.*$/\1/p'`
jar_name=`basename $jar_path`
echo "uploading jar $jar_path to s3://kashyap-east1/$jar_name"
aws --profile $profile s3 cp $jar_path s3://kashyap-east1/$jar_name
echo "creating app version $app_version for app $app_name"
aws --profile $profile elasticbeanstalk create-application-version --application-name $app_name --version-label $app_version \
--source-bundle S3Bucket=kashyap-east1,S3Key=$jar_name
echo "updating environment: $eb_env_name"
aws --profile $profile elasticbeanstalk update-environment --environment-name $eb_env_name --version-label $app_version
}
假设环境名称是唯一的,否则,您必须将应用名称传递给update-environment
。