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/