Lancer une compilation en programmant

Traduit automatiquement de Deepl

Dans les systèmes d’intégration continue, chaque fois que du code est soumis, ou toutes les heures, une compilation du code source est automatiquement lancée. Cette approche vous permet de vérifier les fusions sur le serveur de gestion du code.

A partir de 4D v19, une nouvelle commande permet de lancer la compilation du code, afin de mettre en place ce type de système.

Lancer une compilation par programmation

Qu’est-ce que l’intégration continue ?

L’intégration continue consiste à vérifier, à chaque fois que le code source est modifié, que le résultat des modifications ne produit pas de régressions dans l’application développée. L’objectif principal est de détecter les problèmes d’intégration le plus tôt possible au cours du développement.

Nouvelle commande

La nouvelle commande Compile Project permet de compiler :

  • le projet en cours
  • un autre projet que le projet courant

Si la compilation est réussie, la commande renvoie un objet status avec une propriété de succès. Sinon, elle renvoie un objet status avec une liste d’erreurs.

Compiler le projet en cours

Compiler le projet en cours avec les paramètres par défaut est très simple :

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

Vous pouvez également remplacer les options de compilation en passant un objet avec les nouvelles valeurs. Voici les options que vous pouvez remplacer :

  • compilation cible
  • inférence de type
  • type par défaut pour les numériques ou les boutons
  • générer des symboles
  • génération de méthodes de typage
  • composants à utiliser dans la compilation

Par exemple, chaque fois qu’un code est soumis sur le serveur de contrôle de la source, vous pouvez lancer un simple contrôle syntaxique pour vérifier le code fusionné.

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

Si votre application utilise des composants, vous devrez passer la liste des composants compilés dans l’objet options.

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

Compiler un autre projet

Il est possible de compiler une application à partir d’un autre projet. Il suffit de passer le fichier du projet à la commande :

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

Gestion des erreurs de compilation

La commande renvoie un objet d’état qui vous indique si la compilation a réussi ou non. Si la compilation échoue, 4D renvoie la collection de messages d’erreur, les méthodes impliquées et le numéro de ligne de l’erreur.

Ensuite, grâce au nouveau paramètre de la commande METHOD OPEN PATH vous pouvez ouvrir la méthode dans l’éditeur de code et placer le curseur sur la ligne d’erreur.

Par exemple, il est possible d’afficher la collection d’erreurs dans une boîte de liste et d’ajouter ensuite un bouton qui ouvre la méthode de l’erreur sélectionnée dans la liste :

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

Restez à l’écoute ! Nous avons d’autres articles de blog sur l’intégration continue à venir !

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.