Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
- Jenkins - Instalación de Jenkins en una máquina virtual Linux
- CLI de Azure: instale la CLI de Azure (versión 2.0.67 o posterior) en el servidor jenkins.
Configuración de Jenkins
En los pasos siguientes se muestra cómo instalar el JDK de Java necesario y Maven en el controlador jenkins:
Inicie sesión en el controlador de Jenkins mediante SSH.
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
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:
Asegúrese de que está instalado el complemento Credenciales .
En el panel de Jenkins, seleccione Credenciales -> Sistema ->.
Seleccione Credenciales globales (sin restricciones) .
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
, )
-
Nombre de usuario: principal de servicio
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
Abra el repositorio Aplicación web de Java simple para Azure .
Seleccione el botón Bifurcar para bifurcar el repositorio en su propia cuenta de GitHub.
Abra el archivo Jenkinsfile haciendo clic en el nombre del archivo.
Seleccione el icono de lápiz para editar el archivo.
Actualice el identificador de suscripción y el identificador de inquilino.
withEnv(['AZURE_SUBSCRIPTION_ID=<subscription_id>', 'AZURE_TENANT_ID=<tenant_id>'])
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>'
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:
Abra Jenkins en un explorador web.
Seleccione Nuevo elemento.
Introduzca un nombre para la tarea.
Seleccione Pipeline (Canalización).
Selecciona Aceptar.
Seleccione Pipeline (Canalización).
En Definición, seleccione script de 'pipeline' desde SCM.
En SCM, seleccione Git.
Escriba la dirección URL de GitHub para el repositorio bifurcado:
https:\<forked_repo\>.git
Seleccione Guardar.
Prueba de la canalización
Diríjase a la tubería que ha creado.
Seleccione Compilar ahora.
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:
Vaya a la siguiente dirección URL:
http://<app_name>.azurewebsites.net/api/calculator/ping
Debería ver texto similar al siguiente:
Welcome to Java Web App!!! This is updated! Today's date
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>.
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.
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
Asegúrese de que está instalado el plugin de Docker Pipeline.
En el repositorio del mismo App Web de Java para Azure que has bifurcado, edita el archivo Jenkinsfile2 de la siguiente manera:
Actualice el identificador de suscripción y el identificador de inquilino.
withEnv(['AZURE_SUBSCRIPTION_ID=<mySubscriptionId>', 'AZURE_TENANT_ID=<myTenantId>']) {
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>'
Actualiza
<azsrvprincipal\>
a tu identificador de credencialwithCredentials([usernamePassword(credentialsId: '<service_principal>', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
Cree una canalización de Jenkins como hizo al implementar en una aplicación web de Azure en Windows mediante
Jenkinsfile2
.Ejecute el nuevo trabajo.
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" ]
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
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 parax
yy
se sumarán y se mostrarán.