集成 构建 交付 部署_作为持续交付过程的一部分,自动构建和部署MobileFirst Platform工件

IBM®MobileFirst Platform(MFP)是用于开发混合,本机和Web应用程序的平台。 它分为服务器端和客户端两部分,并且由于其开箱即用的安全性和应用程序管理功能以及对多种应用程序体系结构的支持,因此可以减少移动项目的交付时间。 服务器端组件包括用于提供移动消费数据(例如JSON)的适配器。 您可以将适配器连接到各种后端系统,从基于SOAP的Web服务到更现代的RESTful接口。 客户端库提供用于处理安全性,脱机存储和iBeacons的功能; 用于在混合视图和本机视图之间传递数据; 以及基于Apache Cordova技术的许多其他客户端技术。 在构建客户端组件时; 将创建MFP二进制文件(.wlapp),并将其与目标平台的二进制文件(Android的.apk,iOS的.ipa)一起部署到服务器。

要使用MFP框架构建移动应用程序,可以使用IBM MobileFirst Studio(基于Eclipse的IDE)或IBM MobileFirst命令行界面(CLI)。 使用这些工具时,它们将启动一个过程,该过程将构建所有适配器,所有MFP应用程序(如果项目具有多个应用程序)以及对项目运行时的任何自定义(服务器WAR文件)。 部署到您自己的服务器时; 先安装项目运行时,然后再部署适配器和应用程序。 要将项目部署到测试环境,必须专门为该环境构建组件。 CLI工具无法执行,但是Eclipse可以。 您可以使用服务器控制台部署构建的组件。 使用MFP随附的Ant任务,您可以创建一个持续集成(CI)管道来自动化构建和部署过程以及MFP服务器的创建和配置。

文章大纲

本文向您展示了如何查找和驱动MFP随附的Ant任务。 提供了一个示例项目,本文向您展示了如何对其进行配置以产生有效的CI管道。 然后,本文介绍了构建和部署MFP组件所涉及的每个组件。

先决条件

  • MFP服务器- 下载MFP V6.3服务器
  • MFP CLI
  • MFP带有脚本,用于配置服务器以与各种数据库一起使用。 为简单起见,本文使用Apache Derby数据库 。 如果您更喜欢使用IBM DB2,则过程几乎相同,只是需要具有不同参数的其他Ant任务。
  • 阿帕奇蚂蚁
  • Unix shell,例如Bash或Zsh
  • WebSphere Application Server Liberty Profile-您可以下载独立的Liberty Profile Developer Edition ,也可以使用MFP CLI附带的软件包。

所需文件和示例项目

您可以从GitHub下载一个示例项目,其中包含本文中使用的代码。 存储库包含一个MFP项目,该项目带有一个简单的Web应用程序,该Web应用程序具有一个用于调用适配器的按钮,该适配器将当前日期返回给用户。 该项目的结构如下所示,其中包括一个名为ciBuild的新目录,该目录ciBuild本文中介绍的构建脚本。

ciBuild目录应包含MFP CLI工具打包的build.xml Ant任务。 configure-liberty-derby.xmlconfigure-liberty-db2.xml文件与MFP Server打包在一起,并且包含Ant任务定义以创建项目运行时使用的数据库条目以及管理服务。 它们还包含用于部署服务WAR文件的任务( worklightconsole.warworklightadmin.war )以及项目运行时。

查找所需的JAR和XML文件

构建和部署MFP项目组件(例如适配器和wlapp文件)需要build.xml Ant文件。 它与该工具使用的JAR文件一起位于CLI安装目录中。 /Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/lib directory包含以下JAR文件:

  • worklight-ant-deployer.jar -将构建生成的工件部署到MFP服务器时需要。
  • ant-contrib-1.0b3.jar -包含build.xml文件使用的一些其他Ant函数,例如用于遍历适配器目录的for循环定义。
  • worklight-jee-library.jar包含产品的核心。 在没有完整的MFP安装的情况下配置服务器时, configure-liberty-derby.xml脚本可以指向它。
  • worklightconsole.warworklightadmin.war服务器管理和管理所需的服务WAR。

要运行GitHub项目,还需要此目录中的build.xml文件。 build.xml文件包含构建和部署MFP组件所需的所有任务的定义。 将build.xml复制到项目根目录的ciBuild目录中。 需要另一个名为configure-liberty-db2.xml XML文件来配置数据库服务器,该文件位于/Applications/IBM/MobileFirst_Platform_Server/WorklightServer/configuration-samples/ 。 如果使用的是DB2而不是Derby,请将configure-liberty-db2.xml添加到ciBuild目录。

用于构建组件(例如项目运行时和适配器)的MFP JAR文件( worklight-ant-builder.jar )位于ant-tools目录中的/Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/ant-tools

要启用CI构建并运行示例项目,请将所有这些JAR文件复制到项目内的目录中。 这样做使您可以从多个位置运行构建,例如未安装MFP的服务器。 将脚本作为SCM的一部分进行管理意味着它们是受版本控制的。 ciBuild目录中的示例项目包含一个名为ant_jars的文件夹,用于构建过程所需的JAR文件。 与示例项目一样,在项目内部创建一个ciBuild目录来存储与构建相关的组件。 示例项目中的ant_jars目录不包含任何JAR文件,因此您必须根据上述说明将它们复制到其中。 然后, ciBuild目录应包含以下JAR文件,以便示例项目运行:

  • ant-contrib-1.0b3.jar
  • hsqldb-2.2.5.jar
  • worklight-ant-builder.jar
  • worklight-ant-deployer.jar
  • worklight-jee-library.jar

驱动build.xml

示例项目中有三个Bash脚本(shell编程脚本),它们使用适当的参数调用Ant任务。 mfp-ci-derby-install.shmfp-ci-build.sh文件导入common-functions.sh文件并执行各个功能。

common-functions.sh

common-functions.sh脚本包含构建过程的各个组件,这些组件被分解为可以由其他Bash脚本调用的函数。 随着CI管道的增长,此结构为组件重用提供了平台。 要成功执行,必须在common-functions.sh开头添加许多变量导出。 相对于这些变量设置了一些变量,因此必须正确配置它们。

export USER="/Users/devworks"
export LIBERTY_TARGET="$USER/Documents/LibertyProfile"
export WORKLIGHT_INSTALL_DIR="/Applications/IBM/MobileFirst_Platform_Server"

上面的$USER变量是必需的,因为需要绝对目录来配置MFP服务器组件使用的Derby数据库。 $LIBERTY_TARGET是解压缩的WebSphere Application Server Liberty服务器文件的位置,并且应包含wlp目录。 $WORKLIGHT_INSTALL_DIR是MobileFirst Server的安装位置。 在Mac上,缺省值为/Applications/IBM/MobileFirst_Platform_Server

common-functions.sh的第一个函数是setEnvironment() ,其中包含针对CI构建的目标环境的另一系列导出。 默认值用于在本地创建和构建服务器,但是您可以为远程服务器更改它们。 通过此功能,您可以为每个构建环境(例如开发,测试和生产环境)使用不同的值。

mfp-ci-derby-install.sh

mfp-ci-derby-install.sh脚本执行以下组件:

  • 停止现有服务器(如果正在运行)
  • 删除Liberty服务器和Derby数据库(如果存在)
  • 创建一个新服务器
  • 为管理服务和项目运行时安装Derby数据库
  • 安装管理WAR文件( worklightconsole.warworklightadmin.war
  • 安装项目运行时
  • 启动新创建的服务器

mfp-ci-build.sh

mfp-ci-build.sh脚本执行以下组件:

  • 生成项目运行时(项目WAR文件)
  • 生成应用程序和适配器( .wlapp.adapter文件)
  • 执行与mfp-ci-derby-install.sh相同的步骤以部署项目运行时
  • 将生成的构建工件部署到新创建的服务器

分离环境构建和组件构建,使您可以选择提供给CI服务器的控制级别。 通常最好丢弃所有现有服务器,并为每个部署创建一个干净的表。 如果不想每次都放弃该环境,则可以在Liberty服务器apps目录中的现有运行时上复制新创建的运行时。

运行示例项目

运行示例项目; common-functions.sh ,将必需的XML和JAR文件复制到位,并在common-functions.sh开头编辑导出。 设置了与该脚本在其中执行的MFP项目相关的所有其他变量。 完成这些编辑后,在终端上执行mfp-ci-build.sh脚本。 生成的已部署应用程序,适配器和运行时将位于http://localhost:9080/worklightconsole/index.html ,并且构建二进制文件位于项目bin目录中。

构建组件:运行时,适配器和应用

您可以使用build.xmlbuild-war任务定义来构建项目运行时。 构建由buildWar()函数common-functions.sh 。 项目的位置,项目名称和Ant JAR文件的位置都传递给此函数,它是设置环境变量之后mfp-ci-build.sh调用的第一个组件。

类似定义的函数将构建.wlapp和.adapter文件,然后依次调用MFP提供的Ant任务-build-Adapters和build-Apps。 它们在定义common-functions.sh ,并通过调用mfp-ci-build.sh 。 它们以与buildWar()函数相同的方式传递值。 将buildApps()函数传递给外部服务器URL,以确保将应用程序部署到设备后,在其中配置了正确的端点。 所有这些功能的输出都位于项目根目录下的bin文件夹中。

部署组件

有多种方法可以部署项目运行时(WAR文件)。

如果之前已部署了MFP运行时,则可以停止服务器,将新的WAR文件复制到旧的WAR文件中,然后重新启动服务器。 (可选)您可以使用卸载Ant任务从服务器上删除配置,然后再使用安装任务将其重新安装。

另一种方法是从头开始重新安装服务器,这是首选方法,因为它为每个构建提供了干净的未使用环境。 mfp-ci-derby-install.sh脚本将在创建新服务器并安装所有必需组件以及服务器运行时之前清理环境和数据库。 common-functions.sh包含此过程中所有步骤的deployWar()函数。 它调用的每个函数都在common-functions.sh独立定义。 执行完此步骤后,您将拥有一台未部署任何应用程序或适配器的服务器,如下所示。

install()函数传递要调用的Ant任务的参数($ 1)-例如,adminstall参数告诉该函数安装管理和控制台WAR文件。 它被调用四次,对于必须执行的每个任务一次:admdatabase,数据库,adminstall和install。 它以与其他函数相同的方式传递参数。 以这种方式将参数传递给Ant任务时,如果调用的任务未使用该变量,则该变量无效。 必须将该任务传递给数据库名称以及在其上配置服务器的Liberty Profile的位置。

要部署应用程序和适配器文件,请使用deploy-Apps和deploy-Adapters Ant任务。 它们通过deployApps()deployAdapters()函数再次驱动。 与以前一样,它们是通过变量传递的,包括MFP控制台的用户名和密码,并且它们是通过管理服务上传的。 在示例项目中,它位于上下文根目录/worklightadmin ,但可能有所不同,因此请检查现有的server.xml文件以确定其上下文。

工具类

詹金斯

Jenkins是一个开源的持续集成和构建经理。 它会自动触发构建以及与构建软件相关的其他任务,例如显示测试图和其他构建数据。 Jenkins被广泛用作构建管理器,并且具有1000多个开源插件。 还可以使用其他构建管理器工具,例如IBMRational®Urban Code。

Git Webhooks

Webhooks使您可以在构建服务器和Git之间创建订阅某些事件的集成。 触发事件后,您会收到指向指定URL的HTTP POST。 您可以使用webhooks在问题跟踪系统中打开和关闭故障单,开始构建或通过电子邮件发送状态。

JNDI覆盖

您可以在Liberty配置server.xml中设置JNDI条目,然后可以覆盖MFP的服务器端组件中的相应变量。 该方法使您可以一次构建工件并将其部署到多个环境。 例如,您可能具有需要代理访问权才能到达端点的适配器文件。 将适配器从环境A移到B时,可以将端点配置为A的worklight.properties中的变量,然后使用环境B的server.xml中的JNDI查找覆盖它。

要重击还是不重击?

本教程使用Bash来控制MFP组件的构建和部署,但是其他几种工具也可以在管道中用作该角色。 一种方法是直接调用Ant build.xml文件,该文件使用针对每个环境的硬编码配置进行了适当编辑。 请勿在产品的新发行版中使用此方法,该发行版可能包括新的build.xml文件。 在升级过程中,不必编辑此文件,而只需重新配置其驱动方式即可节省时间。

构建移动应用程序二进制文件并部署到AppCenter

本教程中不包含用于构建已部署到移动设备的二进制文件的说明。 但是,您可以使用Ant来构建混合的Android项目,并使用Xctool来构建iOS应用,从而使这一步骤自动化。 然后,您可以使用MFP随附的工具以无头方式将这些二进制文件部署到MFP ApplicationCenter。 有关说明,请参阅MFP知识中心中的用于上载或删除应用程序的命令行工具 。 有了这两个附加元素,您可以创建CI管道来构建环境,移动应用程序和适配器。 然后,您可以将它们部署到MFP应用程序中心,测试团队可以从中将它们下载到他们的设备中。

结论

本文向您展示了如何使用产品随附的Ant任务来构建和部署MFP组件,例如适配器,wlapps和WAR文件。 演示这些构建和部署组件所需的库以及如何使用它们的示例是构建连续交付管道的核心要求。 该示例项目为希望自动构建和部署MFP项目和环境的人员提供了一个起点。


翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1503_marland/1503_marland.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值