diff --git a/build.py b/build.py index 3f242452bb05b8a8ec977321bc6bdb265a6edff0..c07f8b233d8009897284875276b4f70ba3bda3ca 100644 --- a/build.py +++ b/build.py @@ -18,7 +18,7 @@ PARAMS = ['all', 'set_release_dir', 'update_release_info', 'build_and_wait', 'ma 'make_compile_env_storage', 'make_euleros_certdb', 'make_vm_qcow2', 'make_compile_tools', 'make_images_slim', 'make_tools_lib_storage', 'make_container_tools', 'make_tools_debug_tools', 'make_upgrade_patch', 'make_tools_dockertools', 'make_other_tools', 'upload_to_cmc', 'make_upload_cmc_image', 'make_iso_everything', - 'make_iso_everysrc', 'make_debug_everything', 'push_lts_dir', 'make_netinst_iso', 'get_epol_rpms', 'make_edge_iso', 'make_desktop_iso', 'make_riscv64_qemu_image'] + 'make_iso_everysrc', 'make_debug_everything', 'push_lts_dir', 'make_netinst_iso', 'get_epol_rpms', 'make_edge_iso', 'make_desktop_iso', 'make_riscv64_qemu_image', 'make_devstation_iso', 'make_devstation_netinst_iso' ] class Build(object): @@ -106,10 +106,11 @@ class Build(object): if os.system(cmd) != 0: logger.error("build fail") return -1 - cmd = "bash -x reset_release_server_ip.sh" - if os.system(cmd) != 0: - logger.error("build fail") - return -1 + if "devstation" not in step: + cmd= "bash -x reset_release_server_ip.sh" + if os.system(cmd) != 0: + logger.error("build fail") + return -1 code = trace_execute("bash {0} {1}".format( self.local_build_shell_path, step), env=self.env, logger=logger) if code != 0 and code != "0": @@ -141,6 +142,8 @@ def usage(): print("* make_iso *") print("* make_edge_iso *") print("* make_desktop_iso *") + print("* make_devstation_iso *") + print("* make_devstation_netinst_iso *") print("* make_netinst_iso *") print("* make_iso_everysrc *") print("* make_iso_everything *") diff --git a/script/common_function.sh b/script/common_function.sh index 1e8486522d42d492ddae68f13dd784be9acf4f42..c20289a9472d1a43e6eec26128120c361b43d0db 100644 --- a/script/common_function.sh +++ b/script/common_function.sh @@ -105,3 +105,5 @@ source "${BUILD_SCRIPT_DIR}"/step/make_desktop_iso.sh source "${BUILD_SCRIPT_DIR}"/step/make_iso_everything.sh source "${BUILD_SCRIPT_DIR}"/step/make_debug_everything.sh source "${BUILD_SCRIPT_DIR}"/step/make_iso_everysrc.sh +source "${BUILD_SCRIPT_DIR}"/step/make_devstation_iso.sh +source "${BUILD_SCRIPT_DIR}"/step/make_devstation_netinst_iso.sh diff --git a/script/make_version.sh b/script/make_version.sh index 9813ad98b0ed4e754a5a7bc60f3a0b4eeca4a691..212585a6cb7e4f440629a492c28350a06acb7be5 100644 --- a/script/make_version.sh +++ b/script/make_version.sh @@ -40,7 +40,7 @@ function usage() echo "$(basename $0) [script_name|all]" } -export ALL_SCRIPT=('make_hmi' 'make_iso' 'make_docker_image' 'make_raspi_image' 'make_riscv64_qemu_image' 'make_microvm_image' 'make_iso_everything' 'make_iso_everysrc' 'make_debug_everything' 'make_netinst_iso' 'get_epol_rpms' 'make_edge_iso' 'make_desktop_iso' 'make_riscv64_image') +export ALL_SCRIPT=('make_hmi' 'make_iso' 'make_docker_image' 'make_raspi_image' 'make_riscv64_qemu_image' 'make_microvm_image' 'make_iso_everything' 'make_iso_everysrc' 'make_debug_everything' 'make_netinst_iso' 'get_epol_rpms' 'make_edge_iso' 'make_desktop_iso' 'make_riscv64_image' 'make_devstation_iso' 'make_devstation_netinst_iso') [[ "${DEBUG}" -eq 1 ]] && set -x arg1="$1" diff --git a/script/setup_env.sh b/script/setup_env.sh index 2dbdb6ecc1c416c5f5104f493ec43d9bff631a3f..e84c18ebcc2045c966b7e940166380a9ed04e11b 100644 --- a/script/setup_env.sh +++ b/script/setup_env.sh @@ -67,4 +67,14 @@ gpgcheck=0 EOF +if [ -n "${THIRD_REPO}" ];then + cat>>${REPO_CONF}<<-EOF1 +[THIRD_REPO] +name=THIRD_REPO +baseurl=${THIRD_REPO} +enabled=1 +gpgcheck=0 + +EOF1 +fi cat ${REPO_CONF} diff --git a/script/step/make_devstation_iso.sh b/script/step/make_devstation_iso.sh new file mode 100644 index 0000000000000000000000000000000000000000..36397e72aa1bb126b65eb2485119fef654d78a37 --- /dev/null +++ b/script/step/make_devstation_iso.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# Author: +# Copyright Huawei Technologies Co., Ltd. 2010-2018. All rights reserved. +set -e + +###################### +# 构建iso镜像 +# Globals: +# Arguments: +# Returns: +###################### +function make_devstation_iso() +{ + chroot_run "cd /home; bash make_version.sh make_devstation_iso_inchroot" +} + +###################### +# 在chroot中构建iso镜像 +# Globals: +# Arguments: +# Returns: +###################### +function make_devstation_iso_inchroot() +{ + get_version + release_dir=$(get_release_dir) + TIME_DIR="${release_dir#${HTTP_DIR}}" + TIME=${TIME_DIR##*/} + TIME=${TIME#"${version}"-} + + yum_conf="${BUILD_SCRIPT_DIR}/config/repo_conf/repofile.conf" + yum clean all -c "${yum_conf}" + yum remove -y oemaker lorax || true + yum install -y oemaker lorax -c "${yum_conf}" + + # 配置 repo 源 + sed -i "/^%pre/i \ +repo --name=\"epol\" --baseurl=${EPOL_PROJECT_REPO}" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + + if [[ -n "${THIRD_REPO}" ]];then + sed -i "/^%pre/i \ +repo --name=\"third_repo\" --baseurl=${THIRD_REPO}" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + fi + sed -i "s/%packages/%packages --nocore/g" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + + cd /opt/oemaker + REPOS=`echo "${STANDARD_PROJECT_REPO} ${EPOL_PROJECT_REPO} ${THIRD_REPO}" | sed 's/[ \t]*$//g'` + set +e + num=0 + set +u + while [ "${num}" -lt 3 ] + do + bash -x oemaker -t devstation -p ${PRODUCTS} -v "${OS_VERSION}" -r "" -s "${REPOS}" -u "${STANDARD_PROJECT_REPO}" + if [ $? -eq 0 ];then + break + elif [ $? -eq 133 ]; then + sleep 60 + ((num=num+1)) + continue + else + log_error "make_iso fail" + break + fi + done + [ "${num}" -ge 3 ] && log_error "retry make_iso fail" + + cd /result + devstation_iso_name=$(ls *.iso) + if [ -z "${devstation_iso_name}" ]; then + log_error "No ISO file found in /result" + exit 1 + fi + + create_checksum "${devstation_iso_name}" + iso_rpmlist="${devstation_iso_name}.rpmlist" + rm -rf temp && mkdir temp + mount "${devstation_iso_name}" temp + cd temp/Packages + ls *.rpm > "../../${iso_rpmlist}" + cd ../.. + umount temp + [ -d temp ] && rm -rf temp + + RELEASE_DIR="${release_dir}/DevStation/$ARCH" + SSH_CMD="mkdir -p ${RELEASE_DIR}" + sshcmd "${SSH_CMD}" + sshscp "${devstation_iso_name} ${devstation_iso_name}.sha256sum ${iso_rpmlist}" "${RELEASE_DIR}" +} diff --git a/script/step/make_devstation_netinst_iso.sh b/script/step/make_devstation_netinst_iso.sh new file mode 100644 index 0000000000000000000000000000000000000000..81b08de3c2b94f66bfb6e78f943c6797713d95f6 --- /dev/null +++ b/script/step/make_devstation_netinst_iso.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# Author: +# Copyright Huawei Technologies Co., Ltd. 2010-2018. All rights reserved. +set -e + +###################### +# 构建iso镜像 +# Globals: +# Arguments: +# Returns: +###################### +function make_devstation_netinst_iso() +{ + chroot_run "cd /home; bash make_version.sh make_devstation_netinst_iso_inchroot" +} + +###################### +# 在chroot中构建iso镜像 +# Globals: +# Arguments: +# Returns: +###################### +function make_devstation_netinst_iso_inchroot() +{ + get_version + release_dir=$(get_release_dir) + TIME_DIR="${release_dir#${HTTP_DIR}}" + TIME=${TIME_DIR##*/} + TIME=${TIME#"${version}"-} + + yum_conf="${BUILD_SCRIPT_DIR}/config/repo_conf/repofile.conf" + yum clean all -c "${yum_conf}" + yum remove -y oemaker lorax || true + yum install -y oemaker lorax -c "${yum_conf}" + + # 配置 repo 源 + sed -i "/^%pre/i \ +repo --name=\"epol\" --baseurl=${EPOL_PROJECT_REPO}" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + + if [[ -n "${THIRD_REPO}" ]];then + sed -i "/^%pre/i \ +repo --name=\"third_repo\" --baseurl=${THIRD_REPO}" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + fi + sed -i "s/%packages/%packages --nocore/g" /opt/oemaker/config/$ARCH/livecd/devstation_livecd_$ARCH.ks + + cd /opt/oemaker + REPOS=`echo "${STANDARD_PROJECT_REPO}" | sed 's/[ \t]*$//g'` + set +e + num=0 + set +u + while [ "${num}" -lt 3 ] + do + bash -x oemaker -t devstation_netinst -p ${PRODUCTS} -v "${OS_VERSION}" -r "" -u "${REPOS}" + if [ $? -eq 0 ];then + break + elif [ $? -eq 133 ]; then + sleep 60 + ((num=num+1)) + continue + else + log_error "make_iso fail" + break + fi + done + [ "${num}" -ge 3 ] && log_error "retry make_iso fail" + + cd /result + devstation_netinst_iso_name=$(ls *.iso) + if [ -z "${devstation_netinst_iso_name}" ]; then + log_error "No ISO file found in /result" + exit 1 + fi + + create_checksum "${devstation_netinst_iso_name}" + RELEASE_DIR="${release_dir}/DevStation/$ARCH" + SSH_CMD="mkdir -p ${RELEASE_DIR}" + sshcmd "${SSH_CMD}" + sshscp "${devstation_netinst_iso_name} ${devstation_netinst_iso_name}.sha256sum" "${RELEASE_DIR}" +}