在Jenkins中使用SAE插件构建应用部署的任务

SAE在Jenkins环境中集成了sae-jenkins-plugin插件,您可以使用该插件在Jenkins内快速完成持续部署并且应用到SAE。本文介绍如何通过不同方式在Jenkins控制台生成部署任务并应用到SAE,包括创建Freestyle project任务、使用流水线插件、使用Maven,以及使用Job DSL插件。

前提条件

准备工作

步骤一:安装sae-jenkins-plugin

  1. 下载sae-jenkins-plugin安装包(最新版本:1.2.3)。

  2. 登录Jenkins首页,单击左侧导航栏的Manage Jenkins,然后在Manage Jenkins页面的System Configuration区域,单击Manage Pluginsbt_manage_plugins_in_jenkins

  3. Plugin Manager页面,单击Advanced页签,在Deploy Plugin区域,单击选择文件上传步骤1已下载的插件安装包,然后单击Deploysc_upload_sae_plugin_in_jenkins

步骤二:配置账号信息

  1. 登录Jenkins首页,单击左侧导航栏的Manage Jenkins,在Manage Jenkins页面的System Configuration区域,单击Configure Systembt_configure_system_in_jenkins

  2. Configure System页面的Deploy to SAE区域,单击Add,配置账号信息,然后单击Ping SAE

    sc_configurate_sae_credentials_in_jenkins

    配置项

    说明

    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时,表示账号信息配置完成。

  3. 单击Save

通过Jenkins构建应用部署任务

您可以通过以下方式来快速构建应用部署任务,包括Freestyle project、流水线插件、Job DSL插件和Maven插件。

方式一:使用Freestyle project构建部署任务

  1. 登录Jenkins首页,在左侧导航栏,单击New Item

  2. Enter an item name区域,输入项目名称,选择Freestyle project,单击OK

  3. 单击Post-build Actions页签,从Add post-build action下拉列表,选择Deploy to SAEsc_add_deploy_to_sae

  4. Deploy to SAE区域,从Add下拉列表,选择SAE Applicationsc_select_SAE_application_from_Application_Setup

  5. SAE Application区域,配置部署参数。

    下图以镜像部署方式为例。更多信息,说明如下。sc_configurate_application_information_via_post_build_action

    分类

    配置项

    说明

    基本配置

    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,单击对应的文本框展开参数列表,然后单击参数右侧的bt_parameter_tips_for_using_jenkin_to_deploy_application图标,获取对应的说明并填写。

  6. 单击Save

  7. 在工程任务页面的左侧导航栏,单击Build Now运行任务。sc_build_now

    Build History区域查看构建记录,如果本次记录显示bt_build_succeed图标,表示部署成功。您可以单击trend,进入构建记录的详情页面查看详情。您还可以登录SAE控制台,在目标应用的变更记录页面,查看本次的变更操作并确认变更状态是否显示执行成功。更多信息,请参见查看变更记录

方式二:使用流水线插件构建部署任务

sae-jenkins-plugin支持流水线预发的片段生成器,在Jenkins中构建流水线部署应用到SAE

  1. 登录Jenkins首页,单击New Item

  2. Enter an item name区域输入项目名称,选择Pipeline,单击OK

  3. Pipeline页签,单击Pipeline Syntaxf_configurate_pipeline syntax

    说明

    如果您已创建流水线,可在项目列表单击流水线名称进入流水线管理页面,然后在左侧导航栏,单击Pipeline Syntax进入Snippet Generator页面。

  4. Snippet Generator页面,从Sample Step下拉列表,选择saeClient: Deploy into SAE,然后从Add下拉列表,选择SAE Applicationsc_select_sae_application_via_snippet_generator

  5. SAE Application区域,配置部署参数。

    sc_configurate_application_information_via_snippet_generator

    下图以镜像部署方式为例。更多信息,说明如下。sc_configurate_application_information_via_post_build_action

    分类

    配置项

    说明

    基本配置

    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,单击对应的文本框展开参数列表,然后单击参数右侧的bt_parameter_tips_for_using_jenkin_to_deploy_application图标,获取对应的说明并填写。

  6. 单击Generate Pipeline Script,拷贝生成的流水线脚本。

    bt_generate_pipeline_script

  7. 在左侧导航栏,单击Back回到流水线管理页面,然后在左侧导航栏,单击Configure,在Pipeline区域输入上一步已拷贝的脚本内容。

    以简单的流水线为例(其余配置均未修改),下图为替换参数后的示例。更多说明,请参见下表。sc_modify_pipeline_script

    序号

    说明

    Script文本框右侧的下拉列表,选择Hello World

    替换为deploy to sae

    替换为步骤6生成的流水线脚本。

  8. 单击Save

  9. 在工程任务页面的左侧导航栏,单击Build Now运行任务。sc_build_now

    Build History区域查看构建记录,如果本次记录显示bt_build_succeed图标,表示部署成功。您可以单击trend,进入构建记录的详情页面查看详情。您还可以登录SAE控制台,在目标应用的变更记录页面,查看本次的变更操作并确认变更状态是否显示执行成功。更多信息,请参见查看变更记录

方式三:使用Maven构建部署任务

使用Maven插件构建应用后,您可以使用sae-jenkins-plugin插件部署应用。使用该方式前,您需要先安装Maven。更多信息,请参见Maven

  1. 使用Maven插件构建Java应用。

    具体操作,请参见使用Maven构建Java应用程序

  2. 使用sae-jenkins-plugin插件部署Java应用。

    1. 登录Jenkins首页,单击已创建的工程任务名称,进入详情页面。

    2. 在左侧导航栏,单击Pipeline Syntax

    3. Snippet Generator页面,从Sample Step下拉列表,选择saeClient: Deploy into SAE,然后从Add下拉列表,选择SAE Application

    4. SAE Application区域,配置部署参数。

      sc_configurate_application_information_via_snippet_generator_for_maven

      分类

      配置项

      说明

      基本配置

      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 StrategyACRApplication EnvironmentStartup CommandStorage And LogApplication Lifecycle Management等信息。单击对应的文本框展开参数列表,然后单击参数右侧的bt_parameter_tips_for_using_jenkin_to_deploy_application图标,获取对应的说明并填写。

    5. 单击Generate Pipeline Script,拷贝生成的流水线脚本。

      bt_generate_pipeline_script

    6. 在左侧导航栏,单击Back回到流水线管理页面,然后在左侧导航栏,单击Configure,在Pipeline区域输入上一步已拷贝的脚本内容。

      以简单的流水线为例(其余保持默认配置),从Script文本框右侧的下拉列表,选择Hello World,修改原有的示例代码。sc_modify_pipeline_script

    7. 单击Save

    8. 在工程任务页面的左侧导航栏,单击Build Now运行任务。sc_build_now

    Build History区域查看构建记录,如果本次记录显示bt_build_succeed图标,表示部署成功。您可以单击trend,进入构建记录的详情页面查看详情。您还可以登录SAE控制台,在目标应用的变更记录页面,查看本次的变更操作并确认变更状态是否显示执行成功。更多信息,请参见查看变更记录

方式四:使用Job DSL插件构建部署任务

在Jenkins中,您可以使用Job DSL插件来构建任务模板,并根据模板来快速构建部署任务。使用该方式前,您需要先安装Job DSL插件。更多信息,请参见Job DSL插件

  1. 登录Jenkins首页,单击New Item

  2. Enter an item name区域,输入项目名称,选择Freestyle project,单击OK

  3. Build页签,从Add build step下拉列表,选择Process Job DSLssc_select_process_job_dsls_from_add_build_step

  4. 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) ;
  5. 单击Save

  6. 在工程任务页面的左侧导航栏,单击Build Now运行任务。sc_build_now

    Build History区域查看构建记录,如果本次记录显示bt_build_succeed图标,表示部署成功。您可以单击trend,进入构建记录的详情页面查看详情。您还可以登录SAE控制台,在目标应用的变更记录页面,查看本次的变更操作并确认变更状态是否显示执行成功。更多信息,请参见查看变更记录