亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Windows平臺的軟件自動構(gòu)建與發(fā)布技術(shù)研究

        2018-09-20 08:53:54于紅雨
        關(guān)鍵詞:源碼批處理命令

        于紅雨,李 燕

        (機(jī)械工業(yè)第六設(shè)計研究院有限公司 智能與信息工程中心,河南 鄭州 450007)

        隨著應(yīng)用軟件系統(tǒng)的業(yè)務(wù)功能越來越多,用戶數(shù)量逐漸龐大,軟件系統(tǒng)的編譯構(gòu)建也越來越復(fù)雜,且通常需要在多臺服務(wù)器上發(fā)布部署.軟件新業(yè)務(wù)功能的構(gòu)建與發(fā)布是指更新并編譯代碼,將發(fā)布代碼打包,再將新發(fā)布包拷貝到各服務(wù)器上,然后將發(fā)布包覆蓋至各服務(wù)器的發(fā)布目錄中.更新源碼并編譯時需使用源碼管理工具軟件更新代碼,打開開發(fā)環(huán)境進(jìn)行編譯.在創(chuàng)建發(fā)布包時,某些配置文件無需打包.發(fā)布時將發(fā)布包拷貝至各服務(wù)器中并解壓覆蓋服務(wù)器的發(fā)布目錄.構(gòu)建與發(fā)布過程包含了很多重復(fù)性工作,耗時費(fèi)力,容易出錯.

        Maven[1]、GNU Make[2]、Apache Ant、Jenkins[3]等常見解決方案主要用于Linux平臺或JAVA語言開發(fā)項目的自動構(gòu)建及發(fā)布.EEP(Efficient Electronic Platform)協(xié)同管理軟件的開發(fā)環(huán)境為Windows平臺VS2015,而源碼管理工具為SVN1.9.2,開發(fā)語言為C#,部署環(huán)境為6臺Windows Server服務(wù)器.以上解決方案不適用EEP協(xié)同管理平臺的構(gòu)建.為此,本文依據(jù)EEP協(xié)同管理軟件的實(shí)際開發(fā)和部署環(huán)境,提出一種輕量級的解決方案.該方案主要包括軟件源碼更新和編譯、發(fā)布代碼打包并傳送至各服務(wù)器部署等工作,另外,需以批處理命令寫入批處理文件,在構(gòu)建發(fā)布部署時執(zhí)行批處理文件.該方案與現(xiàn)有常見解決方案相比,更符合EEP協(xié)同管理軟件的實(shí)際部署運(yùn)行情況.

        1 軟件構(gòu)建與發(fā)布過程

        本文依據(jù)軟件現(xiàn)有開發(fā)、部署環(huán)境,使用Windows批處理方式,將原有各項手工操作以Window命令、SVN命令、MSBuild命令、壓縮工具的壓縮和解壓命令寫入批處理文件中,通過執(zhí)行批處理文件實(shí)現(xiàn)構(gòu)建與發(fā)布部署工作的自動執(zhí)行.

        該方案需在軟件源碼服務(wù)器上存放一個批處理文件(實(shí)現(xiàn)更新下載源碼,編譯源碼以及將待發(fā)布的文件打包并傳送至各服務(wù)器),并將批處理執(zhí)行情況記錄到日志文件中;在服務(wù)器上存放一個批處理文件后,通過服務(wù)器上定時任務(wù)的執(zhí)行,將發(fā)布包解壓至代碼發(fā)布目錄中;然后,壓縮備份發(fā)布目錄,并將批處理執(zhí)行情況記錄到日志文件中.

        圖1所示的軟件構(gòu)建及服務(wù)器集群部署工作流程能夠直觀地說明軟件構(gòu)建與發(fā)布的過程.

        圖1 軟件構(gòu)建及服務(wù)器集群部署工作流程

        2 關(guān)鍵技術(shù)

        2.1 SVN

        SVN是Apache Subversion 的縮寫.Subversion是一個免費(fèi)/開源的版本控制系統(tǒng),于2000 年由 CollabNet 公司開發(fā),現(xiàn)已發(fā)展為 Apache 軟件基金會的一個產(chǎn)品.

        通過Subversion軟件可以跨時間對文件和目錄的修改進(jìn)行管理,允許恢復(fù)數(shù)據(jù)的舊版本或檢查數(shù)據(jù)的修改歷史;可以跨越局域網(wǎng)進(jìn)行操作,允許多個用戶在不同的機(jī)器上修改和管理同一組數(shù)據(jù),有利于團(tuán)隊協(xié)作.它是一個通用系統(tǒng), 可以管理任意類型的文件集合.

        針對EEP平臺,可用SVN系統(tǒng)工具進(jìn)行源碼版本控制.SVN的常用命令[4]如下:

        svn add 添加文件、目錄

        svn checkout 從源碼倉庫中取出一個工作副本

        svn cleanup 遞歸清理工作副本

        svn commit 將本地工作副本的改動發(fā)送至源碼倉庫

        svn delete 從源碼倉庫或本地工作副本刪除一個文件

        svn revert 撤銷本地修改

        svn update 更新本地工作副本(從源碼倉庫更新).

        2.2 MSBuild命令

        使用腳本或.bat文件運(yùn)行VS IDE軟件時,如果要生成相關(guān)的任務(wù),則推薦使用MSBuild命令.本文研究的一項關(guān)鍵技術(shù)就是使用命令控制項目的編譯生成過程.MSBuild命令[5]如下:

        MSBuild.exe [命令開關(guān)][項目文件]

        /ds 在生成日志末尾顯示有關(guān)生成的配置以及如何將它們安排到節(jié)點(diǎn)中的詳細(xì)信息

        /p:name=value設(shè)置或重寫指定項目級屬性,其中name是屬性名稱,value是屬性值.要求單獨(dú)指定每個屬性并使用分號或逗號分隔多個屬性

        /t:targets在項目中生成指定目標(biāo).要求單獨(dú)指定每個目標(biāo)并使用分號或逗號分隔多個目標(biāo)

        /l:logger指定用于記錄MSBuild中事件的記錄器

        /clp:parameters將指定的參數(shù)傳遞到控制臺記錄器,且后者會在控制臺窗口中顯示生成信息.這里可以指定以下參數(shù):

        -PerformanceSummary顯示在任務(wù)、目標(biāo)和項目中所花費(fèi)的時間;

        -Summary在末尾顯示錯誤和警告摘要.

        2.3 壓縮軟件命令

        由于軟件項目編譯后生產(chǎn)的發(fā)布代碼文件數(shù)量較多,因此有必要使用壓縮工具把發(fā)布文件打包后發(fā)送至各服務(wù)器,服務(wù)器再執(zhí)行發(fā)布文件包解壓來實(shí)現(xiàn)代碼發(fā)布.常用解壓工具HaoZip的命令[6]如下:

        HaoZipC a -tzip archive.zip subdir* 從 subdir 文件夾添加所有文件到 archive.zip壓縮文件

        HaoZipC d archive.zip *.bak 從 archive.zip 壓縮文件中刪除 *.bak 文件

        HaoZipC e archive.zip -oc:soft *.cpp 從壓縮文件 archive.zip 中釋放 *.cpp 文件到 c:soft 文件夾

        HaoZipC x archive.zip -oc:soft *.cpp 從壓縮文件 archive.zip 中釋放 *.cpp 文件到 c:soft 文件夾.

        2.4 局域網(wǎng)連接及文件拷貝命令

        要將軟件部署在局域網(wǎng)內(nèi)多臺服務(wù)器中,必須先將發(fā)布包傳送至各服務(wù)器,最簡單的方法就是建立局域網(wǎng)連接并將文件拷貝至服務(wù)器中.Wndows平臺局域網(wǎng)連接及局域網(wǎng)文件拷貝命令[7]如下:

        net use \IPipc$“密碼”/user:“帳號”建立與指定IP的IPC$(空連接)

        net use z: \IPc$“密碼”/user:“帳號”將對方的C盤映射為自己的Z盤

        net use \IPipc$/del刪除與指定IP的IPC$連接

        net use z:/del刪除本機(jī)映射的Z盤

        net use * /del刪除本機(jī)所有映射和IPC$連接.

        XCOPY是COPY的擴(kuò)展,可以在建立連接的局域網(wǎng)計算機(jī)間復(fù)制文件和目錄(包括子目錄).XCOPY的語法[8]如下:

        XCOPY Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a |/m}] [/n] [/o] [/x] [/exclude:FileName1[+[FileName2]][+[FileName3]] [{/y | /-y}] [/z].

        3 軟件自動構(gòu)建與發(fā)布技術(shù)方案的設(shè)計及實(shí)現(xiàn)

        本文以EEP協(xié)同管理Web平臺項目(以下簡稱EEP Web平臺)為例,根據(jù)項目特點(diǎn)進(jìn)行軟件自動構(gòu)建及發(fā)布技術(shù)方案的詳細(xì)設(shè)計.EEP Web平臺是EEP平臺的Web版,與EEP平臺共用后臺服務(wù)軟件,它屬于ASP.Net MVC項目.軟件自動構(gòu)建是在源碼服務(wù)器上進(jìn)行的,而代碼發(fā)布是在各應(yīng)用服務(wù)器上完成的,因此需要編寫在源碼服務(wù)器上運(yùn)行的自動構(gòu)建.bat文件和在應(yīng)用服務(wù)器上運(yùn)行的部署.bat文件.

        3.1 源碼更新

        因?yàn)镋EP Web平臺既具有Web前端頁面,也引用了EEP平臺的后臺服務(wù),所以其源碼分為兩部分(自身源碼和引用的EEP平臺服務(wù)程序集),在源碼更新時二者都更新才能保證后續(xù)編譯通過.

        源碼更新功能需要SVN軟件工具的支持.這里僅用SVN的更新代碼命令update即可,但需要將SVN的工具路徑、命令及源碼路徑寫入批處理文件.為了方便,可在批處理文件中定義變量保存工具的路徑及源碼路徑、編譯結(jié)果目錄、打包文件名等,后續(xù)使用軟件路徑及源碼路徑時引用相應(yīng)變量即可.

        源碼更新的變量設(shè)置命令如下:

        set TortoiseProc=“C:Program FilesTortoiseSVNinTortoiseProc.exe”

        set SourceCodeFolder=“D:***EEP_WebPlatform runkSrc” 注:***代替了詳細(xì)路徑

        set ShareDllFolder=“D:***EEP_WebPlatform runkShareDll”.

        源碼更新的批處理命令如下:

        %TortoiseProc% /command:update /path:%SourceCodeFolder% /closeonend:1

        %TortoiseProc% /command:update /path:%ShareDllFolder% /closeonend:1

        echo 代碼更新完成……

        源碼更新完畢后退出SVN.

        3.2 源碼編譯

        源碼編譯在源碼服務(wù)器上進(jìn)行,在此之前,各程序員已經(jīng)完成了本地編譯及功能測試,并將代碼通過SVN簽入源碼服務(wù)器.因此,編寫編譯命令時無需帶調(diào)試符號.源碼編譯與源碼更新的批處理命令編寫方式相同,定義變量保存編譯的工具路徑、解決方案路徑和編譯輸出路徑.

        源碼編譯的變量設(shè)置命令如下:

        set Msbuild=“C:WindowsMicrosoft.NETFrameworkv4.0.30319Msbuild.exe”

        set sln=“D:***EEP_WebPlatform runkSrcEEP_WebPlatform.sln”

        set OutDir=“D:***EEP_WebPlatform runkSrcEEP_WebPlatformin”

        源碼編譯命令如下:

        %Msbuild% %sln% /ds /clp:ShowTimestamp;Summary /m /t:Clean;Build /p:DebugSymbols=false;VisualStudioVersion=12.0; OutDir=%OutDir%

        echo源碼編譯完成.

        此處將編譯過程信息直接顯示在控制臺窗口中,可以使用/l:logger將編譯過程信息記錄至日志文件中,使用/nocolog開關(guān)來禁用控制臺記錄器.

        3.3 發(fā)布代碼打包

        因?yàn)樵创a服務(wù)器上應(yīng)用軟件配置文件中EEP平臺的后臺服務(wù)路徑與實(shí)際部署時配置文件的服務(wù)路徑不一致,所以應(yīng)在代碼打包時排除源碼服務(wù)器上的此類配置文件.若源碼資源文件中包含二維碼圖片,則需要將此類圖片排除(因正式服務(wù)器上所用圖片與源碼服務(wù)器圖片不同).

        打包批處理命令如下:

        set PublishedWebFolder=“D:***EEP_WebPlatform runkSrcEEP_WebPlatformin\_PublishedWebsitesEEP_WebPlatform”

        set zipFileName =Deploy

        set zipFileFullName=D:***EEP_WebPlatform runkDeploy

        set Zipexe=“C:Program Files2345SoftHaoZipHaoZipC.exe”

        echo 刪除未修改的文件,減小壓縮包大小,加快處理速度……

        del /f /q %PublishedWebFolder%Web.config

        del /f /q %PublishedWebFolder%ResourcesServiceConfigService.xml

        echo 壓縮文件,通過HaoZip軟件……

        del /f /s /q “%zipFileFullName%.zip”

        %Zipexe% a -tzip “%zipFileFullName%.zip” %PublishedWebFolder%* -r.

        3.4 將發(fā)布包發(fā)送至服務(wù)器

        在發(fā)布代碼部署至各服務(wù)器前,需要將發(fā)布代碼包發(fā)送至各服務(wù)器.

        發(fā)布包發(fā)送命令如下:

        rem windows遠(yuǎn)程復(fù)制?

        set ip_addr1=***.***.*.*

        rem 連接到遠(yuǎn)程服務(wù)器***.***.*.*

        net use \%ip_addr1%ipc$ password/user:accountName

        rem 更新復(fù)制到遠(yuǎn)程服務(wù)器

        xcopy %zipFileFullName%.zip \%ip_addr1%EEP_WebPlateReleaseFile /y /h

        xcopy %zipFileFullName%.zip \%ip_addr1%EEP_WebPlate

        国产精品久久久久9999赢消| 久久色悠悠综合网亚洲| 在线播放草猛免费视频| 好男人社区影院www| 成人无码视频在线观看网站| 精品国产迪丽热巴在线| 日本中文字幕有码在线播放| 国产精品二区一区二区aⅴ污介绍| 精品麻豆国产色欲色欲色欲www| 久久无码精品精品古装毛片| 亚洲视频在线视频在线视频| 91自拍视频国产精品| 日韩精品内射视频免费观看| 国产黄色免费网站| 久久激情人妻中文字幕 | 丝袜美腿亚洲第一免费| 亚洲熟女一区二区三区| 欧美在线日韩| 色婷婷一区二区三区77| 国产人妖乱国产精品人妖| 中文字幕日本特黄aa毛片| 国产69口爆吞精在线视频喝尿 | 牛牛在线视频| 欧美性受xxxx黑人xyx性爽| 中文乱码字幕在线中文乱码| 日韩中文字幕在线观看一区| 精品无码日韩一区二区三区不卡| 伊人久久一区二区三区无码| 国产午夜激情视频在线看| √天堂资源中文www| 中文字幕无码家庭乱欲| 国产亚洲AV片a区二区| 国产精品亚洲av高清二区| 亚洲av午夜国产精品无码中文字| 97视频在线观看免费| 精品国产污黄网站在线观看| 国产极品粉嫩福利姬萌白酱| 亚洲美国产亚洲av| 亚洲美女性生活一级片| 精品国产成人av久久| 亚洲日韩欧洲无码av夜夜摸|