这是尝试您所描述的内容所需主题的高级概述。我很快就讲完了很多细节,所以请搜索一下;我试图参考我目前所知道的其他人的支持文档和博客文章等。如果有人有什么好的补充,我很乐意添加。
您所描述的内容涉及多个组件,通常相当于:
- 供应链管理工作流程
- 构建应用程序 (NSF)
- 将构建的应用程序部署到 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为了这。最终,您需要:
- 使用 Domino Designer 配置 Windows 环境
- 设置 Domino Designer 从 ODP 导入(禁用导出),确保启用自动构建
- the
notes.ini
将需要一个标志DESIGNER_AUTO_ENABLED=true
- Jenkins CI 或 GitLab CI 运行程序(或其他)需要以登录用户身份运行,而不是 Windows 服务;这使得它能够正确调用“headless dde”命令,因为它在后台运行,而不是在后台运行true无头调用
- 确保 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
同样,这里涉及到很多感人的内容,其中一些很快就变得相当固执己见。例如,我目前正在虚拟化我的构建机器,因此我可以将其虚拟化,从而允许一次进行多个构建。如果在此过程中存在重大空白,请告诉我,我会尽力填补。