<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      張凡文

      只寫最接地氣的文章^_^

      導(dǎo)航

      基于Jenkins + Git的PHP項(xiàng)目編譯腳本

       

      本文針對的是了解或已經(jīng)在使用Jenkins和Git的開發(fā)者或團(tuán)隊(duì)。

      本團(tuán)隊(duì)使用了Jenkins作為持續(xù)集成平臺,Git作為版本管理工具,而本人負(fù)責(zé)的項(xiàng)目是PHP項(xiàng)目,所謂發(fā)布項(xiàng)目就是復(fù)制文件。

      通常有兩種發(fā)布方式:全量發(fā)布增量發(fā)布

      這兩種發(fā)布方式并沒有本質(zhì)的區(qū)別,主要區(qū)別在于不同的應(yīng)用場景。

      全量發(fā)布:代碼改動比較大,基本上覆蓋了項(xiàng)目的大部分代碼,這個(gè)時(shí)候可以選擇把整個(gè)項(xiàng)目打包,當(dāng)然可能會排除掉少量文件或目錄(通常需要排除配置文件)。另外需要注意的是如果有運(yùn)行期目錄比如用于存放臨時(shí)文件則需要保持其空框架,但如果項(xiàng)目有上傳文件等的目錄,則不太合適全量發(fā)布,因?yàn)槟菢右馕吨枰岩焉蟼魑募浞莶⒒謴?fù),如果文件數(shù)量比較大,則是一項(xiàng)很耗時(shí)的工作。

      全量發(fā)布意味著發(fā)布時(shí)通常會把之前的代碼刪除或重命名。

       

      增量發(fā)布:代碼改動不大,則可以直接指定改動的文件或文件夾。

      增量發(fā)布意味著發(fā)布時(shí)不需要?jiǎng)h除原來的代碼,而是直接COPY覆蓋。

       

      結(jié)合Jenkins和Git,具體實(shí)現(xiàn)思路如下:

      在源碼根目錄維護(hù)三個(gè)文本文件:VERSION,V_INCLUDE, V_EXCLUSE

      其中VERSION存放每次要發(fā)布的版本號;

      V_INCLUDE用于存放增量發(fā)布時(shí)要發(fā)布的文件(夾)列表,一個(gè)一行;

      V_EXCLUDE用于存放全量發(fā)布時(shí)要排除的文件(夾)列表,一個(gè)一行。

      (后面兩個(gè)文件以V開頭是為了出現(xiàn)在VERSION文件的附近,不容易被遺忘)。

      在Jenkins中創(chuàng)建兩個(gè)任務(wù):全量發(fā)布任務(wù)、增量發(fā)布任務(wù)。

      全量發(fā)布任務(wù)的腳本中,先從Git獲取代碼,然后從VERSION讀取版本號,從V_EXCLUSE讀取要排除的文件列表。

      增量發(fā)布任務(wù)的腳本中,先從Git獲取代碼,然后從VERSION讀取版本號,從V_INCLUSE讀取要包含的文件列表。

       

      下面給出全量發(fā)布的腳本:

      # 定義變量
      root_path=$PWD
      code_name="HiCloudShop"
      
      # 清理歷史數(shù)據(jù)
      rm -rf release* || echo "no dir"
      #download code
      if [ -d $code_name ]; then
      rm -rf $code_name
      fi
      
      # 從Git獲取代碼
      git clone ssh://xxx@xxx.com:29418/xxx/$code_name
      
      # 獲取版本號
      cd $code_name
      versionname=`cat VERSION`
      version=$versionname
      
      # 創(chuàng)建release目錄
      mkdir ${root_path}/release_$version
      
      # 生成Git info
      cp /xxx/sh_script/git_info.sh .
      chmod +x git_info.sh
      ./git_info.sh
      mv git_info.txt git_info_${JOB_NAME}.txt
      cp git_info_${JOB_NAME}.txt ${root_path}/release_$version/
      rm -rf .git
      
      # 壓縮源碼
      cd $root_path
      cat ${root_path}/${code_name}/V_EXCLUDE | awk -v code_name=$code_name '/^(.+)$/{print " --exclude="code_name"/"$1}'| xargs tar czvf $code_name.tgz $code_name
      
      # 把源碼轉(zhuǎn)移到release目錄
      mv $code_name.tgz ${root_path}/release_$version/

      tar行用到了awk和xargs:

      先用cat取出V_EXCLUDE文件的內(nèi)容(需要排除的文件列表);然后用awk在每個(gè)文件名前面綴上源碼文件夾的名稱(因?yàn)槲覀冃枰谠创a文件夾的上一層執(zhí)行tar);然后使用xargs把這個(gè)列表傳給tar作為參數(shù)。

      其中awk使用了-v參數(shù)把shell中code_name的值傳到awk。

      PS: 之前tar中是使用-X參數(shù)來提供需要排除的文件列表,但是這個(gè)參數(shù)的解釋跟我們的需求不一致:-X匹配目錄內(nèi)所有的文件或文件夾,而我們需要的是相對跟目錄的路徑。詳細(xì)點(diǎn)說,如果給出的是index.php,-X會把目錄內(nèi)所有的index.php文件排除,而我們只是想排除跟目錄的index.php

       

      下面是增量發(fā)布代碼(跟全量發(fā)布代碼類似):

      # 定義變量
      root_path=$PWD
      code_name="HiCloudShop"
      
      # 清理歷史數(shù)據(jù)
      rm -rf release* || echo "no dir"
      #download code
      if [ -d $code_name ]; then
      rm -rf $code_name
      fi
      
      # 從Git獲取代碼
      git clone ssh://xxx@xxx.com:29418/xxx/$code_name
      
      # 獲取版本號
      cd $code_name
      versionname=`cat VERSION`
      version=$versionname
      
      # 創(chuàng)建release目錄
      mkdir ${root_path}/release_$version
      
      # 生成Git info
      cp /xxx/sh_script/git_info.sh .
      chmod +x git_info.sh
      ./git_info.sh
      mv git_info.txt git_info_${JOB_NAME}.txt
      cp git_info_${JOB_NAME}.txt ${root_path}/release_$version/
      rm -rf .git
      
      # 壓縮源碼
      cd $root_path
      cat ${root_path}/${code_name}/V_INCLUDE | awk -v code_name=$code_name '{print code_name"/"$1}' | xargs tar czvf $code_name.tgz
      
      # 把源碼轉(zhuǎn)移到release目錄
      mv $code_name.tgz ${root_path}/release_$version/

      posted on 2016-04-21 16:27  張凡文  閱讀(1965)  評論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 亚洲乱码国产乱码精品精| 国产精品有码在线观看| 国产AV一区二区三区| 国产亚洲精品AA片在线爽| 国产va免费精品观看| 欧美gv在线| 色伦专区97中文字幕| 又黄又爽又色的免费网站| 毛片tv网站无套内射tv网站| 麻豆国产97在线 | 欧美| 资源在线观看视频一区二区| 亚洲精品日本一区二区| 人人人澡人人肉久久精品| 亚洲人成网站在小说| 精品国产自线午夜福利| 亚洲中文久久久精品无码| 亚洲熟妇少妇任你躁在线观看无码| 日韩精品亚洲专区在线观看| 欧美另类videossexo高潮| 好吊视频在线一区二区三区 | 精品中文字幕一区在线| 白丝乳交内射一二三区| 亚洲无人区码一二三四区| 亚洲中文字幕一区二区| 日韩精品国产另类专区| 99久久婷婷国产综合精品青草漫画| 沂源县| 美女又黄又免费的视频| 九九热在线免费播放视频| 国产亚洲av日韩精品熟女| 99久久免费只有精品国产| 色噜噜狠狠成人综合| 亚洲国产美女精品久久久| 中文字幕少妇人妻精品| 99久久精品午夜一区二区| 男女裸体影院高潮| 亚洲av综合色一区二区| 亚洲国产成人极品综合| 亚洲精品成人久久av| 实拍女处破www免费看| 办公室强奷漂亮少妇视频|