This folder contains the configuration files for the driverkit build grid.
Just make is enough! ❤️
make
all
: build all the Falco drivers (all the versions), for every supported distro, and every supported kernel releasegenerate
: generate yaml files for building drivers for specific kernel and target for all Falco lib versionsspecific_target
: build the filtered driver versionsclean
: remove everything in theoutput/
directory (except it, and its.gitignore
file)publish
: publish all the built Falco drivers (those existing in theoutput/
directory) to bintraypublish_<driver_version>
: publish all the built Falco drivers to bintray filtering by the Falco driver version (those existing in theoutput/<driver_version>
directory)publish_s3
: publish all the built Falco drivers (those existing in theoutput/
directory) to S3publish_s3_<driver_version>
: publish all the built Falco drivers to S3 filtering by the Falco driver version (those existing in theoutput/<driver_version>
directory)cleanup
: delete from bintray the driver version no more supported (those present on bintray but not in theconfig/
directory)cleanup_s3
: delete from S3 the driver version no more supported (those present on S3 but not in theconfig/
directory)stats
: print counts about currently available Falco drivers
In case you want to build the Falco drivers (all the available versions) for just a distro or a specific kernel or both, use the specific_target
make target:
make -e TARGET_DISTRO=amazonlinux2 specific_target
These are the available filters as environment variables:
TARGET_VERSION
: a specific Falco driver versionTARGET_DISTRO
: a spefific Linux distributionTARGET_KERNEL
: a specific Linux version- in <kernel_version>.<major_version>.<minor_version> format
- in <kernel_version>.<major_version>.* format
- in <kernel_version>.* format
Notice all the filters are optional (except TARGET_DISTRO
and TARGET_KERNEL
for generate
).
You can also filter a specific distro with a specific kernel version:
make -e TARGET_DISTRO="debian" -e TARGET_KERNEL="5.9.0" specific_target
Or, you can ask it to make all the Falco drivers for debian 5.x kernels.
make -e TARGET_DISTRO="debian" -e TARGET_KERNEL="5.*" specific_target
In case you're only interested in a precise Falco driver version, you can filter by it too:
make -e TARGET_VERSION="2aa88" -e TARGET_DISTRO="debian" -e TARGET_KERNEL="4.9.*" specific_target
Finally, notice you can use these filters also with the stats
make target.
Eg.,
make -e TARGET_DISTRO=debian stats
Q: Falco doesn't find the kernel module/ eBPF probe for my OS, what do I do? A:
Solution 1: Go to the config/
folder and add your kernel/OS combination there as a YAML file, then send a PR for everyone to profit!
Solution 2:
- Fork this repo (see Docs)
- Git clone your fork
git clone https://github.com/<user>/test-infra.git
orgit clone [email protected]:<user>/test-infra.git
- Go into
test-infra/driverkit
- If you want the drivers for your locale system:
export TARGET_KERNEL="$(uname -r)_$(uname -v | sed 's/#\([[:digit:]]\+\).*/\1/')"
- Run
Makefile
:make generate -e TARGET_DISTRO=<TARGET_DISTRO> -e TARGET_KERNEL=<TARGET_KERNEL>
(available values forTARGET_DISTRO
can be found here) - Commit the new files and push:
git add . && git commit -s -m "adding new configuration files for ${TARGET_KERNEL}" && git push origin master
- Send a PR for everyone to profit
Q: How do you publish new drivers? A: If you have proper S3 permissions from Terraform or Prow, run
make publish_s3
to publish the results after the build finishes.