Enabled support for external BTF #599
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |