github.com/cloudberrydb/gpbackup@v1.0.3-0.20240118031043-5410fd45eed6/ci/scripts/build-gppkgs.bash (about) 1 #!/bin/bash 2 3 set -ex 4 5 # Create native package installation files 6 function build_rpm_rhel() { 7 export ARCH=x86_64 8 # gpdb4 gppkgs must have 'orca' in its version because of some version validation 9 GPDB_VER=( "4.3orca" "5" "6" "7") 10 RPMROOT=/tmp/gpbackup_tools_rpm 11 mkdir -p ${RPMROOT}/{BUILD,RPMS,SOURCES,SPECS,SRPMS} 12 13 # Move source targz to SOURCES 14 cp gpbackup_tar/bin_gpbackup.tar.gz ${RPMROOT}/SOURCES/. 15 cp gpbackup/gppkg/gpbackup_tools.spec.in ${RPMROOT}/SPECS/gpbackup_tools.spec 16 17 sudo yum -y install rpm-build 18 rpmbuild -bb ${RPMROOT}/SPECS/gpbackup_tools.spec \ 19 --define "%_topdir ${RPMROOT}" \ 20 --define "debug_package %{nil}" \ 21 --define "rpm_version ${GPBACKUP_TOOLS_VERSION}" \ 22 --define "operating_system ${OS}" 23 24 PKG_FILES=${RPMROOT}/RPMS/x86_64/*${OS}*.rpm 25 } 26 27 function build_deb_ubuntu() { 28 export ARCH=amd64 29 GPDB_VER=( "6" ) 30 DEB_NAME=gpbackup_tools-${GPBACKUP_TOOLS_VERSION}-${OS}-amd64.deb 31 PACKAGE_NAME=${DEB_NAME%.*} 32 33 # gettext-base package is required to run envsubst command 34 apt update && apt-get install -y gettext-base 35 mkdir -p deb_build_dir 36 pushd deb_build_dir 37 mkdir -p ${PACKAGE_NAME}/DEBIAN 38 # control file 39 envsubst < ../gpbackup/gppkg/gpbackup_control.in > ${PACKAGE_NAME}/DEBIAN/control 40 tar -xzf ../gpbackup_tar/bin_gpbackup.tar.gz -C ${PACKAGE_NAME} 41 dpkg-deb --build ${PACKAGE_NAME} 42 popd 43 44 PKG_FILES=deb_build_dir/${DEB_NAME} 45 } 46 47 export GPBACKUP_TOOLS_VERSION=$(cat gpbackup-tools-versions/pkg_version) 48 echo "Building installer for gpbackup version: ${GPBACKUP_TOOLS_VERSION} platform: ${OS}" 49 50 if [[ ${OS} == "RHEL" || ${OS} == "SLES" ]]; then 51 build_rpm_rhel 52 elif [[ ${OS} == "ubuntu" ]]; then 53 build_deb_ubuntu 54 fi 55 56 # Install gpdb binaries 57 if [[ ! -f bin_gpdb/bin_gpdb.tar.gz ]]; then 58 mv bin_gpdb/{*.tar.gz,bin_gpdb.tar.gz} 59 fi 60 mkdir -p /usr/local/greenplum-db-devel 61 tar -xzf bin_gpdb/bin_gpdb.tar.gz -C /usr/local/greenplum-db-devel 62 63 # Setup gpadmin user 64 gpdb_src/concourse/scripts/setup_gpadmin_user.bash 65 source /usr/local/greenplum-db-devel/greenplum_path.sh 66 67 # Create gppkg from native package 68 for i in ${GPDB_VER[@]}; do 69 # spec file 70 export GPDB_MAJOR_VERSION=${i} 71 envsubst < gpbackup/gppkg/gppkg_spec.yml.in > gppkg_spec.yml 72 cat gppkg_spec.yml 73 74 mkdir -p gppkg 75 cp gppkg_spec.yml ${PKG_FILES} gppkg/ 76 gppkg --build gppkg/ 77 done 78 echo "Successfully built gppkg" 79 80 # Prepare to publish output 81 chown gpadmin:gpadmin *.gppkg 82 ls -l *.gppkg 83 mv *.gppkg gppkgs/