Lanzar una compilación programando

Traducido automáticamente de Deepl

En los sistemas de integración continua, cada vez que se envía el código, o cada hora, se lanza automáticamente una compilación del código fuente. Este enfoque le permite comprobar las fusiones en el servidor de gestión de código.

A partir de 4D v19, un nuevo comando le permite lanzar la compilación del código, para que pueda configurar este tipo de sistema.

Lanzar una compilación por programación

¿Qué es la integración continua?

La integración continua consiste en comprobar, cada vez que se modifica el código fuente, que el resultado de las modificaciones no produce regresiones en la aplicación desarrollada. El objetivo principal es detectar los problemas de integración lo antes posible durante el desarrollo.

Nuevo comando

El nuevo comando Compile Project permite compilar:

  • el proyecto actual
  • un proyecto distinto al actual

Si la compilación tiene éxito, el comando devuelve un objeto de estado con una propiedad de éxito. En caso contrario, devuelve un objeto de estado con una lista de errores.

Compilar el proyecto actual

Compilar el proyecto actual con la configuración por defecto es muy sencillo:

var $status : Object
$status :=Compile project(
)

También puede anular las opciones de compilación pasando un objeto con los nuevos valores. Estas son las opciones que puedes anular:

  • objetivo de compilación
  • inferencia de tipo
  • tipo por defecto para numéricos o botones
  • generar símbolos
  • generar métodos de tipado
  • componentes a utilizar en la compilación

Por ejemplo, cada vez que se envía el código en el servidor de control de fuentes, se puede lanzar una simple comprobación de sintaxis para verificar el código fusionado.

var $options; $status: Object
$options :=New object()
$options .targets:=New collection()
$status :=Compile project($options)

Si su aplicación utiliza componentes, tendrá que pasar la lista de componentes compilados en el objeto options.

var $options; $status: Object
var $component : 4D.File
$options :=New object()
$options .components:=Folder("/PACKAGE/Components").files(fk recursive).query("extensión = .4dz")
$status :=
Compile project($options )

Compilar otro proyecto

Es posible compilar una aplicación desde otro proyecto. Basta con pasar el archivo del proyecto al comando:

var $file: 4D.File
$file :=Folder(fk documents folder).file("Databases/myApp/Project/myApp.4DProject")
$status :=Compile project($file)

Gestión de errores de compilación

El comando devuelve un objeto de estado que le indica si la compilación ha sido exitosa o no. Si la compilación falla, 4D devuelve la colección de mensajes de error, los métodos implicados y el número de línea del error.

Entonces, gracias al nuevo parámetro del comando METHOD OPEN PATH se puede abrir el método en el editor de código y colocar el cursor en la línea de error.

Por ejemplo, es posible mostrar la colección de errores en un cuadro de lista y luego añadir un botón que abra el método del error seleccionado en la lista:

METHOD OPEN PATH(Form.selected.code.path;Form.selected.line)

¡Manténgase en sintonía! ¡Tenemos más entradas en el blog sobre la integración continua por venir!

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.