我想继续向ServiceMix 6.0部署一个功能,它基于Karaf 3.0.4。
我第一次尝试使用karaf控制台。但也存在一些问题。对于标准的karaf安装,无法在karaf控制台上确定是否已经安装了功能(请参阅我的其他问题)。karaf控制台的另一个问题是它不支持退出代码。因此,无法可靠地确定功能安装是否成功完成。
然后我安装了hawtio,并试图通过与hawtio捆绑的jolokia/REST使用暴露的JMX bean。这里的问题是karaf 3.0。x无法更新功能。因此,必须先卸载功能。然而,FeatureService只提供卸载明确指定功能的可能性。但当安装了该功能的早期版本时,子功能也随之安装。它们还需要升级,因此需要先卸载。所以我需要一种方法来迭代一个特征的子特征,而我没有。
那么,如何在karaf 3.0中持续部署功能呢。x该怎么办?
对于karaf 3,没有更新功能的好方法。
这对karaf 4来说已经有点好了。它允许更新功能repo,然后您只需再次安装该功能即可。它将检测到功能已更改,并在bundle中进行必要的更改。
我们实现的第一个尝试是bash脚本。最大的问题是卸载旧版本。因此,我们为特征及其子特征的名称建立了一个约定。因此,我们可以使用以下内容来查找已经安装的功能:
features=$(echo "feature:list" | ssh -p $smx_ssh_port $smx_user@$smx_host | grep -h "<feature-name-convention-regex>.*|.*x.*|" | cut -f1 -d" " | tr '\n' ' ')
然后,它可以被传递到特性:卸载
,也可以用于检测在调用特性:repo-add-i
后是否安装了特性。
剩下的问题是,我们无法引用第三方子功能,因为当需要安装更新版本时,它们不会被卸载,并且我们无法确定是否所有子功能都已成功安装。
我的团队正在使用功能分支来实现新功能,并不断将快照构建部署到远程存储库中供我们的用户使用。因此,“部署”实际上只意味着“分发到远程Maven存储库”。我们目前只为master分支运行持续集成构建,而不是功能分支,原因如下:我们使用Maven构建我们的项目并将JavaDoc和源代码与JAR一起分发。 我现在的计划是为每个功能分支构建添加一个分类器,并期望在创建和部署如下工件时使用该分类器: > 分支
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。 这一切让我很困惑。任何更详细的解释(或附带一个例子)都是赞赏的!
我已经为karaf(4.0.1)创建了first project。到目前为止,我得到了以下信息: 使用构建的应用程序包。还会有更多... 使用创建的karaf特性。 使用相同插件创建的karaf-assembly 所以我已经做好了交付给客户的准备--但是我在开发过程中陷入了困境。这个问题几乎回答了我剩下的所有问题,除了一个: 在通过运行构建了我的项目之后,我想我应该能够使用类似命令这样的东西在本地
我决定在OSGI和Karaf之上构建一个应用程序--我真的很喜欢这个东西。然而,我在本地开发机器上的日常部署有点吃力。我是说..我做了一个更改,然后我想在我的本地Karaf实例上测试它。每小时可能发生几次。 我现在做的方式是一个maven构建,它创建一个JAR包,然后将其复制到Karaf的deploy目录中。我认为这一点也不高雅。 我想找到一个绕过(谷歌)的方法。我读过关于Karaf的特性,但看起
有什么建议吗?
问题内容: 在我的组织中,我们有200多个Microsoft桌面和Web应用程序。我正在尝试为那些应用程序设置持续集成和持续部署(我已经为Java应用程序做过)。我们已经在企业Github,Jenkins,Nexus,XL- Deploy和XL- Release中使用了以下工具。我们还开发了Groovy的框架,该框架由Jenkins调用,并在Jenkins中分配了所有自动创建的工作,并将生成的工件