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

前提条件

准备工作

步骤一:安装sae-jenkins-plugin

  1. 下载sae-jenkins-plugin安装包(最新版本:1.2.1)。
  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支持的地域,请参见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支持的地域,请参见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支持的地域,请参见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控制台,在目标应用的变更记录页面,查看本次的变更操作并确认变更状态是否显示执行成功。更多信息,请参见查看变更记录