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

Importante

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

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

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

Pré-requisitos

  • Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

Configurar o Jenkins

As seguintes etapas 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 o build do Azul Zulu do OpenJDK para Azure em 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
    

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

As seguintes etapas mostram como especificar sua credencial do Azure:

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

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

  3. Selecione Credenciais globais (irrestrito).

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

    • Nome de usuário: entidade de serviço appId
    • Senha: entidade de serviço password
    • ID: identificador de credencial (como AzureServicePrincipal)

Criar um Serviço de Aplicativo do Azure para implantar o aplicativo Web Java

Use az appservice plan create para criar um plano do Serviço de Aplicativo do Azure com o tipo de preço FREE:

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

Pontos principais:

  • O plano do serviço de aplicativo define os recursos físicos usados para hospedar seus aplicativos.
  • Todos os aplicativos atribuídos a um plano do appservice compartilham esses recursos.
  • Os planos do appservice permitem economizar custos ao hospedar vários aplicativos.

Criar um aplicativo Web do Azure

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

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

Pontos principais:

  • A definição de aplicativo Web fornece uma URL para acessar seu aplicativo e define várias opções para implantar seu código no Azure.
  • Substitua o espaço reservado <app_name> por um nome de aplicativo exclusivo.
  • O nome de aplicativo faz parte do nome de domínio padrão para o aplicativo Web. Portanto, o nome precisa ser exclusivo em todos os aplicativos no Azure.
  • Você poderá mapear uma entrada de nome de domínio personalizada para o aplicativo Web antes de expor para seus usuários.

Configurar o Java

Use az appservice web config update para definir a configuração de runtime do 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 GitHub

  1. Abra o repositório Aplicativo Web Java simples para o Azure.

  2. Selecione o botão Criar fork para realizar a bifurcação do repositório para sua 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 a ID da assinatura e a ID do locatário.

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

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

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

Criar pipeline do Jenkins

Faça o seguinte para criar um pipeline do Jenkins:

  1. Abra o Jenkins em um navegador da Web.

  2. Selecione Novo Item.

  3. Insira um nome para o trabalho.

  4. Selecione Pipeline.

  5. Selecione OK.

  6. Selecione Pipeline.

  7. Para Definição, selecione Script de pipeline do SCM.

  8. Para SCM, selecione Git.

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

  10. Selecione Salvar

Testar o pipeline

  1. Acesse o pipeline que você criou

  2. Selecione Compilar Agora

  3. Após a conclusão do build, selecione Saída do Console para ver os detalhes dele.

Verifique seu aplicativo Web

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

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

  2. Você deverá ver texto similar ao seguinte:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Navegue até a 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 em pilhas de aplicativos compatíveis. Ele também pode executar contêineres personalizados do Linux (também conhecidos como Aplicativo Web para Contêineres).

Você pode modificar o script para implantar em um Serviço de Aplicativo do Azure no Linux. O Serviço de Aplicativo no Linux dá suporte ao Docker. Assim sendo, você fornece um Dockerfile que empacota o aplicativo Web com runtime de serviço em uma imagem do Docker. O plug-in cria a imagem, envia-a por push para um registro do Docker e a implanta no aplicativo Web.

  1. Confira Migrar o 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 Jenkins.

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

  4. No mesmo repositório aplicativo Web Java simples para o Azure que você bifurcou, edite o arquivo Jenkinsfile2 da seguinte maneira:

    1. Atualize a ID da assinatura e a ID do locatário.

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

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Atualize <azsrvprincipal\> para sua ID de credencial

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Crie um pipeline do Jenkins como fez durante a implantação no aplicativo Web do Azure no Windows usando Jenkinsfile2.

  6. Execute seu novo trabalho.

  7. Para a verificação na CLI do Azure, execute o seguinte comando:

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

    Você deverá ver resultados semelhantes ao seguinte:

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

    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 que você especificou para x e y são somados e exibidos.

Próximas etapas