build_inf_centos: add ORAN_REL in issue files
[pti/rtp.git] / scripts / build_inf_centos / build_inf_prepare_jenkins.sh
index f530a66..3a7966f 100755 (executable)
@@ -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