繁体   English   中英

Elastic Beanstalk CLI部署jar

[英]Elastic Beanstalk CLI deploy jar

我迷上了Beanstalk。 希望你们中的一些人能对我有所帮助。 我可以通过Web界面上的“ Upload and Deploy”窗口来部署Spring Boot fatjar。 我的问题是如何从CLI部署jar? 我有一个Atlassian Bamboo,当有人合并到master时会自动构建,并且我想通过EB CLI自动部署构建的jar文件。

这听起来像是AWS的免费CI / CD解决方案CodePipeline的完美使用。

Bamboo完成构建后,您可以告诉它将其构建工件上载到s3存储桶。 可以在这里找到说明: https : //confluence.atlassian.com/bamkb/how-to-automatically-archive-build-artifacts-to-amazon-s-s3-srage-707625682.html

要设置您的CodePipeline,您将在GUI中为源选择S3。 为CodePipeline提供所有必要的存储段详细信息。 给生成的工件命名,然后单击下一步。 对于下一步,您将通过选择“ no build”(这将由Bamboo完成)来跳过构建,并直接转到Beta(即Deploy)。 您将选择ElasticBeanstalk作为部署提供程序,并将输入工件作为在第一步中创建的工件的名称。 而已。

那么这是怎么回事? 当您提交或合并到Master时,会在Bamboo触发您的构建过程,这很棒。 Bamboo完成后,它将把生成的工件(fatjar文件)上传到我们指定的S3存储桶。 我们已经告诉CodePipeline监视该存储桶中的更改,并且当检测到更改时,CodePipeline将抓取fatjar文件,并使用它创建适当的CodePipeline工件,然后将其传递给ElasticBeanstalk以对其进行处理。 ElasticBeanstalk接收CodePipeline工件,并根据配置文件中的设置对其进行处理

这是我的.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM