Back-End

12 jun, 2018

Construa e implemente hooks

Publicidade

Hook é um termo usado para indicar uma inserção de código em alguma operação padrão para fornecer personalização. Nos confins da plataforma Jelastic, você tem permissão para executar seu script personalizado antes/depois de uma operação de compilação/implantação de aplicação.

Essa implementação permite automatizar completamente a entrega da sua solução, definindo todas as personalizações de aplicação necessárias em um único painel de serviço para, posteriormente, aplicá-las de uma só vez durante uma única ação de implementação.

Abaixo, veremos como trabalhar com hooks e fornecer uma lista dos casos de uso comuns com algumas instruções simples.

Gerenciamento de hooks

Sendo parte do processo de implementação, os hooks podem ser definidos diretamente no diálogo de implementação da aplicação. O formulário apropriado será mostrado ao se referir a uma das seguintes opções:

  • Gerenciador de Implementação > Implementar noícone (essa aba está localizada na parte inferior do painel).

  • Botões de implementação para o servidor de aplicação.

1. Dentro do quadro aberto, expanda a seção Hooks.

Nota: Para o nó de construção Maven e o servidor de aplicação Golang, os hooks Build podem ser fornecidos adicionalmente junto com os Deploys.

Aqui, clique no botão Pre ou Post para fornecer seu código, que será executado logo antes ou imediatamente após a implementação.

2. Dentro da janela aberta do editor de código, você pode usar qualquer linguagem de programação preferencial – o único requisito aqui é a presença do interpretador de código apropriado sendo pré-instalado em um container.

Dessa forma, dependendo do mecanismo em que seu container está sendo executado, você pode chamar a execução dos scripts de linguagem de programação apropriados dentro do corpo de hooks. Por exemplo, para buscar a versão exata do mecanismo de container e armazená-la nos logs do servidor, as seguintes strings podem ser especificadas como um hook:

  • Java

  • PHP

  • Node.js

Dica: Para tornar o trabalho com seu código de scripts mais conveniente, o painel superior do editor fornece algumas opções adicionais, nomeadas:

  • Wrap lines: linha de freios caso atinja a borda do quadro.
  • Search: permite encontrar facilmente as informações necessárias, com o caso de Match adicional e opções de pesquisa Regex.
  • Help: redireciona para o documento atual para fornecer detalhes do uso de hooks.

Clique em “Apply” quando estiver pronto e continue com a implementação da aplicação.

3. Quando a implementação estiver concluída, você poderá clicar no botão “Show Logs” dentro da notificação do painel, exibida para visualizar os detalhes dos processos manipulados e seus resultados.

Dica: Posteriormente, o arquivo hooks.log dedicado pode ser visualizado na seção Log do servidor de aplicação:

Para explorar os dados registrados na execução de hooks Build, verifique o mesmo arquivo no nó de build Maven:

Casos de uso de hooks

Os hooks oferecem uma ampla gama de oportunidades para os desenvolvedores, que permitem automatizar muitos processos e obter uma aplicação ready-to-work, sem qualquer necessidade de etapa manual. Por exemplo, aqui estão as tarefas mais comuns, que podem ser programadas para serem realizadas automaticamente por hooks:

  • Operações de pré-construção/implementação (ou seja, executadas antes da construção e/ou implementação da aplicação)
    • Para verificar se todos os requisitos foram atendidos
    • Para pré-instalar o software necessário
    • Para limpar ou preparar uma pasta dedicada para uma aplicação
    • Para registrar dados
  • Ações de pós-compilação/implementação (ou seja, executadas após a compilação e/ou a implementação da aplicação estar realmente concluída)
    • Para reiniciar seu servidor de aplicação após a implementação
    • Para aplicar qualquer outra personalização preferida
    • Para registrar dados

Abaixo, fornecemos dois exemplos de passo a passo do uso de hooks: Registro de ações e Reinício de aplicações.

Registro de ações com hooks

Confira um exemplo simples de sua própria criação de arquivo de log com a ajuda de hooks.

1. Inicie a implementação do seu projeto de qualquer maneira preferível. Usaremos o arquivo HelloWorld.zip, disponível para uso imediato para cada conta recém-criada no Deployment Manager.

2. Expanda a seção Hooks, clique no hook Pre e cole o seguinte código no quadro do editor aberto:

echo “$(date) – deployment start” >> ~/mylog

Isso adicionará uma string no arquivo mylog (será criado automaticamente no diretório do servidor inicial, se não existir) para indicar o horário de início da implementação.

3. Para o hook “Post”, adicione o próximo código:

echo “$(date) – deployment end” >> ~/mylog

Dica: Se necessário, você pode usar o comando exit para quebrar seu hook e a execução da operação de implementação/construção apropriada a qualquer momento. Com isso, o valor 0 (isto é, exit 0) é usado para indicar sucesso, enquanto qualquer outro valor assume um erro (por exemplo, exit 1).

Aqui, registramos o final da nossa implementação.

4. Por fim, implemente sua aplicação e verifique seu arquivo mylog para verificar se os hooks que afirmamos foram executados com sucesso:

No nosso caso, a presença do arquivo mylog personalizado com os timestamps de início/fim de implementação da aplicação dentro dele indica que nossos scripts funcionaram conforme o esperado.

Reinício de aplicações com hooks

Vamos verificar outro exemplo de uso de hooks – por exemplo, com a reinicialização do servidor de aplicação Tomcat logo após a implementação do projeto.

1. Inicie a implementação de qualquer aplicação preferida (usaremos o pacote HelloWorld unificado padrão do Jelastic Deployment Manager) e configure o seguinte hook Post de implementação:

sudo service tomcat restart

É isso aí! Agora, seu servidor de aplicação Tomcat será reiniciado automaticamente após a implementação.

2. Abra a seção Log e veja hooks.log para obter uma resposta completa à sua execução do hook.

Dessa forma, você pode começar a trabalhar com seu app imediatamente após a implementação, sem precisar de nenhuma etapa adicional.

Se você tiver algum problema ao trabalhar com hooks, sinta-se à vontade para solicitar a ajuda de nossos especialistas técnicos no Stackoverflow.

***

Tetiana Markova faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://jelastic.com/blog/build-deploy-hooks/