Compartir a través de


Tutorial: Implementación en Azure Functions mediante Jenkins

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

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:

  1. 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 eastus
    
  2. Cree 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_LRS    
    
  3. Cree 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:

  1. 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.

  2. Inicie sesión en la instancia de Jenkins con SSH.

  3. En la instancia de Jenkins, instale la CLI de Az, versión 2.0.67 o posterior.

  4. Instale maven con el comando siguiente:

    sudo apt install -y maven
    
  5. En 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-3
    
  6. Jenkins 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.

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

    1. En el menú, seleccione Administrar Jenkins.

    2. En Configuración del sistema, seleccione Administrar complemento.

    3. Seleccione la pestaña Instalado .

    4. En el campo de filtro , escriba credentials.

    5. Compruebe que el complemento Credentials está instalado. Si no es así, deberá instalarlo desde la pestaña Disponible .

    El complemento Credentials debe instalarse.

  8. En el menú, seleccione Administrar Jenkins.

  9. En Seguridad, seleccione Administrar credenciales.

  10. En Credenciales, seleccione (global).

  11. En el menú, seleccione Agregar credenciales.

  12. 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 appId del principal del servicio creado.
    • Contraseña: especifique el password (secreto) del principal del servicio.
    • Id. : especifique el identificador de credencial, como azuresp.
  13. Selecciona Aceptar.

Hacer un fork del repositorio de ejemplo en GitHub

  1. Inicie sesión en el repositorio de GitHub para la aplicación de muestra de pares o impares.

  2. En la esquina superior derecha de GitHub, elija Bifurcar.

  3. 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.

  1. En el panel de Jenkins, cree una canalización.

  2. Habilite Preparar un entorno para la ejecución.

  3. En la sección >, seleccione script de pipeline desde SCM.

  4. 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.

  1. En primer lugar, obtenga la clave de autorización mediante las instrucciones del artículo Desencadenadores y enlaces HTTP de Azure Functions .

  2. 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>
    
  3. 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>

Pasos siguientes