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.
Azure Functions es un servicio de proceso sin servidor. Con Azure Functions, puede ejecutar código a petición sin aprovisionar ni administrar la infraestructura. En este tutorial se muestra cómo implementar una función de Java en Azure Functions mediante el complemento de Azure Functions.
Prerrequisitos
- Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.
- Servidor Jenkins: si no tiene instalado un servidor Jenkins, consulte el artículo Creación de un servidor Jenkins en Azure.
Visualización del código fuente
El código fuente que se usa para este tutorial se encuentra en el repositorio de GitHub de Visual Studio China.
Creación de una función de Java
Para crear una función de Java con la pila de tiempo de ejecución de Java, use el portal de Azure o la CLI de Azure.
En los pasos siguientes se muestra cómo crear una función de Java mediante la CLI de Azure:
Cree un grupo de recursos y reemplace el <marcador de posición resource_group> por el nombre del grupo de recursos.
az group create --name <resource_group> --location eastusCree una cuenta de Almacenamiento de Azure y reemplace los marcadores de posición por los valores adecuados.
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRSCree la aplicación de función de prueba y reemplace los marcadores de posición por los valores adecuados.
az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
Preparación del servidor Jenkins
En los pasos siguientes se explica cómo preparar el servidor Jenkins:
Implemente un servidor Jenkins en Azure. Si aún no tiene instalada una instancia del servidor Jenkins, el artículo Creación de un servidor Jenkins en Azure le guía por el proceso.
Inicie sesión en la instancia de Jenkins con SSH.
En la instancia de Jenkins, instale la CLI de Az, versión 2.0.67 o posterior.
Instale maven con el comando siguiente:
sudo apt install -y mavenEn la instancia de Jenkins, instale Azure Functions Core Tools mediante la emisión de los siguientes comandos en un símbolo del sistema del terminal:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list' cat /etc/apt/sources.list.d/dotnetdev.list sudo apt-get update sudo apt-get install azure-functions-core-tools-3Jenkins necesita un principal de servicio de Azure para autenticarse y acceder a los recursos de Azure. Consulte Implementación en Azure App Service para obtener instrucciones paso a paso.
Asegúrese de que está instalado el complemento Credenciales .
En el menú, seleccione Administrar Jenkins.
En Configuración del sistema, seleccione Administrar complemento.
Seleccione la pestaña Instalado .
En el campo de filtro , escriba
credentials.Compruebe que el complemento Credentials está instalado. Si no es así, deberá instalarlo desde la pestaña Disponible .
En el menú, seleccione Administrar Jenkins.
En Seguridad, seleccione Administrar credenciales.
En Credenciales, seleccione (global).
En el menú, seleccione Agregar credenciales.
Escriba los siguientes valores para el principal de servicio de Microsoft Azure:
- Tipo: seleccione el valor: Nombre de usuario con contraseña.
-
Nombre de usuario: Especifique el
appIddel principal del servicio creado. -
Contraseña: especifique el
password(secreto) del principal del servicio. -
Id. : especifique el identificador de credencial, como
azuresp.
Selecciona Aceptar.
Hacer un fork del repositorio de ejemplo en GitHub
Inicie sesión en el repositorio de GitHub para la aplicación de muestra de pares o impares.
En la esquina superior derecha de GitHub, elija Bifurcar.
Siga las indicaciones para seleccionar su cuenta de GitHub y completar el fork.
Crear una canalización de Jenkins
En esta sección, creará el pipeline de Jenkins.
En el panel de Jenkins, cree una canalización.
Habilite Preparar un entorno para la ejecución.
En la sección >, seleccione script de pipeline desde SCM.
Escriba la URL del fork de GitHub y la ruta de acceso del script ("doc/resources/jenkins/JenkinsFile") para usar en el ejemplo de JenkinsFile.
node { withEnv(['AZURE_SUBSCRIPTION_ID=99999999-9999-9999-9999-999999999999', 'AZURE_TENANT_ID=99999999-9999-9999-9999-999999999999']) { stage('Init') { cleanWs() checkout scm } stage('Build') { sh 'mvn clean package' } stage('Publish') { def RESOURCE_GROUP = '<resource_group>' def FUNC_NAME = '<function_app>' // login Azure withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' } sh 'cd $PWD/target/azure-functions/odd-or-even-function-sample && zip -r ../../../archive.zip ./* && cd -' sh "az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNC_NAME --src archive.zip" sh 'az logout' } } }
Compilación e implementación
Ahora es el momento de ejecutar el trabajo de Jenkins.
En primer lugar, obtenga la clave de autorización mediante las instrucciones del artículo Desencadenadores y enlaces HTTP de Azure Functions .
En el explorador, escriba la dirección URL de la aplicación. Reemplace los marcadores de posición por los valores adecuados y especifique un valor numérico para <input_number> como entrada para la función java.
https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>Verá resultados similares a la salida del ejemplo siguiente (donde se usó un número impar - 365 ) como prueba):
The number 365 is Odd.
Limpieza de recursos
Si no va a seguir usando esta aplicación, elimine los recursos que creó con el paso siguiente:
az group delete -y --no-wait -n <resource_group>