Base de conhecimento  /  Gerenciador de aplicativos em nuvem  /  Integração com Jenkins
Base de conhecimento  /  Gerenciador de aplicativos em nuvem  /  Integração com Jenkins

Iniciar slaves via Cloud Application Manager

Atualizado por Gavin Lai e Julio Castanar em 16 de maio de 2019
Código do artigo: kb/406

Neste artigo:

Visão geral

Os nós slave executam as tarefas Jenkins em máquinas remotas em qualquer nuvem. Se você configurar plugins de nuvem, como o AWS, para iniciar slaves e depois escrever scripts de linha de comando para configurar os ambientes slave, o Cloud Application Manager e o plugin Jenkins do Cloud Application Manager podem evitar o incômodo dessas tarefas.
Ao configurar o nó slave uma vez no Cloud Application Manager, você pode reutilizá-lo em seu desenvolvimento, teste, preparação e produção.
Ao usar o Cloud Application Manager, você pode iniciar slaves em qualquer sistema operacional, variantes e nuvem.

Público

Se você usar o Cloud Application Manager e também o Jenkins para testar e integrar continuamente as alterações de código em desenvolvimento, preparação, teste ou produçào, recomendamos usar o plugin Jenkins do Cloud Application Manager para fazer implementações sem toque totalmente automáticas.

Pré-requisitos

  • Acesso ao Cloud Application Manager, site de aplicativos, como usuário autorizado de uma conta ativa do Cloud Application Manager.
  • Acesso por token à conta GitHub

Configurar uma caixa de slave

Configure o slave Jenkins no Cloud Application Manager. Depois, você chamará este slave do Jenkins usando o plugin do Cloud Application Manager.
IMPORTANTE. IMPORTANTE: esta configuração slave é baseada no Debian. Por isso, lembre-se de selecionar uma imagem Debian Ubuntu Linux na política no momento da implementação.

Siga estas etapas:

1. Faça login no Cloud Application Manager.

2. 0. Crie uma caixa de slave Jenkins.

Na página Caixas, clique em Novo > Script. Dê um nome para a caixa, marque-a como Linux e salve.

add-script-box

3. 0. Configure as variáveis da caixa.

Em Código > Variáveis, crie as duas próximas variáveis em letras maiúsculas e deixe seus valores em branco.

Nome Tipo Descrição
JENKINS_URL Texto Oferece espaço onde a URL Jenkins está armazenada.
JNLP_SLAVE_OPTIONS Texto Oferece espaço onde as opções slave estão armazenadas.

var-jenkins-url

var-jnlp-slave-options.png

4. 0. Configure os scripts de evento da caixa.

Em Código > Eventos, adicione um script de instalação, início e parada . Copie e cole cada script abaixo e salve:

Evento de instalação.

Este script instala a versão mais recente do Java, se não estiver disponível, e faz o download do agente slave do servidor Jenkins.

#!/bin/bash
  sudo groupadd jenkins
  sudo useradd -m -d /var/lib/jenkins -G sudo -g jenkins jenkins
apt-get -y update
  JENKINS_HOME=~jenkins
if [ -z $(which java 2>/dev/null) ]
then
    apt-get install default-jre -y
fi

   apt-get -y install git

# Download the Jenkins agent
wget /jnlpJars/slave.jar -O ${JENKINS_HOME}/slave.jar
Evento de início.

Este script inicia o agente slave.

#!/bin/bash

  JENKINS_HOME=~jenkins
  # Execute the agent and save the PID
  cd ${JENKINS_HOME}
  nohup java -jar ${JENKINS_HOME}/slave.jar  > ${JENKINS_HOME}/slave.log 2>&1 &

  echo $! > ${JENKINS_HOME}/slave.pid
Evento de parada.

Este script elimina o agente quando o período de retenção do Jenkins termina.

#!/bin/bash

# Stop the agent
SLAVE_PID=$(cat slave.pid)
if [ -n ${SLAVE_PID} ]
then
    kill -9 ${SLAVE_PID}
fi


Depois de fazer a configuração do código da caixa, você verá a página do código como segue:

box-code-page

Configurar a política de implementação de slaves

Crie uma política de implementação com metadados de infraestrutura para criar um ambiente slave Jenkins.

  • IMPORTANTE. IMPORTANTE: não implemente a caixa de slave Jenkins! Só crie a política. O Jenkins usará a política para iniciar o slave sob demanda usando o Cloud Application Manager para o provedor de nuvem que você escolher.

Siga estas etapas:

1. Criar uma caixa de política de implementação

Na página Caixas, clique em Nova > Política de implementação> No diálogo, selecione a conta do provedor e o nome da política.
Em Declarações, digite ou selecione a marca Linux.

  • As tags de declarações definem a política em um nível mais alto. Definem o tipo de plataforma, variante, imagem etc. Ao configurar o slave no Jenkins, você fornece esta tag de declaração para implementar o slave. A tag de declaração precisa corresponder à tag de requisito na caixa de slave Jenkins.

add-policy-box

2. 0. Configure a caixa de políticas de implementação.

Em Código > Política, edite a política clicando no lápis do lado direito.

policy-code-page

Selecione uma imagem Debian Ubuntu Linux, um regra de firewall que permita para a instância e torne o IP da máquina efêmero para abrir o tráfego da internet. Salve a política.

edit-policy-box

Configurar o servidor Jenkins para criar slaves usando o Cloud Application Manager

Execute os trabalhos Jenkins usando slaves iniciados em qualquer nuvem por meio do Cloud Application Manager.

Configurar o acesso à sua conta do Cloud Application Manager

  1. Vá para Gerenciar Jenkins > Configurar a página do sistema em http://<your Jenkins host>/configure.<your Jenkins host>

  2. Em Nuvem, selecione Adicionar nova nuvem e escolha a opção ElasticBox.
    É preciso instalar o plugin ElasticBox antes. Veja acima.

cloud-plugins

Configure seu acesso na nuvem selecionada e verifique o token de autenticação.

cloud-config

Adicionar slaves Jenkins

  1. Configure o Jenkins para iniciar slaves usando a caixa de slave. Clique em Adicionar em Configurações de slave.
    Nesta seção, selecione a caixa de slave no espaço de trabalho do Cloud Application Manager.
    Você também tem a opção de marcar a instância slave.

    Defina o Número mínimo de instâncias como 0 se não quiser manter os slaves ociosos ativos.
    Defina o Número máximo de instâncias como o número de slaves que você deseja a qualquer tempo para executar trabalhos Jenkins.

    Adicione um rótulo para identificar o slave para o Jenkins. Sublinhe ou use traços, mas não use espaços.
    IMPORTANTE. IMPORTANTE: quando você cria um trabalho de compilação (como faremos na próxima seção), você pode fornecer este rótulo para fazer o Jenkins selecionar este tipo de slave para executar o trabalho.

    slave-config

    O plugin usa as variáveis JENKINS_URL e JNLP_SLAVE_OPTIONS para passar as informações do servidor Jenkins que os slaves precisam para conectar. Deixe-os vazios.

    Em Implementação, selecione uma política no espaço de trabalho do Cloud Application Manager.
    Você também pode inserir uma tag de declaração para usar qualquer política que corresponda a esta marca no espaço de trabalho do Cloud Application Manager.

    slave-deployment-tag

    Clique em Avançado.

    Para o Tempo de retenção, especifique em minutos quanto tempo o plugin deve esperar até encerrar um slave ocioso. Se o slave estiver ocioso por mais de 0 minutos, que é o padrão, o plugin encerra o slave do seu provedor. Mas, para isso funcionar, seu slave deve estar conectado ao servidor Jenkins.

    Em Número máximo de compilações, determine quantas compilações o slave pode executar. Se o slave chegar nesse número, o plugin vai encerrá-lo.

  2. Salvar a configuração do slave.

Habilitar slaves para se conectarem por uma porta

Quando definimos a caixa do servidor Jenkins, abrimos a porta 0 na rede do provedor de nuvem para permitir que os slaves se conectem ao servidor Jenkins. Nestas etapas, abrimos essa porta (ou outra de sua escolha) no servidor Jenkins.

  1. Acesse Gerenciar Jenkins > Configurar a página de segurança global em http://<your Jenkins host>/configureSecurity/.<your Jenkins host>

  2. Selecione Habilitar segurança.
    Na seção Agentes, defina a porta TCP como Fixa 0 conforme mostrado.

jenkins-global-security

  1. Salve a configuração.

Anexar o slave a um trabalho de compilação.

Siga estas etapas para anexar um slave do Cloud Application Manager para executar trabalhos de compilação Jenkins.

  1. Na interface de gerenciamento do servidor Jenkins,  crie um novo trabalho ou clique em Configurar em qualquer trabalho criado.

  2. Selecione Restringir onde este projeto pode ser executado.
    Em Expressão de rótulo, digite e selecione o rótulo para o slave do Cloud Application Manager que você forneceu ao configuraro o Jenkins. Isso faz com que o Jenkins pegue qualquer slave disponível com esse rótulo.

    jenkins-job-with-slaves

  3. Salve o trabalho.

Encontrar um slave do Cloud Application Manager

Siga estas etapas para localizar os slaves iniciados por meio do Cloud Application Manager se você precisar depurar.

  1. Acesse a interface de gerenciamento do servidor Jenkins em http://<your Jenkins host>:0.<your Jenkins host>

    jenkins-slaves-active

  2. Clique no slave se estiver ativo no painel esquerdo. É normalmente nomeado como <Jenkins slave box environment name——–ID>.
    As informações detalhadas sobre este slave são exibidas. Aqui está um exemplo.

    jenkins-slave-info

  3. Clique em "Configurar". Clique em Configurar. Isso mostra as configurações do slave.

    jenkins-slave-config

  4. Note o link do Cloud Application Manager para a instância do slave. Clique para abrir a instância do slave no Cloud Application Manager. Aí, você pode depurar o slave no editor de ciclo de vida ou checar os registros.

Iniciar ambientes Slave Build

Facilite a tarefa de configurar ambientes build para cada nuvem e cada projeto ao automatizar builds usando Jenkins slaves habilitados pelo Cloud Application Manager. Este tutorial em vídeo com instruções passo a passo mostra o processo com um aplicativo SaaS de ticket típico baseado em JBoss.

Como contatar o suporte do Cloud Application Manager

Lamentamos que você tenha encontrado um problema com o Cloud Application Manager. Consulte as dicas de troubleshooting ou entre em contato com o suporte do Cloud Application Manager e apresente detalhes e capturas de tela, conforme possível.

Para problemas relacionados a chamadas de API, envie o corpo da solicitação junto com os detalhes referentes ao problema.

Em caso de erro de caixa, compartilhe a caixa no espaço de trabalho que sua organização e o Cloud Application Manager podem acessar e anexe os registros.

  • Linux: SSH e localize o registro em /var/log/elasticbox/elasticbox-agent.log
  • Windows: Windows: RDP na instância para localizar o registro em ProgramData/ElasticBox/Logs/elasticbox-agent.log