vueサービス側のパッケージングと自動導入

3521 ワード

前回CI環境に構築しましたが、今回はサービス側のパッケージングと導入に使用するスクリプトを書きました.フロントエンドが頻繁にパッケージングする必要がある問題を解決しました.すぐにコードをエンジニアリングライブラリにプッシュし、サービス側は自動的にパッケージングして発表し、テスト担当者はすぐにテストし、できるだけ早く問題を発見しました.
公開の原理:
私はソフトチェーンで発表していません.現在、DevやTest環境でもロールバックを必要としない場所で、パッケージされたファイルを指定したディレクトリの下に直接解凍しているからです.
主なプロセスは次のとおりです.
  • gitlab-runner中.gitlab-ci.yml構成は、異なるブランチを介して、異なる構築スクリプト
  • をトリガする.
  • 構築スクリプト最新コードを引き出し、異なる環境に依存するパッケージ
  • をインストールします.
  • 打ったパケットをscpを介してDev/Testがいるサーバ
  • に渡す
  • sshによってDev/Testのパブリケーションスクリプトがトリガーされ、主に圧縮パッケージをWebサイトのディレクトリに解凍します.
  • 清掃作業
  • 主に使用するスクリプト
    .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"
    [email protected]: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  [email protected]:/tmp
    echo "            "
    display
    
    echo "       "
    
    ssh [email protected] /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プロジェクトを迅速に構築できますが、時間の関係で、上のスクリプトの多くの異常性はあまり処理されていません.これは後続の使用で改善され続け、基本的に利用できることを保証しています.テスト担当者に使ってもらうだけでいいです.