Skip to content

Enabled support for external BTF #599

Enabled support for external BTF

Enabled support for external BTF #599

Workflow file for this run

name: CI
on:
push:
tags:
- v*
branches:
- master
pull_request:
jobs:
build-libbpf-docker-x86_64:
name: Build libbpf in Docker (x86_64)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Build libbpf
run: |
docker buildx build --progress plain --tag libbpf --target libbpf_builder .
id=$(docker create libbpf)
docker cp $id:/build/libbpf.tar.gz libbpf.x86_64.tar.gz
- name: Upload libbpf.tar.gz
uses: actions/upload-artifact@v3
with:
name: libbpf.x86_64.tar.gz
path: libbpf.x86_64.tar.gz
build-libbpf-docker-aarch64:
name: Build libbpf in Docker (aarch64, emulated)
runs-on: ubuntu-22.04
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- uses: actions/checkout@v3
- name: Build libbpf
run: |
docker buildx build --progress plain --tag libbpf --target libbpf_builder --platform linux/arm64 .
id=$(docker create libbpf)
docker cp $id:/build/libbpf.tar.gz libbpf.aarch64.tar.gz
- name: Upload libbpf.tar.gz
uses: actions/upload-artifact@v3
with:
name: libbpf.aarch64.tar.gz
path: libbpf.aarch64.tar.gz
build-ebpf-exporter-docker-x86_64:
name: Build ebpf_exporter in Docker (x86_64, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch with tags to have the build version attached
- name: Build libbpf and ebpf_exporter
run: |
docker buildx build --progress plain --tag ebpf_exporter .
id=$(docker create ebpf_exporter)
docker cp $id:/ebpf_exporter ebpf_exporter.x86_64
- name: Upload ebpf_exporter
uses: actions/upload-artifact@v3
with:
name: ebpf_exporter.x86_64
path: ebpf_exporter.x86_64
build-ebpf-exporter-docker-aarch64:
name: Build ebpf_exporter in Docker (aarch64, emulated, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch with tags to have the build version attached
- name: Build ebpf_exporter
run: |
docker buildx build --progress plain --tag ebpf_exporter --platform linux/arm64 .
id=$(docker create ebpf_exporter)
docker cp $id:/ebpf_exporter ebpf_exporter.aarch64
- name: Upload ebpf_exporter
uses: actions/upload-artifact@v3
with:
name: ebpf_exporter.aarch64
path: ebpf_exporter.aarch64
build-ebpf-exporter-static-x86_64-system-libbpf:
name: Build ebpf_exporter (x86_64, statically linked, system libbpf)
needs: build-libbpf-docker-x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Download libbpf.tar.gz
uses: actions/download-artifact@v3
with:
name: libbpf.x86_64.tar.gz
- name: Install libbpf
run: sudo tar -C / -xvvf libbpf.x86_64.tar.gz
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Build
run: make -j $(nproc) build BUILD_LIBBPF=0
- name: Check static linkage
run: (ldd --verbose ./ebpf_exporter 2>&1 || true) | grep 'not a dynamic executable'
- name: Check that it runs
run: ./ebpf_exporter --version
build-ebpf-exporter-static-x86_64-built-in-libbpf:
name: Build ebpf_exporter (x86_64, statically linked, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Build
run: make -j $(nproc) build
- name: Check static linkage
run: (ldd --verbose ./ebpf_exporter 2>&1 || true) | grep 'not a dynamic executable'
- name: Check that it runs
run: ./ebpf_exporter --version
build-ebpf-exporter-dynamic-x86_64-system-libbpf:
name: Build ebpf_exporter (x86_64, dynamically linked, system libbpf)
needs: build-libbpf-docker-x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Download libbpf.tar.gz
uses: actions/download-artifact@v3
with:
name: libbpf.x86_64.tar.gz
- name: Install libbpf
run: sudo tar -C / -xvvf libbpf.x86_64.tar.gz
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Build
run: make -j $(nproc) build-dynamic BUILD_LIBBPF=0
- name: Check dynamic linkage
run: ldd --verbose ./ebpf_exporter
- name: Check that it runs
run: ./ebpf_exporter --version
build-ebpf-exporter-dynamic-x86_64-built-in-libbpf:
name: Build ebpf_exporter (x86_64, dynamically linked, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Build
run: make -j $(nproc) build-dynamic
- name: Check dynamic linkage
run: ldd --verbose ./ebpf_exporter
- name: Check that it runs
run: LD_LIBRARY_PATH=libbpf/dest/usr/lib ./ebpf_exporter --version
test-ebpf-exporter-x86_64-system-libbpf:
name: Test ebpf_exporter (x86_64, system libbpf)
needs: build-libbpf-docker-x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Download libbpf.tar.gz
uses: actions/download-artifact@v3
with:
name: libbpf.x86_64.tar.gz
- name: Install libbpf
run: sudo tar -C / -xvvf libbpf.x86_64.tar.gz
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Update pci.ids
run: |
curl -o /tmp/pci.ids https://raw.githubusercontent.com/pciutils/pciids/master/pci.ids
sudo mv /tmp/pci.ids /usr/share/misc/pci.ids
- name: Test
run: make -j $(nproc) test BUILD_LIBBPF=0
- name: Test privileged
run: make -j $(nproc) test-privileged BUILD_LIBBPF=0
test-ebpf-exporter-x86_64-built-in-libbpf:
name: Test ebpf_exporter (x86_64, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Update pci.ids
run: |
curl -o /tmp/pci.ids https://raw.githubusercontent.com/pciutils/pciids/master/pci.ids
sudo mv /tmp/pci.ids /usr/share/misc/pci.ids
- name: Test
run: make -j $(nproc) test
- name: Test privileged
run: make -j $(nproc) test-privileged
lint-ebpf-exporter-x86_64-system-libbpf:
name: Lint ebpf_exporter (x86_64, system libbpf)
needs: build-libbpf-docker-x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Download libbpf.tar.gz
uses: actions/download-artifact@v3
with:
name: libbpf.x86_64.tar.gz
- name: Install libbpf
run: sudo tar -C / -xvvf libbpf.x86_64.tar.gz
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Check vendored dependencies
run: go mod verify
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.54.2
lint-ebpf-exporter-x86_64-built-in-libbpf:
name: Lint ebpf_exporter (x86_64, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ^1.21
- uses: actions/checkout@v3
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Build libbpf
run: make -j $(nproc) libbpf.a
- name: Check vendored dependencies
run: go mod verify
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.54.2
env:
CGO_CFLAGS: "-I${{ github.workspace }}/libbpf/dest/usr/include"
build-examples-x86_64-system-libbpf:
name: Build examples (x86_64, system libbpf)
needs: build-libbpf-docker-x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Download libbpf.tar.gz
uses: actions/download-artifact@v3
with:
name: libbpf.x86_64.tar.gz
- name: Install libbpf
run: sudo tar -C / -xvvf libbpf.x86_64.tar.gz
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Install clang
run: sudo apt-get install -y clang
- name: Build benchmark bpf probes
run: make -j $(nproc) -C benchmark build BUILD_LIBBPF=0
- name: Build example bpf probes
run: make -j $(nproc) -C examples build BUILD_LIBBPF=0
build-examples-x86_64-built-in-libbpf:
name: Build examples (x86_64, built-in libbpf)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Install libelf-dev
run: sudo apt-get install -y libelf-dev
- name: Install clang
run: sudo apt-get install -y clang
- name: Build benchmark bpf probes
run: make -j $(nproc) -C benchmark build
- name: Build example bpf probes
run: make -j $(nproc) -C examples build
clang-format:
name: Run clang-format check
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Install clang-format
run: sudo apt-get install -y clang-format make
- name: Run clang-format check
run: make clang-format-check
publish-docker-images:
name: Publish Docker images (x86_64, aarch64)
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch with tags to have the build version attached
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker Metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
- name: Docker Login
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
provenance: false # https://github.com/docker/build-push-action/issues/755