[wip]Add eBPF support for optimizer #2158
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: | |
branches: ["*"] | |
pull_request: | |
branches: [main] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
name: Build and Lint | |
timeout-minutes: 20 | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: "1.20.1" | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: cache go mod | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go | |
- name: Setup bcc for eBPF | |
run: | | |
sudo apt-get update | |
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \ | |
libllvm12 llvm-12-dev libclang-12-dev python zlib1g-dev libelf-dev libfl-dev python3-setuptools \ | |
liblzma-dev arping netperf iperf | |
git clone https://github.com/iovisor/bcc.git; cd bcc | |
git checkout v0.24.0 | |
mkdir build; cd build | |
cmake .. | |
make | |
sudo make install | |
cmake -DPYTHON_CMD=python3 .. | |
pushd src/python/ | |
make | |
sudo make install | |
popd | |
- name: Build | |
run: | | |
go install github.com/golangci/golangci-lint/cmd/[email protected] | |
export PATH=$PATH:$(go env GOPATH)/bin | |
make | |
make test | |
make check | |
build-optimizer: | |
name: Build optimizer | |
timeout-minutes: 20 | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: "1.20.1" | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: cache go mod | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go | |
- name: Setup bcc for eBPF | |
run: | | |
sudo apt-get update | |
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \ | |
libllvm12 llvm-12-dev libclang-12-dev python zlib1g-dev libelf-dev libfl-dev python3-setuptools \ | |
liblzma-dev arping netperf iperf | |
git clone https://github.com/iovisor/bcc.git; cd bcc | |
git checkout v0.24.0 | |
mkdir build; cd build | |
cmake .. | |
make | |
sudo make install | |
cmake -DPYTHON_CMD=python3 .. | |
pushd src/python/ | |
make | |
sudo make install | |
popd | |
- name: Build | |
run: | | |
go install github.com/golangci/golangci-lint/cmd/[email protected] | |
export PATH=$PATH:$(go env GOPATH)/bin | |
rustup component add rustfmt clippy | |
make build-optimizer | |
smoke: | |
name: Smoke | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: "1.19.6" | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: cache go mod | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go | |
- name: Set up containerd | |
uses: crazy-max/ghaction-setup-containerd@v2 | |
- name: Build | |
run: | | |
# Download nydus components | |
NYDUS_VER=v$(curl --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -s "https://api.github.com/repos/dragonflyoss/image-service/releases/latest" | jq -r .tag_name | sed 's/^v//') | |
wget https://github.com/dragonflyoss/image-service/releases/download/$NYDUS_VER/nydus-static-$NYDUS_VER-linux-amd64.tgz | |
tar xzvf nydus-static-$NYDUS_VER-linux-amd64.tgz | |
mkdir -p /usr/bin | |
sudo mv nydus-static/nydus-image nydus-static/nydusd nydus-static/nydusify /usr/bin/ | |
export PATH=$PATH:$(go env GOPATH)/bin | |
make smoke | |
cross-build-test: | |
name: Cross Build Test | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
GOOS: ["linux", "windows", "darwin"] | |
GOARCH: ["amd64", "arm64"] | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: "1.19.6" | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: cache go mod | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go | |
- name: Build | |
run: | | |
make -e GOOS=${{ matrix.GOOS }} GOARCH=${{ matrix.GOARCH }} converter | |
coverage: | |
name: Code coverage | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: "1.19.6" | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: cache go mod | |
uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go | |
- name: Run unit tests. | |
run: make cover | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos | |
files: ./coverage.txt |