-
Notifications
You must be signed in to change notification settings - Fork 70
CI Guidelines
This article consists of a set of tips and guides for the development of the t8code CI. If you encounter anything relevant for other devs or your future self, do not hesitate to add it to this article.
Some of our CI scripts run inside a docker container. This has the advantage, that we already have pre-installed packages and that we can control the environment. This means, that we avoid calling apt inside the CI. This not only speeds up the CI, but also makes us less prone to slow Ubuntu update servers. Every new software and every update can be installed in the appropriate docker image: https://github.com/DLR-AMR/t8code-docker-images
For some reason using a Docker container inside a GH workflow leads to the effect, that every git command throws an error. This can be fixed by disabling the global ownership checks from git: git config --global --add safe.directory '*'. Otherwise each workflow involving a git command will fail. t8code scripts and a t8code install automatically call git commands to determine the t8code version or repository path.
This can somehow not be offloaded to the Dockerfile of the containers.
General
Step 0 Hello World
Step 1 Creating a coarse mesh
Step 2 Creating a uniform forest
Step 3 Adapting a forest
Step 4 Partition,-Balance,-Ghost
Step 5 Store element data
Step 6 Computing stencils
Step 7 Interpolation
Features
Prerequisites & Compilation
t8_time_forest_partition
t8_time_fractal
t8_time_new_refine
t8_time_partition
t8_time_prism
t8_time_set_join_by_vertices
Documentation
Tree Indexing
Element Indexing
Running on JUWELS using Slurm
Overview of the most used API functions
Known issues
Workflow - FreeCAD to t8code
Reproducing Scaling Results
Coding Guidelines
Contribution Workflow
CI Guidelines
Tips
Debugging with gdb
Debugging with valgrind
Development modules
Generating a code coverage report
Test driven development
Testing with GoogleTest
Writing C interface code