¿Cómo ejecutar el paquete para un submódulo solo en Jenkins?
sbt (2)
Tengo un proyecto sbt con 4 módulos: module-a
, module-b
, module-c
, module-d
.
Cada módulo se puede empaquetar como GUERRA. Quiero configurar una implementación en Jenkins que construya solo uno de los 4 módulos y desplegarlo en un contenedor.
En detalle, quiero tener 4 trabajos de Jenkins - job-a
, job-b
, job-c
, job-d
, cada edificio solo el módulo definido (de la a d).
Por ahora, estoy usando clean update test package
como el comando para la compilación de Jenkins sbt, pero esto da como resultado el empaquetado de los 4 módulos que no es necesario.
Ya probé project -module-a clean update test package
pero sin suerte.
Cite el argumento para proyectar, es decir, project module-a
, y no use un guion antes del nombre del submódulo.
La línea de comando completa para el trabajo de Jenkins sería la siguiente:
./sbt "project module-a" clean update test
También puede ejecutar las tareas de test
y clean
ámbito del proyecto de la siguiente manera:
sbt module-a/clean module-a/test
La solución es un poco más corta y clara en cuanto a qué proyecto se aplican los siguientes comandos.
No es necesario ejecutar la tarea de update
ya que se ejecuta implícitamente mediante test
como se describe en inspect tree test
.
Hay una manera de hacerlo más limpio con un alias. Use lo siguiente en build.sbt
:
addCommandAlias("jenkinsJob4ModuleA", "; module-a/clean; module-a/test")
Con el alias, ejecute jenkinsJob4ModuleA
para tener el mismo efecto que la solución anterior.