编辑推荐: |
本文来自于IBM,,主要介绍了DevOps、Jenkins以及IBM
UrbanCode Deploy 和 Jenkins的整合等相关内容。 |
|
DevOps 简介
DevOps 是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
IBM UrbanCode Deploy 及 Jenkins 简介
UrbanCode Deploy
IBM UrbanCode Deploy(简称 UCD)是 IBM 的应用自动化部署工具。该工具基于一个完善的应用部署自动化管理信息模型,提供可视化的部署逻辑设计手段,并通过远程代理技术,实现对复杂应用在不同环境下的自动化部署。
UCD 不仅仅是一个实现应用部署自动化的工具,还是一个服务于系统工程师(负责部署环境的系统管理)、发布工程师(负责应用的部署逻辑设计)、部署工程师(负责
执行应用部署)和质量工程师(负责应用部署前和部署后的质量审计)等多个角色的管理平台。
Jenkins
Jenkins 是一个广泛用于持续构建的可视化 web 工具,它是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,包括以下两个主要功能
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
从而辅助实现了各种项目的"自动化"编译、打包、分发部署。Jenkins 可以很好的支持各种语言(比如:java,
c#, php 等)的项目构建,也完全兼容 ant、maven、gradle 等多种第三方构建工具,同时支持插件机制,为不同用户实现定制化服务提供了接口。
在 DevOps 理念中,如何实现可持续化部署是一个很重要的步骤,UCD 支持自动化部署,Jenkins
辅助自动化调度,将二者结合在一起可有效帮助用户实现可持续交付和部署,为此我们研究使用 Jenkins
的插件机制,将 UCD 和 Jenkins 进行整合,具体步骤如下所述。
整合 IBM UrbanCode Deploy 和 Jenkins
基本要求
UrbanCode Deploy
IBM UrbanCode Deploy 被收购后的最新版本是 v6.1,收购前的最新版本为 UrbanCode
Deploy v4.8。
下载地址: https://developer.ibm.com/urbancode/products /urbancode-deploy/
插件下载地址:https://http://plugins.urbancode.com /IBMUrbanCodeDeploy
JRE v6.0 或以上
Jenkins
Jenkins 官方网址:http://Jenkins-ci.org/
Java 6 以及以上的版本
安装配置
UrbanCode Deploy
安装服务器,运行 install-server.bat / install-server.sh.
根据向导及命令行提示安装
安装好产品之后,需要先启动服务,然后通过 Web 客户端访问。进入到服务器的安装目录(例如 C:\IBM\UDeploy\bin),并在命令行运行
run_server.cmd ,服务器成功启动后出现如下届面。
图 1. UCD Server 启动界面
启动后,用 web 客户端登录 根据在安装过程中设置的是否选用 SSL 来选择登录地址:
https://localhost:8443 或者 http://localhost:8080 (8080
和 8443 是安装时的默认端口), 出现系统登录页面。使用默认的用户 admin,密码 admin
进行登录。下图是 IBM UrbanCode Deploy 主界面。
图 2. UCD Web 界面
接下来我们安装 UCD agent,IBM UrbanCode Deploy 提供了 3 种方式来安装
agent:拷贝 agent 安装包到目标机器,使用命令行方式进行安装; (运行 install-agent.bat
),或者通过脚本推送安装包到多台目标机器上进行安装,或者使用 IBM UrbanCode Deploy
服务器管理界面进行图形化安装。我们选择第一种方式进行安装,具体步骤按照 install-agent.bat
命令号提示即可。
安装完成,使用命令行界面进入到 Agent 的安装目录,(例如:C:\IBM\UDeploy_Agent\bin),运行启动命令
run_ibm-ucdagent.cmd。
正常启动后,在 Resouce 页签下,所启动的 Agent 会显示 Online 状态。
图 3. UCD Agent 状态
Jenkins
下载最新的版本(一个 WAR 文件),Jenkins 要运行 Java5 以及以上的版本。将下载的
war 包文件部署到 servlet 容器,然后启动容器,在浏览器的 URL 地址栏中输入类似http://localhost:8080/jenkins/这样的地址即可。下图是安装成功后的界面。
图 4. Jenkins Web 页面
实例开发:IBM UrbanCode Deploy 和 Jenkins
开发 UrbanCode Deploy 相关组件
下面我们开发一个 UCD 的组件来实现拷贝文件的功能(把 C:\source_copy 拷贝到目标文件夹
C:\uc_copy_target 中),点击 "Create New Component"
创建一个组件.
图 5. 创建 UCD 组件
进入组件属性窗口,依次填写必选项 Name 和 Base Path,如图 6 所示,点击 Save
按钮进行创建保存。
图 6.UCD 组件属性页
创建完毕之后,通过组件列表选取刚才创建的组件 HelloWord_CopyFile,点击进入,可看到如下图所示的各项标签页。
图 7.UCD 组件标签页
点击进入 Processes 页签,为组件创建一个 process 来实现拷贝文件的功能,如下图所示点击
Create New Process。
图 8.创建组件流程
命名组件流程,同时选择 Process Type 为 Operational (With Version),Save
保存新流程。
图 9.组件流程属性窗口
在画板页面的 Deign 板块选择相应的插件 FileUtils-Copy Directory,并将其拖拽至画板中,单击各个节点将该节点与
Start 和 Finish 节点进行关联如图 10 所示。
图 10.组件流程画板3
点击 Copy Directory 右上角的按钮,对节点属性进行编辑,如图
11 所示,指定源文件夹以及目标文件夹,同时指定所需要拷贝的文件属性,**/*表示包含所有类型文件。
图 11.Copy Directory 节点属性窗口
至此我们已经创建好 CopyFile 组件,这个组件是可重用的,但是如何在 UCD 里面使用这个组件呢,我们需要创建一个新的应用,并将该组件绑定到这个应用上即可。如图
12 所示,点击 Create New Application 进行创建。
图 12.创建新应用
创建完毕,类似于组件页签,点击进入 HelloWordApp 应用,并进入 Components
标签页,点击 Add Component,在对话框列表中选择刚才创建的的 CopyFile 组件即可。
图 13.绑定组件
接下来最后一步,为这个应用创建一个相应的应用流程,如图 14 所示,在弹出的属性框中进行命名,其他属性保持默认值即可。
图 14.创建应用流程
打开应用流程画板,讲组件以及组件流程安装到应用流程中,如图 15 所示,拖拽 Install Component
至画板并进行相应连接。
图 15.安装组件
在安装组件属性窗口,在列表中选择上面创建的组件 HelloWorld_CopyFile 以及组件流程
CopyFile_Process,保持其它默认值进行保存。
图 16.安装组件属性
在创建好组件以及流程之后,如何运行这些流程呢,我们还需要为这个流程创建运行资源同时指定运行环境,已实现组件及流程的可重用性,如图
17 所示。
图 17.创建资源和环境
创建完毕之后,将环境加入到该可运行资源中,如图 18 所示,显示状态为 Online,表示该资源可以用来运行应用流程。
图 18 绑定环境和资源
至此,UCD 相关的开发完毕,进入环境列表,点击 Request Process
按钮,即可对该流程进行运行测试。如图19所示,运行结果可在
History 页签进行查询。
图 19 测试运行
在下面的章节中,我们将进行 Jenkins 相应开发。
开发 Jenkins 相关组件
如果希望在 Jenkins 中调用 UrbanCode 的应用,我们需要用到
Jenkins 的插件机制,Jenkins 提供了一系列插件以便整合 Jenkins 与第三方应用。这里,我们需要用到
UCD 的插件 ibm-ucdeploy-publisher.hpi,我们可以在 UCD 的安装包
URBANCODE_DEPLOY_V6.0_MP_EN.zip 找到这个文件。进入 Jenkins
首页,点击左侧导航栏 Manage Jenkins, 然后选择列表中 Manage Plugins。
图 20 Jenkins 主页
进入插件管理页面后,选择进入 Advanced 标签页,选择 Upload Plugin,点击 Browse
按钮选择本地的 UCD 插件 hpi 文件,选择 upload,进行插件安装。
图 21 安装 Jenkins 插件
安装完成后,进入 Installed 标签页,可以见如图 22 所示的 IBM UrbanCode
Deploy Plugin,如果有新版本需要安装,可以选择先 Uninstall 现有版本,然后按照上述步骤重新安装即可。
图 22 Jenkins 中的 UCD 插件
安装好 UCD 插件后,如何实现 Jenkins 与 UCD 的整合呢,返回到 Jenkins 首页导航栏
Manage Jenkins,选择 Configure System,进入系统配置页面。
图 23 配置 Jenkins 系统
拖拽页面至 IBM UrbanCode Deploy Server 部分,输入相应的 UCD Server
URL 以及用户名和密码,点击 Test Connection 按钮确认配置信息正确可以正常连接。
图 24 配置 UCD 连接信息
实例测试:IBM UrbanCode Deploy 和 Jenkins
按照上述配置连接信息后,我们通过新建 Jenkins 作业进行整合测试,如图 25 所示,选择导航栏
New Item,在右侧列表输入作业名,并选择 Freestyle project,点击 ok 进入配置页面。
图 25 新建 Jenkins 作业
拖拽配置页面至 Post-build Actions 部分,在组件属性中输入上文中 UCD 中创建的组件名称
HelloWorld_CopyFile。
图 26 配置 Jenkins Build 信息 1
在 Deploy Application,Environment 以及 Process 中输入 UCD
中创建的对应的应用,环境以及流程信息,如图 27 所示。
图 27 配置 Jenkins Build 信息 2
点击运行 Jenkins Build,可以通过 Build History 查看运行状态以及历史日志信息。
图 28 运行 Jenkins Build
点击进入可查看详细日志。
图 29 Jenkins 日志输出
总结及经验分享
在 Jenkins 中第一次 build job 时可能会出现如图 30 所示错误
图 30 Jenkins 错误日志
根本原因是 Jenkins 用到的 log4j 版本问题,需要升级到指定的 1.2.12,但 Jenkins
UrbanCode Deploy plug-in 自带版本是 1.2.9. 可通过这个地址获取相应版本,
The Log4j-1.2.17 下载地址: http://logging.apache.org/log4j/1.2/download.html
并将该路径: C:\Program Files (x86)\Jenkins\war\WEB-INF\lib中的jar
包替换 Log4j-1.2.17.
之后需要删除 JENKINS.SF 和 JENKINS.RSA,并且更改 MAINFEST.MF
. 文件路径是: C:\Program Files (x86)\Jenkins\war\META-INF
按如下更新:
图 31 Mainfest.mf 文件修改
|