上次給CI環境搭建好了,此次寫了一個腳本用於服務端打包及部署使用,解決了前端須要頻繁打包的問題,即時將代碼推到工程庫,服務端自動打包做發佈,而後測試人員即時測試,儘早發現問題。php
發佈原理:前端
我沒有經過軟鏈的方式做發佈,由於目前在Dev和Test環境也不須要用到回滾的地方,就是直接將打包好的文件解壓到指定的目錄下面。node
主要流程以下:nginx
gitlab-runner中.gitlab-ci.yml配置經過不一樣的分支,觸發不一樣的構建腳本git
構建腳本拉取最新代碼,而後安裝依賴及打不一樣環境的包web
將打好的包,經過scp傳遞到Dev/Test所在的服務器shell
經過ssh觸發Dev / Test的發佈腳本,主要是將壓縮包解壓到網站目錄。npm
做清理工做服務器
主要用到的腳本ssh
.gitlab-ci.yml
stages: - deploy-dev - deploy-test deploy_develop: stage: deploy-dev tags: - nodejs - php script: - /data/scripts/ci/web_deploy_dev.sh only: - dev deploy_test: stage: deploy-test tags: - nodejs - php script: - /data/scripts/ci/web_deploy_test.sh only: - release
安裝依賴及打包,傳送文件,web_deploy_dev.sh
## #前端工程自動化構建 #dev環境 ## node_path=/data/scripts/node/bin/node npm_path=/data/scripts/node/bin/npm product=web_cloudTax_manage_dev #不能重複 web_path=/tmp/$product target_path="${web_path}/dist" git_path=git@172.1.1.22:WEB-Developer/cloud_manage.git function display(){ if [ $? -ne 0 ] then exit -999 fi } if [ ! -d $web_path ] then echo "建立文件夾${web_path}" sudo mkdir -p $web_path echo "進入項目路徑:${web_path}" cd $web_path sudo git clone $git_path . display else echo "進入項目路徑:${web_path}" cd $web_path display fi sudo chown -R gitlab-runner:gitlab-runner $web_path if [ -d $target_path ] then sudo chown -R gitlab-runner:gitlab-runner $target_path fi display sudo git checkout test-dev sudo git pull display #echo "進入項目路徑:${web_path}" #cd $web_path echo "清除原先的dist打包文件夾" sudo rm -rf $target_path display echo "安裝依賴" node_depency="${npm_path} i" $node_depency display echo "開始打包" build="${npm_path} run build:dev" $build display if [ ! -d "$target_path" ] then echo "打包失敗,dist未生成" exit 1 fi echo "進入打包目錄${target_path}" cd ${target_path} echo "開始建立壓縮包/tmp/${product}.tar.gz" sudo tar cvzf "/tmp/${product}.tar.gz" . display echo "======================================" echo "開始複製文件到部署服務器" scp /tmp/${product}.tar.gz lc@172.11.10.68:/tmp echo "文件複製完成到部署服務器" display echo "開始服務器部署" ssh lc@172.11.10.68 /data/scripts/ci/web_deploy.sh $product.tar.gz display echo "清除原始壓縮包" sudo rm -rf "/tmp/${product}.tar.gz" display exit 0
發佈腳本web_deploy.sh
#! /bin/sh ## #將從gitlab-runner打包好的文件,拷貝到網站目錄中做發佈 ## webpath=/data/vhosts/vhosts.website/test_manage.zc.com tar_file=$1 tar_path="/tmp/${tar_file}" if [ ! -f "$tar_path" ] then echo "打包文件${tar_path}不存在,沒法做發佈處理" exit fi echo "開始拷貝文件,從${tar_path}到${webpath}" cp $tar_path $webpath echo "複製完成" echo "進入網站目錄" cd $webpath if [ ! -f "${webpath}/${tar_file}" ] then echo "解壓包${webpath}/${tar_file}不存在,沒法發佈" exit fi echo "刪除原來的" #rm -rf ${webpath} echo "解壓" tar xzf "${webpath}/${tar_file}" --overwrite . echo "部署完成,執行清理操做" chown -R nginx:nginx $webpath rm "${webpath}/${tar_file}"
好了,經過上面的腳本就能快速構建前端的Vue工程了,不過因爲時間關係,上面的腳本好多異常性沒有做太多處理,這個在後續的使用中繼續完善,目前是保證能基本可用。讓測試人員用起來就行。