Guida Rapida di Avvio

Sei impaziente di provare come funzionano i test della CI Fedora? Vuoi avere un’esperienza pratica rapida senza dover leggere troppa documentazione? Questa breve introduzione per gli impazienti ti mostrerà un insieme minimo di passaggi per eseguire test esistenti e fornirà collegamenti utili a risorse dove puoi imparare di più.

Primi Passi

Installa i seguenti pacchetti essenziali sul tuo sistema (considera l’uso di una macchina virtuale per sperimentare in sicurezza):

sudo dnf install fedpkg standard-test-roles

Usa fedpkg per clonare il repository git del pacchetto. Vedi la Guida alla Manutenzione dei Pacchetti per maggiori informazioni sullo strumento.

fedpkg clone -a bash
git checkout -b f33 remotes/origin/f33

I test sono definiti secondo la Interfaccia Test Standard nella directory tests:

cd bash/tests/

La copertura dei test da eseguire insieme al set base di metadati è descritta nel playbook tests.yml. Usa ansible-playbook per eseguire tutti i test disponibili per l’ambiente classico sull’host locale (deve essere eseguito come root):

ansible-playbook --tags=classic tests.yml

Dall’output di ansible puoi vedere direttamente un riepilogo complessivo del testing. Se vedi failed=0 alla fine del log allora tutti i test sono passati:

localhost: ok=29 changed=11 unreachable=0 failed=0

Per risultati dei test più dettagliati controlla i file test.log e altri nella directory artifacts:

vim artifacts/test.log

Ecco fatto! Hai appena eseguito la copertura dei test per il pacchetto Bash :)

Soggetto del test

Per eseguire test su diversi soggetti di test dobbiamo preparare l’ambiente. Salviamo i risultati dettagliati dei test in /tmp/artifacts, utilizziamo l’inventario dinamico come definito dai Ruoli Test Standard e scarichiamo l’ultima immagine di Atomic Host.

export TEST_ARTIFACTS=/tmp/artifacts
export ANSIBLE_INVENTORY=/usr/share/ansible/inventory
curl -Lo /tmp/atomic.qcow2 https://getfedora.org/atomic_qcow2_latest

Ora proviamo a eseguire test su tutti i soggetti di test supportati.

Classico

Esegui test sui pacchetti rpm classici installati sul sistema:

export TEST_SUBJECTS=''
ansible-playbook --tags=classic tests.yml

Vedi Classico per la documentazione dettagliata.

Container

Per testare i container è necessaria un’ulteriore dipendenza:

sudo dnf install standard-test-roles-inventory-docker

Esegui test in un container docker:

export TEST_SUBJECTS=docker:docker.io/library/fedora:latest
ansible-playbook --tags=container tests.yml

Vedi Container per la documentazione dettagliata.

Atomic

Esegui test contro l’Atomic Host:

export TEST_SUBJECTS=/tmp/atomic.qcow2
ansible-playbook --tags=atomic tests.yml

Vedi Atomic per la documentazione dettagliata.

Suggerimenti

Debug

Vorresti indagare sul perché un test è fallito? Abilita il debug per connettersi facilmente ad un ambiente Atomic o Container in esecuzione per investigare:

export TEST_DEBUG=1
ansible-playbook --tags=atomic tests.yml

Vedi Debug per i dettagli sul debug.

Ignora

Usa .gitignore per specificare i file che Git dovrebbe ignorare. Tali file vengono creati durante l’esecuzione dei test. Crea un file tests/.gitignore con il seguente contenuto:

# Ignore tests runs/artefacts.
artifacts/**
**/*.retry

Contribuire

Sei interessato a contribuire con una nuova copertura di test? Sei il benvenuto! Come hai visto, Eseguire un test è abbastanza facile. Anche Scrivere un nuovo test o Incapsulare uno esistente è abbastanza semplice. Ecco alcune raccomandazioni per creare una nuova pull request.

Fork

A meno che tu non sia il maintainer del pacchetto, che ha accesso diretto ai commit, crea un fork del repository git del pacchetto utilizzando il pulsante Fork nell’interfaccia web di Pagure e aggiungi il tuo fork privato come nuovo remote. Crea un ramo per i tuoi nuovi test. Ad esempio:

git remote add fork ssh://psss@pkgs.fedoraproject.org/forks/psss/rpms/bash.git
git checkout -b tests

Se non sei un packager di Fedora, usa il comando fedpkg per clonare il tuo fork e configurare il repository git in modo da poter effettuare il push su di esso. Vedi Pull Requests per informazioni più dettagliate.

fedpkg clone -a forks/psss/rpms/bash
git checkout -b tests

Aggiungi

Crea una nuova copertura di test sotto la directory tests, aggiorna di conseguenza il file tests.yml o creane uno nuovo. Esegui i test e verifica che siano stabili e funzionino bene in tutti gli ambienti supportati. Aggiungi i file a git, effettua il commit e il push:

git add tests.yml test1 test2 test3
git commit -m "Add CI tests using the Standard Test Interface"
git push fork tests:tests

È una buona idea includere più dettagli e collegamenti nel messaggio di commit per rendere la pull request più facile da revisionare:

Abilita i test CI utilizzando l'Interfaccia Test Standard

Aggiunta del set iniziale di test di funzionalità di base per bash
secondo l'Interfaccia Test Standard [1]. Vedi la Guida Rapida
di Avvio [2] per una breve introduzione su come eseguire questi test
e il portale della CI Fedora [3] per informazioni e collegamenti più dettagliati.

[1] https://docs.fedoraproject.org/en-US/ci/standard-test-interface
[2] https://docs.fedoraproject.org/en-US/ci/quick-start-guide
[3] https://docs.fedoraproject.org/en-US/ci

Crea una nuova pull request dal tuo ramo tests contro il ramo rawhide nell’interfaccia web di Pagure. Potresti voler includere informazioni aggiuntive sui test, come:

Sono disponibili tre test: smoke e func sono stati testati
in tutti gli ambienti (classico, container, atomic), login è
rilevante solo per l'ambiente classico (a causa di una dipendenza mancante).
Per favore, integra i test in tutti i rami attualmente supportati.

Risultati

Una volta creata la pull request, la CI Pipeline la rileverà ed eseguirà i test. Una volta terminata l’esecuzione dei test, vedrai i risultati del testing nella pagina della pull request. Vedi la pagina Pipeline per l’elenco delle pipeline attive e gli esempi di risultati.

Gating

Attualmente il gating del pacchetto in base ai risultati dei test è una funzionalità opt-in. Per abilitare il gating per il tuo componente, crea un file gating.yaml nella directory principale del tuo repository dist git del componente. Vedi Gating per maggiori dettagli.