Avviare una compilazione programmando

Tradotto automaticamente da Deepl

Nei sistemi di integrazione continua, ogni volta che viene inviato del codice, o su base oraria, viene avviata automaticamente una compilazione del codice sorgente. Questo approccio consente di controllare le fusioni sul server di gestione del codice.

A partire da 4D v19, un nuovo comando consente di lanciare la compilazione del codice, in modo da poter impostare questo tipo di sistema.

Avviare una compilazione tramite programmazione

Che cos’è l’integrazione continua?

L’integrazione continua consiste nel verificare, ogni volta che si modifica il codice sorgente, che il risultato delle modifiche non produca regressioni nell’applicazione sviluppata. L’obiettivo principale è quello di rilevare i problemi di integrazione il più presto possibile durante lo sviluppo.

Nuovo comando

Il nuovo comando Compile Project permette di compilare:

  • il progetto corrente
  • un progetto diverso da quello corrente

Se la compilazione ha successo, il comando restituisce un oggetto status con una proprietà success. Altrimenti, restituisce un oggetto status con un elenco di errori.

Compilazione del progetto corrente

La compilazione del progetto corrente con le impostazioni predefinite è molto semplice:

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

È anche possibile sovrascrivere le opzioni di compilazione, passando un oggetto con i nuovi valori. Ecco le opzioni che si possono sovrascrivere:

  • target di compilazione
  • inferenza del tipo
  • tipo predefinito per i numeri o i pulsanti
  • generare simboli
  • generare metodi di digitazione
  • componenti da utilizzare nella compilazione

Ad esempio, ogni volta che il codice viene inviato sul server di controllo sorgente, si può lanciare un semplice controllo della sintassi per verificare il codice unito.

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

Se la vostra applicazione utilizza dei componenti, dovrete passare l’elenco dei componenti compilati nell’oggetto options.

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

Compilazione di un altro progetto

È possibile compilare un’applicazione da un altro progetto. Basta passare il file del progetto al comando:

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

Gestione degli errori di compilazione

Il comando restituisce un oggetto di stato che indica se la compilazione è riuscita o meno. Se la compilazione fallisce, 4D restituisce l’insieme dei messaggi di errore, i metodi coinvolti e il numero di riga dell’errore.

Poi, grazie al nuovo parametro del comando METHOD OPEN PATH è possibile aprire il metodo nell’editor di codice e posizionare il cursore sulla riga di errore.

Ad esempio, è possibile visualizzare la raccolta di errori in una casella di riepilogo e poi aggiungere un pulsante che apre il metodo dell’errore selezionato nell’elenco:

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

Restate sintonizzati! Sono in arrivo altri post sull’integrazione continua!

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.