關(guān)于樹莓派系列,在有空余的時間里面,我會把斷斷續(xù)續(xù)的工作中處理過的一些小的點(diǎn)記錄一下,比較零散,但是是真實(shí)操作記錄,或許對需要的朋友有點(diǎn)小的幫助。
樹莓派系列參見這里:樹莓派系列。
之前有寫過一次遠(yuǎn)程更新樹莓派的文章,當(dāng)時腳本在測試環(huán)境調(diào)通了。參見 【樹莓派】【原】遠(yuǎn)程連接樹莓派設(shè)備,以及進(jìn)行遠(yuǎn)程應(yīng)用更新與升級
但是在生產(chǎn)環(huán)境測的時候,卻發(fā)現(xiàn)不同環(huán)境還稍微有點(diǎn)小的問題。
因?yàn)橹芭f的不同版本略有小的差異導(dǎo)致;之后經(jīng)過優(yōu)化,重新測試OK。
優(yōu)化點(diǎn)主要是這兩點(diǎn),另外有點(diǎn)其他的小調(diào)整:
1.使用ln軟連接方式,而不是mv版本號;
2.修改stop服務(wù)步驟,kill進(jìn)程有效性;
在這里,重新補(bǔ)充一下最新的Scripts,如下:
boxagent@iZ2zeed4f6hbydt2078ddcZ:~$ cat boxrelease/script/upgrade_osprey.sh
#!/bin/sh #config APP_NAME=osprey USER_HOME=/home/lifeccp/webapp RELEASE_SRC="boxagent@smith.lifeccp.com:/home/boxagent/boxrelease/osprey/*.zip"#function say() { echo -e "[Osprey Deploy] $0: $1"} fetch_artifacts() { DEST="$USER_HOME/incoming/${APP_NAME}/" [ -d ${DEST} ] || mkdir -p ${DEST} say "Fetching artifacts from $ARTIFACTS_SRC to ${DEST}" scp ${RELEASE_SRC} ${DEST} say "Unzip the new war" cd ${DEST} && unzip -qo *.zip say "Change startup started" sed -i 8d ${USER_HOME}/${APP_NAME}/startup sed -i '8i MAIN_JAR=osprey.release.jar' ${USER_HOME}/${APP_NAME}/startup say "Change startup finished" if [ "$?" = "0" ]; then say "\033[32m -=Fetch artifacts finished=- \033[0m" else say "\033[31m -=Fetch artifacts failed=- \033[0m" exit 1 fi } stop_app() { say "Stopping [${APP_NAME}]" pkill -f ${APP_NAME} osprey_pid=$(pgrep -f ${APP_NAME}) if [ "${osprey_pid}" = "" ]; then say "\033[32m -=Stop ${APP_NAME} finished=- \033[0m" else say "\033[32m -=Stop ${APP_NAME} failed=- \033[0m" kill -9 "${osprey_pid}" kill -9 `ps aux | grep osprey | awk '{print $2}'` say "\033[32m -=Kill -9 ${APP_NAME}=- \033[0m" fi say "Stopping [${APP_NAME}] finished"} backup_app() { DEST="$USER_HOME/archive/${APP_NAME}$(date '+%Y%m%d%H%M')/" say "make backup dir ${DEST}" mkdir -p "${DEST}" cp -r ${USER_HOME}/${APP_NAME}/* ${DEST} say "\033[32m -=Backup ${APP_NAME} finished=- \033[0m" } deploy_app() { DEST="$USER_HOME/incoming/${APP_NAME}" say "Deploy ${APP_NAME}" say "Remove old app" rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar.original say "Copying new app start" cp ${DEST}/osprey*.release.jar $USER_HOME/$APP_NAME/ cp ${DEST}/osprey*.release.jar.original $USER_HOME/$APP_NAME/ say "Copying new app finished" say "Make app link start" ln -s /home/lifeccp/webapp/osprey/osprey-*.release.jar /home/lifeccp/webapp/osprey/osprey.release.jar say "Make app link finished" if [ "$?" = "0" ]; then say "\033[32m -=Deploy ${APP_NAME} finished=- \033[0m" else say "\033[31m -=Deploy ${APP_NAME} failed=- \033[0m" exit 1 fi } clear() { say "clear $USER_HOME/incoming/${APP_NAME}/" rm -rf $USER_HOME/incoming/${APP_NAME}/* } start_app() { say "Start [${APP_NAME}]" sudo reboot if [ "$?" = "0" ]; then say "\033[32m -=Start reboot finished=- \033[0m" else say "\033[31m -=Start reboot failed=- \033[0m" exit 1 fi } publish() { say "********Step1 start..." fetch_artifacts say "********Step1 finished...\n\n********Step2 start..." stop_app say "********Step2 finished...\n\n********Step3 start..." backup_app say "********Step3 finished...\n\n********Step4 start..." deploy_app say "********Step4 finished...\n\n********Step5 start..." clear say "********Step5 finished...\n\n********Step6 start..." start_app say "********Step6 finished...Upgrade finished!" } #### do it ### publish
腳本使用方法:
1.使用ssh方式登錄agent被控機(jī);