Tutorial: Configurar um ambiente Jenkins para habilitar a CI/CD para um aplicativo Java no Service Fabric
Este tutorial é a parte cinco de uma série. Ele mostra como usar o Jenkins para implantar atualizações em seu aplicativo. Neste tutorial, o plug-in Jenkins do Service Fabric é usado com um repositório do GitHub que hospeda o aplicativo Voting para implantar o aplicativo em um cluster.
Na parte cinco da série, você aprende a:
- Implantar o contêiner Jenkins do Service Fabric no seu computador
- Configurar o ambiente Jenkins para implantação no Service Fabric
- Atualizar seu aplicativo
Nesta série de tutoriais, você aprenderá a:
Pré-requisitos
- Instalar o Git no computador local da página de downloads do Git. Para obter mais informações sobre o Git, leia a documentação do Git.
- Ter um conhecimento prático do Jenkins.
- Criar uma conta do GitHub e saber como usar o GitHub.
- Instalar o Docker no seu computador.
Efetuar pull e implantar a imagem de contêiner Jenkins do Service Fabric
Você pode configurar o Jenkins dentro ou fora de um cluster do Service Fabric. As instruções a seguir mostram como configurá-lo fora de um cluster usando uma imagem fornecida do Docker. No entanto, um ambiente de compilação Jenkins pré-configurado também pode ser usado. A imagem de contêiner a seguir vem instalada com o plug-in do Service Fabric e está pronta para ser usada com o Service Fabric imediatamente.
Observação
O exemplo a seguir efetua pull de uma imagem de contêiner público do Docker Hub. É recomendável autenticar-se com a conta do Docker Hub (docker login
) primeiro, em vez de fazer uma solicitação de pull anônima. Para melhorar a confiabilidade ao usar o conteúdo público, importe e gerencie a imagem em um registro de contêiner privado do Azure. Saiba mais sobre como trabalhar com imagens públicas.
Baixar a imagem de contêiner Jenkins do Service Fabric:
docker pull rapatchi/jenkins:v10
. Esta imagem é fornecida com o plug-in do Service Fabric Jenkins pré-instalado.Execute a imagem de contêiner com o local onde seus certificados do Azure são armazenados em seu computador local montado.
docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
Obter a ID de instância de imagem de contêiner. Você pode listar todos os contêineres do Docker com o comando
docker ps –a
Recuperar a senha de sua instância do Jenkins executando o seguinte comando:
docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
Se a ID do contêiner for 2d24a73b5964, use 2d 24.
- Esta senha é necessária para entrar no painel do Jenkins do portal, que é
http://<HOST-IP>:8080
- Depois de entrar pela primeira vez, é possível criar sua própria conta de usuário ou usar a conta de administrador.
- Esta senha é necessária para entrar no painel do Jenkins do portal, que é
Configurar o GitHub para trabalhar com o Jenkins usando as etapas mencionadas em Gerando uma nova chave SSH e adicionando-a ao agente SSH. Como os comandos são executados do contêiner Docker, siga as instruções do ambiente do Linux.
Use as instruções fornecidas pelo GitHub para gerar a chave SSH. Em seguida, adicione a chave SSH para a conta do GitHub que está hospedando o repositório.
Execute os comandos mencionados no link anterior no shell Jenkins Docker (e não no host).
Para fazer logon no shell Jenkins do host, use os seguintes comandos:
docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
Verifique se o cluster ou a máquina em que a imagem de contêiner Jenkins está hospedada tem um IP público. Ter um IP voltado para o público permite que a instância do Jenkins receba notificações do GitHub.
Criar e configurar um trabalho do Jenkins
Primeiro, se você não tiver um repositório que possa usar para hospedar o projeto do Voting no GitHub, crie um. O repositório será chamado de dev_test no restante deste tutorial.
Crie um novo item no painel do Jenkins. em
http://<HOST-IP>:8080
.Insira um nome de item (por exemplo, MyJob). Selecione projeto em estilo livree clique em OK.
Acesse a página do trabalho e clique em Configurar.
a. Na seção geral, marque a caixa de seleção Proejto GitHub e especifique a URL do project GitHub. Essa URL hospeda o aplicativo Java do Service Fabric que você deseja integrar à integração contínua do Jenkins, no fluxo de implantação contínua (CI/CD) (por exemplo,
https://github.com/testaccount/dev_test
).b. Na seção Gerenciamento de Código-Fonte, selecione Git. Especifique a URL do repositório que hospeda o aplicativo Java do Service Fabric que você deseja integrar ao fluxo CI/CD do Jenkins (por exemplo,
https://github.com/testaccount/dev_test.git
). Você também pode especificar aqui quais ramificações devem ser criadas (por exemplo, /mestre).Configure seu GitHub (que está hospedando o repositório) para que ele seja capaz de se comunicar com o Jenkins. Use as seguintes etapas:
a. Vá para sua página do repositório GitHub. Vá para Configurações>Integrações e Serviços.
b. Selecione Adicionar Serviço, digite Jenkins e selecione o plug-in Jenkins-Github.
c. Insira a URL do webhook Jenkins (por padrão, ele deve ser
http://<PublicIPorFQDN>:8081/github-webhook/
). Clique em adicionar/atualizar serviço.d. Um evento de teste é enviado para a instância do Jenkins. Você verá uma marca de seleção verde ao lado do webhook no GitHub, e o projeto é criado.
Na seção Criar Gatilhos, selecione a opção de compilação desejada. Para este exemplo, você deseja disparar uma compilação sempre que ocorrer alguma envio para o repositório. Portanto, você seleciona Gatilho de gancho do GitHub para sondagem GITScm.
Na seção Criar, na lista suspensa Adicionar etapa de compilação, selecione a opção Invocar Gradle Script. No widget que aparecer, abra o menu avançado, especifique o caminho para Script do build raiz para o aplicativo. Ele obtém o build.gradle no caminho especificado e funciona de maneira correspondente.
No menu suspenso Ações Pós-Compilação, selecione Implantar Projeto do Service Fabric. Aqui, você precisa fornecer detalhes do cluster em que o aplicativo do Service Fabric compilado para o Jenkins deve ser implantado. O caminho para o certificado é onde o volume foi montado (/tmp/myCerts).
Você também pode fornecer detalhes adicionais usados para implantar o aplicativo. Confira a seguinte captura de tela para obter um exemplo dos detalhes do aplicativo:
Observação
Aqui, o cluster pode ser o mesmo que hospeda o aplicativo de contêiner Jenkins caso você esteja usando o Service Fabric para implantar a imagem de contêiner Jenkins.
Clique em Save (Salvar).
Atualizar seu aplicativo existente
Atualize o título do HTML no arquivo VotingApplication/VotingWebPkg/Code/wwwroot/index.html com Service Fabric Voting Sample V2.
<div ng-app="VotingApp" ng-controller="VotingAppController" ng-init="refresh()"> <div class="container-fluid"> <div class="row"> <div class="col-xs-8 col-xs-offset-2 text-center"> <h2>Service Fabric Voting Sample V2</h2> </div> </div> </div> </div>
Atualize a versão de ApplicationTypeVersion e ServiceManifestVersion para 2.0.0 no arquivo Voting/VotingApplication/ApplicationManifest.xml.
<?xml version="1.0" encoding="utf-8" standalone="no"?> <ApplicationManifest xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingApplicationType" ApplicationTypeVersion="2.0.0"> <Description>Voting Application</Description> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="2.0.0"/> </ServiceManifestImport> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingDataServicePkg" ServiceManifestVersion="1.0.0"/> </ServiceManifestImport> <DefaultServices> <Service Name="VotingWeb"> <StatelessService InstanceCount="1" ServiceTypeName="VotingWebType"> <SingletonPartition/> </StatelessService> </Service> <Service Name="VotingDataService"> <StatefulService MinReplicaSetSize="3" ServiceTypeName="VotingDataServiceType" TargetReplicaSetSize="3"> <UniformInt64Partition HighKey="9223372036854775807" LowKey="-9223372036854775808" PartitionCount="1"/> </StatefulService> </Service> </DefaultServices> </ApplicationManifest>
Atualize o campo Versão no ServiceManifest e o campo Versão na marca do CodePackage no arquivo Voting/VotingApplication/VotingWebPkg/ServiceManifest.xml para 2.0.0.
<CodePackage Name="Code" Version="2.0.0"> <EntryPoint> <ExeHost> <Program>entryPoint.sh</Program> </ExeHost> </EntryPoint> </CodePackage>
Para inicializar um trabalho do Jenkins que execute uma atualização do aplicativo, envie por push suas novas alterações para o repositório do GitHub.
No Service Fabric Explorer, clique na lista suspensa Aplicativos. Para ver o status da atualização, clique na guia Atualizações em Andamento.
Se você acessar http://<Host-IP>:8080, verá que o aplicativo Voting com funcionalidade total está agora em execução.
Próximas etapas
Neste tutorial, você aprendeu a:
- Implantar o contêiner Jenkins do Service Fabric no seu computador
- Configurar o ambiente Jenkins para implantação no Service Fabric
- Atualizar seu aplicativo
- Confira outros Exemplos de Java