Skip to content

Latest commit

 

History

History
 
 

driverkit

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

driverkit build grid

This folder contains the configuration files for the driverkit build grid.

Usage

Just make is enough! ❤️

make

Available make targets

  • all: build all the Falco drivers (all the versions), for every supported distro, and every supported kernel release
  • generate: generate yaml files for building drivers for specific kernel and target for all Falco lib versions
  • specific_target: build the filtered driver versions
  • clean: remove everything in the output/ directory (except it, and its .gitignore file)
  • publish: publish all the built Falco drivers (those existing in the output/ directory) to bintray
  • publish_<driver_version>: publish all the built Falco drivers to bintray filtering by the Falco driver version (those existing in the output/<driver_version> directory)
  • publish_s3: publish all the built Falco drivers (those existing in the output/ directory) to S3
  • publish_s3_<driver_version>: publish all the built Falco drivers to S3 filtering by the Falco driver version (those existing in the output/<driver_version> directory)
  • cleanup: delete from bintray the driver version no more supported (those present on bintray but not in the config/ directory)
  • cleanup_s3: delete from S3 the driver version no more supported (those present on S3 but not in the config/ directory)
  • stats: print counts about currently available Falco drivers

Specific target

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
Available filters

These are the available filters as environment variables:

  • TARGET_VERSION: a specific Falco driver version
  • TARGET_DISTRO: a spefific Linux distribution
  • TARGET_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

FAQ

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 or git 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 for TARGET_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.