Como construir condicionalmente outros projetos?

Eu tenho um trabalho Jenkins bastante complicado que constrói, testes de unidade e pacotes de um aplicativo da web. Dependendo da situação, gostaria de fazer coisas diferentes quando esse trabalho for concluído. Eu não encontrei uma maneira reutilizável / sustentável de fazer isso. É realmente esse o caso ou estou faltando alguma coisa?

As opções que gostaria de ter depois de concluir o meu trabalho complicado:

Fazer nada

Comece meu pipeline de construção de baixo risco:

copia meu arquivo WAR para meu repositório de artefatosimplanta para produção

Inicie meu pipeline de criação de alterações de alto risco:

copia meu arquivo WAR para meu repositório de artefatosimplanta para testarexecutar testes de aceitaçãoimplantar para produção

Eu não encontrei uma maneira fácil de fazer isso. A abordagem mais simples, mas não muito sustentável, seria fazer três trabalhos separados, cada um dos quais inicia uma construção a jusante. Essa abordagem me assusta por algumas razões, incluindo o fato de que mudanças teriam que ser feitas em três lugares ao invés de um. Além disso, muitos dos trabalhos a jusante também são quase idênticos. A única diferença é que trabalhos a jusante eles chamam. A proliferação de empregos parece levar a uma bagunça não sustentável.

Eu olhei usando várias abordagens para manter isso como um trabalho, mas nenhum funcionou até agora:

Faça do trabalho um projeto multi-configuração (https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project). Isso fornece uma maneira de injetar o trabalho com um parâmetro. Eu não encontrei uma maneira de fazer a etapa "construir outros projetos" responder a um parâmetro.

Use o plugin Parametrizado-Trigger (https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin). Este plug-in permite que você acione tarefas de recebimento de dados com base em determinados acionadores. Os gatilhos parecem ser muito restritivos. Eles são todos baseados no estado da construção, não em variáveis ​​arbitrárias. Eu não vejo nenhuma opção fornecida aqui que funcione para o meu caso de uso.

Use o plug-in de publicação flexível (https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin). Este plugin tem o problema oposto do plugin parametrizado por trigger. Tem muitas condições úteis que pode verificar, mas não parece que pode começar a construir outro projeto. Suas ações são limitadas a atividades de tipo de publicação.

Use o plugin Flexible Publish + Any Build Step (https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin). O plugin Any Build Step permite disponibilizar qualquer ação de construção para o plugin Flexible Publish. Embora mais ações tenham sido disponibilizadas depois que esse plug-in foi ativado, essas ações não incluíram "criar outros projetos".

Existe realmente não é uma maneira fácil de fazer isso? Estou surpreso por não tê-lo encontrado e ainda mais surpreso por não ter visto mais alguém tentando fazer isso? Estou fazendo algo incomum? Existe algo óbvio que estou perdendo?

questionAnswers(3)

yourAnswerToTheQuestion