CI/CD para aplicações MicroProfile com o Azure Pipelines

Este tutorial mostra como configurar facilmente um ciclo de versão de integração contínua e implementação contínua (CI/CD) do Azure Pipelines para implementar a sua aplicação Java EE MicroProfile numa instância da Aplicação Web do Azure para Contentores. A aplicação MicroProfile neste tutorial utiliza uma imagem base Payara Micro para criar um ficheiro WAR.

FROM payara/micro:5.182
COPY target/*.war $DEPLOY_DIR/ROOT.war
EXPOSE 8080

O processo de contentorização do Azure Pipelines é iniciado com a compilação de uma imagem do Docker e o envio da imagem do contentor para um registo do Azure Container Registry (ACR). Para concluir o processo, vai criar um pipeline de versão do Azure Pipelines e implementar a imagem de contentor numa aplicação Web.

Pré-requisitos

  1. No portal do Azure, crie um registo do Azure Container Registry.

  2. No portal do Azure, crie uma Aplicação Web do Azure para Contentores. Selecione Linux em SO e, em Configurar contentor, selecione Início rápido como a Origem da imagem.

  3. Copie e guarde o URL do clone do repositório do GitHub de exemplo em https://github.com/Azure-Samples/microprofile-hello-azure.

  4. Registe-se ou inicie sessão na sua organização do Azure DevOps e crie um projeto novo.

  5. Importar o repositório do GitHub de exemplo para Repositórios do Azure:

    1. Na página do projeto do Azure DevOps, selecione Repositórios na navegação do lado esquerdo.
    2. Em ou importar um repositório, selecione Importar.
    3. Em URL do clone, introduza o URL do clone do Git que guardou e selecione Importar.

Criar um pipeline de compilação

O pipeline de compilação de integração no Azure Pipelines executa automaticamente todas as tarefas de compilação sempre que há uma consolidação na aplicação de origem Java EE. Neste exemplo, o Azure Pipelines utiliza o Maven para compilar o projeto MicroProfile de Java.

  1. Na página do projeto do Azure DevOps, selecione Pipelines>Compilações na navegação do lado esquerdo.

  2. Selecione Novo Pipeline.

  3. Selecione Utilizar o editor clássico para criar um pipeline sem YAML.

  4. Confirme que o nome do projeto e o repositório do GitHub importado aparecem nos campos e selecione Continuar.

  5. Selecione Maven na lista de modelos e Aplicar.

  6. No painel do lado direito, confirme que é apresentado Hosted Ubuntu 1604 no menu pendente Conjunto de agentes.

    Nota

    Esta definição permite que o Azure Pipelines saiba que servidor de compilação deve utilizar. Também pode utilizar o seu próprio servidor de compilação privado personalizado.

  7. Para configurar o pipeline para a integração contínua, selecione o separador Acionadores no painel do lado esquerdo e a caixa de verificação junto a Ativar integração contínua.

  8. Na parte superior da página, selecione o menu pendente junto a Guardar e colocar em fila e selecione Guardar.

    Ativar a integração contínua

Criar uma imagem de compilação do Docker

Para criar uma imagem do Docker, o Azure Pipelines utiliza um Dockerfile com uma imagem base do Payara Micro.

  1. Selecione o separador Tarefas e o sinal de mais + junto a Trabalho de agente 1 para adicionar uma tarefa.

    Adicionar uma tarefa nova

  2. No painel do lado direito, selecione Docker na lista de modelos e Adicionar.

  3. Selecione buildAndPush no painel do lado esquerdo e, no painel do lado direito, introduza uma descrição no campo Nome a apresentar.

  4. Em Repositório do Contentor, selecione Novo junto ao campo Registo de Contentor.

  5. Preencha a caixa de diálogo Adicionar ligação de serviço de Registo do Docker da seguinte forma:

    Campo Value
    Tipo de Registo Selecione Azure Container Registry.
    Nome da Ligação Introduzir um nome para a ligação.
    Subscrição do Azure Selecione a sua subscrição do Azure no menu pendente e, se necessário, selecione Autorizar.
    Registo do Azure Container Registry Selecione o nome do registo do Azure Container Registry no menu pendente.
  6. Selecione OK.

    Adicionar uma ligação de serviço de Registo do Docker

    Nota

    Se estiver a utilizar o Docker Hub ou outro registo, em vez de Azure Container Registry, selecione Docker Hub ou Outros junto a Tipo de registo. Em seguida, indique as credenciais e as informações da ligação do registo de contentor.

  7. Em Comandos, selecione compilar no menu pendente Comando.

  8. Selecione as reticências ... junto ao campo Dockerfile, procure e selecione Dockerfile no repositório do GitHub e selecione OK.

    Selecionar o Dockerfile

  9. Em Etiquetas, introduza mais recente numa linha nova.

  10. Na parte superior da página, selecione o menu pendente junto a Guardar e colocar em fila e selecione Guardar.

Enviar a imagem do Docker para o ACR

O Azure Pipelines envia a imagem do Docker para o registo do Azure Container Registry e utiliza-a para executar a aplicação API MicroProfile como aplicação Web Java contentorizada.

  1. Uma vez que está a utilizar o Docker no Azure Pipelines, crie outro modelo do Docker com os passos em Criar uma imagem de compilação do Docker. Desta vez, selecione enviar no menu pendente Comando.

  2. Selecione o menu pendente junto a Guardar e colocar em fila e escolha Guardar e colocar em fila.

  3. No pop-up Executar pipeline, confirme que Hosted Ubuntu 1604 está selecionado em Conjunto de agentes e selecione Guardar e executar.

  4. Quando a compilação tiver terminado, pode selecionar a hiperligação na página Compilação para confirmar se a compilação foi bem-sucedida e ver outros detalhes.

    Selecionar a hiperligação de compilação

Criar um pipeline de versão

Os pipelines de versão contínua do Azure Pipelines acionam automaticamente a implementação para um ambiente de destino, como o Azure, assim que a compilação é criada com êxito. Pode criar pipelines de versão para ambientes como desenvolvimento, teste, transição ou produção.

  1. Na página do projeto do Azure DevOps, selecione Pipelines>Versões na navegação do lado esquerdo.

  2. Selecione Novo Pipeline.

  3. Selecione Implementar uma aplicação Java no Serviço de Aplicações do Azure na lista de modelos e selecione Aplicar.

    Selecionar o modelo Implementar uma aplicação Java no Serviço de Aplicações do Azure

  4. Na janela pop-up, mude o nome de Fase 1 para um nome como Desenvolvimento, Teste, Transição ou Produção e feche a janela.

  5. Em Artefactos no painel do lado direito, selecione Adicionar para associar os artefactos do pipeline de compilação ao pipeline de versão.

  6. No painel do lado direito, selecione o pipeline de compilação no menu pendente em Origem (pipeline de compilação) e selecione Adicionar.

    Adicione um artefacto de compilação

  7. Selecione a hiperligação na fase Produção para Ver as tarefas da fase.

    Selecione o nome da fase

  8. No painel do lado direito, preencha o formulário da seguinte forma:

    Campo Value
    Subscrição do Azure Na lista pendente, selecione a sua subscrição do Azure.
    Tipo de aplicação Selecione Aplicação Web para Contentores (Linux) no menu pendente.
    Nome do serviço de aplicações Selecione a instância do ACR no menu pendente.
    Registo ou Espaços de nomes Introduza o nome do seu ACR no campo. Por exemplo, introduza mymicroprofileregistry.azure.io.
    Repositório Introduza o repositório que contém a sua imagem do Docker.

    Configurar tarefas de fase

  9. No painel do lado esquerdo, selecione Implementar War no Serviço de Aplicações do Azure e, no painel do lado direito, introduza a etiqueta mais recente no campo Etiqueta.

  10. No painel do lado esquerdo, selecione Executar no agente e, no painel direito, selecione Hosted Ubuntu 1604 a partir do menu pendente Conjunto de agentes.

Configurar variáveis de ambiente

Adicione e defina variáveis ambientais para se ligar ao registo do contentor durante a implementação.

  1. Selecione o separador Variáveis e selecione Adicionar para adicionar as seguintes variáveis para o URL, o nome de utilizador e a palavra-passe do registo de contentores.

    Nome Valor
    registry.url Introduza o URL do registo de contentor. Por exemplo: https://mymicroprofileregistry.azure.io
    registry.username Introduza o nome de utilizador do registo.
    registry.password Introduza a palavra-passe do registo. Por motivos de segurança, selecione o ícone de cadeado para manter o valor da palavra-passe oculto.

    Adicionar variáveis

  2. No separador Tarefas, selecione Implementar War no Serviço de Aplicações do Azure no painel do lado esquerdo.

  3. No painel do lado direito, expanda Definições da Aplicação e de Configuração e selecione as reticências ... junto ao campo Definições da Aplicação.

  4. No pop-up Definições da Aplicação, selecione Adicionar para definir e atribuir as variáveis das definições da aplicação:

    Nome Valor
    DOCKER_REGISTRY_SERVER_URL $(registry.url)
    DOCKER_REGISTRY_SERVER_USERNAME $(registry.username)
    DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password)
  5. Selecione OK.

    Adicionar e definir as variáveis

Set up continuous deployment (Configurar a implementação contínua)

Para ativar a implementação contínua:

  1. No separador Pipeline, em Artefactos, selecione o ícone de relâmpago no artefacto de compilação.

  2. No painel do lado direito, defina o Acionador de implementação contínua como Ativado.

  3. Selecione Guardar no canto superior direito e novamente Guardar.

    Ativar o acionador de implementação contínua

Implementar a aplicação Java

Agora que ativou o CI/CD, as modificações ao código fonte criam e executam as compilações e versões automaticamente. Também pode criar e executar versões manualmente, da seguinte forma:

  1. No canto superior direito da página de pipeline de versão, selecione Criar versão.

  2. Na página Criar nova versão, selecione o nome da fase em As fases de um acionador mudam de automáticas para manuais.

  3. Selecione Criar.

  4. Selecione o nome da versão, coloque o ponteiro do cursor sobre a fase ou selecione-a e, por fim, selecione Implementar.

Testar a aplicação Web Java

Quando a implementação tiver sido concluída com êxito, teste a aplicação Web.

  1. Copie o URL da aplicação Web a partir do portal do Azure.

    Aplicação do Serviço de Aplicações no portal do Azure

  2. Introduza o URL no browser para executar a aplicação. A página Web deverá dizer Hello Azure!

    Página da aplicação Web Java