From 8fdbfe78282009cef8357ff31c2e5ad39ef0b059 Mon Sep 17 00:00:00 2001 From: Jan Benedikt Date: Tue, 15 Oct 2019 06:07:46 -0400 Subject: Fixing wrong dependency directory in create_repo Improving logic of create_repo.sh script. Changed from one common path to two different paths. One path for cloned offline-installer directory and second for resources directory. Issue-ID: OOM-2136 Change-Id: I627db02594c25df172c270ea015f167ea7050ca0 Signed-off-by: Jan Benedikt --- build/create_repo.sh | 79 +++++++++++++++++++++++++++++----------------- build/docker-entrypoint.sh | 66 ++++++++++++++++++-------------------- docs/BuildGuide.rst | 22 ++++--------- 3 files changed, 88 insertions(+), 79 deletions(-) diff --git a/build/create_repo.sh b/build/create_repo.sh index 8e12a16e..b6db6ad2 100755 --- a/build/create_repo.sh +++ b/build/create_repo.sh @@ -1,48 +1,67 @@ #!/usr/bin/env bash container_name="centos_repo" -# Path to folder with clonned offline-installer build directory with docker_entrypoint script -volume_directory="." -# Path inside container -container_volume="/mnt/" +# Path to folder with cloned offline-installer build directory with docker_entrypoint script +volume_offline_directory="$(readlink -f $(dirname ${0}))" +# Path for directory where repository will be created +volume_repo_directory="$(pwd)" +# Path inside container with cloned offline-installer build directory +container_offline_volume="/mnt/offline/" +# Path inside container where will be created repository +container_repo_volume="/mnt/repo/" # Docker image name and version docker_image="centos:centos7.6.1810" +# Expected directory for RPM packages +expected_dir="resources/pkg/rhel" + +help () { + echo "Script for run docker container with RPM repository" + echo "usage: create_repo.sh [-d|--destination-repository output directory] [-c|--cloned-directory input directory]" + echo "-h --help: Show this help" + echo "-d --destination-repository: set path where will be stored RPM packages. Default value is current directory" + echo "-c --cloned-directory: set path where is stored this script and docker-entrypoint script (offline-installer/build directory). Fill it just when you want to use different script/datalists" + echo "If build folder from offline repository is not specified will be used default path of current folder." +} # Getting input parametters POSITIONAL=() +if [[ $# -eq 0 ]] ; then + help # show help + exit 0 +fi while [[ $# -gt 0 ]] do - key="$1" - case $key in + case "$1" in -h|--help) # Help parametter - echo -e "Script for run docker container with RPM repository\n" - echo "-h --help: Show this help" - echo -e "-d --directory: set root path with offline-installer directory and repository directory for RPM packages\n" - echo "If build folder from offline repository is not specified will be used default path of current folder." - shift # past argument - shift # past value - exit + help # show help + exit 0 ;; - -d|--directory) + -c|--cloned-directory) # Directory parametter - # Sets path where is clonned offline-installer build directory - volume_directory="$2" - shift # past argument - shift # past value + # Sets path where is cloned offline-installer build directory + volume_offline_directory="$2" ;; - --default) - DEFAULT=YES - shift # past argument + -d|--destination-repository) + # Repository direcotry parametter + # Sets path where will be repository created + volume_repo_directory="$2" ;; - *) + *) # unknown option - POSITIONAL+=("$1") # save it in an array for later - shift # past argument + help # show help + exit 1 ;; esac + shift;shift done +# Check if path contains expected path "resources/pkg/rhel" +if ! [[ "/$volume_repo_directory/" = *"/$expected_dir/"* ]]; then + # Create repo folder if it not exists + volume_repo_directory="$volume_repo_directory"/resources/pkg/rhel + [ ! -d "$volume_repo_directory" ] && mkdir -p $volume_repo_directory +fi #Check if container "centos-repo" is running if [ ! "$(docker ps -q -f name=$container_name)" ]; then @@ -56,10 +75,12 @@ if [ ! "$(docker ps -q -f name=$container_name)" ]; then # docker run -d \ --name $container_name \ - -v ${volume_directory}:${container_volume} \ - --entrypoint="${container_volume}offline-installer/build/docker-entrypoint.sh" \ - -it ${docker_image} \ + -v ${volume_offline_directory}:${container_offline_volume} \ + -v ${volume_repo_directory}:${container_repo_volume} \ --rm \ - --directory ${container_volume}resources/pkg/rhel/ \ - --list ${container_volume}offline-installer/build/data_lists/ + --entrypoint="${container_offline_volume}docker-entrypoint.sh" \ + -it ${docker_image} \ + --directory ${container_repo_volume} \ + --list ${container_offline_volume}data_lists/ + docker logs $(docker ps --filter "name=centos_repo" --format '{{.ID}}' -a) -f fi diff --git a/build/docker-entrypoint.sh b/build/docker-entrypoint.sh index 798e1f0b..1b4ec53c 100755 --- a/build/docker-entrypoint.sh +++ b/build/docker-entrypoint.sh @@ -1,75 +1,71 @@ #!/usr/bin/env bash # Path where will be created repository (in container) -OOM_REPO_DIR="" +OFFLINE_REPO_DIR="" # Path where is stored onap_rpm.list file RPM_LIST_DIR="" +help () { + echo -e "Docker entrypoint script for creating RPM repository\n" + echo "usage: create-repo.sh [-d|--directory output directory] [-l|--list input rpm list directory]" + echo "-h --help: Show this help" + echo "-d --directory: set path for repo directory in container" + echo -e "-l --list: set path where rpm list is stored in container\n" + echo "Both paths have to be set with shared volume between" + echo "container and host computer. Default path in container is: /tmp/" + echo "Repository will be created at: //resources/pkg/rhel/" + echo "RMP list is stored at: ./data_list/" +} + # Getting input parametters POSITIONAL=() +if [[ $# -eq 0 ]] ; then + help # show help + exit 0 +fi while [[ $# -gt 0 ]] do - key="$1" - case $key in + case "$1" in -h|--help) # Help parametter - echo -e "Docker entrypoint script for creating RPM repository\n" - echo "-h --help: Show this help" - echo "-d --directory: set path for repo directory in container" - echo -e "-l --list: set path where rpm list is stored in container\n" - echo "Both paths have to be set with shared volume between" - echo "container and host computer. Default path in container is: /tmp/" - echo "Repository will be created at: //resources/pkg/rhel/" - echo "RMP list is stored at: //offline-installer/build/data_list/" - shift # past argument - shift # past value + help # show help exit ;; -d|--directory) # Directory parametter # Sets path where will be created reposity - OOM_REPO_DIR="$2" - shift # past argument - shift # past value + OFFLINE_REPO_DIR="$2" ;; -l|--list) # List parametter # Sets path where is stored onap_rpm.list file RPM_LIST_DIR="$2" - shift # past argument - shift # past value - ;; - --default) - DEFAULT=YES - shift # past argument ;; - *) + *) # unknown option - POSITIONAL+=("$1") # save it in an array for later - shift # past argument + help # show help + exit ;; esac + shift;shift done # Testing if directory parametter was used -# If not variable is sets to default value /tmp/resources/pkg/rhel -if test -z "$OOM_REPO_DIR" +# If not variable is sets to default value /tmp/repo/resources/pkg/rhel +if test -z "$OFFLINE_REPO_DIR" then - OOM_REPO_DIR="/tmp/resources/pkg/rhel" + OFFLINE_REPO_DIR="/tmp/repo/" fi # Testing if list parametter was used -# If not variable is sets to default value /tmp/data-list +# If not variable is sets to default value /tmp/offline/data-list if test -z "$RPM_LIST_DIR" then - RPM_LIST_DIR="/tmp/offline-installer/build/data_list/" + RPM_LIST_DIR="/tmp/offline/data_list/" fi -# Create repo folder -mkdir $OOM_REPO_DIR -p - # Install createrepo package for create repository in folder # and yum-utils due to yum-config-manager for adding docker repository yum install createrepo yum-utils -y @@ -78,7 +74,7 @@ yum install createrepo yum-utils -y yum-config-manager --add-repo=https://download.docker.com/linux/centos/7/x86_64/stable/ # Download all packages from onap_rpm.list via yumdownloader to repository folder -for i in $(cat ${RPM_LIST_DIR}onap_rpm.list | awk '{print $1}');do yumdownloader --resolve --downloadonly --destdir=${OOM_REPO_DIR} $i -y; done +for i in $(cat ${RPM_LIST_DIR}onap_rpm.list | awk '{print $1}');do yumdownloader --resolve --downloadonly --destdir=${OFFLINE_REPO_DIR} $i -y; done # In repository folder create repository -createrepo $OOM_REPO_DIR +createrepo $OFFLINE_REPO_DIR diff --git a/docs/BuildGuide.rst b/docs/BuildGuide.rst index 9b581cdf..8b0c9b28 100644 --- a/docs/BuildGuide.rst +++ b/docs/BuildGuide.rst @@ -110,16 +110,17 @@ Part 2. Download artifacts for offline installer .. note:: Skip this step if you have already all necessary resources and continue with Part 3. Populate local nexus -Before downloading artifacts with ./download.py script is necessary to create local repository with RPM packages. -This repository is created with docker container where is downloaded and stored in ../resources/pkg/rhel directory. + +There need to be created RPM repository containing packages which need to be installed on all nodes. :: - # run the docker container with actual directory of offline-installer and resources + + # run the docker container with -d parameter for destination directory with RPM packages ./offline-installer/build/create_repo.sh -d $(pwd) -.. note:: - If script fails with permissions, problem could be with SeLinux. Issue is possible to solve by: +.. note:: If script fails with permissions, problem could be with SeLinux. Issue is possible to solve by: :: + # Change security context of directory chcon -Rt svirt_sandbox_file_t $(pwd) @@ -264,16 +265,7 @@ Appendix 1. Step-by-step download procedure # Following step will download rke, kubectl and helm binaries ./build/download/download.py --http ./build/data_lists/infra_bin_utils.sh ../resources/downloads -**Step 5 - rpms** - -:: - - # Following step will download all rpms and create repo - ./build/download/download.py --rpm ./build/data_lists/onap_rpm.list ../resources/pkg/rhel - - createrepo ../resources/pkg/rhel - -**Step 6 - pip packages** +**Step 5 - pip packages** :: -- cgit 1.2.3-korg