--- name: test on: ["push", "pull_request"] env: GO_VERSION: "1.20" 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@v4 with: go-version-file: go.mod - uses: ibiqlik/action-yamllint@v3 with: format: auto - uses: golangci/golangci-lint-action@v3 with: args: -v skip-cache: true build: name: Build all linux architectures needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v4 with: go-version-file: go.mod - 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 - uses: actions/checkout@v4 - name: setup go uses: actions/setup-go@v4 with: go-version-file: go.mod - 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@v4 with: go-version-file: go.mod - name: test run: bash ./test_windows.sh