Merge pull request #267 from bobrik/ivan/race #436
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-ebpf-exporter-x86_64: | |
name: Build ebpf_exporter (x86_64) | |
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:builder --target builder . | |
id=$(docker create ebpf_exporter:builder) | |
docker cp $id:/build/ebpf_exporter/ebpf_exporter ebpf_exporter.x86_64 | |
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 | |
- name: Upload ebpf_exporter | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ebpf_exporter.x86_64 | |
path: ebpf_exporter.x86_64 | |
build-ebpf-exporter-aarch64: | |
name: Build ebpf_exporter (aarch64 emulated, be patient) | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: dbhi/qus/action@main | |
with: | |
targets: aarch64 | |
- 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:builder --target builder --platform linux/arm64 . | |
id=$(docker create ebpf_exporter:builder) | |
docker cp $id:/build/ebpf_exporter/ebpf_exporter ebpf_exporter.aarch64 | |
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 | |
- name: Upload ebpf_exporter | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ebpf_exporter.aarch64 | |
path: ebpf_exporter.aarch64 | |
test-ebpf-exporter-x86_64: | |
name: Test ebpf_exporter (x86_64) | |
needs: build-ebpf-exporter-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: Build | |
run: make build | |
- name: Test | |
run: make test | |
- name: Test privileged | |
run: make test-privileged | |
lint-ebpf-exporter-x86_64: | |
name: Lint ebpf_exporter (x86_64) | |
needs: build-ebpf-exporter-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 | |
env: | |
CGO_LDFLAGS: "-l bpf" | |
build-examples-x86_64: | |
name: Build examples (x86_64) | |
needs: build-ebpf-exporter-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 | |
- 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 |