Skip to content

Latest commit

 

History

History
97 lines (68 loc) · 3.96 KB

README.md

File metadata and controls

97 lines (68 loc) · 3.96 KB

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.