Fedora CI

Fedora Continuous Integration Portal

Perché

Visione

Ci sono centinaia di pacchetti che costituiscono il Sistema Operativo. Assicurarsi che funzionino tutti insieme come un tutt’uno non è un compito facile. Questo diventa ancora più difficile con l’aumento del numero di pacchetti e delle loro interdipendenze. È necessario un testing estensivo prima che una nuova versione del sistema operativo venga rilasciata, per garantire che sia sufficientemente stabile. Questo è il passato.

Immagina un Sistema Operativo Sempre Pronto costituito da pacchetti che sono costantemente mantenuti in buono stato. Integrato e stabile grazie a un’ampia copertura di test che viene eseguita continuamente in seguito a modifiche nei singoli pacchetti, consentendo in questo modo di preparare una nuova versione in un tempo molto più breve, o addirittura in tempo zero.

Immagina una distribuzione di un sistema operativo che potresti rilasciare in qualsiasi momento. È verso questa direzione che ci stiamo dirigendo. Ecco che arriva la CI, Integrazione Continua, come uno strumento inestimabile per garantire che tutto funzioni insieme come previsto in ogni momento.

Manifesto

L’integrazione continua mira a garantire che le modifiche errate vengano rilevate il prima possibile e non influenzino altri sviluppatori, packager, maintainer o utenti. Il feedback fornito dall’integrazione continua è vitale per una consegna agile e rapida del software. Il testing tardivo, molto tempo dopo che una modifica è avvenuta, non si adatta al ritmo di Fedora. Impara gli obiettivi, la terminologia e le regole per una CI funzionante nel manifesto.

Come

Ci sono tre elementi principali del puzzle per far funzionare bene questo sistema: un processo che definisca chiaramente come scoprire ed eseguire i test, una serie di strumenti che aiutino a implementare in modo efficiente il processo e i test stessi.

Processo

Abilitazione dei Test

Tests can be enabled using the Test Metadata Specification implemented by the Test Management Tool which provides a number of features to efficiently work with tests.

Gating

Quando un test fallisce, la CI può impedire che la modifica difettosa influisca su altri pacchetti. Tale gating avviene in Bodhi. Greenwave viene utilizzato insieme a ResultsDB e WaiverDB per prendere la decisione di gating.

  • Gating …​ come abilitare la gating, istruzioni per la deroga (waiving)

  • Bodhi …​ Sistema di aggiornamenti di Fedora

  • Greenwave …​ service to evaluate gating policies based on test results

  • ResultsDB …​ results store engine

  • WaiverDB …​ service for recording waivers against test results

Notifiche

Le Notifiche Fedora sono state regolate per notificare per impostazione predefinita ogni packager quando un qualsiasi passaggio della pipeline CI fallisce su uno dei pacchetti che mantiene. Quindi se sei un maintainer del kernel e un commit effettuato nel repository dist-git del kernel fallisce nel comporre un OSTree, FMN ti notificherà di ciò.

Bodhi include i risultati della CI nella sua pagina di aggiornamento, proprio come include già i risultati dei test da taskotron.

Messaggi

Vari strumenti coinvolti nell’automazione della CI inviano aggiornamenti sull’andamento del testing al message bus. Il formato coerente dei messaggi della CI consente di costruire servizi più semplici che forniranno funzionalità utili per tutti.

Tool

Test Management Tool

Lo strumento tmt fornisce un modo semplice per lavorare con i test. Puoi comodamente creare nuovi test, eseguire test in modo sicuro e facile attraverso diversi ambienti, rivedere i risultati dei test, eseguire il debug del codice di test e abilitare i test nella CI utilizzando una configurazione coerente e concisa.

Frameworks

As tmt does not define test framework which should be used for testing it is possible to choose the most suitable framework for your project. Here are some examples:

Jenkins pipelines

The Jenkins testing pipelines run generic tests for Bodhi updates in Testing Farm, and gather and report the results.

Packit as dist-git CI

Packit acts as CI for dist-git pull requests. Test results are displayed in the dist-git web interface. See Packit as Fedora CI for more details.

COPR / dist-git integration

dist-git integration with COPR provides auto-rebuilding and pull request/commit flagging on new changes.

Test

Il nucleo del successo della CI sono test affidabili di buona qualità, ben selezionati, stabili, organizzati e mantenuti continuamente.

Tipi di test

In generale ha senso archiviare i test il più vicino possibile all’upstream. Quindi quali sono i tipi di test appropriati raccomandati per testare il Sistema Operativo Sempre Pronto?

  • Test di funzionalità di base

  • Test di integrazione

Per i test unitari di solito ha più senso archiviarli direttamente all’interno del repository del progetto upstream. Tuttavia, in alcuni casi potrebbe valere la pena recuperare i test per la CI di Fedora anche dal repository upstream.

Codice di Test

Il codice di test può essere memorizzato direttamente nel dist-git o recuperato da un altro repository. La configurazione minima per abilitare un semplice smoke test è la seguente:

execute:
    script: foo --version

I test da un repository condiviso possono essere abilitati in questo modo:

discover:
    how: fmf
    url: https://src.fedoraproject.org/tests/shell
execute:
    how: tmt

Vedi la documentazione dello Test Management Tool per ulteriori dettagli ed esempi.

Esecuzione dei Test

Eseguire i test è semplice come eseguire un singolo comando:

tmt run

Scopri di più nella sezione Esecuzione dei Test.

Responsabilità Condivisa

The ownership and maintenance of tests should be shared between Quality / CI teams and maintainers. For tests that reside in the rpm namespace, Quality / CI can use pull requests to create/update tests. Likewise in the tests namespace, both Quality / CI and maintainers should have commit rights and review changes.

Altro

Contatto

Se hai domande o desideri partecipare:

  • Matrix: #fedora-ci room

  • Discussione: tag #fedora-ciBy the way, to unlock the full functionality of all Apps, enable Gemini Apps Activity

  • Tickets: General CI Issues

Ecco alcuni collegamenti aggiuntivi correlati:

  • Test Management Tool …​ Documentazione Fedora CI per tmt

  • Guida tmt …​ guida upstream per tmt

  • SIG CI …​ Gruppo di Interesse Speciale per l’Integrazione Continua