X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=scripts%2Fbuild_inf_centos%2Fbuild_inf_prepare_jenkins.sh;h=3a7966f07438be1ef00f6fa6c4b6165dd952693a;hb=313543f34998d2aeac48bb133d9d7c53d5fc058a;hp=f530a66ec3a470f154171a295be6762ca0c9630e;hpb=ffc0ac5cdd88684ca76ff42cda62ca2fe1bbf051;p=pti%2Frtp.git diff --git a/scripts/build_inf_centos/build_inf_prepare_jenkins.sh b/scripts/build_inf_centos/build_inf_prepare_jenkins.sh index f530a66..3a7966f 100755 --- a/scripts/build_inf_centos/build_inf_prepare_jenkins.sh +++ b/scripts/build_inf_centos/build_inf_prepare_jenkins.sh @@ -22,7 +22,10 @@ set -e -o pipefail # Variables ######################################################################### WORKSPACE="" -MIRROR_CONTAINER_IMG=infbuilder/inf-centos-mirror:2022.05-stx.6.0 +MIRROR_VER=stx-6.0 +MIRROR_CONTAINER_IMG=infbuilder/inf-centos-mirror:2022.05-${MIRROR_VER} + +SCRIPTS_NAME=$(basename $0) ######################################################################### # Common Functions @@ -31,7 +34,7 @@ MIRROR_CONTAINER_IMG=infbuilder/inf-centos-mirror:2022.05-stx.6.0 help_info () { cat << ENDHELP Usage: -$(basename $0) [-w WORKSPACE_DIR] [-h] +${SCRIPTS_NAME} [-w WORKSPACE_DIR] [-h] where: -w WORKSPACE_DIR is the path for the builds -h this help info @@ -44,18 +47,21 @@ ENDHELP echo_step_start() { [ -n "$1" ] && msg_step=$1 echo "#########################################################################################" - echo "## STEP START: ${msg_step}" + echo "## ${SCRIPTS_NAME} - STEP START: ${msg_step}" echo "#########################################################################################" } echo_step_end() { [ -n "$1" ] && msg_step=$1 echo "#########################################################################################" - echo "## STEP END: ${msg_step}" + echo "## ${SCRIPTS_NAME} - STEP END: ${msg_step}" echo "#########################################################################################" echo } +echo_info () { + echo "INFO: $1" +} while getopts "w:h" OPTION; do case ${OPTION} in @@ -75,7 +81,7 @@ get_mirror () { docker pull ${MIRROR_CONTAINER_IMG} docker create -ti --name inf-centos-mirror ${MIRROR_CONTAINER_IMG} sh - docker cp inf-centos-mirror:/mirror ${MIRROR_DIR} + docker cp inf-centos-mirror:/mirror_${MIRROR_VER} ${MIRROR_DIR} docker rm inf-centos-mirror echo_step_end @@ -85,28 +91,35 @@ get_mirror () { ######################################################################### # Main process ######################################################################### -msg_step="Prepare for jenkins build" +msg_step="Prepare build directories" +echo_step_start set -x export BUILD_GROUP="jenkins" export WGET_OPENDEV="wget --no-check-certificate" export LOCALDISK="${WORKSPACE}/localdisk" export MIRROR_DIR="${WORKSPACE}/mirror" +export TOOLS_DIR="${WORKSPACE}/tools" mkdir -p ${LOCALDISK}/loadbuild/mock-cache mkdir -p ${LOCALDISK}/loadbuild/mock mkdir -p ${LOCALDISK}/designer mkdir -p ${LOCALDISK}/loadbuild -#sudo mkdir -p ${MIRROR_DIR}/CentOS -get_mirror - sudo chmod 775 ${LOCALDISK}/loadbuild/mock sudo chown root:mock ${LOCALDISK}/loadbuild/mock sudo chmod 775 ${LOCALDISK}/loadbuild/mock-cache sudo chown root:mock ${LOCALDISK}/loadbuild/mock-cache -# Download required dependencies by mirror/build processes. +set +x +echo_step_end + +get_mirror + +msg_step="Install/downlaod/config required dependencies by mirror/build processes." +echo_step_start + +echo_info "Install required packages" sudo yum install -y \ anaconda \ anaconda-runtime \ @@ -121,13 +134,11 @@ sudo yum install -y \ createrepo \ createrepo_c \ deltarpm \ - docker-client \ expat-devel \ flex \ isomd5sum \ gcc \ gettext \ - git \ libguestfs-tools \ libtool \ libxml2 \ @@ -167,22 +178,29 @@ sudo yum install -y \ vim-enhanced \ wget -# clone the tools repo -cd ~ + + +echo_info "Clone the tools repo" +cd ${WORKSPACE} git clone https://opendev.org/starlingx/tools.git -# mock custumizations +echo_info "mock custumizations" # forcing chroots since a couple of packages naughtily insist on network access and # we dont have nspawn and networks happy together. +set -x +sudo groupadd -g 9001 mockbuild sudo useradd -s /sbin/nologin -u 9001 -g 9001 mockbuild sudo rmdir /var/lib/mock sudo ln -s ${LOCALDISK}/loadbuild/mock /var/lib/mock +sudo mv /var/cache/mock/* ${LOCALDISK}/loadbuild/mock-cache/ sudo rmdir /var/cache/mock sudo ln -s ${LOCALDISK}/loadbuild/mock-cache /var/cache/mock echo "config_opts['use_nspawn'] = False" | sudo tee -a /etc/mock/site-defaults.cfg echo "config_opts['rpmbuild_networking'] = True" | sudo tee -a /etc/mock/site-defaults.cfg echo | sudo tee -a /etc/mock/site-defaults.cfg +set +x +echo_info "Install required cpan modules" # cpan modules, installing with cpanminus to avoid stupid questions since cpan is whack sudo cpanm --notest Fatal sudo cpanm --notest XML::SAX @@ -190,23 +208,23 @@ sudo cpanm --notest XML::SAX::Expat sudo cpanm --notest XML::Parser sudo cpanm --notest XML::Simple -# Install repo tool +echo_info "Install repo tool" sudo wget https://storage.googleapis.com/git-repo-downloads/repo -O /usr/local/bin/repo sudo chmod a+x /usr/local/bin/repo -# installing go and setting paths +echo_info "Install go and setting paths" export GOPATH="/usr/local/go" export PATH="${GOPATH}/bin:${PATH}" sudo yum install -y golang sudo mkdir -p ${GOPATH}/bin -curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sudo sh +curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sudo -E sh -# pip installs +echo_info "Install pip packages" # Install required python modules globally; versions are in the constraints file. # Be careful not to replace modules provided by RPMs as it may break # other system packages. Look for warnings similar to "Uninstalling a # distutils installed project has been deprecated" from pip. -sudo pip install -c ~/tools/toCOPY/builder-constraints.txt \ +sudo pip install -c ${TOOLS_DIR}/toCOPY/builder-constraints.txt \ testrepository \ fixtures \ pbr \ @@ -215,45 +233,41 @@ sudo pip install -c ~/tools/toCOPY/builder-constraints.txt \ junitxml \ testtools -# Create a sane py27 virtualenv -virtualenv /opt/py27 && \ - source /opt/py27/bin/activate && \ - sudo pip install -c ~/tools/toCOPY/builder-opt-py27-constraints.txt \ - tox \ - && \ - for prog in tox ; do \ - ln -s /opt/py27/bin/$prog /usr/bin ; \ - done - -# Inherited tools for mock stuff + +echo_info "Inherited tools for mock stuff" # we at least need the mock_cache_unlock tool # they install into /usr/bin -sudo cp -rf ~/tools/toCOPY/mock_overlay /opt/mock_overlay -cd /opt/mock_overlay +set -x +mkdir -p ${WORKSPACE}/opt +cp -rf ${TOOLS_DIR}/toCOPY/mock_overlay ${WORKSPACE}/opt/mock_overlay +cd ${WORKSPACE}/opt/mock_overlay make sudo make install # This image requires a set of scripts and helpers # for working correctly, in this section they are # copied inside the image. -sudo cp ~/tools/toCOPY/finishSetup.sh /usr/local/bin -sudo cp ~/tools/toCOPY/populate_downloads.sh /usr/local/bin -sudo cp ~/tools/toCOPY/generate-local-repo.sh /usr/local/bin -sudo cp ~/tools/toCOPY/generate-centos-repo.sh /usr/local/bin -sudo cp ~/tools/toCOPY/lst_utils.sh /usr/local/bin +sudo cp ${TOOLS_DIR}/toCOPY/finishSetup.sh /usr/local/bin +sudo cp ${TOOLS_DIR}/toCOPY/populate_downloads.sh /usr/local/bin +sudo cp ${TOOLS_DIR}/toCOPY/generate-local-repo.sh /usr/local/bin +sudo cp ${TOOLS_DIR}/toCOPY/generate-centos-repo.sh /usr/local/bin +sudo cp ${TOOLS_DIR}/toCOPY/lst_utils.sh /usr/local/bin # centos locales are broken. this needs to be run after the last yum install/update sudo localedef -i en_US -f UTF-8 en_US.UTF-8 -# setup -sudo mkdir -p /www/run -sudo mkdir -p /www/logs -sudo mkdir -p /www/home -sudo mkdir -p /www/root/htdocs/localdisk -sudo ln -s ${LOCALDISK}/loadbuild /www/root/htdocs/localdisk/loadbuild -sudo ln -s ${MIRROR_DIR}/CentOS /www/root/htdocs/CentOS -sudo ln -s ${LOCALDISK}/designer /www/root/htdocs/localdisk/designer -sudo ln -s ${WORKSPACE} /www/root/htdocs/workspace +echo_info "Setup for lighttpd" +sudo mkdir -p /www +sudo chown ${USER}:${BUILD_GROUP} /www +mkdir -p /www/run +mkdir -p /www/logs +mkdir -p /www/home +mkdir -p /www/root/htdocs/localdisk +mkdir -p /www/root/htdocs/$(dirname ${WORKSPACE}) +ln -s ${LOCALDISK}/loadbuild /www/root/htdocs/localdisk/loadbuild +ln -s ${LOCALDISK}/designer /www/root/htdocs/localdisk/designer +ln -s ${MIRROR_DIR}/CentOS /www/root/htdocs/CentOS +ln -s ${WORKSPACE} /www/root/htdocs/${WORKSPACE} # lighthttpd setup # chmod for /var/log/lighttpd fixes a centos issue @@ -272,7 +286,6 @@ sudo sed -i -e 's%^var\.log_root.*$%var.log_root = "/www/logs"%g' \ -e "s/server.bind/#server.bind/g" \ -e "s/server.document-root/#server.document-root/g" \ -e "s/server.dirlisting/#server.dirlisting/g" \ - -e "s/dir-listing.activate/#dir-listing.activate/g" \ /etc/lighttpd/lighttpd.conf echo "server.port = 8088" | sudo tee -a /etc/lighttpd/lighttpd.conf @@ -281,6 +294,10 @@ echo "server.username = \"$USER\"" | sudo tee -a /etc/lighttpd/lighttpd.conf echo "server.groupname = \"$BUILD_GROUP\"" | sudo tee -a /etc/lighttpd/lighttpd.conf echo "server.bind = \"localhost\"" | sudo tee -a /etc/lighttpd/lighttpd.conf echo "server.document-root = \"/www/root/htdocs\"" | sudo tee -a /etc/lighttpd/lighttpd.conf + +sudo sed -i "s/dir-listing.activate/#dir-listing.activate/g" \ + /etc/lighttpd/conf.d/dirlisting.conf + echo "dir-listing.activate = \"enable\"" | sudo tee -a /etc/lighttpd/conf.d/dirlisting.conf sudo /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf @@ -289,8 +306,8 @@ sudo chmod a+x /usr/local/bin/* # Customizations for mirror creation sudo rm -f /etc/yum.repos.d/* -sudo cp -f ~/tools/centos-mirror-tools/yum.repos.d/* /etc/yum.repos.d/ -sudo cp -f ~/tools/centos-mirror-tools/rpm-gpg-keys/* /etc/pki/rpm-gpg/ +sudo cp -f ${TOOLS_DIR}/centos-mirror-tools/yum.repos.d/* /etc/yum.repos.d/ +sudo cp -f ${TOOLS_DIR}/centos-mirror-tools/rpm-gpg-keys/* /etc/pki/rpm-gpg/ # Import GPG keys sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* @@ -298,4 +315,10 @@ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* # Try to continue a yum command even if a StarlingX repo is unavailable. sudo yum-config-manager --setopt=StarlingX\*.skip_if_unavailable=1 --save +# Create a sane py27 virtualenv +virtualenv ${WORKSPACE}/opt/py27 +source ${WORKSPACE}/opt/py27/bin/activate +pip install -c ${TOOLS_DIR}/toCOPY/builder-opt-py27-constraints.txt tox +sudo ln -s ${WORKSPACE}/opt/py27/bin/tox /usr/bin + echo_step_end