Pase cadena al trabajo de Jenkins desde Slack

12

En un mundo ideal, nuestros empleados menos expertos en tecnología podrían usar un comando Slack para ejecutar un trabajo y obtener los resultados de nuevo, negando el uso de la GUI de Jenkins. Encontré Iniciar una compilación en Jenkins usando un comando Slack en GitHub, pero tiene algunas limitaciones, incluido el hecho de que parece requerir una instancia de Heroku de relación 1: 1 para el trabajo de Jenkins, lo que no es excelente para nuestros propósitos.

Mi pensamiento es hacer que la gente use un comando singular como /jenkins, y use parámetros después de eso que serán analizados por un trabajo y utilizados para iniciar otros más adelante. Eso nos mantiene a un comando flojo / una instancia, pero aún nos da toda la flexibilidad que necesitamos.

El problema recae en llevar los parámetros a Jenkins. Me estoy imaginando algo como el siguiente flujo de trabajo;

  1. Tipos de usuario /Jenkins job2 param1 param2en Slack. Esto está llamando a un trabajo general que analizará los parámetros para averiguar qué ejecutar.

  2. El comando de alguna manera se envía al trabajo de jenkins paraguas. Heroku instancia, integración directa, w / e.

  3. El trabajo paraguas se recibe job2 param1 param2como una cadena. (Tal vez como el valor de un solo parámetro, tal vez dividido previamente en múltiples campos)

  4. El trabajo de paraguas divide la cadena si aún no se ha hecho, y se da cuenta de que el usuario desea job2ejecutar, usando parámetros param1y param2.

  5. El trabajo de paraguas realiza un trabajo de compilación para ejecutar el trabajo posterior como se llama, lo que retrasará al usuario sus resultados.

Son los pasos 2-3 los que me están haciendo tropezar. ¿Cómo puedo pasar una cadena (con espacios) de Slack a mi trabajo de Jenkins?

Si toda mi premisa está equivocada, también estoy abierto a que se cuestione mi marco.

Alex
fuente

Respuestas:

5

El complemento que encontró no tiene una relación 1: 1 entre la instancia de Heroku con los trabajos de compilación, ya que toma el nombre del trabajo como parámetro, por lo que debería poder ejecutar cualquier número de trabajos desde una sola instancia de Heroku.

En cuanto a pasar un espacio en un parámetro de trabajo, la división de palabras se realiza en espacios para que las citas no cambien nada. ¿Podría intentar usar el carácter de espaciado HTML %20y ver si funciona?

Personalmente, trataría de usar el complemento para ejecutar el trabajo correcto con los parámetros asociados directamente en lugar de pasar por trabajos de filtrado.

Michael Pereira
fuente
1
Para ser exactos, la división en los espacios se hace unas pocas líneas sobre su enlace, no excavé lo suficiente para confirmar o no se dividirá en todos los espacios, pero parece que funcionará
Tensibai
Tienes razón, está dividido en espacios por esta línea github.com/joshdholtz/jenkins-slack-command/blob/master/… así que no importará si hay comillas o no alrededor de los parámetros
Michael Pereira
Sí, los parámetros se repiten y se dividen nuevamente en = esto se romperá si un valor contiene espacios, el uso de% 20 puede funcionar cuando se publica en holgura, pero debe probarse porque no tengo idea de cómo Jenkins o holgura pueden analizarlos o conservarlos
Tensibai