--- name: test on: pull_request: {} env: LINUX_ARCHES: "amd64 386 arm arm64 s390x mips64le ppc64le riscv64" jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v5 with: go-version-file: .github/go-version - uses: ibiqlik/action-yamllint@v3 with: format: auto - uses: golangci/golangci-lint-action@v6 with: version: v1.61.0 args: -v verify-vendor: name: Verify vendor directory runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Go uses: actions/setup-go@v5 with: go-version-file: .github/go-version - name: Check module vendoring run: | go mod tidy go mod vendor test -z "$(git status --porcelain)" || (echo "please run 'go mod tidy && go mod vendor', and submit your changes"; exit 1) build: name: Build all linux architectures needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v5 with: go-version-file: .github/go-version - name: Build on all supported architectures run: | set -e for arch in ${LINUX_ARCHES}; do echo "Building for arch $arch" GOARCH=$arch ./build_linux.sh rm bin/* done test-linux: name: Run tests on Linux amd64 needs: build runs-on: ubuntu-latest steps: - name: Install kernel module run: | sudo apt-get update sudo apt-get install linux-modules-extra-$(uname -r) - name: Install nftables run: sudo apt-get install nftables - name: Install dnsmasq(dhcp server) run: | sudo apt-get install dnsmasq sudo systemctl disable --now dnsmasq - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v5 with: go-version-file: .github/go-version - name: Set up Go for root run: | sudo ln -sf `which go` `sudo which go` || true sudo go version - name: Install test binaries run: | go install github.com/containernetworking/cni/cnitool@latest go install github.com/mattn/goveralls@latest go install github.com/modocache/gover@latest - name: test run: PATH=$PATH:$(go env GOPATH)/bin COVERALLS=1 ./test_linux.sh - name: Send coverage to coveralls env: COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | PATH=$PATH:$(go env GOPATH)/bin gover goveralls -coverprofile=gover.coverprofile -service=github test-win: name: Build and run tests on Windows needs: build runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v5 with: go-version-file: .github/go-version - name: test run: bash ./test_windows.sh