Tutorial: Implantar no Serviço de Aplicativo do Azure com Jenkins e a CLI do Azure

Importante

Muitos serviços do Azure têm plug-ins Jenkins. Alguns desses plug-ins estarão sem suporte a partir de 29 de fevereiro de 2024. A CLI do Azure é a maneira atualmente recomendada de integrar o Jenkins aos serviços do Azure. Para obter mais informações, consulte o artigo Jenkins plug-ins for Azure.

Para implantar um aplicativo Web Java no Azure, você pode usar a CLI do Azure em um Jenkins Pipeline. Neste tutorial, você executa as seguintes tarefas:

  • Criar uma VM do Jenkins
  • Configurar o Jenkins
  • Criar uma aplicação Web no Azure
  • Preparar um repositório do GitHub
  • Criar o pipeline do Jenkins
  • Executar o pipeline e verificar a aplicação Web

Pré-requisitos

  • Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.

Configurar o Jenkins

As etapas a seguir mostram como instalar o Java JDK e o Maven necessários no controlador Jenkins:

  1. Entre no controlador Jenkins usando SSH.

  2. Baixe e instale a compilação Azul Zulu do OpenJDK para Azure a partir de um repositório apt-get:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
    sudo apt-add-repository "deb http://repos.azul.com/azure-only/zulu/apt stable main"
    sudo apt-get -q update
    sudo apt-get -y install zulu-8-azure-jdk
    
  3. Execute o seguinte comando para instalar o Maven:

    sudo apt-get install -y maven
    

Adicionar entidade de serviço do Azure a uma credencial Jenkins

As etapas a seguir mostram como especificar sua credencial do Azure:

  1. Verifique se o plug-in Credenciais está instalado.

  2. No painel do Jenkins, selecione Credenciais - Sistema ->>.

  3. Selecione Credenciais globais(sem restrições).

  4. Selecione Adicionar credenciais para adicionar uma entidade de serviço do Microsoft Azure. Certifique-se de que o tipo de credencial é Nome de usuário com senha e insira os seguintes itens:

    • Nome de usuário: Entidade de serviço appId
    • Palavra-passe: Entidade de serviço password
    • ID: Identificador de credencial (como AzureServicePrincipal)

Criar um Serviço de Aplicações do Azure para implementar a aplicação Web Java

Use az appservice plan create para criar um plano do Serviço de Aplicativo do Azure com a camada de preço GRATUITA :

az appservice plan create \
    --name <app_service_plan> \ 
    --resource-group <resource_group> \
    --sku FREE

Pontos principais:

  • O plano do serviço de aplicações define os recursos físicos utilizados para alojar as suas aplicações.
  • Todos os aplicativos atribuídos a um plano appservice compartilham esses recursos.
  • Os planos Appservice permitem que você economize custos ao hospedar vários aplicativos.

Criar uma aplicação Web do Azure

Use az webapp create para criar uma definição de aplicativo Web no plano do myAppServicePlan Serviço de Aplicativo.

az webapp create \
    --name <app_name> \ 
    --resource-group <resource_group> \
    --plan <app_service_plan>

Pontos principais:

  • A definição da aplicação Web fornece um URL com o qual pode aceder à sua aplicação e configura várias opções para implementar o código no Azure.
  • Substitua o espaço reservado <app_name> por um nome de aplicativo exclusivo.
  • O nome do aplicativo faz parte do nome de domínio padrão do aplicativo Web. Portanto, o nome precisa ser exclusivo em todos os aplicativos no Azure.
  • Pode mapear qualquer entrada de nome de domínio personalizada para a aplicação Web antes de a expor aos utilizadores.

Configurar o Java

Use az appservice web config update para configurar a configuração de tempo de execução Java para o aplicativo:

az webapp config set \ 
    --name <app_name> \
    --resource-group <resource_group> \ 
    --java-version 1.8 \ 
    --java-container Tomcat \
    --java-container-version 8.0

Preparar um repositório do GitHub

  1. Abra o repositório Aplicação Web Java simples para o Azure.

  2. Selecione o botão Fork para bifurcar o repositório para sua própria conta do GitHub.

  3. Abra o arquivo Jenkinsfile clicando no nome do arquivo.

  4. Selecione o ícone de lápis para editar o arquivo.

  5. Atualize o ID da subscrição e o ID do inquilino.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Atualize o grupo de recursos e o nome do seu aplicativo Web na linha 22 e 23, respectivamente.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Atualize o ID da credencial em sua instância do Jenkins

    withCredentials([usernamePassword(credentialsId: '<service_princial>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
    

Criar o pipeline do Jenkins

Faça o seguinte para criar um pipeline Jenkins:

  1. Abra o Jenkins num browser.

  2. Selecione Novo Item.

  3. Insira um nome para o trabalho.

  4. Selecione Pipeline.

  5. Selecione OK.

  6. Selecione Pipeline.

  7. Em Definition (Definição), selecione Pipeline script from SCM (Script de pipeline do SCM).

  8. Em SCM, selecione Git.

  9. Insira o URL do GitHub para seu repositório bifurcado: https:\<forked_repo\>.git

  10. Selecione Guardar

Testar o pipeline

  1. Vá para o pipeline que você criou

  2. Selecione Compilar agora

  3. Após a conclusão da compilação, selecione Saída do console para ver os detalhes da compilação.

Verificar a aplicação Web

Faça o seguinte para verificar se o arquivo WAR foi implantado com êxito em seu aplicativo Web:

  1. Navegue até o seguinte URL: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Você verá um texto semelhante ao seguinte:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Navegue até o seguinte URL (substitua x e y por dois valores a serem somados): http://< app_name.azurewebsites.net/api/calculator/add?x>=<x>&y=<y>.><><

    Example of running the demo add

Implantar no Serviço de Aplicativo do Azure no Linux

O Serviço de Aplicativo também pode hospedar aplicativos Web nativamente no Linux para pilhas de aplicativos suportados. Ele também pode executar contêineres Linux personalizados (também conhecido como Web App for Containers.)

Você pode modificar o script para implantar em um Serviço de Aplicativo do Azure no Linux. O Serviço de Aplicativo no Linux suporta Docker. Como tal, você fornece um Dockerfile que empacota seu aplicativo Web com tempo de execução de serviço em uma imagem do Docker. O plug-in cria a imagem, envia-a por push para um registro do Docker e implanta a imagem em seu aplicativo Web.

  1. Consulte Migrar software personalizado para o Serviço de Aplicativo do Azure usando um contêiner personalizado para criar um Serviço de Aplicativo do Azure no Linux e um Registro de Contêiner do Azure.

        az group create --name myResourceGroup2 --location westus2
        az acr create --name myACRName --resource-group myResourceGroup2 --sku Basic --admin-enabled true
        az appservice plan create --name myAppServicePlan --resource-group  myResourceGroup2 --is-linux
        az webapp create --resource-group myResourceGroup2 --plan myAppServicePlan --name myApp --deployment-container-image-name myACRName.azurecr.io/calculator:latest
    
  2. Instale o Docker no seu Jenkins.

  3. Verifique se o plug-in Docker Pipeline está instalado.

  4. No mesmo repositório Simple Java Web App for Azure que você bifurcou, edite o arquivo Jenkinsfile2 da seguinte maneira:

    1. Atualize o ID da subscrição e o ID do inquilino.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Atualize para os nomes do seu grupo de recursos, aplicativo Web e ACR (substituindo os espaços reservados pelos seus valores).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Atualizar <azsrvprincipal\> para o ID da sua credencial

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Crie um novo pipeline Jenkins como fez ao implantar no aplicativo Web do Azure no Windows usando Jenkinsfile2o .

  6. Execute a nova tarefa.

  7. Para verificar, na CLI do Azure, execute o seguinte comando:

    az acr repository list -n <myRegistry> -o json
    

    Deverá ver resultados semelhantes aos seguintes:

    [
    "calculator"
    ]
    
  8. Navegue até http://<app_name>.azurewebsites.net/api/calculator/ping (substituindo o espaço reservado). Você deve ver resultados semelhantes aos seguintes:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Navegue até http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (substituindo os espaços reservados). Os valores especificados e são somados e xy exibidos.

Próximos passos