From e113b4aea07e3577c0e6aaf9f7e90530ad6bb04b Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 6 Jan 2023 12:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B7=A5=E7=A8=8B=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 4 +-- README.md | 25 ++++++++----- sh/iflytool.sh | 100 ++++++++++++++++++++++++++++++++-------------------- sh/packet.sh | 41 +++++++++++++++++++++ sh/packet_rk3328.sh | 40 --------------------- 5 files changed, 121 insertions(+), 89 deletions(-) create mode 100755 sh/packet.sh delete mode 100644 sh/packet_rk3328.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cefc03..0286516 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,9 +44,9 @@ include(dep/zwebservice/module.cmake) zadd_executable( TARGET - ${PROJECT_NAME}.out + app.out INSTALL - ${PROJECT_NAME} + app LINK_LIBRARIES pthread INCLUDE_DIRECTORIES diff --git a/README.md b/README.md index 9962b2f..1e264ed 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,25 @@ env/ 应用程序运行环境 build/ 应用程序编译目录 ``` -``` -编译说明 +## 编译RK3328 +```bash +# 初始化环境 +./sh/iflytool.sh envsetup rk3328 + +# 编译打包部署(整包) +./sh/iflytool.sh --ip flash + +# 编译打包部署,重启系统(整包) +./sh/iflytool.sh --ip flash reboot + +# 编译并只部署应用 +./sh/iflytool.sh --ip flashapp -# 编译RK3328应用 -./sh/rk3328_envsetup.sh -# 编译PC应用 -./sh/pc_envsetup.sh +# 只部署webapp +./sh/iflytool.sh --ip flashwebapp -cd build -./build.sh && make -j8 +# 配置ssh-key,免密登录 +./sh/iflytool.sh --ip ssh_copy_id ``` diff --git a/sh/iflytool.sh b/sh/iflytool.sh index 0bcecb1..c97a9da 100755 --- a/sh/iflytool.sh +++ b/sh/iflytool.sh @@ -1,5 +1,5 @@ #!/bin/bash -export PROJECT_PATH=$(pwd) + function do_envsetup_pc() { #构造编译脚本 @@ -23,12 +23,24 @@ function do_envsetup_rk3328() { } -function do_flash_to_rk3328() { - scp -r out/${PROJECT_NAME}.tar.gz ${USER}@${IP}:${ROOTFS_APP_DIR} +function do_flash_to_targetboard() { + scp -r out/${PROJECT_NAME}.tar.gz ${TARGET_USER}@${IP}:/ #如果存在shutdown.sh,则先执行shutdown.sh - ssh ${USER}@${IP} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi' - ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && tar -xvf ${PROJECT_NAME}.tar.gz -C ${ROOTFS_APP_DIR}" - ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && rm -rf ${PROJECT_NAME}.tar.gz" + ssh ${TARGET_USER}@${IP} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi' + ssh ${TARGET_USER}@${IP} "cd / && tar -xvf app.tar.gz -C /" + ssh ${TARGET_USER}@${IP} "cd / && rm -rf app.tar.gz" +} + +function do_flashapp_to_targetboard() { + # 杀死目标程序 + ssh ${TARGET_USER}@${IP} "killall app.out" + # 拷贝目标程序 + scp -r ${PROJECT_PATH}/build/app/app.out ${TARGET_USER}@${IP}:/app/ +} + +function do_flashwebapp_to_targetboard() { + ssh ${TARGET_USER}@${IP} "rm -rf /webapp" + scp -r ${PROJECT_PATH}/webapp ${TARGET_USER}@${IP}:/app/webapp } ############################################################################## @@ -47,11 +59,15 @@ function do_flash_to_rk3328() { # 解析指令判断指令是否是 envsetup iflytool.sh envsetup rk3328 +set -e + is_build=false is_flash=false is_reboot=false is_envsetup=false +export PROJECT_PATH=$(pwd) + for i in "$@"; do case $i in envsetup) @@ -76,9 +92,25 @@ for i in "$@"; do is_packet=true shift ;; + ssh_copy_id) + is_ssh_copy_id=true + shift + ;; + ssh_clear_id) + is_ssh_clear_id=true + shift + ;; + flashapp) + is_flashapp=true + shift + ;; + flashwebapp) + is_flashwebapp=true + shift + ;; --user) shift - USER=$1 + TARGET_USER=$1 shift ;; --ip) @@ -113,8 +145,6 @@ if [ "$is_envsetup" = true ]; then echo "PROJECT_NAME=$PROJECT_NAME" >>${PROJECT_PATH}/build/buildenv - ROOTFS_APP_DIR="/" - echo "ROOTFS_APP_DIR=$ROOTFS_APP_DIR" >>${PROJECT_PATH}/build/buildenv if [ "$BUILDFOR" = "pc" ]; then do_envsetup_pc @@ -127,6 +157,11 @@ if [ "$is_envsetup" = true ]; then exit 0 fi +# 如果没有指定用户名,则默认用户名为 root +if [ -z "$TARGET_USER" ]; then + TARGET_USER=root +fi + #如果flash 则默认编译打包 if [ "$is_flash" = true ]; then is_build=true @@ -158,54 +193,41 @@ if [ "$is_build" = true ]; then echo "build" cd ${PROJECT_PATH}/build # 根据当前电脑线程数,调用make - ./build.sh && make -j$(nproc) + ./build.sh && make -j$(nproc) install fi # 打包 if [ "$is_packet" = true ]; then echo "packet for ${BUILDFOR}" cd ${PROJECT_PATH} - ${PROJECT_PATH}/sh/packet_${BUILDFOR}.sh + ${PROJECT_PATH}/sh/packet.sh fi # 部署 if [ "$is_flash" = true ]; then - if [ "$BUILDFOR" = "pc" ]; then - echo "WARNING:not support flash for pc" - elif [ "$BUILDFOR" = "rk3328" ]; then - do_flash_to_rk3328 - else - echo "unknow build for $BUILDFOR" - exit 1 - fi + do_flash_to_targetboard +fi + +# flashapp +if [ "$is_flashapp" = true ]; then + do_flashapp_to_targetboard fi +# flashwebapp +if [ "$is_flashwebapp" = true ]; then + do_flashwebapp_to_targetboard +fi # 重启 if [ "$is_reboot" = true ]; then - if [ "$BUILDFOR" = "pc" ]; then - echo "WARNING:not support reboot for pc" - elif [ "$BUILDFOR" = "rk3328" ]; then - ssh ${USER}@${IP} "reboot" - else - echo "unknow build for $BUILDFOR" - exit 1 - fi + ssh ${TARGET_USER}@${IP} "reboot" fi #ssh_copy_id -if [ "ssh_copy_id" = true ]; then - if [ "$BUILDFOR" = "pc" ]; then - echo "WARNING:not support ssh_copy_id for pc" - elif [ "$BUILDFOR" = "rk3328" ]; then - ssh-copy-id ${USER}@${IP} - else - echo "unknow build for $BUILDFOR" - exit 1 - fi - +if [ "$is_ssh_copy_id" = true ]; then + ssh-copy-id ${TARGET_USER}@${IP} fi #ssh_clear_id -if [ "ssh_clear_id" = true ]; then - ssh ${USER}@${ip} "rm -rf ~/.ssh/authorized_keys" +if [ "$is_ssh_clear_id" = true ]; then + ssh ${TARGET_USER}@${ip} "rm -rf ~/.ssh/authorized_keys" fi diff --git a/sh/packet.sh b/sh/packet.sh new file mode 100755 index 0000000..bd257f3 --- /dev/null +++ b/sh/packet.sh @@ -0,0 +1,41 @@ +#!/bin/bash + + +set -e +set -x +export PROJECT_PATH=`pwd` +source ${PROJECT_PATH}/build/buildenv + + +#打包目录 +PACKET_DIR=$PROJECT_PATH/out/app + +# 删除打包目录,重新打包 +rm -rf ${PACKET_DIR} +mkdir ${PACKET_DIR} +######################################################################################## +################################根据需要修改下面的内容即可################################## +######################################################################################## + +#1. 编译 +cd $PROJECT_PATH/build +# ./build.sh && make -j8 && make install + +#2.打包APP +cp $PROJECT_PATH/build/app/app.out $PACKET_DIR/ + +#3.3 打包webapp +cp -rf $PROJECT_PATH/webapp $PACKET_DIR/ + +#4 拷贝配置文件 +cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/ + +#5 打包 +cur_date="`date +%Y%m%d`" + +cd $PACKET_DIR/../ +tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz app +cp ${PACKET_DIR}_${cur_date}.tar.gz ${PACKET_DIR}.tar.gz +echo "Brief:" +echo "generate ${PACKET_DIR}_${cur_date}.tar.gz..................." +echo "generate ${PACKET_DIR}.tar.gz..................." \ No newline at end of file diff --git a/sh/packet_rk3328.sh b/sh/packet_rk3328.sh deleted file mode 100644 index 2eae69d..0000000 --- a/sh/packet_rk3328.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -sourece ./build/buildenv - -set -e -set -x -export PROJECT_PATH=`pwd` - -#打包目录 -PACKET_DIR=$PROJECT_PATH/out/${PROJECT_NAME} - -# 删除打包目录,重新打包 -rm -rf ${PACKET_DIR} -mkdir ${PACKET_DIR} -######################################################################################## -################################根据需要修改下面的内容即可################################## -######################################################################################## - -#1. 编译 -cd $PROJECT_PATH/build -./build.sh && make -j8 && make install - -#2.打包APP -cp $PROJECT_PATH/build/${PROJECT_NAME}/${PROJECT_NAME}.out $PACKET_DIR/ - -#3.3 打包webapp -cp -rf $PROJECT_PATH/webapp $PACKET_DIR/ - -#4 拷贝配置文件 -cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/ - -#5 打包 -cur_date="`date +%Y%m%d`" - -cd $PACKET_DIR/../ -tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz ${PROJECT_NAME} -cp ${PACKET_DIR}_${cur_date}.tar.gz ${PACKET_DIR}.tar.gz -echo "Brief:" -echo "generate ${PACKET_DIR}_${cur_date}.tar.gz..................." -echo "generate ${PACKET_DIR}.tar.gz..................." \ No newline at end of file