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

Configurar o Jenkins com Cloud Application Manager

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

Neste artigo:

Visão geral

Para integrar e implementar continuamente por meio do Cloud Application Manager, você precisa configurar o servidor Jenkins para trabalhar com o sistema de gerenciamento de controle (SCM) de origem e com o plugin do Cloud Application Manager .

Se o GitHub é o seu SCM, estas seções documentam como integrar os plugins do Jenkins e do GitHub e o Cloud Application Manager.

Para  instalar o Jenkins com os plugins do Cloud Application Manager e do GitHubsiga as etapas nesta página para criar e implementar o servidor Jenkins a partir de uma caixa. A caixa instala o servidor Jenkins de código aberto mais recente com os plugins GitHub, dependências e o plugin do Cloud Application Manager.

IMPORTANTE. IMPORTANTE: como a caixa do servidor Jenkins é baseada no Debian, lembre-se de fazer a implementação em uma imagem Debian Ubuntu Linux.

Público

Se você usar o Jenkins para testar continuamente e integrar as mudanças de código em desenvolvimento, preparação testes 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 Applications.
  • Acesso por token à conta GitHub

Criar uma caixa de servidor Jenkins

Acesso ao Cloud Application Manager com sua conta.

Siga estas etapas:

1. 0. Crie uma nova caixa

Na página Caixas, clique em Nova caixa e selecione o tipo de script. Digite estas informações e salve.

CAM jenkins server script box

2. 0. Configurar variáveis de caixa

Acesse a página Código na caixa e adicione as seguintes variáveis para armazenar os valores de implementação do servidor Jenkins.
A próxima tabela mostra as variáveis necessárias para configurar a caixa do servidor Jenkins.

Nome Tipo Descrição
GIT_REPOSITORY_URL Texto Forneça seu próprio repositório Git.
GITHUB_ACCESS_TOKEN Texto Suas credenciais de acesso ao GitHub.
GITHUB_PROJECT_URL Texto A URL do seu projeto GitHub.
GITHUB_USER Texto Seu nome de usuário GitHub.
HTTP Porta Porta do servidor Jenkins para permitir tráfego da internet.
PLUGINS Texto Dependências de plugin do Jenkins separadas por espaço.
GITHUB_PLUGIN_CONFIG Arquivo Plugin que ativa o GitHub para solicitações push e pull.
MERGE_JOB Arquivo Mesclar modelo de trabalho.

Código de caixa do servidor Jenkins CAM - adicionar variáveis

Use o botão Novo para adicionar uma variável conforme indicado abaixo:
- selecione o tipo de variável apropriado,
- preencha o nome da variável em maiúsculas,
- deixe o valor vazio por padrão e marque a caixa de seleção necessária. preste atenção ao campo
visibilidade para proteger a privacidade da variável (pública, privada e interna).

  • Forneça seu próprio repositório Git  por meio de uma variável de texto chamada GIT_REPOSITORY_URL.

    Var-git-repository da caixa de servidor Jenkins CAM

  • Passe o token de acesso do GitHub em uma variável de texto.

    Var-git-access-token da caixa de servidor Jenkins CAM


Obtenha o token de acesso do GitHub

Para obtê-lo, faça login na sua conta GitHub. No canto superior direito, selecione a opção de configurações no menu do usuário. Em Configurações, acesse Configurações do desenvolvedor > Tokens pessoais de acesso > Gerar novo token. Descreva por que você precisa do token (por exemplo: "servidor Jenkins CAM". "Servidor CAM Jenkins").

Obter token GitHub

Em escopo, selecione reporepo: status. Depois clique em Gerar token​​​​​​​. Copie e cole conforme mostrado.


  • Forneça a URL do seu projeto GitHub em uma variável de texto chamada GITHUB_PROJECT_URL.

Var-git-project-url da caixa de servidor Jenkins CAM

  • Forneça seu nome de usuário GitHub como uma variável de texto chamada GITHUB_USER.

Var-git-user da caixa de servidor Jenkins CAM

  • Abra a porta HTTP 0 no servidor Jenkins usando uma variável de porta chamada HTTP para permitir o tráfego da internet.

Var-http-port da caixa de servidor Jenkins CAM

  • Consulte o Cloud Application Manager, Git, e as dependências do plugin GitHub em uma variável de texto chamada PLUGINS.
    Digite este valor:
        elasticbox git github

Var-plugins da caixa de servidor Jenkins CAM

  • Adicione um plugin que ativa o GitHub para solicitações push e pull. Nomeie esta variável como GITHUB_PLUGIN_CONFIG

Var-git-plugin-config da caixa de servidor Jenkins CAM

Copie e cole este script em um arquivo de texto, salve em XML e faça o upload em uma variável de arquivo chamada GITHUB_PLUGIN_CONFIG.

<?xml version='1.0' encoding='UTF-8'?>
 <com.cloudbees.jenkins.GitHubPushTrigger_-DescriptorImpl plugin="github@1.9.1">
    <manageHook>true</manageHook>
    <credentials>
        <com.cloudbees.jenkins.Credential>
            <username>{{ GITHUB_USER }}\</username>
            <apiUrl>https://api.github.com</apiUrl>
            <oauthAccessToken>{{ GITHUB_ACCESS_TOKEN }}\</oauthAccessToken>
        </com.cloudbees.jenkins.Credential>
    </credentials>
</com.cloudbees.jenkins.GitHubPushTrigger_-DescriptorImpl>
  • Adicione o modelo do trabalho mexclado como uma variável de arquivo chamada MERGE_JOB.

Var-merge-job da caixa de servidor Jenkins CAM

Copie e cole o script em um arquivo de texto, salve em XML e faça o upload conforme mostrado.

<project>
    <actions/>
    <description/>
    <keepDependencies>false</keepDependencies>
    <properties>
        <com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.9.1">
            <projectUrl>{{ GITHUB_PROJECT_URL }}\</projectUrl>
        </com.coravy.hudson.plugins.github.GithubProjectProperty>
    </properties>
    <scm class="hudson.plugins.git.GitSCM" plugin="git@2.2.7">
        <configVersion>2</configVersion>
        <userRemoteConfigs>
            <hudson.plugins.git.UserRemoteConfig>
                <name>origin</name>
                <refspec>+refs/heads/*:refs/remotes/origin/*</refspec>
                <url>{{ GIT_REPOSITORY_URL }}\</url>
            </hudson.plugins.git.UserRemoteConfig>
        </userRemoteConfigs>
        <branches>
            <hudson.plugins.git.BranchSpec>
                <name>master</name>
            </hudson.plugins.git.BranchSpec>
        </branches>
        <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
        <submoduleCfg class="list"/>
        <extensions/>
    </scm>
    <canRoam>true</canRoam>
    <disabled>true</disabled>
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
    <triggers>
        <com.cloudbees.jenkins.GitHubPushTrigger plugin="github@1.9.1">
            <spec/>
        </com.cloudbees.jenkins.GitHubPushTrigger>
    </triggers>
    <concurrentBuild>false</concurrentBuild>
    <builders/>
    <publishers/>
    <buildWrappers/>
</project>
  • Adicione o modelo do trabalho de solicitação pull como uma variável de arquivo chamada PULL_REQUEST_JOB.

Var-pull-request-job da caixa de servidor Jenkins CAM

Copie e cole o script em um arquivo de texto, salve em XML e faça o upload conforme mostrado.

<project>
    <actions/>
    <description/>
   <keepDependencies>false</keepDependencies>
   <properties>
       <com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github@1.9.1">
           <projectUrl>{{ GITHUB_PROJECT_URL }}\</projectUrl>
       </com.coravy.hudson.plugins.github.GithubProjectProperty>
   </properties>
   <scm class="hudson.plugins.git.GitSCM" plugin="git@2.2.7">
       <configVersion>2</configVersion>
       <userRemoteConfigs>
           <hudson.plugins.git.UserRemoteConfig>
               <name>origin</name>
               <refspec>+refs/pull/*:refs/remotes/origin/pr/*</refspec>
               <url>{{ GIT_REPOSITORY_URL }}\</url>
           </hudson.plugins.git.UserRemoteConfig>
       </userRemoteConfigs>
       <branches>
           <hudson.plugins.git.BranchSpec>
               <name>${PR_COMMIT}</name>
           </hudson.plugins.git.BranchSpec>
       </branches>
       <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
       <submoduleCfg class="list"/>
       <extensions/>
   </scm>
   <canRoam>true</canRoam>
   <disabled>true</disabled>
   <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
   <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
   <triggers>
       <com.elasticbox.jenkins.triggers.PullRequestBuildTrigger plugin="elasticbox@0.9.7">
         <spec></spec>
         <triggerPhrase>.*test\W+this\W+please.*</triggerPhrase>
         <whitelist></whitelist>
       </com.elasticbox.jenkins.triggers.PullRequestBuildTrigger>
   </triggers>
   <concurrentBuild>false</concurrentBuild>
   <builders/>
   <publishers>
       <com.cloudbees.jenkins.GitHubCommitNotifier plugin="github@1.9.1"/>
   </publishers>
   <buildWrappers/>
</project>

3. 0 Adicione os seguintes eventos para instalar o servidor e os plugins Jenkins.

evento pre_install

Instale Jenkins. Instale o Jenkins. Copie e cole o script no evento pre_install e salve.

#/bin/bash

# For certain images In some clouds like GCE, packages are being installed by the provider at this point, so we need to wait for the installation to finish
WAIT_SECONDS=0
while [[ -f /var/lib/apt/lists/lock && ${WAIT_SECONDS} -lt 180 ]]
do
    sleep 5
    WAIT_SECONDS=$(( WAIT_SECONDS + 5 ))
done

# Install Jenkins and Git
curl -ks https://jenkins-ci.org/debian-stable/jenkins-ci.org.key | apt-key -y add -
echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list
  apt-get install default-jre -y
apt-get -y update
apt-get -y --allow-unauthenticated install jenkins git
evento de configuração

Instale os plugins, os modelos de trabalho de compilação e configure os plugins GitHub com nome de usuário, token de acesso e URL de repositório. Copie e cole o script no evento de configuração e salve.

#!/bin/bash

set -e

function install_template() {
    SOURCE_URL=${1}
    DESTINATION_PATH=${2}
    curl -ks ${SOURCE_URL} -o ${DESTINATION_PATH}
    elasticbox config -i ${DESTINATION_PATH} -o ${DESTINATION_PATH}
    chown jenkins:jenkins ${DESTINATION_PATH}
}

JENKINS_HOME=~jenkins

# Install plugins specified in variable PLUGINS
PLUGINS="{{ PLUGINS }}\"
if [ -n "${PLUGINS}" ]
then
    # Get the latest plugin info for update center
    mkdir -p ${JENKINS_HOME}/updates
    curl -Ls http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' > ${JENKINS_HOME}/updates/default.json
    chown -R jenkins:jenkins ${JENKINS_HOME}/updates

    # Restart Jenkins and wait for it to be up
    service jenkins restart
    sleep 30

    for PLUGIN_NAME in ${PLUGINS}
    do
        echo Installing plugin ${PLUGIN_NAME}
        java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin ${PLUGIN_NAME}
        echo Installed plugin ${PLUGIN_NAME}
    done
fi

# Configure GitHub plugin with GitHub user ID and access token specified in the variable GITHUB_USER and GITHUB_ACCESS_TOKEN
install_template {{ GITHUB_PLUGIN_CONFIG }}\ ${JENKINS_HOME}/com.cloudbees.jenkins.GitHubPushTrigger.xml

# Install CI/CD job templates
mkdir -p ${JENKINS_HOME}/jobs/pull-request
install_template {{ PULL_REQUEST_JOB }}\ ${JENKINS_HOME}/jobs/pull-request/config.xml

mkdir ${JENKINS_HOME}/jobs/merge
install_template {{ MERGE_JOB }}\ ${JENKINS_HOME}/jobs/merge/config.xml

chown -R jenkins:jenkins ${JENKINS_HOME}/jobs

# Restart Jenkins server
service jenkins restart

Implementar uma caixa de servidor Jenkins

Selecione uma imagem Debian Ubuntu Linux ao implementar a caixa do servidor Jenkins. Você pode iniciar em qualquer provedor de nuvem pública ou privada ou na sua própria infraestrutura. Aqui implementamos na Google Cloud.

Antes de começar

Configure a sua rede de provedor de nuvem para permitir tráfego da internet para o servidor Jenkins. Torne pública a instância do endereço IP e defina a porta do firewall para 0. Além disso, abra outra porta para permitir que os slaves Jenkins conversem com o servidor. Atribua qualquer número que você queira a esta porta.

Veja aqui como configurar a rede da Google Cloud para permitir o tráfego da internet por meio da porta 0 e o tráfego dos slaves Jenkins por meio da porta 1.

Configurar firewall do provedor de nuvem

  1. Faça login no console da Google Cloud.

  2. Selecione o projeto associado à sua conta de provedor Google no Cloud Application Manager.

  3. Expandir computação > Compute Engine > Redes. Selecione a rede padrão. Em Regras de firewall, clique em Criar novo.

  4. Insira as informações conforme exibidas para abrir as portas 0 e 1. Note que o Cloud Application Manager usa a marca target para detectar a regra do firewall.

  5. Sincronize sua conta de provedor no Cloud Application Manager para obter a regra.

Etapas para implementar o servidor Jenkins.

  1. Faça o login no Cloud Application Manager.

  2. Crie uma nova caixa de política de implementação. Caixas > Nova > Política de implementação e selecione Máquina virtual ou física.

  3. Selecione  Google Compute como provedor. Dê um nome à caixa e clique em Salvar.

  4. Vá para a nova caixa de política de implementação para modificá-la.

    Editar deploy-policy do servidor Jenkins CAM

  5. Na política, selecione a imagem Debian  Ubuntu Linux. Embora o tipo de máquina g0.small seja aceitável, selecione n1-standard-2 para implementar mais rápido.

  6. Sob rede, selecione a regra de firewall do Google nuvem. Selecionar IP efêmero para tornar a instância endereço IP público.

    Configurar deploy-policy do servidor Jenkins CAM

  7. Clique em Salvar para salvar as alterações.

  8. Acesse a caixa do servidor Jenkins que você criou.

  9. Na página de caixa, clique em Implementar.

  10. No diálogo da instância, dê um nome à implementação e selecione a nova caixa de política de implementação.

  11. Confira as variáveis de implementação do servidor Jenkins, como URL de repositório, token de acesso, URL do projeto e nome de usuário GitHub.

  12. Clique em Implementar para iniciar o servidor Jenkins.

Quando estiver on-line, na página de instância em Pontos de extremidade, clique no endereço IP público para abrir o portal de gerenciamento do servidor Jenkins. Você pode ver que o servidor tem todos os plugins GitHub e os modelos de trabalho de compilação.

Conectar o Cloud Application Manager ao Jenkins

Na interface de gerenciamento do servidor Jenkins, siga estas etapas para registrar sua conta Cloud Application Manager.

Observação: Observação: configure a URL do servidor Jenkins para fazer com que os links do servidor Jenkins funcionem com mensagens autopublicadas em solicitações pull do Git Hub. Acesse Gerenciar Jenkins > Configurar o sistema. Em URL do Jenkins, configure a URL e salve.

Etapas

  1. Em Jenkins > Gerenciar Jenkins > Configurar o sistema > Nuvem, clique em Adicionar nova nuvem e selecione Cloud Application Manager. Insira as informações conforme recebidas:

    Nome Descrição
    Descrição Insira as informações para identificar sua conta Cloud Application Manager nos trabalhos Jenkins.
    URL de ponto de extremidade Insira uma URL customizada se estiver usando o Cloud Application Manager como aplicativo.
    Máx. Número máximo de instâncias Este é o número total de instâncias que o Jenkins que iniciará por meio da sua conta. Recomendamos pelo menos 0.
    Token de autenticação Pegue um token  e cole aqui. Se você usa nome de usuário e senha para acessar o Cloud Application Manager, pegue um clicando em Obter um token de autenticação.
  2. Clique em Verificar token de autenticação para ver se o Jenkins pode conectar-se ao Cloud Application Manager.

  3. Clique em Salvar quando concluir.

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
Powered by Translations.com GlobalLink OneLink SoftwarePowered By OneLink