SAE在Jenkins环境中集成了sae-jenkins-plugin插件,您可以使用该插件在Jenkins内快速完成持续部署并且应用到SAE。本文介绍如何通过不同方式在Jenkins控制台生成部署任务并应用到SAE,包括创建Freestyle project任务、使用流水线插件、使用Maven,以及使用Job DSL插件。
前提条件
已安装Jenkins。仅支持Jenkins 2.303及以上版本。
准备工作
步骤一:安装sae-jenkins-plugin
下载sae-jenkins-plugin安装包(最新版本:1.2.3)。
登录Jenkins首页,单击左侧导航栏的Manage Jenkins,然后在Manage Jenkins页面的System Configuration区域,单击Manage Plugins。
在Plugin Manager页面,单击Advanced页签,在Deploy Plugin区域,单击选择文件,上传步骤1已下载的插件安装包,然后单击Deploy。
步骤二:配置账号信息
登录Jenkins首页,单击左侧导航栏的Manage Jenkins,在Manage Jenkins页面的System Configuration区域,单击Configure System。
在Configure System页面的Deploy to SAE区域,单击Add,配置账号信息,然后单击Ping SAE。
配置项
说明
Name
为AccessKey设置名称。
AliCloud Access Key Id
输入AccessKey ID。更多信息,请参见创建AccessKey。
AliCloud Access Key Secret
输入AccessKey Secret。更多信息,请参见创建AccessKey。
Region
单击Advanced...后显示。
从下拉列表选择想部署的应用的所在地域,默认值为cn-hangzhou。该配置项用于配置账号时,测试与对应Region SAE服务器的联通情况与账号信息有效性,不影响部署操作。
Endpoint
单击Advanced...后显示。
默认情况无需修改,默认值为sae.aliyuncs.com。如果Jenkins服务所在服务器部署在阿里云的VPC内,但是没有公网访问能力,需要用SAE的VPC地址来保证与SAE连接。例如,VPC地址
sae-vpc.cn-hangzhou.aliyuncs.com
,需要将其中的cn-hangzhou
改成VPC所在Region。当页面显示success时,表示账号信息配置完成。
单击Save。
通过Jenkins构建应用部署任务
您可以通过以下方式来快速构建应用部署任务,包括Freestyle project、流水线插件、Job DSL插件和Maven插件。
方式一:使用Freestyle project构建部署任务
登录Jenkins首页,在左侧导航栏,单击New Item。
在Enter an item name区域,输入项目名称,选择Freestyle project,单击OK。
单击Post-build Actions页签,从Add post-build action下拉列表,选择Deploy to SAE。
在Deploy to SAE区域,从Add下拉列表,选择SAE Application。
在SAE Application区域,配置部署参数。
下图以镜像部署方式为例。更多信息,说明如下。
分类
配置项
说明
基本配置
SAE Credentials
从下拉列表选择已配置的AccessKey的名称。
SAE Namespace
输入部署应用所在的命名空间ID,格式为
<RegionId>:<NamespaceId>
,例如cn-hangzhou:test
。SAE支持的地域,请参见开服地域。Application Id
输入部署应用的应用ID。
Target Object
部署包或镜像的地址链接,支持方式如下。
部署包地址:支持本地与远程部署包,包括Java JAR包、WAR包和PHP ZIP包。示例如下。
本地部署包
SPRING-CLOUD-CONSUMER.jar
如果项目工作目录是/var/${jenkins_home}/workspace/test,构建的包的全路径是/var/${jenkins_home}/workspace/test/SPRING-CLOUD-CONSUMER.jar,则Target Object仅需填写
SPRING-CLOUD-CONSUMER.jar
。远程部署包
http://xx.oss-cn-hangzhou-internal.aliyuncs.com/demo/SPRING-CLOUD-CONSUMER.jar
如果选择远程部署包,确保部署的应用和远程文件的网络畅通,例如将部署包上传至阿里云对象存储OSS。
镜像地址:确保部署的应用能够正常拉取镜像,例如拉取阿里云镜像仓库的地址。示例如下。
registry-vpc.cn-hangzhou.aliyuncs.com/demo/consumer:1.0
说明应用创建成功后,后续选择的部署方式必须与创建时保持一致。
Whether target imageUrl
该配置项仅在Target Object为镜像地址时需要选中。
高级配置
包括升级策略、环境变量和启动命令等配置。例如,应用实例且需要升级,可以按需通过灰度或分批发布方式升级应用实例版本。此时可以配置Update Strategy,单击对应的文本框展开参数列表,然后单击参数右侧的图标,获取对应的说明并填写。
单击Save。
在工程任务页面的左侧导航栏,单击Build Now运行任务。
方式二:使用流水线插件构建部署任务
sae-jenkins-plugin支持流水线预发的片段生成器,在Jenkins中构建流水线部署应用到SAE。
登录Jenkins首页,单击New Item。
在Enter an item name区域输入项目名称,选择Pipeline,单击OK。
在Pipeline页签,单击Pipeline Syntax。
说明如果您已创建流水线,可在项目列表单击流水线名称进入流水线管理页面,然后在左侧导航栏,单击Pipeline Syntax进入Snippet Generator页面。
在Snippet Generator页面,从Sample Step下拉列表,选择saeClient: Deploy into SAE,然后从Add下拉列表,选择SAE Application。
在SAE Application区域,配置部署参数。
下图以镜像部署方式为例。更多信息,说明如下。
分类
配置项
说明
基本配置
SAE Credentials
从下拉列表选择已配置的AccessKey的名称。
SAE Namespace
输入部署应用所在的命名空间ID,格式为
<RegionId>:<NamespaceId>
,例如cn-hangzhou:test
。SAE支持的地域,请参见开服地域。Application Id
输入部署应用的应用ID。
Target Object
部署包或镜像的地址链接,支持方式如下。
部署包地址:支持本地与远程部署包,包括Java JAR包、WAR包和PHP ZIP包。示例如下。
本地部署包
SPRING-CLOUD-CONSUMER.jar
如果项目工作目录是/var/${jenkins_home}/workspace/test,构建的包的全路径是/var/${jenkins_home}/workspace/test/SPRING-CLOUD-CONSUMER.jar,则Target Object仅需填写
SPRING-CLOUD-CONSUMER.jar
。远程部署包
http://xx.oss-cn-hangzhou-internal.aliyuncs.com/demo/SPRING-CLOUD-CONSUMER.jar
如果选择远程部署包,确保部署的应用和远程文件的网络畅通,例如将部署包上传至阿里云对象存储OSS。
镜像地址:确保部署的应用能够正常拉取镜像,例如拉取阿里云镜像仓库的地址。示例如下。
registry-vpc.cn-hangzhou.aliyuncs.com/demo/consumer:1.0
说明应用创建成功后,后续选择的部署方式必须与创建时保持一致。
Whether target imageUrl
该配置项仅在Target Object为镜像地址时需要选中。
高级配置
包括升级策略、环境变量和启动命令等配置。例如,应用实例且需要升级,可以按需通过灰度或分批发布方式升级应用实例版本。此时可以配置Update Strategy,单击对应的文本框展开参数列表,然后单击参数右侧的图标,获取对应的说明并填写。
单击Generate Pipeline Script,拷贝生成的流水线脚本。
在左侧导航栏,单击Back回到流水线管理页面,然后在左侧导航栏,单击Configure,在Pipeline区域输入上一步已拷贝的脚本内容。
单击Save。
在工程任务页面的左侧导航栏,单击Build Now运行任务。
方式三:使用Maven构建部署任务
使用Maven插件构建应用后,您可以使用sae-jenkins-plugin插件部署应用。使用该方式前,您需要先安装Maven。更多信息,请参见Maven。
使用Maven插件构建Java应用。
具体操作,请参见使用Maven构建Java应用程序。
使用sae-jenkins-plugin插件部署Java应用。
登录Jenkins首页,单击已创建的工程任务名称,进入详情页面。
在左侧导航栏,单击Pipeline Syntax。
在Snippet Generator页面,从Sample Step下拉列表,选择saeClient: Deploy into SAE,然后从Add下拉列表,选择SAE Application。
在SAE Application区域,配置部署参数。
分类
配置项
说明
基本配置
SAE Credentials
从下拉列表选择已配置的AccessKey的名称。
SAE Namespace
输入部署应用所在的命名空间ID,格式为
<RegionId>:<NamespaceId>
,例如cn-hangzhou:test
。SAE支持的地域,请参见开服地域。Application Id
输入部署应用的应用ID。
Target Object
输入部署包的地址链接。支持本地与远程部署包,包括Java JAR包、WAR包和PHP ZIP包。示例如下。
本地部署包
SPRING-CLOUD-CONSUMER.jar
如果项目工作目录是/var/${jenkins_home}/workspace/test,构建的包的全路径是/var/${jenkins_home}/workspace/test/SPRING-CLOUD-CONSUMER.jar,则Target Object仅需填写
SPRING-CLOUD-CONSUMER.jar
。远程部署包
http://xx.oss-cn-hangzhou-internal.aliyuncs.com/demo/SPRING-CLOUD-CONSUMER.jar
如果选择远程部署包,确保部署的应用和远程文件的网络畅通,例如将部署包上传至阿里云对象存储OSS。
说明应用创建成功后,后续选择的部署方式必须与创建时保持一致。
Whether target imageUrl
无需配置。该配置项仅在Target Object为镜像地址时需要选中。
高级配置
包括Update Strategy、ACR、Application Environment、Startup Command、Storage And Log和Application Lifecycle Management等信息。单击对应的文本框展开参数列表,然后单击参数右侧的图标,获取对应的说明并填写。
单击Generate Pipeline Script,拷贝生成的流水线脚本。
在左侧导航栏,单击Back回到流水线管理页面,然后在左侧导航栏,单击Configure,在Pipeline区域输入上一步已拷贝的脚本内容。
以简单的流水线为例(其余保持默认配置),从Script文本框右侧的下拉列表,选择Hello World,修改原有的示例代码。
单击Save。
在工程任务页面的左侧导航栏,单击Build Now运行任务。
方式四:使用Job DSL插件构建部署任务
在Jenkins中,您可以使用Job DSL插件来构建任务模板,并根据模板来快速构建部署任务。使用该方式前,您需要先安装Job DSL插件。更多信息,请参见Job DSL插件。
登录Jenkins首页,单击New Item。
在Enter an item name区域,输入项目名称,选择Freestyle project,单击OK。
在Build页签,从Add build step下拉列表,选择Process Job DSLs。
在Process Job DSLs区域,单击Use the provided DSL script,然后在DSL Script文本框,输入配置脚本。
job('sae') { // 目标任务的名称。 publishers { // SAE插件的类型。 saeClient { // SAE插件调用名称。 deploySAEApplication('', '', '', '', '', ...) // 调用的SAE方法,以英文半角逗号(,)分隔多个参数。 } } }
支持的方法示例如下。
void deploySAEApplication( String namespace, String credentialsString, String appId, String targetObject, Boolean image, String edasContainerVersion, String webContainer, String jdk, String packageVersion, String envs, String startupCommand, String args, Integer minReadyInstances, Integer minReadyInstanceRatio, Boolean autoEnableApplicationScalingRule, Boolean enableGreyTagRoute, String acrInstanceId, String acrAssumeRoleArn, String imagePullSecrets, Boolean enableImageAccl, String customHostAlias, String timezone, String configMapMountDesc, String jarStartOptions, String jarStartArgs, String warStartOptions, String tomcatConfig, String nasId, String mountHost, String mountDesc, String ossMountDesc, String ossAkId, String ossAkSecret, String slsConfigs, String kafkaConfigs, String postStart, String preStop, Integer terminationGracePeriodSeconds, String readiness, String liveness, Boolean enableAhas, Boolean associateEip, String updateStrategy) ;
单击Save。
在工程任务页面的左侧导航栏,单击Build Now运行任务。