在 Premesis 或 Bluemix 等 PaaS 上使用 XPage 进行 DevOps

2024-02-22

使用 XPage 实现 DevOps 的最佳方式是什么?

多个开发人员作为一个团队工作,本地服务器 [Dev、QA、 Prod] 我们可以复制到 Bluemix 吗?源代码控制自动化测试 UI / 应用程序、使用测试框架对业务逻辑进行单元测试、自动化部署

集成开发环境/工具 多米诺设计师;还有其他方法吗?

注意:当数据位于 NSF 中时使用视图,否则数据位于云或 SQL 中。没有表单或其他经典 Notes 设计元素。

您对此有何看法?


这是尝试您所描述的内容所需主题的高级概述。我很快就讲完了很多细节,所以请搜索一下;我试图参考我目前所知道的其他人的支持文档和博客文章等。如果有人有什么好的补充,我很乐意添加。

您所描述的内容涉及多个组件,通常相当于:

  1. 供应链管理工作流程
  2. 构建应用程序 (NSF)
  3. 将构建的应用程序部署到 Domino 服务器

其他一切(例如通过 QA/QC 环境的发布工作流程)都是上述主要步骤的次要步骤。我将概述我目前正在做的事情,试图强调我正在努力改进流程的地方。

1.供应链管理工作流程

这可能是令人难以置信的固执己见,并且在很大程度上取决于您的团队如何/想要在部署/发布过程中使用源代码控制。下面我将从概念上讲,在构建步骤期间/周围执行测试。

我已经从相当通用的 scm 服务器实现切换到GitLab https://gitlab.com实例。即使运行一个 CE 实例也非常出色CI 运行器功能 https://gitlab.com/gitlab-org/gitlab-ci-multi-runner。以前,我有一个詹金斯 CI https://jenkins.io/实例执行相同的任务,但必须将更多“工作流程”烘焙到 Jenkins 任务中,而现在大部分逻辑都在一个统一的脚本中,从配置文件引用(.gitlab-ci.yml)。这类似于 Travis CI 或其他类似 CI 配置文件的工作方式。

此配置调用一些额外的帮助程序工作,但最终围绕一个改编版本Egor Margineanu 的 PowerShell 脚本调用无头 DDE 构建任务 https://www.egmar.ro/blog/2014/02/10/using-continous-integration-in-xpages-projects/.

2. 从源头构建 NSF

我在博客中介绍了我的一般构建过程以及我之前的 Jenkins CI 实现。我跟着卡梅伦·格雷戈尔的博客 http://camerongregor.com/2014/08/09/build-system-for-xpages-and-osgi-plugins/ and 马丁·普拉德尼 http://www.pradny.com/2014/03/build-xpages-app-from-git-with-jenkins.html为了这。最终,您需要:

  1. 使用 Domino Designer 配置 Windows 环境
  2. 设置 Domino Designer 从 ODP 导入(禁用导出),确保启用自动构建
  3. the notes.ini将需要一个标志DESIGNER_AUTO_ENABLED=true
  4. Jenkins CI 或 GitLab CI 运行程序(或其他)需要以登录用户身份运行,而不是 Windows 服务;这使得它能够正确调用“headless dde”命令,因为它在后台运行,而不是在后台运行true无头调用
  5. 确保 Domino Designer 可以在不提示输入用户密码的情况下启动

我的博客文章涵盖了其他主题,例如通过扫描输出日志以标记为失败的构建来将构建标记为成功或失败。它还涉及如何将代码提交到 SonarQube 实例。

Ref: 关于无头设计器的 IBM Notes/Domino App Dev Wiki 页面 https://www-10.lotus.com/ldd/ddwiki.nsf/dx/Headless_Designer_Wiki

Testing

任何额外的测试或其他工作流程注意事项(例如 QA/QC 批准)都应在构建阶段进行,具体取决于您如何设置 SCM 工作流程。许多实施将围绕您的设置细节进行。一般的想法是根据构建+测试阶段的结果来允许/阻止部署。

Bluemix 的担忧

IBM Bluemix https://www.ibm.com/cloud-computing/bluemix/是唯一运行 IBM XPages 应用程序的 PaaS,需要一些额外的考虑,例如:

  • 他们的 Git 部署过程只接受预构建的 NSF
  • NSF 必须由帐户所有者的 Bluemix ID 签名

Ref: - Bluemix 上的 IBM XPages https://console.ng.bluemix.net/catalog/ibm-xpages/ - Bluemix 文档:为 Bluemix 运行时构建 XPage 应用程序 https://console.ng.bluemix.net/docs/starters/xpages/index.html#xpruntime

3. 部署

前往 Bluemix

如果您希望部署 XPages 应用程序以在 Bluemix 上运行,您可能需要确保您的无头构建使用 Bluemix ID 运行,或者至少使用它进行签名,然后通过 git 部署它以进行生产推送连接或 cf/bluemix 命令行实用程序。 Bluemix 的接收挂钩处理所有其余的部署问题,例如启动/停止服务器实例等。

到本地服务器

具有适当级别凭据的用户 ID 需要执行以下工作:执行设计替换/刷新或停止开发/测试/登台服务器、执行文件复制.nsf,然后重新启动。我听说 Cameron Gregor 使用 Domino Designer 的插件来执行 OSGi 插件开发所需的操作,这听起来非常有用。由于我的大多数 Domino 应用程序开发几乎完全基于 NSF,因此我更关注部署到临时/开发/测试服务器的方法,然后我可以在该服务器上执行设计任务以执行所需的刷新/替换;更接近“正常”Domino 的做事方式。

Summary

同样,这里涉及到很多感人的内容,其中一些很快就变得相当固执己见。例如,我目前正在虚拟化我的构建机器,因此我可以将其虚拟化,从而允许一次进行多个构建。如果在此过程中存在重大空白,请告诉我,我会尽力填补。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Premesis 或 Bluemix 等 PaaS 上使用 XPage 进行 DevOps 的相关文章

  • svn 外部...是或否?

    我在这里读到了一些谴责使用 svn externals 的答案 我确实看到它们如何被滥用 这确实使我们更加依赖 Subversion 但我真的不认为我们的团队会很快放弃它 无论如何 这就是我的困境 我们的解决方案引用了多个项目 这些项目位于
  • Azure 云服务和 Git 持续部署?

    有没有一种方法可以让我不仅可以使用 Git 作为代码存储库 还可以用于构建和持续部署到 Azure 云服务 而不是网站 我怀疑没有给出缺少的构建环境 除非但想在注销之前确认这一点 理论上 我可以看到将 Git 托管在 Windows 服务器
  • Android studio 搁置的更改消失了,甚至在 .idea/shelf 目录中也没有

    我在 Android studio 中搁置了一些更改 然而 由于某种原因 搁置的更改不再存在 我已经检查了 project directory idea shelf 但它们也不在那里 Android studio 是否会在 idea she
  • 如果我解决了冲突,Git 的责备会改变吗?

    我试图弄清楚合并冲突是否导致了错误 但我遇到了困难 因为我不清楚冲突解决如何影响git blame 假设我在 master 中有一个文件 a b c 我在master中修改 a d c 但同事也是如此 他们在一个单独的分支中以不同的方式对其
  • 用于 Tortoise 客户端的 Windows Subversion 服务器 (SVN)

    我的问题是这样的 在 Windows 上使用的 Subversion Server https stackoverflow com questions 615866 subversion server to use on windows 唯
  • 由于 poms 中的版本发生更改,合并来自 Maven 发布分支的更改会产生冲突

    按照标准实践 我有一个用于功能开发的 svn 主干 以及一个用于构建版本的分叉分支 该分支是使用 maven 发布插件创建的 该插件也用于创建发布 碰巧的是 偶尔的错误将在分支上修复 并且这些更改需要合并回主干 为了不错过任何更改 我希望能
  • MKS/ PTC Integrity 源相当于 svn:ignore

    我们在工作中使用 MKS PTC Integrity 进行源代码控制 是否有与 subversion 中的 svn ignore 标志等效的东西 本质上 我想要一种方法来告诉 MKS 忽略文件夹 文件的更改 即我们的编译器输出文件夹等 您可
  • 无法推送到远程 GIT 存储库 - “[...] 似乎不是 git 存储库”

    我已经在我的服务器上使用适当文件夹中的以下内容设置了 GIT 存储库 我的子域的根目录 git mydomain com mkdir foo git cd foo git git init bare shared 这将使存储库可通过 URL
  • 如何使用 Node-RED 或适用于 Watson 的 node-sdk 在法兰克福使用 Watson Conversation 服务?

    我能够使用 node red node watson 库来调用 IBM Cloud 美国南部区域托管的 Watson Conversation 实例 如果我在德国地区尝试 它不起作用 In github https github com w
  • 以最小的努力在多台计算机之间同步代码

    我希望能够跨多台计算机 准确地说是 3 台 同步源代码和整个项目 我尝试过使用 git 但从来没有获得过无忧无虑的体验 也许是因为我从来没有投入很多精力 所以 我理想中想要的是 能够将文件夹及其所有子文件夹添加到 同步 列表 基本上 一旦我
  • Adobe Flash 项目的版本控制

    我正在处理一个非常复杂的 Flash 项目 该项目是我们为客户使用而部署的全套服务的一部分 对于我们的大多数软件源 Java PHP Javascript HTML 和一些其他语言的支持脚本 我们使用 subversion 进行版本控制和管
  • 我可以在 git 中使用单个命令推送到多个存储库吗?

    基本上我想做一些类似的事情git push mybranch to repo1 repo2 repo3 现在我只是多次输入push 如果我急于完成push 我只需将它们全部发送到后台git push repo1 git push repo2
  • Accurev 性能如何?

    当前版本 4 7 的性能如何Accurev http www accurev com 每 100mb 每 GB 的结账时间 每 个文件或 mb 的提交时间 当 100 流时 gui 的响应能力 我刚刚进行了 Accurev 的演示 这些流看
  • RedGate ReadyRoll 的替代品了吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种经济实惠的 RedGate ReadyRoll 替代方案 以实现 SQL 的持续部署 我
  • 列出其他人(即不是我)所做的提交?

    是否有一种标准方法可以列出 git 存储库中其他人 即不是我自己 所做的所有提交 I tried git log not author username 但看起来 not仅适用于修订版 的联机帮助页git log似乎没有提供反转谓词的方法
  • Watson Dialog 服务到对话服务

    我们使用 Bluemix Dialog 服务创建了对话框 现在我们希望将它们导入到新的 Bluemix Conversation 服务中 导出导入失败 您知道是否存在转移过程吗 谢谢 不幸的是 无法从 Dialog 迁移到 Conversa
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • 在 System Groovy 中暂时禁用 Jenkins 服务器上的 SCM 轮询

    我们有一个 Jenkins 服务器 正在运行 20 到 30 个作业 由于构建过程相当复杂 我们将实际构建分解为 1 个子构建 其中一些可以同时运行 其他则必须遵循之前的构建步骤 因此 我们将每个构建步骤分为 3 组 这三组在构建进行时会被
  • 您可以将 Docker 映像直接拉入 IBM Cloud Kubernetes 集群吗?

    TL DR 抱歉 如果这是基础知识 我正在学习 Kubernetes 我尝试在 IBM Cloud 中创建 Kubernetes 部署 但失败了 该部署在我的本地 minikube 上运行良好 但在 IBM Cloud 中失败 我是否需要使

随机推荐

  • java中如何在多个类中使用一个接口?

    我有 1 个 Activity 和 2 个 Fragment 我想要在活动发生火灾时listener receivePreview obj then 执行 OneFragment gt receivePreview 执行 TwoFragme
  • NodeJS HTTP 请求 POST ERROR 套接字挂起

    您好 我在给定大量 json 对象数组的 NodeJS 上执行 HTTP 请求时遇到问题 给定小数组 json 对象 该请求工作正常 但是 如果我尝试增加 json 数组的大小 我收到错误 套接字挂起 error code ECONNRES
  • 当鼠标悬停在嵌入的 iframe 上时防止父页面滚动

    无需限制 iframe 内的滚动或需要专门命名可滚动元素 我有一个类似谷歌地图的小部件 可以以 iframe 嵌入代码的形式嵌入到第三方网站中 当人们在我的小部件上使用鼠标滚轮时 我只想滚动小部件的内容而不是父页面 我的问题类似于如何在滚动
  • 如何向 Watson 对话响应添加操作?

    我已经毫无问题地创建了意图 实体和对话 但现在我正在尝试做到这一点 以便当用户发送 再见 时 应用程序将关闭 根据该文档 我必须命名一个与意图相关的操作 我怎么做 是通过代码还是通过对话工作区平台 您可以使用context variable
  • 员工 ID 自动生成,带前缀

    我很困惑我希望员工 ID 是自动生成的前缀格式 我知道这可能是在 sql server 中触发之前发生的 我正在关注帖子http www aspdotnet suresh com 2012 04 set custom auto genera
  • Environment.getExternalStorageDirectory() 在 API 级别 29 java 中已弃用

    在 android Java 上工作 最近将 SDK 更新到 API 级别 29 现在显示一条警告 指出 Environment getExternalStorageDirectory 在 API 级别 29 中已弃用 我的代码是 priv
  • 运算符()的部分特化

    我的一个类声明了一个模板化函数 template
  • 如何从可绘制文件夹上的图像获取路径并将其设置为图像视图、位图?

    我的可绘制文件夹中已经有一些来自 android 项目的图片 我创建了一些对象 代理 然后我需要设置imageView我将这张图片保存在数据库中 所以 我将图片另存为String photoPath Uri path1 Uri parse
  • 无法通过延迟绑定解析类

    some imports public class Menu final MenuMaker myClass GWT create MenuMaker class ERROR 我的 gwt xml
  • 在 Angular 5 中动态加载子组件

    我想以角度动态加载子组件 父组件将根据某些条件加载子组件 我们是否可以在父组件打字稿文件中定义子组件名称 并在 HTML 中使用字符串插值来加载组件 例如在父组件打字稿中 componentName someCondition compon
  • AngularJS 在 div 中预先输入搜索结果

    我使用 Bootstrap 的 typeahead 进行文本输入 该输入还有一个按钮可以弹出流行的结果弹出窗口 我想要预输入的功能 只是结果列表将显示在不同的 div 中 在弹出窗口内而不是在文本输入下 有没有办法为预先输入搜索结果设置 容
  • generic.GenericForeignKey() 字段可以为 Null 吗?

    我正在创建一个对象 该对象跟踪有关其他所谓的创建 更新和删除的更改 更新 UUIDSyncable数据库中的对象 这涉及任何扩展的对象UUIDSyncable班级的save and delete 方法被重写 从而创建一个新的Update记录
  • Android 中订阅 BLE 指示的示例

    我已连接到蓝牙设备 我能够使用读取特征 mGatt readCharacteristic getMiliService getCharacteristic uuid 但我无法注册某个特征的指示 我尝试过的 boolean flag1 m G
  • 如何在PythonMagick中处理多页图像?

    我想将一些多页 tiff 或 pdf 文件转换为单独的 png 图像 从命令行 使用 ImageMagick 我只是这样做 convert multi page pdf file out png 我将所有页面作为单独的图像 file out
  • 逐行读取并获取上一行和下一行

    我正在尝试逐行读取文件并获取当前行 上一行和下一行 例如 line1 line2 line3 line4 我想要的是 None line1 line2 line1 line2 line3 line2 line3 line4 这是我的尝试 p
  • 链接器符号 __TMC_END__ 和 __TMC_LIST__ 的用途是什么?

    我问过这个问题 https stackoverflow com questions 17605034 linker script relocate section并偶然发现 TMC END 似乎是由链接器生成的符号 我不知道它的目的是什么
  • /usr/bin/env: ln: 符号链接级别太多

    这个问题快要了我的命 我觉得我已经尝试了一切 首先 问题是在升级到 Capistrano 3 时开始出现的 Capistrano 现在在部署时在每个命令之前使用 usr bin env 以确保环境设置正确 当 Capistrano 创建指向
  • 在 Spring 测试中使用 @Autowired NoSuchBeanDefinitionException

    我有 spring mvc security 项目 我正在尝试从 JavaConfig 为其中一个控制器创建 junit 测试 但是当我使用 Autowired我得到异常 Caused by org springframework bean
  • 在 C# 测试装置中从 Nunit3 获取参数

    我使用 Nunit3 版本中提供的 params 参数来传递多个参数 但是 我无法使用 C 测试装置获取它们 我已经搜索过但无法得到正确的结果 有人可以向我提供有关如何在 C 中获取这些 param 参数的指示吗 任何帮助将不胜感激 提前致
  • 在 Premesis 或 Bluemix 等 PaaS 上使用 XPage 进行 DevOps

    使用 XPage 实现 DevOps 的最佳方式是什么 多个开发人员作为一个团队工作 本地服务器 Dev QA Prod 我们可以复制到 Bluemix 吗 源代码控制自动化测试 UI 应用程序 使用测试框架对业务逻辑进行单元测试 自动化部