-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(dockerfiles/cd/builders/tiflash): update image docker file for n…
…ew tiflash builder (#484) Signed-off-by: wuhuizuo <[email protected]> --------- Signed-off-by: wuhuizuo <[email protected]>
- Loading branch information
Showing
2 changed files
with
38 additions
and
79 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,88 +5,47 @@ | |
# - git clone --recurse-submodules https://github.com/pingcap/tiflash.git tiflash | ||
# - docker build -t tiflash -f Dockerfile ./tiflash | ||
|
||
########### stage: extract-conda-openssl | ||
FROM quay.io/rockylinux/rockylinux:8.10.20240528-ubi as extract-conda-openssl | ||
RUN dnf install -y unzip wget zstd | ||
# install openssl with conda pre-build package. | ||
# index: in https://prefix.dev/channels/conda-forge/packages/openssl | ||
RUN zip_url=$([ "$(arch)" = "x86_64" ] && \ | ||
echo "https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1w-hd590300_0.conda" || \ | ||
echo "https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-1.1.1w-h31becfc_0.conda"\ | ||
); \ | ||
pkg_file=$(basename "$zip_url" .conda); \ | ||
mkdir /output; \ | ||
wget ${zip_url} -O /output/openssl.conda && unzip -d /output /output/openssl.conda && \ | ||
mkdir -p /usr/local/opt/openssl && \ | ||
tar -C /usr/local/opt/openssl -I zstd -xvf /output/pkg-${pkg_file}.tar.zst | ||
|
||
########### stage: builder | ||
FROM quay.io/rockylinux/rockylinux:8.10.20240528-ubi as builder | ||
LABEL org.opencontainers.image.authors "[email protected]" | ||
LABEL org.opencontainers.image.description "binary builder for TiFlash" | ||
LABEL org.opencontainers.image.source "https://github.com/PingCAP-QE/artifacts" | ||
|
||
# install packages. | ||
RUN --mount=type=cache,target=/var/cache/dnf \ | ||
dnf upgrade-minimal -y && \ | ||
dnf --enablerepo=powertools install -y git llvm-toolset cmake ninja-build python3.12 libcurl-devel | ||
ENV CC clang | ||
ENV CXX clang++ | ||
ENV LD ld.lld | ||
|
||
# install openssl | ||
COPY --from=extract-conda-openssl /usr/local/opt/openssl /usr/local/opt/openssl | ||
|
||
# building and install libc++ | ||
RUN git clone https://github.com/llvm/llvm-project.git --branch llvmorg-17.0.6 --depth 1 /tmp/llvm-project && \ | ||
cd /tmp/llvm-project && rm -rf build && mkdir build && \ | ||
cmake -G Ninja -S runtimes -B build -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" -DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 && \ | ||
ninja -C build cxx cxxabi unwind && \ | ||
ninja -C build install-cxx install-cxxabi install-unwind && \ | ||
rm -rf /tmp/llvm-project | ||
# FIXME: replace with official repo and tag. | ||
# renovate: datasource=github-tags depName=pingcap/tiflash | ||
ARG TIFLASH_REPO=pingcap/tiflash | ||
ARG TIFLASH_REF=master | ||
RUN FILE="bake_llvm_base.sh"; \ | ||
TAR_DIR="tiflash-${TIFLASH_REF}"; \ | ||
curl -sSL https://github.com/${TIFLASH_REPO}/archive/refs/heads/${TIFLASH_REF}.tar.gz -o tiflash.tar.gz && \ | ||
tar -zxf tiflash.tar.gz "$TAR_DIR/release-linux-llvm/dockerfiles/misc" && \ | ||
pushd "$TAR_DIR/release-linux-llvm/dockerfiles/misc" && \ | ||
chmod +x * && ./${FILE} && \ | ||
popd && \ | ||
rm -rf tiflash.tar.gz "$TAR_DIR" | ||
|
||
ENV TZ Asia/Shanghai | ||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | ||
|
||
ENV PATH="/opt/cmake/bin:/usr/local/bin/:${PATH}:/usr/local/go/bin:/root/.cargo/bin" \ | ||
LIBRARY_PATH="/usr/local/lib/$(uname -m)-unknown-linux-gnu/:${LIBRARY_PATH}" \ | ||
LD_LIBRARY_PATH="/usr/local/lib/$(uname -m)-unknown-linux-gnu/:${LD_LIBRARY_PATH}" \ | ||
CPLUS_INCLUDE_PATH="/usr/local/include/$(uname -m)-unknown-linux-gnu/c++/v1/:${CPLUS_INCLUDE_PATH}" \ | ||
OPENSSL_ROOT_DIR="/usr/local/opt/openssl" \ | ||
CC=clang \ | ||
CXX=clang++ \ | ||
LD=ld.lld | ||
|
||
# building and reinstall llvm toolsets. | ||
RUN git clone https://github.com/llvm/llvm-project.git --branch llvmorg-17.0.6 --depth 1 /tmp/llvm-project && \ | ||
cd /tmp/llvm-project && rm -rf build && mkdir build && \ | ||
cd build && \ | ||
cmake -DCMAKE_BUILD_TYPE=Release \ | ||
-GNinja \ | ||
-DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 \ | ||
-DLLVM_ENABLE_PROJECTS="clang;lld" \ | ||
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ | ||
-DLLVM_TARGETS_TO_BUILD=Native \ | ||
../llvm && \ | ||
ninja && ninja install && \ | ||
\ | ||
cd .. && rm -rf build && mkdir -p build && cd build && \ | ||
cmake -DCMAKE_BUILD_TYPE=Release \ | ||
-GNinja \ | ||
-DCMAKE_INSTALL_PREFIX=/usr -DLLVM_LIBDIR_SUFFIX=64 \ | ||
-DLLVM_ENABLE_PROJECTS="clang;lld;polly;clang-tools-extra;bolt" \ | ||
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;openmp;compiler-rt" \ | ||
-DLLVM_TARGETS_TO_BUILD=Native \ | ||
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ | ||
-DCLANG_DEFAULT_LINKER=lld \ | ||
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \ | ||
-DCMAKE_CXX_COMPILER=clang++ \ | ||
-DCMAKE_C_COMPILER=clang \ | ||
-DLLVM_ENABLE_LIBCXX=ON \ | ||
-DLLVM_ENABLE_LLD=ON \ | ||
-DLIBOMP_LIBFLAGS="-lm" \ | ||
../llvm && \ | ||
ninja && ninja install && cd ../.. && rm -rf /tmp/llvm-project | ||
|
||
# install rust toolchain | ||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s - -y --default-toolchain none | ||
ENV PATH /root/.cargo/bin/:$PATH | ||
|
||
########### stage: building | ||
FROM builder as building | ||
|
||
ADD . /ws | ||
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true /ws/release-linux-llvm/scripts/build-release.sh | ||
RUN mkdir output && mv /ws/release-linux-llvm/tiflash output/tiflash | ||
RUN output/tiflash/tiflash version | ||
RUN mkdir /ws/output && mv /ws/release-linux-llvm/tiflash /ws/output/tiflash | ||
RUN /ws/output/tiflash/tiflash version | ||
|
||
|
||
########### stage: Final image | ||
FROM ghcr.io/pingcap-qe/bases/tiflash-base:v1.9.2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,19 +2,19 @@ | |
# - docker >= v20.10 | ||
# | ||
# build steps: | ||
# - git clone --recurse-submodules https://github.com/tikv/tikv.git tikv | ||
# - docker build -t tikv -f Dockerfile ./tikv | ||
# - git clone --recurse-submodules https://github.com/pingcap/tiflash.git tiflash | ||
# - docker build -t tiflash -f Dockerfile ./tiflash | ||
|
||
########### stage: Builder | ||
########### stage: builder | ||
FROM centos:7.9.2009 as builder | ||
# CentOS 7 has reached EOL | ||
RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \ | ||
&& sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \ | ||
&& sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | ||
|
||
LABEL org.opencontainers.image.authors "[email protected]" | ||
LABEL org.opencontainers.image.description "binary builder for tiflash" | ||
LABEL org.opencontainers.image.source = "https://github.com/PingCAP-QE/artifacts" | ||
LABEL org.opencontainers.image.description "binary builder for TiFlash" | ||
LABEL org.opencontainers.image.source "https://github.com/PingCAP-QE/artifacts" | ||
|
||
ARG TIFLASH_VER=v8.3.0 | ||
RUN FILE=$([ "$(arch)" = "aarch64" ] && echo "bake_llvm_base_aarch64.sh" || echo "bake_llvm_base_amd64.sh"); \ | ||
|
@@ -31,19 +31,19 @@ ENV CC=clang | |
ENV CXX=clang++ | ||
ENV LD=ld.lld | ||
|
||
########### stage: Buiding | ||
########### stage: building | ||
FROM builder as building | ||
|
||
ADD . /tiflash | ||
RUN /tiflash/release-centos7-llvm/scripts/build-release.sh | ||
RUN mkdir output && mv release-centos7-llvm/tiflash output/tiflash | ||
RUN output/tiflash/tiflash version | ||
ADD . /ws | ||
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true /ws/release-centos7-llvm/scripts/build-release.sh | ||
RUN mkdir /ws/output && mv /ws/release-centos7-llvm/tiflash /ws/output/tiflash | ||
RUN /ws/output/tiflash/tiflash version | ||
|
||
########### stage: Final image | ||
FROM ghcr.io/pingcap-qe/bases/tiflash-base:v1.9.2 | ||
|
||
ENV LD_LIBRARY_PATH /tiflash | ||
COPY --from=building /tiflash/output/tiflash /tiflash | ||
COPY --from=building /ws/output/tiflash /tiflash | ||
|
||
ENTRYPOINT ["/tiflash/tiflash", "server"] | ||
|
||
|