can be tested à votre pull request.
Les résultats des vérifications sont affichés sur la page GitHub de la pull request, comme décrit dans la documentation GitHub sur les vérifications.
Si une vérification échoue, il peut vous être demandé de la corriger.
Cette page présente un aperçu des vérifications que vous pouvez rencontrer et de ce que vous pouvez faire pour les corriger.
S’il semble que l’échec de la vérification ne soit pas lié à vos modifications, il peut s’agir d’une défaillance temporaire ou d’un problème d’infrastructure.
Poussez un commit vide sur la pull request pour redémarrer les vérifications CI :
Fusion avec master
master.
Sinon, la vérification échoue avec le message Cannot fetch mergecommit.
Pour que cette vérification réussisse, résolvez le conflit comme indiqué dans la documentation GitHub, ou fusionnez la branche master dans la branche de votre pull request à l’aide de git.
Vérification de la documentation
ERROR et WARNING.
Vérification de la description
Image Docker
Tests officiels de la bibliothèque Docker
clickhouse/clickhouse-server fonctionne correctement.
Pour ajouter de nouveaux tests, créez un répertoire ci/jobs/scripts/docker_server/tests/$test_name et ajoutez-y le script run.sh.
Des informations complémentaires sur ces tests sont disponibles dans la documentation des scripts des jobs CI.
Vérification « Marker »
Style check
testname dans ci/jobs/check_style.py et peut être exécutée individuellement avec --test <name> (voir ci-dessous).
cpp
check_cpp.sh. En cas d’échec, corrigez les problèmes en suivant le guide de style du code.
whitespace_check
catch_all
catch (...) en dehors des destructeurs, de main et des points d’entrée du fuzzer, où il est dangereux d’intercepter et d’ignorer une exception inconnue.
yamllint
.github/ à l’aide de .yamllint.
xmllint
tests/ et programs/.
functional_tests_check
event_date doivent utiliser >= yesterday() plutôt que today() (pour éviter toute instabilité autour de minuit), et les noms des fichiers de test ne doivent pas contenir fail.
test_numbers_check
tests/queries/0_stateless/<NNNNN>_*).
liens symboliques
divers
various_checks.sh : les requêtes sur system.query_log / system.parts / etc. doivent filtrer sur currentDatabase, les chemins ZooKeeper de Replicated*MergeTree doivent inclure un préfixe propre à chaque test, les répertoires de tests d’intégration doivent contenir __init__.py, pas de BOM UTF, pas de bits d’exécution sur les fichiers source ou de données, pas de tags :latest sur les images tierces dans docker-compose, et plus encore.
Exécuter le job Style Check en local
clickhouse/style-test et exécutent le job dans un environnement conteneurisé.
Aucune dépendance n’est requise en dehors de Python 3 et de Docker.
Exécuter les tests sans état
Prérequis
- Python 3 (bibliothèque standard uniquement)
- Docker
Exécuter un job de CI en local
- Indiquez toujours le nom du job exactement tel qu’il apparaît dans le rapport CI (il peut contenir des espaces et des virgules), par ex. :
"Stateless tests (amd_debug, parallel)". Cela applique la même configuration ClickHouse et exécute les mêmes tests qu’en CI. - L’architecture et le type de build dans le nom du job (par ex.
amd_debug) sont des libellés propres à la CI. Lors d’une exécution en local, ils n’ont aucun effet : le job utilisera le binaire que vous fournissez, sur l’architecture sur laquelle vous l’exécutez. Le nom du job détermine uniquement la configuration ClickHouse et l’ensemble de tests (sauf substitution via--test). - En CI, les tests fonctionnels sont répartis en lots pour optimiser l’utilisation des ressources. Par exemple,
"Stateless tests (amd_debug, parallel)"et"Stateless tests (amd_debug, sequential)"couvrent ensemble l’intégralité du périmètre : les tests compatibles avec une exécution en parallèle s’exécutent concurremment, et les autres s’exécutent de façon séquentielle. Cette répartition réduit le temps total d’exécution en CI en maximisant le parallélisme lorsque c’est possible. Pour reproduire localement l’ensemble du périmètre de test, exécutez les deux lots. - Il existe également un job CI
"Fast test"qui exécute un sous-ensemble limité de tests fonctionnels afin de vérifier les fonctionnalités de base de ClickHouse. Il utilise un build sans tous les modules optionnels et constitue le moyen le plus rapide de détecter les régressions. Vous pouvez l’exécuter localement de la même manière. Placez votre binaire ClickHouse dans l’un des chemins de recherche par défaut (./ci/tmp/clickhouse,./build/programs/clickhouseou./clickhouse) ; sinon, le job tentera d’abord de compiler ClickHouse :
Exécuter des tests spécifiques dans un job CI
--test, le job prépare un environnement ClickHouse identique à celui utilisé en CI, mais n’exécute que les tests sélectionnés :
- Vous pouvez indiquer plusieurs noms de tests :
- Conseil : si n’importe quelle configuration ClickHouse vous convient et que vous avez simplement besoin d’exécuter des tests spécifiques, utilisez l’alias
functionalau lieu du nom complet du job :
Options de personnalisation supplémentaires
--path PATH— chemin personnalisé vers le binaire ClickHouse. Par défaut, le runner recherche, dans l’ordre :./ci/tmp/clickhouse,./build/programs/clickhouse,./clickhouse.--count N— répéter chaque test N fois.--workers N— remplace le calcul automatique du nombre de workers parallèles en fonction de la capacité de la machine.
Vérification de compilation
Exécuter des builds en local
Jobs de build disponibles
Build (amd_debug)- Compilation de débogage avec symbolesBuild (amd_release)- Compilation optimisée de releaseBuild (amd_asan)- Compilation avec Address SanitizerBuild (amd_tsan)- Compilation avec Thread SanitizerBuild (amd_msan)- Compilation avec Memory SanitizerBuild (amd_ubsan)- Compilation avec Undefined Behavior SanitizerBuild (amd_binary)- Compilation de release rapide sans Thin LTOBuild (amd_compat)- Compilation de compatibilité pour les anciens systèmesBuild (amd_musl)- Compilation avec musl libcBuild (amd_darwin)- Compilation macOSBuild (amd_freebsd)- Compilation FreeBSD
Build (arm_release)- Compilation de release optimisée ARM64Build (arm_asan)- Compilation ARM64 avec Address SanitizerBuild (arm_coverage)- Compilation ARM64 avec instrumentation de couvertureBuild (arm_binary)- Compilation de release rapide ARM64 sans Thin LTOBuild (arm_darwin)- Compilation macOS ARM64Build (arm_v80compat)- Compilation de compatibilité ARMv8.0
Build (ppc64le)- PowerPC 64 bits Little EndianBuild (riscv64)- RISC-V 64 bitsBuild (s390x)- IBM System/390 64 bitsBuild (loongarch64)- LoongArch 64 bits
<repo_root>/ci/tmp/build.
Remarque : Pour les builds qui ne relèvent pas de la catégorie « Autres architectures » (qui utilisent la compilation croisée), l’architecture de votre machine locale doit correspondre au type de build afin de produire la compilation demandée par BUILD_JOB_NAME.
Exemple
Tests fonctionnels sans état
Tests d’intégration
Validation des correctifs de bugs
Test de stress
- Corrigez d’abord tous les autres échecs de test ;
- Consultez le rapport pour trouver les logs du serveur et les vérifier afin d’identifier les causes possibles de l’erreur.
Vérification de compatibilité
clickhouse fonctionne sur des distributions utilisant d’anciennes versions de libc.
En cas d’échec, demandez de l’aide à un mainteneur.