Compilación e implementación de Java en Azure Functions
Azure Pipelines
Puede usar Azure Functions ejecutar pequeños fragmentos de código en la nube sin la sobrecarga de ejecutar un servidor. En esta guía paso a paso aprenderá a crear una canalización que compila e implementa continuamente una aplicación de funciones de Java. A continuación, el equipo puede compilar automáticamente cada confirmación en GitHub y, si lo desea, implementar automáticamente el cambio en Azure Functions.
Requisitos previos
Tener una cuenta de GitHub en la que pueda crear un repositorio. Si no tiene ninguna, puede crearla gratis.
Una organización de Azure DevOps. Si no tiene ninguna, puede crearla gratis. (Las organizaciones de Azure DevOps son diferentes de las organizaciones de GitHub. Puede asignar a la organización de DevOps y la de GitHub el mismo nombre si desea que estén coordinadas).
Si el equipo ya tiene una, asegúrese de que usted es el administrador del proyecto de Azure DevOps que desea usar.
Tener capacidad para ejecutar canalizaciones en agentes hospedados por Microsoft. Puede comprar un trabajo paralelo o solicitar un nivel gratuito. Para solicitar un nivel gratuito, siga las instrucciones que se indican en este artículo. Tenga en cuenta que se pueden tardar 2 o 3 días laborables en conceder el nivel gratuito.
Una cuenta de Azure. Si no tiene ninguna, puede crearla gratis.
Sugerencia
Si no está de acuerdo con esto, la manera más fácil de empezar es usar la misma dirección de correo electrónico que el propietario de la organización Azure Pipelines y la suscripción de Azure.
Obtención del código
Si ya tiene una aplicación en GitHub que desea implementar, puede crear una canalización para ese código.
Si es un usuario nuevo, bifurca este repositorio en GitHub:
https://github.com/MicrosoftDocs/pipelines-java-function
Creación de una aplicación de Azure Functions
Inicie sesión en Azure Portal y,a continuación, seleccione el Cloud Shell en la esquina superior derecha.
Cree una Azure App Service en Linux. Seleccione el tiempo de ejecución que desea usar.
# Create a resource group
az group create --location westus --name myapp-rg
# Create a storage account
az storage account create --name mystorage --location westeurope --resource-group myapp-rg --sku Standard_LRS
# Create an Azure Functions app
az functionapp create --resource-group myapp-rg --consumption-plan-location westeurope \
--name my-app-name --storage-account mystorage --runtime java
Actualizar pom.xml
Actualice pom.xml para reflejar la aplicación. Edite pom.xml el archivo en el repositorio bifurcado con los valores de , y FUNCTION_APP_NAMEREGIONRESOURCE_GROUP .
<functionAppName>FUNCTION_APP_NAME</functionAppName>
<functionAppRegion>REGION</functionAppRegion>
<stagingDirectory>${project.build.directory}/azure-functions/${functionAppName}</stagingDirectory>
<functionResourceGroup>RESOURCE_GROUP</functionResourceGroup>
Inicie sesión en Azure Pipelines y conéctese a Azure
Inicie sesión en Azure Pipelines. Una vez que haya iniciado sesión, el explorador accederá a https://dev.azure.com/my-organization-name y aparecerá el panel de Azure DevOps.
En la organización seleccionada, cree un proyecto. Si no tiene ningún proyecto en la organización, aparecerá la pantalla Cree un proyecto para empezar. De lo contrario, seleccione el botón Crear proyecto en la esquina superior derecha del panel.
Ahora cree la conexión de servicio:
En el panel del proyecto, seleccione Project configuración en la parte inferior izquierda.
En la página de configuración, seleccione PipelinesService connections (Conexiones deservicio), New service connection (Nueva conexión de servicio)y, a continuación, seleccione Azure Resource Manager.
Seleccione Entidad de servicio (automática) y Siguiente.
Aparece el cuadro de diálogo Agregar Azure Resource Manager conexión de servicio.
- Alcance Seleccione Suscripción.
- Suscripción Seleccione la Azure Portal suscripción.
- Grupo de recursos Seleccione el grupo de recursos que creó anteriormente.
- Nombre de la conexión de servicio Escriba un nombre y, a continuación, cópielo y péguelo en un archivo de texto para poder usarlo más adelante.
- Seleccione Conceder permiso de acceso a todas las canalizaciones.

Sugerencia
Si necesita crear una conexión a una suscripción de Azure que sea propiedad de otra persona, consulte Creación de una conexión de servicio Azure Resource Manager con una entidad de servicio existente.
Creación de la canalización
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Vaya a Pipelinesy, a continuación, seleccione Nueva canalización.
Siga los pasos del asistente y seleccione primero GitHub como ubicación del código fuente.
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.
Cuando aparezca la lista de repositorios, seleccione el que corresponda.
Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar instalación.
Cuando aparezca la pestaña Configurar, seleccione Maven. Aparece la nueva canalización.
Cuando se le solicite, seleccione la suscripción de Azure en la que creó la aplicación web.
Seleccione la aplicación web.
Seleccione Validar y configurar.
A Azure Pipelines crea un archivo azure-pipelines.yml, que define la canalización de CI/CD, este:
- Incluye una fase de compilación, que compila el proyecto, y una fase de implementación, que lo implementa en Azure como una aplicación web de Linux.
- Como parte de la fase de implementación, también crea un entorno con el mismo nombre predeterminado que la aplicación web. Puede optar por modificar el nombre del entorno.
Eche un vistazo a la canalización para ver lo que hace. Asegúrese de que todas las entradas predeterminadas sean adecuadas para el código.
Después de haber visto lo que hace la canalización, seleccione Guardar y ejecutar ,después de lo cual se le pedirá un mensaje de confirmación porque Azure Pipelines agrega el archivo azure-pipelines.yml al repositorio. Después de editar el mensaje, seleccione Guardar y ejecutar de nuevo para ver la canalización en acción.
Acaba de crear y ejecutó una canalización para la que creamos automáticamente porque el código parece ser una buena coincidencia para la plantilla de Azure Pipelines Maven.
Edición de la canalización
Una vez ejecutada la canalización, seleccione los puntos suspensivos verticales en la esquina superior derecha de la ventana y, a continuación, seleccione Editar canalización.
Establecer algunas variables para la implementación
# at the top of your YAML file
# set some variables that you'll need when you deploy
variables:
# the name of the service connection that you created above
serviceConnectionToAzure: name-of-your-service-connection
# the name of your web app here is the same one you used above
# when you created the web app using the Azure CLI
appName: my-app-name
# the name of your functionApp is what you provided as
# stagingDirectory in pom.xml
functionAppName: 'javafunctions'
# ...
Implementación en Azure Functions
# ...
# add these as the last steps
# to deploy to your app service
- task: CopyFiles@2
displayName: Copy Files
inputs:
SourceFolder: $(system.defaultworkingdirectory)/target/azure-functions/$(functionAppName)/
Contents: '**'
TargetFolder: $(build.artifactstagingdirectory)
- task: PublishBuildArtifacts@1
displayName: Publish Artifact
inputs:
PathtoPublish: $(build.artifactstagingdirectory)
- task: AzureFunctionApp@1
displayName: Azure Function App deploy
inputs:
azureSubscription: $(serviceConnectionToAzure)
appType: functionApp
appName: $(appName)
package: $(build.artifactstagingdirectory)/$(appName)
Ejecución de la canalización y des check-out del sitio
Ya está listo para guardar los cambios y probarlos.
Seleccione Guardar en la esquina superior derecha del editor.
En el cuadro de diálogo que aparece, agregue un mensaje de confirmación como y, a continuación, seleccione Guardar.
En el editor de canalizaciones, seleccione Ejecutar.
Cuando aparezca el mensaje Build #nnnnnnnn.n has been queued (Compilar #nnnnnnnn.n se ha puesto en cola), seleccione el vínculo de número para ver la canalización en acción.
Una vez ejecutada la canalización, pruebe la aplicación de función que se ejecuta en Azure. Por ejemplo, en bash o desde un símbolo del sistema, escriba:
curl -w '\n' https://my-app-name-00000000000000000.azurewebsites.net/api/HttpTrigger-Java -d fromYourPipeline
A continuación, la función devuelve:
Hello PipelineCreator
Limpieza de recursos
Siempre que haya terminado con los recursos que creó anteriormente, puede usar el siguiente comando para eliminarlos:
az group delete --name myapp-rg
Cuando se le solicite, escriba y.