Como promover um número de compilation específico de outro trabalho em Jenkins?

Eu instalei o Promoted Build Plugin de Jenkins e agora estou enfrentando alguns problemas para promover uma compilation a partir de um trabalho existente. Aqui está o cenário:

  1. Há um trabalho Nightly Build existente que é executado toda noite executando todos os testes e métricas necessários;

  2. Há um Deploy Build existente que aceita um parâmetro $ {BUILD_NUMBER} e implanta o build que tem o $ BUILD_NUMBER correspondente do Nightly Build

    • Digamos que o [Nightly Build] funcionou e construiu com sucesso o artefato # 39
    • Agora eu posso apenas executar o [Deploy Build] passando em # 39 como um parâmetro
      • Os artefatos do [Nightly Build] # 39 serão implantados

Por enquanto, tudo bem. Agora é a parte onde eu quero adicionar as Build Promotions

Isso é exatamente o que eu preciso alcançar

Existe uma maneira de promover o Nightly Build #39 ( observe que ele já foi construído antes ) do Deploy Build ? Ou talvez até de algum outro lugar, francamente eu meio que estou perdido aqui 🙁

Eu não os vejo com um claro relacionamento Upstream / Downstream, porque eles não têm um: sempre executa este build e depois o outro durante a execução – o [Deploy Build] é executado apenas às vezes e nem sempre depois do [Nightly Construir] .

    Atualização a partir da versão 2.23 do Plugin de acionamento parametrizado:

    Com a versão 2.23+ o comportamento mudou (obrigado AbhijeetKamble por apontar). Qualquer parâmetro que está sendo passado pela seção parameters Predefinidos do trabalho de chamada ( compilation ) deve existir no trabalho chamado ( deploy ). Além disso, as restrições dos parâmetros do job chamado se aplicam, portanto, se o parâmetro do job chamado for uma opção , ele deve ter todos os valores possíveis (de promoções) pré-preenchidos. Ou apenas use o tipo de parâmetro Text .

    Solução

    Sim, tenho exatamente a mesma configuração: um trabalho de criação (com base em confirmações de SVN) e um trabalho de implementação executado manualmente. Quando o usuário seleciona qualquer construção do trabalho de criação (incluindo versões mais antigas), eles podem acessar o link Status de Promoção e executar várias promoções de implantação , por exemplo, Implementar em DEV , Implementar em Controle de Qualidade , etc

    Aqui está como configurar a promoção no trabalho de criação :

    • Você precisará desses plugins: Plugin de acionamento parametrizado , plug- in de compilações promovidas
    • Você também precisará configurar a ação pós-construção Arquivar os Artefatos padrão neste job de construção.
    • Marca de verificação Promover construções quando
    • Definir nome “implantar para DEV”
    • Sob Criteria check mark Somente quando aprovado manualmente
    • Em Ações, use o Acionador / Chamada constrói em outros projetos
    • Em Projetos para construir, digite o nome do seu trabalho de implantação aqui
    • Marca de seleção Bloquear até que os projetos acionados concluam suas construções
    • Marque esta compilation como falha se a compilation triggersda for pior ou igual a : FALHA (ajuste de acordo com os status do seu trabalho de implantação)
    • parameters predefinidos (código A)

    Código A:

     Server=IP_of_my_dev_server` Job=$PROMOTED_JOB_NAME` BuildSelection=$PROMOTED_NUMBER 

    Acima, na seção parameters predefinidos , o nome à esquerda de = são os parâmetros definidos em seu trabalho de implementação . E à direita de = estão os valores que serão atribuídos a esses parâmetros quando esta promoção for executada. Define três parâmetros Server , Job e BuildSelection .

    O parâmetro Server= é meu, pois meu trabalho de implantação pode ser implantado em vários servidores. No entanto, se o trabalho de implantação for codificado para sempre implantar em um local específico, você não precisará disso.

    O parâmetro Job= é necessário, mas o nome do param depende do que você configurou no seu trabalho de implantação (explicarei a configuração lá). O valor $PROMOTED_JOB_NAME deve permanecer como está. Esta é uma variável de ambiente que o processo de promoção está ciente e faz referência ao nome de seu job de construção (aquele em que o processo de promoção está configurado)

    O parâmetro BuildSelection= é obrigatório. Toda essa linha tem que permanecer como está. O valor passado é $PROMOTED_NUMBER , que mais uma vez a promoção está ciente. No seu exemplo, seria #39 .

    O bloco até que os projetos acionados concluam sua marca de verificação de construções fará com que o processo de promoção espere até que o trabalho de implantação seja concluído. Caso contrário, o processo de promoção acionará o trabalho de implantação e será encerrado com sucesso. Aguardar o término do trabalho de implantação tem o benefício de que, se o trabalho de implantação falhar, a estrela da promoção também será marcada com falha.

    (Uma pequena nota aqui: a estrela da promoção aparecerá com êxito enquanto o trabalho de implantação estiver em execução. Se houver uma falha de implantação, ela só será alterada após a conclusão do trabalho de implantação . Lógico … mas pode ser um pouco confuso se você olhar para a estrela da promoção antes da implantação concluída)

    Aqui está como configurar o trabalho de implantação

    • Você precisará do plugin Copy Artifacts
    • Sob esta compilation é parametrizada
    • Configure um parâmetro do tipo Choice (ou Text) com o nome Server (esse nome deve corresponder à configuração nos parameters Predefinidos da promoção na seção anterior)
    • Opções: Digite a lista de possíveis IPs do servidor que seriam usados ​​pelos parameters Predefinidos da promoção na seção anterior ( consulte a nota de atualização abaixo )
    • Configure um parâmetro do tipo Choice (ou Text) com o nome Job (esse nome deve corresponder à configuração nos parameters Predefinidos da promoção na seção anterior)
    • Opções: Digite o nome do seu trabalho de construção como padrão. Isso é necessário apenas se você acionar o trabalho de implantação manualmente. Quando a tarefa de implementação é acionada a partir da promoção, a promoção fornecerá o valor (o Job= de parâmetros predefinidos que configuramos). Além disso, se não houver valor passado nos parâmetros Predefinidos da promoção, o valor da primeira escolha será usado. Se você tiver um relacionamento de 1 para 1 entre os trabalhos de criação e implementação , poderá omitir o parâmetro Job= na configuração da promoção.
    • Atualização: desde a versão 2.23 do Disparador parametrizado , as opções disponíveis na configuração da tarefa de implantação precisam ter todos os valores possíveis provenientes dos parâmetros predefinidos da promoção. Se você não quiser esse limite, use “Texto” em vez de “Escolha”
    • Configure um parâmetro do tipo Seletor de Construção para o Artefato de Cópia com nome : BuildSelection
    • Seletor Padrão : Última criação bem-sucedida
    • Em etapas de compilation
    • Configurar artefatos de cópia de outro projeto
    • No nome do projeto, digite ${Job}
    • Em qual compilation escolha Specified by a build parameter
    • Em Nome do parâmetro, insira BuildSelection (sem ${...} !)
    • Configure o restante adequadamente para seus artefatos que serão copiados do job de construção para implementar o espaço de trabalho do job
    • Use os artefatos copiados dentro da tarefa de implementação conforme necessário para implantar

    Portanto, agora, com o job de implementação acima, você pode executá-lo manualmente e selecionar qual número de compilation do job de compilation você deseja implantar (última compilation, último êxito, por número de compilation, etc). Você provavelmente já o configurou de maneira muito semelhante. A promoção no job de compilation basicamente executará a mesma coisa e fornecerá o número de compilation, com base em qual promoção foi executada.

    Deixe-me saber se você tem algum problema com as instruções.