Em um mundo ideal, nossos funcionários com menos conhecimento em tecnologia poderiam usar o comando Slack para executar um trabalho e obter os resultados reduzidos, negando o uso da GUI Jenkins. Encontrei Iniciar uma compilação no Jenkins usando um Slack Command no GitHub, mas há algumas limitações, incluindo o que parece exigir uma tarefa de instância Heroku por Jenkins de proporção 1: 1 para Jenkins, o que não é ótimo para nossos propósitos.
Meu pensamento é fazer com que as pessoas usem um comando singular como /jenkins
, e usem parâmetros depois dele que serão analisados por um trabalho e usados para iniciar outros a jusante. Isso nos mantém em um comando frouxo / em uma instância, mas ainda nos dá toda a flexibilidade que precisamos.
O problema está na obtenção dos parâmetros para Jenkins. Estou imaginando algo como o seguinte fluxo de trabalho;
Tipos de usuário
/Jenkins job2 param1 param2
no Slack. Isso está chamando um trabalho abrangente que analisará os parâmetros para descobrir o que executar.De alguma forma, o comando é enviado para o trabalho guarda-chuva de jenkins. Instância Heroku, integração direta, w / e.
O trabalho de guarda-chuva recebe
job2 param1 param2
como uma sequência. (Talvez como o valor de um único parâmetro, talvez seja pré-dividido em vários campos)O trabalho de guarda-chuva divide a string, se ainda não tiver sido feito, e descobre que o usuário deseja
job2
executar, usando os parâmetrosparam1
eparam2
.O trabalho do Umbrella faz um buildjob para executar o trabalho downstream conforme chamado, o que fará com que o Slack retorne ao usuário os resultados.
São as etapas 2 a 3 que estão me atrapalhando. Como posso passar uma string (com espaços!) Do Slack para o meu trabalho no Jenkins?
Se toda a minha premissa estiver errada, também estou aberto a ter minha estrutura desafiada.