Compartir a través de


Tutorial: Implementación en Azure App Service con Jenkins y la CLI de Azure

Importante

Aunque muchos servicios de Azure tienen complementos de Jenkins, la mayoría de estos complementos finalizaron la compatibilidad desde el 29 de febrero de 2024. La CLI de Azure es la forma recomendada actualmente de integrar Jenkins con los servicios de Azure. Para más información, consulte el artículo Complementos de Jenkins para Azure.

Para implementar una aplicación web de Java en Azure, puede usar la CLI de Azure en una canalización de Jenkins. En este tutorial, realiza las siguientes tareas:

  • Creación de una máquina virtual jenkins
  • Configuración de Jenkins
  • Creación de una aplicación web en Azure
  • Preparación de un repositorio de GitHub
  • Creación de una canalización de Jenkins
  • Ejecuta la canalización y verifica la aplicación web

Prerrequisitos

  • Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

Configuración de Jenkins

En los pasos siguientes se muestra cómo instalar el JDK de Java necesario y Maven en el controlador jenkins:

  1. Inicie sesión en el controlador de Jenkins mediante SSH.

  2. Descargue e instale la compilación de Azul Zulu de OpenJDK para Azure desde un repositorio 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. Ejecute el siguiente comando para instalar Maven:

    sudo apt-get install -y maven
    

Agregar una entidad de servicio de Azure a una credencial de Jenkins

En los pasos siguientes se muestra cómo especificar la credencial de Azure:

  1. Asegúrese de que está instalado el complemento Credenciales .

  2. En el panel de Jenkins, seleccione Credenciales -> Sistema ->.

  3. Seleccione Credenciales globales (sin restricciones) .

  4. Seleccione Agregar credenciales para agregar un principal de servicio de Microsoft Azure. Asegúrese de que el tipo de credencial es Nombre de usuario con contraseña y escriba los siguientes elementos:

    • Nombre de usuario: principal de servicio appId
    • Contraseña: entidad de servicio password
    • Identificador: identificador de credencial (por ejemplo AzureServicePrincipal, )

Creación de una instancia de Azure App Service para implementar la aplicación web de Java

Utilice az appservice plan create para crear un plan de Azure App Service con el nivel de precios GRATIS:

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

Puntos clave:

  • El plan de appservice define los recursos físicos que se usan para hospedar las aplicaciones.
  • Todas las aplicaciones asignadas a un plan de appservice comparten estos recursos.
  • Los planes de appservice permiten ahorrar costos al hospedar varias aplicaciones.

Creación de una aplicación web de Azure

Use az webapp create para crear una definición de aplicación web en el plan de servicio de aplicaciones myAppServicePlan.

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

Puntos clave:

  • La definición de la aplicación web proporciona una dirección URL para acceder a la aplicación con y configura varias opciones para implementar el código en Azure.
  • Sustituya el marcador de posición <app_name> por un nombre de aplicación único.
  • El nombre de la aplicación forma parte del nombre de dominio predeterminado para la aplicación web. Por lo tanto, el nombre debe ser único en todas las aplicaciones de Azure.
  • Puede asignar una entrada de nombre de dominio personalizada a la aplicación web antes de exponerla a los usuarios.

Configuración de Java

Use az appservice web config update para configurar la configuración del entorno de ejecución de Java para la aplicación:

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

Preparación de un repositorio de GitHub

  1. Abra el repositorio Aplicación web de Java simple para Azure .

  2. Seleccione el botón Bifurcar para bifurcar el repositorio en su propia cuenta de GitHub.

  3. Abra el archivo Jenkinsfile haciendo clic en el nombre del archivo.

  4. Seleccione el icono de lápiz para editar el archivo.

  5. Actualice el identificador de suscripción y el identificador de inquilino.

      withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>',
            'AZURE_TENANT_ID=<tenant_id>']) 
    
  6. Actualice el grupo de recursos y el nombre de la aplicación web en la línea 22 y 23 respectivamente.

    def resourceGroup = '<resource_group>'
    def webAppName = '<app_name>'
    
  7. Actualización del identificador de credencial en la instancia de Jenkins

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

Creación de una canalización de Jenkins

Haga lo siguiente para crear una canalización de Jenkins:

  1. Abra Jenkins en un explorador web.

  2. Seleccione Nuevo elemento.

  3. Introduzca un nombre para la tarea.

  4. Seleccione Pipeline (Canalización).

  5. Selecciona Aceptar.

  6. Seleccione Pipeline (Canalización).

  7. En Definición, seleccione script de 'pipeline' desde SCM.

  8. En SCM, seleccione Git.

  9. Escriba la dirección URL de GitHub para el repositorio bifurcado: https:\<forked_repo\>.git

  10. Seleccione Guardar.

Prueba de la canalización

  1. Diríjase a la tubería que ha creado.

  2. Seleccione Compilar ahora.

  3. Una vez completada la compilación, seleccione Salida de la consola para ver los detalles de la compilación.

Comprobación de la aplicación web

Haga lo siguiente para comprobar que el archivo WAR se ha implementado correctamente en la aplicación web:

  1. Vaya a la siguiente dirección URL: http://&lt;app_name>.azurewebsites.net/api/calculator/ping

  2. Debería ver texto similar al siguiente:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  3. Vaya a la siguiente dirección URL (sustituya <x> y <y> por dos valores para sumar): http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y>.

    Ejemplo de ejecución del anuncio de demostración

Desplegar en Azure App Service en Linux

App Service también puede hospedar las aplicaciones Web de forma nativa en Linux para las pilas de aplicaciones admitidas. También puede ejecutar contenedores de Linux personalizados (también conocidos como Web App for Containers).

Puede modificar el script para implementarlo en Una instancia de Azure App Service en Linux. App Service en Linux admite Docker. Por lo tanto, proporcionas un Dockerfile que empaqueta tu aplicación web junto con el entorno de ejecución del servicio en una imagen de Docker. El complemento compila la imagen, la inserta en un registro de Docker e implementa la imagen en la aplicación web.

  1. Consulte Migración de software personalizado a Azure App Service mediante un contenedor personalizado para crear una instancia de Azure App Service en Linux y una instancia de Azure Container Registry.

        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 Docker en jenkins.

  3. Asegúrese de que está instalado el plugin de Docker Pipeline.

  4. En el repositorio del mismo App Web de Java para Azure que has bifurcado, edita el archivo Jenkinsfile2 de la siguiente manera:

    1. Actualice el identificador de suscripción y el identificador de inquilino.

       withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>',
              'AZURE_TENANT_ID=<myTenantId>']) {
      
    2. Actualice los nombres de su grupo de recursos, su aplicación web y su ACR (reemplazando los marcadores de posición por sus valores).

      def webAppResourceGroup = '<resource_group>'
      def webAppName = '<app_name>'
      def acrName = '<registry>'
      
    3. Actualiza <azsrvprincipal\> a tu identificador de credencial

      withCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
      
  5. Cree una canalización de Jenkins como hizo al implementar en una aplicación web de Azure en Windows mediante Jenkinsfile2.

  6. Ejecute el nuevo trabajo.

  7. Para comprobarlo, en la CLI de Azure, ejecute el siguiente comando:

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

    Debería ver resultados similares a los siguientes:

    [
    "calculator"
    ]
    
  8. Vaya a http://<app_name>.azurewebsites.net/api/calculator/ping (reemplazando el marcador de posición). Se mostrarán resultados similares a los siguientes:

    Welcome to Java Web App!!! This is updated!
    Today's date
    
  9. Diríjase a http://<app_name>.azurewebsites.net/api/calculator/add?x=<x>&y=<y> (y reemplace los marcadores de posición). Los valores que especifique para x y y se sumarán y se mostrarán.

Pasos siguientes