Construir e implantar uma aplicação pode ser uma tarefa difícil. Por que não usar um Job de Compilação do Jenkins para automatizar todo o processo? Você se concentra na construção enquanto o Jenkins lida com a implantação do código.
Neste tutorial, você aprenderá como automatizar a implantação do seu código usando o Jenkins para economizar tempo, permitindo que você se concentre em outras tarefas simultaneamente.
Preparado? Hora de mergulhar!
Pré-requisitos
Este tutorial apresenta demonstrações práticas. Se deseja seguir junto, certifique-se de ter o seguinte:
- Um Sistema Ubuntu – Este tutorial utiliza o Ubuntu 20.04 para as demonstrações
- A GitHub account
- OpenJDK versão 1.8.0_292
- Versão do Jenkins 2.303.1
- Node.js versão 14.17.6
- Faça o fork deste repositório do GitHub – Após o fork, observe a URL do repositório no GitHub, pois você precisará dela mais tarde.
Embora o repositório mostrado nas capturas de tela abaixo difira ligeiramente do link acima, uma vez bifurcado, você usará uma URL de repositório diferente também.
Criando um Trabalho de Compilação no Jenkins
O Jenkins é um servidor de automação de código aberto que auxilia na automatização do ciclo de vida do desenvolvimento de software. Este ciclo de vida inclui a construção, teste e implantação, o que facilita a integração contínua e a entrega contínua.
Nesta demonstração, você verá como criar um trabalho de compilação no Jenkins. Um trabalho de compilação é tipicamente uma configuração para executar tarefas de forma autônoma para a construção/empacotamento de software.
- Inicie seu navegador favorito, acesse http://localhost:8080/ e faça login no painel do Jenkins. A porta
8080
é a porta padrão para acessar o painel do Jenkins.
2. No Painel do seu Jenkins, clique no botão Novo Item no painel esquerdo para inicializar a criação de um trabalho de compilação. Isso redirecionará o navegador para uma nova página de trabalho.

3. Em seguida, insira um nome de projeto que preferir para o trabalho de compilação no campo de entrada mostrado abaixo. Para este exemplo, o nome do projeto é webDeploy.
Selecione a opção Projeto Freestyle para habilitar a criação de trabalhos, ações de script pós-criação e configurar os gatilhos de construção do projeto, em seguida, clique em OK. Você será redirecionado para a página de configuração do trabalho que verá no próximo passo.

4. Clique na guia Geral e marque a caixa Projeto GitHub para vincular um gerenciador de código-fonte para que o Jenkins saiba de onde extrair seu código. Esta demonstração utiliza o Git como gerenciador de código-fonte para o projeto de exemplo hospedado no GitHub que você bifurcou anteriormente. Cole a URL do repositório do GitHub da sua conta do GitHub no campo URL do Projeto abaixo.

5. Por fim, clique na guia Gerenciamento de Código Fonte, em seguida, selecione Git, que é o seu gerenciador de código-fonte.
Copie e cole esta URL do repositório do GitHub (https://github.com/Claradev32/webDeploy.git) no campo de entrada. Clique no botão Salvar para salvar suas configurações atuais.

Criando Credenciais para um Projeto Jenkins
Talvez você prefira manter seu repositório privado, o que é comum para projetos de clientes. Se for o caso, você precisará criar credenciais para autorizar o Jenkins a clonar seu projeto do GitHub.
Para criar credenciais para o seu projeto Jenkins, você deve primeiro gerar e adicionar uma chave SSH à sua conta do GitHub:
1. Abra o terminal do seu Ubuntu e execute o comando abaixo para gerar uma chave SSH com ed25519
como tipo de chave. Substitua [email protected]
pelo seu endereço de e-mail do GitHub para adicioná-lo como comentário à chave SSH que você vai gerar.
2. Salve sua chave SSH pública com o seguinte:
- Especifique um local para salvar a chave SSH e pressione Enter. Se você não fizer isso, o comando salvará a chave SSH em um local padrão, como mostrado abaixo.
- Digite uma frase secreta segura para a chave SSH, pressione Enter para confirmar a frase secreta e você verá a saída da sua chave SSH pública.
- Observe o local da sua chave SSH gerada, pois você a adicionará à sua conta do GitHub nos próximos passos.

3. Faça login no GitHub no seu navegador da web e acesse a página de Configurações da Conta.
4. Clique no link SSH e GPG keys no painel esquerdo e depois clique em Nova chave SSH, conforme mostrado abaixo, para configurar sua nova chave SSH.

5. Por fim, insira o título preferido para a chave SSH. O título é apenas para fins de documentação interna. Cole sua chave SSH, do arquivo salvo anteriormente, no campo de entrada Chave e clique em Adicionar Chave SSH para salvar a chave.
Lembre-se de que esta é a sua chave pública e não a chave privada!

Adicionando Chave SSH Privada às Credenciais do Jenkins
Agora que você criou seu par de chaves SSH para usar como credencial do Jenkins, você também precisa adicionar sua chave privada SSH às credenciais do Jenkins para autorizar o acesso do Jenkins ao seu repositório do GitHub. Mas primeiro, tome nota do URL SSH do seu repositório do GitHub.
1. Navegue até a página do seu repositório do GitHub, clique em Código → SSH e clique no ícone de cópia mostrado abaixo para copiar o URL SSH para a área de transferência.

2. Em seguida, vá para o seu painel do Jenkins, depois clique em Gerenciar Jenkins para acessar a página de configurações do seu projeto.

3. Role para baixo e clique na opção Gerenciar Credenciais sob a seção Segurança para ver a lista de suas credenciais do Jenkins.

4. Clique em Jenkins na página de Credenciais mostrada abaixo para acessar a página “Sistema” onde você pode adicionar novas credenciais.

5. Agora, na página Sistema, passe o mouse sobre a opção Credenciais Globais (sem restrições) para exibir o menu suspenso e clique no ícone de seta para baixo.
Clique em Adicionar Credenciais no menu suspenso. A página redireciona para um formulário onde você configurará as novas credenciais mostradas no próximo passo.

6. Selecione Nome de usuário SSH com chave privada no primeiro campo de entrada e insira um nome de usuário do projeto no campo Nome de Usuário. Para este exemplo, o nome de usuário é CI/CD.
Neste caso, o nome de usuário é puramente documentação interna e não é usado para autenticação.

7. Execute o comando abaixo para visualizar sua chave privada SSH, alterando o local para onde sua chave está salva, conforme mostrado abaixo (a chave abaixo está localizada no diretório home). Anote sua chave privada SSH, pois você a adicionará às credenciais do Jenkins na próxima etapa.

8. Depois de anotar sua chave privada SSH, volte para a página Credenciais globais (irrestritas).
Digite a senha que você definiu na seção “Criando Credenciais para um Projeto Jenkins” (passo dois) no campo de entrada Senha, e clique em OK. Isso autoriza o acesso do Jenkins ao seu repositório GitHub.
Se você não incluiu uma senha ao criar a chave SSH, clique em Inserir diretamente e clique no botão Adicionar. Insira sua chave privada SSH no campo de entrada Chave, conforme mostrado abaixo, e pressione o botão OK para salvar as credenciais.

8. Volte para o seu Painel do Jenkins, passe o mouse sobre o seu projeto e clique na seta para baixo, escolha Configurar, conforme mostrado abaixo. A página redireciona para a página de configuração do seu projeto.

10. Por fim, selecione o nome de usuário das credenciais no campo de seleção (do passo seis da seção “Adicionando Chave Secreta às Credenciais do Jenkins”). O Jenkins aplica o princípio CID por padrão para garantir a integração e implantação contínuas do seu projeto.

Configurando Desencadeadores de Construção e Ações Pós-Construção
Agora você criou com sucesso o esqueleto de um trabalho de construção. Mas se você fizer alterações regularmente em seu projeto, será necessário redesplegar manualmente cada vez? Por que não configurar desencadeadores de construção? Os desencadeadores de construção redesplegam automaticamente as alterações do seu projeto enviadas para o GitHub.
1. Na página de configuração dos seus projetos, clique na guia Desencadeadores de Construção, e marque a opção Desencadeador de gancho do GitHub para pesquisa GITScm. Essa opção permite redesplegar automaticamente as alterações do seu projeto.

2. Clique na guia Construir, clique em Adicionar passo de construção, e selecione Executar shell para criar um script que será executado sempre que o Jenkins baixar uma nova versão do seu código.

O script shell que você cria depende do seu ambiente de desenvolvimento. Se estiver no Windows, o Windows executará o script; o mesmo vale para outros sistemas operacionais.
3. Digite os comandos de shell abaixo e clique em Salvar para salvar o script de construção. Depois de salvar as alterações, a página será redirecionada de volta para o painel do seu projeto.
Os comandos abaixo realizam o pull
do seu código a partir do local remoto do seu código-fonte (origin master
) e com o NodeJS NPM install (npm install
) as dependências necessárias para executar seu projeto. Os comandos são executados cada vez que você faz uma solicitação de
push para o seu gerenciador de código-fonte.

4. Agora, no painel do seu projeto, clique em Build Now para iniciar a construção.

5. Role para baixo até o histórico de construção para ver o status da construção. Se a construção foi bem-sucedida, você verá uma saída semelhante à captura de tela abaixo.

Se a construção falhar, você verá a saída mostrada abaixo.

6. Em seguida, role para cima e clique em Configure para configurar as ações pós-construção do projeto.

7. Clique na guia Post Build Actions, depois clique em Add post-build action e escolha Git publisher. A página expande a seção de configurações do Git Publisher (próximo passo).

8. Por fim, habilite a opção Push Only If Build Succeeds e clique no botão Save para salvar as alterações. Ao habilitar essa opção, você diz ao Jenkins para implantar o código apenas quando uma execução de construção for bem-sucedida.

Conclusão
No tutorial, você passou pelo processo de conectar o Jenkins ao seu sistema de gerenciamento de código-fonte. Você também criou um script de compilação que é executado automaticamente quando o Jenkins faz o download de uma nova versão do seu código e configurou acionadores de compilação para automatizar implantações na web.
Agora, por que não economizar tempo automatizando a implantação de sua aplicação com um trabalho de compilação do Jenkins?