From 073d91ad889646488c316908648c2bcf34fb2ae6 Mon Sep 17 00:00:00 2001 From: Tomáš Levora Date: Fri, 12 Jul 2019 08:09:37 +0200 Subject: Removing deprecated packaging script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removing packaging script written in BASH and its configuration as it's function was replaced by new python script build/package.py Issue-ID: OOM-1932 Change-Id: Id48c2ef69d64012c456661358106703eab7d85c3 Signed-off-by: Tomáš Levora --- build/package.conf | 80 ---------------- build/package.sh | 267 ----------------------------------------------------- 2 files changed, 347 deletions(-) delete mode 100644 build/package.conf delete mode 100755 build/package.sh (limited to 'build') diff --git a/build/package.conf b/build/package.conf deleted file mode 100644 index d74eac0a..00000000 --- a/build/package.conf +++ /dev/null @@ -1,80 +0,0 @@ -# For the packaging script it is expected that all artifacts are present on local file system. -# Artifacts include: -# - installer source code (this git repository content) -# - all binary artifacts pre-downloaded from internet (docker images, rpm packages, npm packages, Maven artifacts etc.) -# Script will create 3 packages: -# offline-${PROJECT_NAME}-${PROJECT_VERSION}-sw.tar -# - installer code (ansible dir in this git repo) -# - Files/dirs defined by APP_CONFIGURATION if any. -# - Directory content of HELM_CHARTS_DIR if defined. -# offline-${PROJECT_NAME}-${PROJECT_VERSION}-resources.tar -# - Directory content of APP_BINARY_RESOURCES_DIR if defined. -# offline-${PROJECT_NAME}-${PROJECT_VERSION}-aux-resources.tar -# - Files defined by APP_AUX_BINARIES if any. - -########################### -# Application Helm charts # -########################### - -# Provide application installed to Kubernetes cluster. Helm chart is the supported format https://helm.sh/. -# Directory provided here must contain all the Chart directories of the application (https://docs.helm.sh/developing_charts/#charts) and Makefile. -# E.g. in case of ONAP oom repo it will be the content of kubernetes directory. -# NOTE: Leaving this variable commented out will mean that no Helm application will be installed to -# offline Kubernetes cluster. This may be sometimes wanted. -#HELM_CHARTS_DIR=/kubernetes -HELM_CHARTS_DIR=/tmp/oom-clone/kubernetes - -##################################### -# Application install configuration # -##################################### - -# APP_CONFIGURATION array variable can be used to provide files/directories -# into sw package available for the Ansible process to consume. -# The main configuration file for your application is -# "application_configuration.yml" (name of file can be anything) where user -# shall provide values to control ansible installer process. Yml file is given -# as command line parameter to ansible run. -# See more from UserGuide documentation (LINK HERE) how to use installer. -# Available configuration parameters user can configure are seen from group_vars files: -# ansible/group_vars/all.yml -# ansible/group_vars/infrastucture.yml -# ansible/group_vars/kubernetes.yml -# Additionally user can optionally provide own ansible roles code to customize install process. -# At the moment 2 custom ansible roles are supported pre and post install roles, which are -# run by installer prior Helm install and after Kubernetes app has been installed. -# In application_configuration.yml those role names are configured with variables: -# application_pre_install_role: my-pre-install-role -# application_post_install_role: my-post-install-role -# And according to Ansible functionality, roles' code must be placed to directories -# with the same name: -#APP_CONFIGURATION=( -# /config/application_configuration.yml -# /patches/my-pre-install-role -# ~/myappfiles/my-post-install-role -#) -APP_CONFIGURATION=( - /tmp/offline-installer/config/application_configuration.yml - /tmp/offline-installer/patches/onap-patch-role -) - -# APP_BINARY_RESOURCES_DIR is variable to directory containing directories and files for offline -# installer infra and the the application run in that infra. -# Currently mixed with infra and app binaries to same, maybe to be separated in the future. -# Following directories and files are expected: -# downloads ... directory with exacutable binaries for offline infra usage (e.g. rancher, kubectl, jq, helm) -# git-repo ... directory with git repos for application needs to be simulated -# http ... directory with http simulation files (e.g. Maven artifacts are simulated here) -# offline_data ... directory with offline infra specific docker images -# pkg ... directory with rpm/deb packages mainly for offline infra -# nexus_data.tar ... tar file with pre-generated nexus blobs containing e.g. docker images for the application. -#APP_BINARY_RESOURCES_DIR=~/myappfiles/all_binaries -APP_BINARY_RESOURCES_DIR=/tmp/onap-offline/resources - -# APP_AUX_BINARIES is array variable for additional application files. -# Docker images supported currently in tar format. -#APP_AUX_BINARIES=( -# ~/myappfiles/docker_images_populated_runtime/aaa-component-0.0.1.tar -# ~/myappfiles/docker_images_populated_runtime/xyz-component-0.0.1.tar -#) -APP_AUX_BINARIES=() - diff --git a/build/package.sh b/build/package.sh deleted file mode 100755 index a3c1ded2..00000000 --- a/build/package.sh +++ /dev/null @@ -1,267 +0,0 @@ -#! /usr/bin/env bash - -# COPYRIGHT NOTICE STARTS HERE -# -# Copyright 2018-2019 © Samsung Electronics Co., Ltd. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# COPYRIGHT NOTICE ENDS HERE - - -# Scope of this packaging script is to generate tarfiles for offline installation -# Build of any additional artifacts is out of scope for this script -set -e - -crash () { - local exit_code="$1" - local cause="$2" - echo "Packaging script finished prematurely" - echo "Cause: $2" - exit "${exit_code}" -} - -crash_arguments () { - echo "Missing some mandatory arguments!" - usage - exit 1 -} - -usage () { - echo "Usage:" - echo " ./$(basename $0) [--conf ] [--force]" - echo "" - echo "Options:" - echo " --force Remove packaging_target_dir if exists prior to script execution" - echo " --conf Custom configuration file path for script" - echo "" - echo "Example:" - echo " ./$(basename $0) myproject 1.0.1 /tmp/package --conf ~/myproject.conf" - echo "" - echo "packaging_target_dir will be created if does not exist. All tars will be produced into it." -} - -function create_tar { - local tar_dir="$1" - local tar_name="$2" - - cd ${tar_dir} - touch ${tar_name} # Trick to avoid sporadic "tar: .: file changed as we read it" warning message - tar --exclude=${tar_name} -cf ../${tar_name} . - cd - &> /dev/null # Trick to avoid printing new dir on stdout - - # Remove packaged folders - find ${tar_dir}/* -maxdepth 0 -type d -exec rm -rf '{}' \; - # Remove packaged files - find ${tar_dir}/* ! -name ${tar_name} -exec rm '{}' \; - echo "Tar file created to $(dirname ${tar_dir})/${tar_name}" -} - -function create_pkg { - local pkg_type="$1" - echo "[Creating ${pkg_type} package]" - create_tar "${PKG_ROOT}" offline-${PROJECT_NAME}-${PROJECT_VERSION}-${pkg_type}.tar - rm -rf "${PKG_ROOT}" -} - -function add_metadata { - local metafile="$1" - echo "Project name: ${PROJECT_NAME}" >> "${metafile}" - echo "Project version: ${PROJECT_VERSION}" >> "${metafile}" - echo "Package date: ${TIMESTAMP}" >> "${metafile}" -} - -function add_additions { - local source="$1" - local target="$2" - if [ -d "${source}" ]; then - mkdir -p "${target}/$(basename $source)" - cp -r "${source}" "${target}" - echo "Adding directory ... $(basename $source)" - else - if [ -f "${source}" ]; then - cp "${source}" "${target}" - echo "Adding file ... $(basename $source)" - else - crash 4 "Invalid source specified for packaging: $1" - fi - fi -} - -function build_sw_artifacts { - cd ${LOCAL_PATH}/../ansible/docker - ./build_ansible_image.sh - if [ $? -ne 0 ]; then - crash 5 "Building of ansible runner image failed." - fi - cd - -} - -function create_sw_package { - PKG_ROOT="${PACKAGING_TARGET_DIR}/sw" - - # Create directory structure of the sw package - mkdir -p "${PKG_ROOT}" - cp -r ${LOCAL_PATH}/../ansible "${PKG_ROOT}" - - # Add application additional files/dirs into package based on package.conf - for item in "${APP_CONFIGURATION[@]}";do - # all SW package addons are expected within ./ansible/application folder - add_additions "${item}" "${PKG_ROOT}/${APPLICATION_FILES_IN_PACKAGE}" - done - - # Application Helm charts - # To be consistent with resources and aux dir, create charts dir even if no charts provided. - mkdir -p ${PKG_ROOT}/${HELM_CHARTS_DIR_IN_PACKAGE} - if [ ! -z "${HELM_CHARTS_DIR}" ]; - then - echo "Add application Helm charts" - # Copy charts available for ansible playbook to use/move them to target server/dir - cp -r "${HELM_CHARTS_DIR}"/* ${PKG_ROOT}/${HELM_CHARTS_DIR_IN_PACKAGE} - else - echo "No Helm charts defined, no application will be automatically installed by this package!" - fi - - # Add metadata to the package - add_metadata "${PKG_ROOT}"/package.info - - # Create sw tar package - create_pkg sw -} - -function create_resource_package { - PKG_ROOT="${PACKAGING_TARGET_DIR}/resources" - - # Create directory structure of the resource package - mkdir -p "${PKG_ROOT}" - - # Add artifacts into resource package based on package.conf config - if [ ! -z ${APP_BINARY_RESOURCES_DIR} ]; then - cp -r ${APP_BINARY_RESOURCES_DIR}/* ${PKG_ROOT} - fi - - # tar file with nexus_data is expected, we should find and untar it - # before resource.tar is created - for i in `ls -1 ${PKG_ROOT} | grep tar`; do - tar tvf "${PKG_ROOT}/${i}" | grep nexus_data &> /dev/null - if [ $? -eq 0 ]; then - echo "Debug: tar file with nexus blobs detected ${PKG_ROOT}/${i}. Start unarchive ..." - tar xf "${PKG_ROOT}/${i}" -C "${PKG_ROOT}" &> /dev/null - echo "Debug: unarchive finished. Removing original file" - rm -f "${PKG_ROOT}/${i}" - fi - done - - create_pkg resources -} - -function create_aux_package { - PKG_ROOT="${PACKAGING_TARGET_DIR}/aux" - - # Create directory structure of the aux resource package - mkdir -p "${PKG_ROOT}" - - # Add artifacts into resource packagee based on package.conf config - for item in "${APP_AUX_BINARIES[@]}";do - add_additions "${item}" "${PKG_ROOT}" - done - - create_pkg aux-resources -} - -# -# =================== Main =================== -# - -PROJECT_NAME="$1" -PROJECT_VERSION="$2" -PACKAGING_TARGET_DIR="$3" - -TIMESTAMP=$(date -u +%Y%m%dT%H%M%S) -SCRIPT_DIR=$(dirname "${0}") -LOCAL_PATH=$(readlink -f "$SCRIPT_DIR") - -# Relative location inside the package for application related files. -# Application means Kubernetes application installed by Helm charts on ready cluster (e.g. onap). -APPLICATION_FILES_IN_PACKAGE="ansible/application" - -# Relative location inside the package to place Helm charts to be available for -# Ansible process to transfer them into machine (infra node) running Helm repository. -# NOTE: This is quite hardcoded place to put them and agreement with Ansible code -# is done in ansible/group_vars/all.yml with variable "app_helm_charts_install_directory" -# whihc value must match to value of this variable (with exception of slash '/' -# prepended so that ansible docker/chroot process can see the dir). -# This variable can be of course changed in package.conf if really needed if -# corresponding ansible variable "app_helm_charts_install_directory" value -# adjusted accordingly. -HELM_CHARTS_DIR_IN_PACKAGE="${APPLICATION_FILES_IN_PACKAGE}/helm_charts" - -if [ $# -eq 0 ]; then - crash_arguments -fi - -CONF_FILE="" -FORCE_REMOVE=0 -arg_ind=0 -for arg in "$@"; do - shift - ((arg_ind+=1)) - if [[ ${arg} =~ ^[-]{1,2}[a-zA-Z-]+$ && ${arg_ind} -lt 4 ]]; then - echo "Non-positional parameters should follow mandatory arguments!" - usage - exit 1 - fi - case "$arg" in - -c|--conf) - CONF_FILE="$1" ;; - --force) - FORCE_REMOVE=1 ;; - *) - set -- "$@" "$arg" - if [ "$#" -lt 3 ]; then - crash_arguments - fi ;; - esac -done - -if [ -z ${CONF_FILE} ]; then - CONF_FILE=${LOCAL_PATH}/package.conf # Fall to default conf file -fi - -if [ ! -f ${CONF_FILE} ]; then - crash 2 "Mandatory config file missing! Provide it with --conf option or ${LOCAL_PATH}/package.conf" -fi - -source ${CONF_FILE} -pushd ${LOCAL_PATH} - -# checking bash capability of parsing arrays -whotest[0]='test' || (crash 3 "Arrays not supported in this version of bash.") - -# Prepare output directory for our packaging -# Check target dir exists and is not empty -if [ -d ${PACKAGING_TARGET_DIR} ] && [ "$(ls -A ${PACKAGING_TARGET_DIR})" ]; then - if [ ${FORCE_REMOVE} -eq 0 ]; then - crash 1 "Target directory not empty. Use --force to overwrite it." - else - rm -rf ${PACKAGING_TARGET_DIR} - fi -fi - -# Create all tars -build_sw_artifacts -create_sw_package -create_resource_package -create_aux_package - -popd -- cgit 1.2.3-korg