diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..e958089d --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,55 @@ +name: build +on: + push: + branches: + - main + pull_request: +jobs: + build-amd64: + name: Build AMD64 binaries + # runs-on: longhorn-infra-amd64-runners + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + # - name: Install make & curl + # run: | + # sudo apt update + # sudo apt-get -y install make curl + + # - name: List module + # run: | + # lsmod + + # Build binaries + - name: Run ci + run: make ci + + - uses: codecov/codecov-action@v4 + with: + files: ./coverage.out + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} + + build-arm64: + name: Build ARM64 binaries + runs-on: longhorn-infra-arm64-runners + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install make & curl + run: | + sudo apt update + sudo apt-get -y install make curl + + # Build binaries + - name: Run ci + run: make ci + + - uses: codecov/codecov-action@v4 + with: + files: ./coverage.out + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/Dockerfile.dapper b/Dockerfile.dapper index d405c8b1..7abc854b 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -1,4 +1,4 @@ -FROM registry.suse.com/bci/bci-base:15.5 +FROM registry.suse.com/bci/golang:1.22 ARG DAPPER_HOST_ARCH=amd64 ARG http_proxy @@ -21,17 +21,15 @@ RUN zypper -n addrepo --refresh https://download.opensuse.org/repositories/syste zypper -n addrepo --refresh https://download.opensuse.org/repositories/devel:languages:python:backports/SLE_15/devel:languages:python:backports.repo && \ zypper --gpg-auto-import-keys ref -RUN zypper -n install cmake curl wget git gcc tar xsltproc docbook-xsl-stylesheets python3 meson ninja python3-pip \ +RUN zypper -n install cmake curl wget gcc tar xsltproc docbook-xsl-stylesheets python3 meson ninja python3-pip \ e2fsprogs xfsprogs util-linux-systemd python3-pyelftools libcmocka-devel device-mapper -# Install Go & tools -ENV GOLANG_ARCH_amd64=amd64 GOLANG_ARCH_arm64=arm64 GOLANG_ARCH_s390x=s390x GOLANG_ARCH=GOLANG_ARCH_${ARCH} \ - GOPATH=/go PATH=/go/bin:/usr/local/go/bin:${PATH} SHELL=/bin/bash -RUN wget -O - https://storage.googleapis.com/golang/go1.22.2.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local +# Install golangci-lint RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2 - # Build SPDK +ENV HUGEMEM=1024 +RUN echo "vm.nr_hugepages=$((HUGEMEM/2))" >> /etc/sysctl.conf ENV SPDK_DIR /usr/src/spdk ENV SPDK_COMMIT_ID 62a8f8a9c5ac99f6e63d654f6fc6c427c5d8815b RUN git clone https://github.com/longhorn/spdk.git ${SPDK_DIR} --recursive && \ diff --git a/pkg/spdk/spdk_test.go b/pkg/spdk/spdk_test.go index 4fefc502..202ad15d 100644 --- a/pkg/spdk/spdk_test.go +++ b/pkg/spdk/spdk_test.go @@ -12,6 +12,7 @@ import ( . "gopkg.in/check.v1" commonTypes "github.com/longhorn/go-common-libs/types" + "github.com/sirupsen/logrus" "github.com/longhorn/go-spdk-helper/pkg/jsonrpc" "github.com/longhorn/go-spdk-helper/pkg/nvme" @@ -52,7 +53,11 @@ func LaunchTestSPDKTarget(c *C, execute func(envs []string, binary string, args if spdkCli, err := client.NewClient(context.Background()); err == nil { if _, err := spdkCli.BdevGetBdevs("", 0); err == nil { targetReady = true + } else { + logrus.Warnf("Failed to get SPDK bdevs: %v", err) } + } else { + logrus.Warnf("Failed to create SPDK client: %v", err) } if !targetReady { @@ -66,7 +71,11 @@ func LaunchTestSPDKTarget(c *C, execute func(envs []string, binary string, args if _, err := spdkCli.BdevGetBdevs("", 0); err == nil { targetReady = true break + } else { + logrus.Warnf("Failed to get SPDK bdevs: %v", err) } + } else { + logrus.Warnf("Failed to create SPDK client: %v", err) } time.Sleep(time.Second) } diff --git a/scripts/test b/scripts/test index 62cda39e..ada0b4a1 100755 --- a/scripts/test +++ b/scripts/test @@ -14,6 +14,16 @@ then fi echo "Hugepages configured: $hugepages" +modules=("uio_pci_generic" "nvme-tcp") + +for module in "${modules[@]}" +do + if ! modprobe "$module"; then + echo "Failed to load $module module" + exit 1 + fi +done + mount --rbind /host/dev /dev mount --rbind /host/sys /sys trap "umount /dev && umount /sys" EXIT