Passar a string para o trabalho Jenkins do Slack


12

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;

  1. Tipos de usuário /Jenkins job2 param1 param2no Slack. Isso está chamando um trabalho abrangente que analisará os parâmetros para descobrir o que executar.

  2. De alguma forma, o comando é enviado para o trabalho guarda-chuva de jenkins. Instância Heroku, integração direta, w / e.

  3. O trabalho de guarda-chuva recebe job2 param1 param2como uma sequência. (Talvez como o valor de um único parâmetro, talvez seja pré-dividido em vários campos)

  4. O trabalho de guarda-chuva divide a string, se ainda não tiver sido feito, e descobre que o usuário deseja job2executar, usando os parâmetros param1e param2.

  5. 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.

Respostas:


5

O plug-in que você encontrou não possui uma proporção de 1: 1 entre as instâncias do Heroku com trabalhos de construção, uma vez que leva o nome do trabalho como parâmetro, portanto, você poderá executar qualquer número de trabalhos a partir de uma única instância do Heroku.

Quanto à passagem de um espaço em um parâmetro de trabalho, a palavra divisão é feita em espaços, para que a citação não mude nada. Você poderia tentar usar o caractere de espaçamento HTML %20e ver se funciona?

Pessoalmente, eu tentaria usar o plug-in para executar o trabalho correto com os parâmetros associados diretamente, em vez de passar por trabalhos de filtragem.


1
Para ser exato, a divisão de espaços é feito algumas linhas acima do seu link, eu não cavar o suficiente para confirmar ou não irá dividir em todos os espaços, mas parece que ele Wilk
Tensibai

Você está correto, ele está dividido em espaços por esta linha github.com/joshdholtz/jenkins-slack-command/blob/master/…, portanto, não importa se há aspas ou não nos parâmetros
Michael Pereira

Os parâmetros sim são repetidos e divididos novamente = isso será interrompido se um valor contiver espaços, o uso de% 20 pode funcionar quando postado no slack, mas ele deve ser testado porque não tenho idéia de como Jenkins ou slack pode analisá-los ou mantê-los
Tensibai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.