diff --git a/.github/workflows/pull-build-test.yml b/.github/workflows/pull-build-test.yml new file mode 100644 index 00000000..1a6f2db2 --- /dev/null +++ b/.github/workflows/pull-build-test.yml @@ -0,0 +1,42 @@ +name: pull-build-test + +on: + pull_request: + branches: + - release-8.5 + +permissions: + contents: read + +jobs: + build-test: + runs-on: ubuntu-latest + timeout-minutes: 120 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + - name: Build Builder Image + run: docker build -f ci/Dockerfile -t local/tikv-client-c-builder:latest . + + - name: Build And Test + run: | + docker run --rm \ + --user "$(id -u):$(id -g)" \ + -e HOME=/tmp \ + -v "${GITHUB_WORKSPACE}:/client-c" \ + -w /client-c \ + local/tikv-client-c-builder:latest \ + /bin/bash -c "/client-c/ci/build-test.sh" + + - name: Upload Logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: build-logs + path: build/**/*.log + if-no-files-found: ignore diff --git a/ci/Dockerfile b/ci/Dockerfile index 74a1b1ee..a83008bd 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -1,26 +1,54 @@ -FROM ubuntu:23.04 - -RUN apt update -y \ - && apt install -y cmake build-essential \ - wget git \ - protobuf-compiler libprotobuf-dev libgrpc-dev libgrpc++-dev libc-ares-dev protobuf-compiler-grpc libpoco-dev - -RUN rm -rf /var/lib/apt/lists/* - -#back to root dir and download golang -RUN cd / - -ENV GOLANG_VERSION 1.13.3 - -RUN wget -O go.tgz "https://dl.google.com/go/go$GOLANG_VERSION.linux-amd64.tar.gz"; \ -tar -C /usr/local -xzf go.tgz; \ -rm go.tgz; \ -export PATH="/usr/local/go/bin:$PATH"; \ -go version - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH - -RUN cd / - -RUN git clone https://github.com/tikv/mock-tikv.git && cd mock-tikv && git checkout 60d5921028afd72e1aeba880b9052c40e932eef3 && make failpoint-enable && make +FROM ubuntu:22.04 + +ARG DEBIAN_FRONTEND=noninteractive +ARG GOLANG_VERSION=1.13.3 +ARG TARGETARCH +ARG GO_SHA256_AMD64=0804bf02020dceaa8a7d7275ee79f7a142f1996bfd0c39216ccb405f93f994c0 +ARG GO_SHA256_ARM64=9fa65ae42665baff53802091b49b83af6f2e397986b6cbea2ae30e2c7ee0f2f2 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates \ + cmake \ + git \ + protobuf-compiler \ + libprotobuf-dev \ + libgrpc-dev \ + libgrpc++-dev \ + libc-ares-dev \ + protobuf-compiler-grpc \ + libpoco-dev \ + wget \ + && rm -rf /var/lib/apt/lists/* + +RUN case "${TARGETARCH}" in \ + amd64) GO_ARCH="${TARGETARCH}"; GO_SHA256="${GO_SHA256_AMD64}" ;; \ + arm64) GO_ARCH="${TARGETARCH}"; GO_SHA256="${GO_SHA256_ARM64}" ;; \ + "") GO_ARCH="amd64"; GO_SHA256="${GO_SHA256_AMD64}" ;; \ + *) echo "unsupported TARGETARCH: ${TARGETARCH}" >&2; exit 1 ;; \ + esac \ + && wget -q -O /tmp/go.tgz "https://dl.google.com/go/go${GOLANG_VERSION}.linux-${GO_ARCH}.tar.gz" \ + && echo "${GO_SHA256} /tmp/go.tgz" | sha256sum -c - \ + && tar -C /usr/local -xzf /tmp/go.tgz \ + && rm -f /tmp/go.tgz + +ENV GOPATH=/go +ENV PATH=/usr/local/go/bin:${GOPATH}/bin:${PATH} +ENV HOME=/home/ciuser + +RUN groupadd --system ciuser \ + && useradd --system --create-home --gid ciuser ciuser \ + && mkdir -p /go /mock-tikv \ + && chown -R ciuser:ciuser /go /mock-tikv + +USER ciuser + +RUN git clone --depth 1 https://github.com/tikv/mock-tikv.git /mock-tikv \ + && cd /mock-tikv \ + && git fetch --depth 1 origin 60d5921028afd72e1aeba880b9052c40e932eef3 \ + && git checkout 60d5921028afd72e1aeba880b9052c40e932eef3 \ + && make failpoint-enable \ + && make diff --git a/cmake/Modules/FindgRPC.cmake b/cmake/Modules/FindgRPC.cmake index 62605b94..668aa42d 100644 --- a/cmake/Modules/FindgRPC.cmake +++ b/cmake/Modules/FindgRPC.cmake @@ -268,7 +268,11 @@ else() set(gRPC_LIBRARIES ${gRPC_LIBRARIES} ${gRPC_LIBRARY}) endif() endif() -set(gRPC_LIBRARIES ${gRPC_LIBRARIES} ${gRPC_CARES_LIBRARY} ${gRPC_GPR_LIBRARY} ${gRPC_ADDRESS_SORTING_LIBRARY} ${gRPC_UPB_LIBRARY}) +foreach(_dep IN ITEMS gRPC_CARES_LIBRARY gRPC_GPR_LIBRARY gRPC_ADDRESS_SORTING_LIBRARY gRPC_UPB_LIBRARY) + if(${_dep}) + list(APPEND gRPC_LIBRARIES "${${_dep}}") + endif() +endforeach() # Restore the original find library ordering. if(gRPC_USE_STATIC_LIBS)