diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..a3972cf0 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,50 @@ +name: build +on: + push: + branches: + - main + pull_request: +jobs: + build-amd64: + name: Build AMD64 binaries + runs-on: longhorn-infra-amd64-runners + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install make curl git + run: | + sudo apt update + sudo apt-get -y install make curl git + + # 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 git + run: | + sudo apt update + sudo apt-get -y install make curl git + + # Build binaries + - name: Run ci + run: sudo 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..3154f14d 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -1,6 +1,6 @@ FROM registry.suse.com/bci/bci-base:15.5 -ARG DAPPER_HOST_ARCH=amd64 +ARG DAPPER_HOST_ARCH ARG http_proxy ARG https_proxy ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH} @@ -21,7 +21,7 @@ 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 git gcc unzip tar xsltproc docbook-xsl-stylesheets python3 meson ninja python3-pip \ e2fsprogs xfsprogs util-linux-systemd python3-pyelftools libcmocka-devel device-mapper # Install Go & tools @@ -30,8 +30,9 @@ ENV GOLANG_ARCH_amd64=amd64 GOLANG_ARCH_arm64=arm64 GOLANG_ARCH_s390x=s390x GOLA RUN wget -O - https://storage.googleapis.com/golang/go1.22.2.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local 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 && \ @@ -64,9 +65,9 @@ RUN cd /usr/src && \ make && \ make install -# Build nvme-cli 2.5 +# Build nvme-cli 2.7.1 ENV NVME_CLI_DIR /usr/src/nvme-cli -ENV NVME_CLI_COMMIT_ID d6c07e0de9be777009ebb9ab7475bee1ae3e0e95 +ENV NVME_CLI_COMMIT_ID dcdad6f5d70ffb2fa151f229db048180671eb1fe RUN git clone https://github.com/linux-nvme/nvme-cli.git ${NVME_CLI_DIR} && \ cd ${NVME_CLI_DIR} && \ git checkout ${NVME_CLI_COMMIT_ID} && \ @@ -74,6 +75,8 @@ RUN git clone https://github.com/linux-nvme/nvme-cli.git ${NVME_CLI_DIR} && \ meson compile -C .build && \ meson install -C .build +RUN ldconfig + VOLUME /tmp ENV TMPDIR /tmp ENTRYPOINT ["./scripts/entry"] diff --git a/scripts/test b/scripts/test index 62cda39e..996aca5d 100755 --- a/scripts/test +++ b/scripts/test @@ -21,4 +21,4 @@ trap "umount /dev && umount /sys" EXIT PACKAGES="$(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')" -go test -v -race -cover ${PACKAGES} +go test -v -race -cover -coverprofile=coverage.out ${PACKAGES}