DevOps con XPages en Premesis o PaaS como Bluemix

Cuál es la mejor manera de lograr DevOps con XPages.

Múltiples desarrolladores trabajando en equipo, en los serveres de las instalaciones [Dev, QA, Prod] ¿podemos replicar en Bluemix? Interfaz de usuario / UI de testings automatizadas de control de fuente, lógica empresarial de testings unitarias con marco de testing, implementación automatizada

IDE / Tools Domino Designer; ¿Hay otras forms?

Nota: El uso de Vistas cuando los datos están en una NSF; de lo contrario, los datos están en la nube o en SQL. Sin formularios u otros elementos de layout clásicos de Notes.

¿Cuáles son sus enfoques para esto?

Esta es una descripción general de alto nivel de los temas necesarios para intentar lo que está describiendo. Estoy pasando por alto muchos detalles, así que por favor búsquelos; Intenté hacer reference a lo que actualmente conozco en cuanto a la documentation de apoyo y publicaciones en blogs, etc. de otros. Si alguien tiene algo bueno que agregar, me complace agregarlo.

Hay varios componentes involucrados con lo que está describiendo, que generalmente ascienden a:

  1. flujo de trabajo scm
  2. construyendo la aplicación (NSF)
  3. implementar la aplicación integrada en un server Domino

Todo lo demás, como el flujo de trabajo de lanzamiento a través de un entorno de QA / QC, es secundario a los pasos primarios anteriores. Describiré lo que estoy haciendo actualmente, intentando destacar dónde estoy trabajando para mejorar el process.

1. Flujo de trabajo SCM

Esto puede ser increíblemente obstinado y dependerá mucho de cómo su equipo hace / quiere usar el control de fuente con su process de implementación / lanzamiento. A continuación, tocaré realizar testings, conceptualmente, durante / alnetworkingedor del paso de compilation.

Cambié de una implementación de server scm bastante genérica a una instancia de GitLab . Incluso ejecutar una instancia de CE es bastante fantástico con sus capacidades de cornetworkingor de CI . Anteriormente, tenía una instancia de Jenkins CI que realizaba las mismas tareas, pero tenía que generar más "flujo de trabajo" en la tarea de Jenkins, mientras que ahora la mayoría de esa lógica está en una secuencia de commands unificada, referenceda desde un file de configuration ( .gitlab-ci.yml ). Esto es similar a cómo funciona un CI de Travis u otro file de configuration de CI similar.

Esta configuration requiere un poco de ayuda adicional, pero en última instancia gira en torno a una versión adaptada de la secuencia de commands PowerShell de Egor Margineanu que invoca la tarea de creación DDE sin cabeza .

2. Construyendo una NSF desde la Fuente

He escrito un blog sobre mi process de compilation general, con mi implementación anterior de Jenkins CI. Seguí los blogs de Cameron Gregor y Martin Pradny para esto. En definitiva, necesitas:

  1. configurar un entorno de Windows con Domino Designer
  2. configurar Domino Designer para importar desde ODP (desactivar export), asegurando que Build está habilitado automáticamente
  3. el notes.ini necesitará una bandera de DESIGNER_AUTO_ENABLED=true
  4. el cornetworkingor Jenkins CI o GitLab CI (u otro) deberá ejecutarse como el usuario conectado, no como un service de Windows; esto le permite invocar correctamente el command "headless dde", ya que se ejecuta en segundo plano en lugar de una verdadera invocación sin cabeza.
  5. asegúrese de que Domino Designer pueda iniciarse sin solicitar una contraseña de usuario

La publicación de mi blog cubre temas adicionales, como marcar la compilation como éxito o error, al escanear los loggings de salida para que se marque como compilation fallida. También toca cómo enviar el código a una instancia de SonarQube.

Ref: página de IBM IBM / Domino App Dev Wiki en diseñador sin cabeza

Pruebas

Cualquier testing adicional u otras consideraciones de flujo de trabajo (por ejemplo, aprobación QA / QC) deberían ir alnetworkingedor de la fase de compilation, dependiendo de cómo configure su flujo de trabajo SCM. Gran parte de la implementación girará en torno a los detalles de su configuration. Una idea general es permitir / prevenir la implementación en function del resultado de la fase de compilation + testing.

Preocupaciones Bluemix

IBM Bluemix , el único PaaS que ejecuta aplicaciones de IBM XPages, requerirá alguna consideración adicional, como por ejemplo:

  • su process de implementación de Git solo aceptará un NSF preconstruido
  • NSF debe estar firmado por el ID de Bluemix del propietario de la count

Ref: – IBM XPages en Bluemix – Bluemix Docs: Construyendo aplicaciones de XPages para Bluemix Runtime

3. Despliegue

Para Bluemix

Si está buscando implementar una aplicación de XPages para ejecutar en Bluemix, debería asegurarse de que su compilation sin cabeza se ejecute con la ID de Bluemix, o al less esté firmada con ella, y luego implementarla para un impulso de producción, ya sea a través de un git. connection o la utilidad de command-line cf / bluemix. Los ganchos de recepción de Bluemix manejan todo el rest de problemas de implementación, como iniciar / detener la instancia del server, etc.

Al server local

Una ID de usuario con las cnetworkingenciales de nivel adecuadas necesita realizar el trabajo de realizar una sustitución / actualización de layout o detener un server de desarrollo / testing / almacenamiento .nsf , realizar la copy de file de .nsf y luego iniciarla de nuevo. Escuché rumores de que Cameron Gregor utilizó un complemento para Domino Designer para realizar las operaciones necesarias para el desarrollo del complemento OSGi, que suena bastante útil. Como la mayoría de mi desarrollo de aplicaciones Domino está basado casi exclusivamente en NSF, me estoy enfocando más en un enfoque de implementación en un server de ensayo / desarrollo / testing, en el cual puedo realizar una tarea de layout para hacer la actualización / reemploop necesaria; más cerca de la forma "normal" de Domino de hacer las cosas.

Resumen

Nuevamente, hay muchas piezas en movimiento involucradas aquí, algunas de las cuales se vuelven bastante dogmáticas bastante rápidamente. Por ejemplo, actualmente estoy virtualizando mi máquina de compilation, así que puedo ponerle un par de máquinas virtuales, permitiendo más de una compilation a la vez. Si hay grandes lagunas en el process, házmelo saber y lo llenaré todo lo que pueda.