未验证 提交 d5b8ae7a 编写于 作者: S shaoyue 提交者: GitHub

[skip e2e] Add RPM build spec (#14153)

Signed-off-by: Nshaoyue.chen <shaoyue.chen@zilliz.com>
上级 d7552c5c
......@@ -174,3 +174,22 @@ milvus-tools: print-build-info
@mkdir -p $(INSTALL_PATH)/tools && go env -w CGO_ENABLED="1" && GO111MODULE=on $(GO) build \
-ldflags="-X 'main.BuildTags=$(BUILD_TAGS)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)'" \
-o $(INSTALL_PATH)/tools $(PWD)/cmd/tools/* 1>/dev/null
rpm-setup:
@echo "Setuping rpm env ...;"
@ build/rpm/setup-env.sh
rpm: install
@echo "Note: run 'make rpm-setup' to setup build env for rpm builder"
@echo "Building rpm ...;"
@yum -y install rpm-build rpmdevtools wget
@rm -rf ~/rpmbuild/BUILD/*
@rpmdev-setuptree
@wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz && tar -xf etcd-v3.5.0-linux-amd64.tar.gz
@cp etcd-v3.5.0-linux-amd64/etcd bin/etcd
@wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2021-02-14T04-01-33Z -O bin/minio
@cp -r bin ~/rpmbuild/BUILD/
@cp -r lib ~/rpmbuild/BUILD/
@cp -r configs ~/rpmbuild/BUILD/
@cp -r build/rpm/services ~/rpmbuild/BUILD/
@QA_RPATHS="$[ 0x001|0x0002|0x0020 ]" rpmbuild -ba ./build/rpm/milvus.spec
%if 0%{!?version:1}
%global version 2.0.0
%endif
%if 0%{!?release:1}
%global release %(date +%Y%m%d)%{?dist}
%endif
Name: milvus
Version: %{version}
Release: %{release}
Summary: Milvus V2 RPM
License: Apache License 2.0
Requires(preun): libstdc++ libgomp tbb-devel
# tbb-devel actually provides it, but not defined
Provides: libtbb.so()(64bit)
BuildArch: x86_64
%description
Milvus is an open-source vector database built to power embedding similarity search and AI applications.
Milvus makes unstructured data search more accessible, and provides a consistent user experience regardless of the deployment environment.
%install
# dir
mkdir -p %{buildroot}/usr/bin/
mkdir -p %{buildroot}/lib64/milvus
mkdir -p %{buildroot}/etc/milvus/configs/advanced
mkdir -p %{buildroot}/etc/systemd/system/
mkdir -p %{buildroot}/etc/ld.so.conf.d/
# bin
echo 'export MILVUSCONF=/etc/milvus/configs/' > %{buildroot}/usr/bin/milvus
echo 'milvus-server $@' >> %{buildroot}/usr/bin/milvus
chmod 755 %{buildroot}/usr/bin/milvus
install -m 755 bin/milvus %{buildroot}/usr/bin/milvus-server
install -m 755 bin/etcd %{buildroot}/usr/bin/milvus-etcd
install -m 755 bin/minio %{buildroot}/usr/bin/milvus-minio
# lib
install -m 755 lib/libmilvus_indexbuilder.so %{buildroot}/lib64/milvus/libmilvus_indexbuilder.so
install -m 755 lib/libmilvus_segcore.so %{buildroot}/lib64/milvus/libmilvus_segcore.so
install -m 755 /usr/lib/libopenblas-r0.3.9.so %{buildroot}/lib64/milvus/libopenblas.so.0
install -m 755 lib/libfiu.so.1.00 %{buildroot}/lib64/milvus/libfiu.so.0
install -m 755 lib/libngt.so.1.12.0 %{buildroot}/lib64/milvus/libngt.so.1
install -m 755 /usr/lib64/libgfortran.so.4.0.0 %{buildroot}/lib64/milvus/libgfortran.so.4
# conf
install -m 755 configs/milvus.yaml %{buildroot}/etc/milvus/configs/milvus.yaml
install -m 755 configs/advanced/etcd.yaml %{buildroot}/etc/milvus/configs/advanced/etcd.yaml
# service
install -m 644 services/milvus.service %{buildroot}/etc/systemd/system/milvus.service
install -m 644 services/milvus-etcd.service %{buildroot}/etc/systemd/system/milvus-etcd.service
install -m 644 services/milvus-minio.service %{buildroot}/etc/systemd/system/milvus-minio.service
# ldconf
echo '/usr/lib64/milvus' >> %{buildroot}/etc/ld.so.conf.d/milvus.conf
chmod 644 %{buildroot}/etc/ld.so.conf.d/milvus.conf
%post
# update ld, systemd cache
ldconfig
systemctl daemon-reload
%preun
# disable service before remove
systemctl stop milvus
systemctl disable milvus
%postun
# update ld, systemd cache
ldconfig
systemctl daemon-reload
%files
/usr/bin/milvus
/usr/bin/milvus-server
/usr/bin/milvus-etcd
/usr/bin/milvus-minio
/lib64/milvus/libmilvus_indexbuilder.so
/lib64/milvus/libmilvus_segcore.so
/lib64/milvus/libopenblas.so.0
/lib64/milvus/libfiu.so.0
/lib64/milvus/libngt.so.1
/lib64/milvus/libgfortran.so.4
/etc/milvus/configs/milvus.yaml
/etc/milvus/configs/advanced/etcd.yaml
/etc/systemd/system/milvus.service
/etc/systemd/system/milvus-etcd.service
/etc/systemd/system/milvus-minio.service
/etc/ld.so.conf.d/milvus.conf
%changelog
# let's skip this for now
# Simple Milvus systemd service file
#
# systemd supports lots of fancy features, look here (and linked docs) for a full list:
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html
#
# Note: this file ( /usr/lib/systemd/system/milvus-etcd.service )
# will be overwritten on package upgrade, please copy the file to
#
# /etc/systemd/system/milvus-etcd.service
#
# to make needed changes.
#
# systemd-delta can be used to check differences between the two milvus-etcd.service files.
#
[Unit]
Description=Etcd of Milvus Standalone Server
After=network.target syslog.target
PartOf=milvus.service
[Install]
WantedBy=multi-user.target
Alias=milvus-etcd.service
[Service]
StandardOutput=journal
StandardError=inherit
Restart=always
# Start main service
ExecStart=/usr/bin/milvus-etcd --data-dir /etc/milvus/etcd-data
# Simple Milvus systemd service file
#
# systemd supports lots of fancy features, look here (and linked docs) for a full list:
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html
#
# Note: this file ( /usr/lib/systemd/system/milvus-minio.service )
# will be overwritten on package upgrade, please copy the file to
#
# /etc/systemd/system/milvus-minio.service
#
# to make needed changes.
#
# systemd-delta can be used to check differences between the two milvus-minio.service files.
#
[Unit]
Description=MinIO of Milvus Standalone Server
After=network.target syslog.target
PartOf=milvus.service
[Install]
WantedBy=multi-user.target
Alias=milvus-minio.service
[Service]
Type=simple
StandardOutput=journal
StandardError=inherit
Restart=always
# Start main service
ExecStart=/usr/bin/milvus-minio server /etc/milvus/minio-data
# Simple Milvus systemd service file
#
# systemd supports lots of fancy features, look here (and linked docs) for a full list:
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html
#
# Note: this file ( /usr/lib/systemd/system/milvus.service )
# will be overwritten on package upgrade, please copy the file to
#
# /etc/systemd/system/milvus.service
#
# to make needed changes.
#
# systemd-delta can be used to check differences between the two milvus.service files.
#
[Unit]
Description=Milvus Standalone Server
Wants=milvus-etcd.service milvus-minio.service
Requires=milvus-etcd.service milvus-minio.service
After=network.target syslog.target milvus-etcd.service milvus-minio.service
[Install]
WantedBy=multi-user.target
Alias=milvus.service
[Service]
Type=simple
StandardOutput=journal
StandardError=inherit
Restart=always
# Start main service
Environment="MILVUSCONF=/etc/milvus/configs/"
ExecStart=/usr/bin/milvus-server run standalone
\ No newline at end of file
#!/bin/bash
# ref: github.com/milvus-io/milvus/docker/buidler/cpu/centos7/Dockerfile github.com/milvus-io/milvus/docker/openblas/centos7/Dockerfile
# install devltoolset
yum install -y epel-release centos-release-scl-rh && yum install -y wget make automake \
devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-gcc-gfortran && \
rm -rf /var/cache/yum/* && \
echo "source scl_source enable devtoolset-7" >> /etc/profile.d/devtoolset-7.sh
# install openblas
source /etc/profile.d/devtoolset-7.sh && \
wget https://github.com/xianyi/OpenBLAS/archive/v0.3.9.tar.gz && \
tar zxvf v0.3.9.tar.gz && cd OpenBLAS-0.3.9 && \
make TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1 USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="-O3 -g -fPIC" FCOMMON_OPT="-O3 -g -fPIC -frecursive" NMAX="NUM_THREADS=128" LIBPREFIX="libopenblas" LAPACKE="NO_LAPACKE=1" INTERFACE64=0 NO_STATIC=1 && \
make PREFIX=/usr NO_STATIC=1 install && \
cd .. && rm -rf OpenBLAS-0.3.9 && rm v0.3.9.tar.gz
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib"
# Install tbb
source /etc/profile.d/devtoolset-7.sh && \
git clone https://github.com/wjakob/tbb.git && \
cd tbb/build && \
cmake .. && make -j && make install && \
cd ../../ && rm -rf tbb/
# Install boost
source /etc/profile.d/devtoolset-7.sh && \
wget -q https://boostorg.jfrog.io/artifactory/main/release/1.65.1/source/boost_1_65_1.tar.gz && \
tar zxf boost_1_65_1.tar.gz && cd boost_1_65_1 && \
./bootstrap.sh --prefix=/usr/local --with-toolset=gcc --without-libraries=python && \
./b2 -j2 --prefix=/usr/local --without-python toolset=gcc install && \
cd ../ && rm -rf ./boost_1_65_1*
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
# Install Go
export GOPATH="/go"
export GOROOT="/usr/local/go"
export GO111MODULE="on"
export PATH="$GOPATH/bin:$GOROOT/bin:$PATH"
mkdir -p /usr/local/go && wget -qO- "https://golang.org/dl/go1.15.2.linux-amd64.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ${GOPATH}/bin v1.43.0 && \
export GO111MODULE=on && go get github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.2.1 && \
go get -v github.com/ramya-rao-a/go-outline && \
go get -v golang.org/x/tools/gopls && \
go get -v github.com/uudashr/gopkgs/v2/cmd/gopkgs && \
go get -v github.com/go-delve/delve/cmd/dlv && \
go get -v honnef.co/go/tools/cmd/staticcheck && \
go clean --modcache && \
chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR)
ln -s /go/bin/dlv /go/bin/dlv-dap
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册