jenkins配置记录(2)--代码发布流程
?
在我們的日常運(yùn)維工作中,使用jenkins來(lái)完成業(yè)務(wù)代碼發(fā)版上線是至關(guān)重要的一環(huán)。
前面已經(jīng)提到在jenkins上添加用戶(hù)權(quán)限的操作,今天重點(diǎn)說(shuō)下如何在jenkins下構(gòu)建項(xiàng)目工程進(jìn)行代碼發(fā)布?
在此簡(jiǎn)單介紹下jenkins進(jìn)行代碼發(fā)布的流程(根據(jù)本人的經(jīng)歷而述)。
1)代碼上線要經(jīng)歷四個(gè)場(chǎng)景:Dev開(kāi)發(fā)環(huán)境-->Test測(cè)試環(huán)境-->Beta驗(yàn)收環(huán)境-->Online線上環(huán)境
Dev開(kāi)發(fā)環(huán)境:開(kāi)發(fā)人員在開(kāi)發(fā)機(jī)上自行開(kāi)發(fā),開(kāi)發(fā)后將代碼上傳到svn/git版本控制系統(tǒng)里。
Test測(cè)試環(huán)境:將代碼從svn下載并同步到測(cè)試機(jī)(Test環(huán)境發(fā)版),通知測(cè)試同事進(jìn)行上線前的業(yè)務(wù)測(cè)試。
Beta驗(yàn)收環(huán)境:測(cè)試同事測(cè)試ok后,將代碼同步到Beta機(jī)上(Beta環(huán)境發(fā)版),然后通知產(chǎn)品/運(yùn)營(yíng)同事進(jìn)行上線前的驗(yàn)收。
Online線上環(huán)境:待Beta驗(yàn)收ok后,再將代碼同步到線上機(jī)器上,最終完成Online發(fā)版。
2)Test測(cè)試環(huán)境下的發(fā)版,沒(méi)有放到j(luò)enkins上操作(當(dāng)然也是可以放到kenins上構(gòu)建測(cè)試項(xiàng)目工程的),直接是在服務(wù)器上寫(xiě)的發(fā)版腳本進(jìn)行的。
3)Beta驗(yàn)收環(huán)境和Online線上環(huán)境的發(fā)版是放在jenkins上構(gòu)建項(xiàng)目工程完成的,上線發(fā)版分為全量發(fā)版(全部同步)和增量發(fā)版(個(gè)別文件同步)。
發(fā)版是根據(jù)svn的tag標(biāo)記,由release區(qū)分版本號(hào)進(jìn)行的。具體情況如下:
? ?
?
全量發(fā)布流程:
第一步:構(gòu)建FH_Diff_Release項(xiàng)目,構(gòu)建時(shí)會(huì)提示選擇一個(gè)release版本號(hào)。根據(jù)上線人員要求的release版本號(hào)(一般是最新的release號(hào))進(jìn)行構(gòu)建。將代碼從svn下載到j(luò)enkins本地(即放到對(duì)應(yīng)項(xiàng)目的workspace目錄下,也就是放在/usr/local/tomcat7/webapps/jenkins/jobs/FH_Diff_Release下)。構(gòu)建后
發(fā)布日志里會(huì)留有一個(gè)版本號(hào)(比如20161028183745)
第二步:構(gòu)建FH_Beta項(xiàng)目,構(gòu)建時(shí)會(huì)提示輸入VERSION版本號(hào)。使用FH_Diff_Release最近一次構(gòu)建后的版本號(hào)(如上面的20161028183745)構(gòu)建FH_Beta。構(gòu)建后發(fā)布日志里同樣也會(huì)留有一個(gè)版本號(hào)(也是20161028183745)。到這里完成Beta環(huán)境的驗(yàn)收工作,驗(yàn)收完成后
才可以進(jìn)行代碼上線工作。
第三步:構(gòu)建FH_Online項(xiàng)目,構(gòu)建時(shí)會(huì)提示輸入VERSION版本號(hào)。使用FH_Beta最近一次構(gòu)建后的版本號(hào)(也就是上面的20161028183745)構(gòu)建FH_Online。至此完成代碼全量上線。
增量發(fā)布流程:
重復(fù)上面的第一步和第二部,將代碼發(fā)布到Beta環(huán)境進(jìn)行驗(yàn)收,驗(yàn)收通過(guò)后,就可以進(jìn)行代碼上線了。
第三步:構(gòu)建FH_Diff_Beta,構(gòu)建時(shí)會(huì)提示輸入FILE_LIST(一般不會(huì)是文件的全路徑,是文件的部分路徑,具體參考shell腳本里對(duì)此參數(shù)的引用設(shè)置)。輸入要同步的個(gè)別文件進(jìn)行構(gòu)建即可。構(gòu)建后發(fā)布日志里也會(huì)留有一個(gè)版本號(hào)(比如20161014371145).
第四部:構(gòu)建FH_Online項(xiàng)目,構(gòu)建時(shí)會(huì)提示輸入VERSION版本號(hào)。使用FH_Diff_Beta最近一次構(gòu)建后的版本號(hào)(也就是上面的20161014371145)構(gòu)建FH_Online。至此完成代碼增量上線。
?
另外:
上面在構(gòu)建工程項(xiàng)目時(shí)要求輸入的參數(shù)VERSION和FILE_LIST都是在項(xiàng)目配置里定義的(具體下面會(huì)提到),并且這兩個(gè)參數(shù)在對(duì)應(yīng)項(xiàng)目配置里的shell腳本里都會(huì)被引用。
同時(shí),針對(duì)FH_Online項(xiàng)目,還可以創(chuàng)建FH_Rollback(使用ROLLBACK_VERSION參數(shù)),即Online環(huán)境的回滾方案(當(dāng)然Test和Beta環(huán)境也可以創(chuàng)建回滾項(xiàng)目。一般會(huì)寫(xiě)一個(gè)回滾腳本,同步前都會(huì)做一次備份,回滾腳本可依據(jù)自己的情況而定義)。
?
-------------------------------------------------------------------------------
廢話(huà)不多說(shuō),下面記錄下jenkins創(chuàng)建工程,構(gòu)建項(xiàng)目發(fā)版的具體流程:
首先新建一個(gè)工程任務(wù):
按照上面總結(jié)的上線發(fā)版流程,這里舉出一個(gè)業(yè)務(wù)線的代碼發(fā)版的項(xiàng)目,依次列出全量、增量發(fā)版的工程:
FF_Diff_Release
FF_Beta
FF_Diff_Beta
FF_Online
FF_Rollback?
1)FF_Diff_Release項(xiàng)目配置
接下來(lái)對(duì)這個(gè)項(xiàng)目進(jìn)行配置
首選”啟用項(xiàng)目安全“,選擇對(duì)該項(xiàng)目具有操作權(quán)限的用戶(hù)。一般而言,除了運(yùn)維人員(管理員)具有所有項(xiàng)目操作的權(quán)限外,一般只給開(kāi)發(fā)人員(通常是項(xiàng)目組的負(fù)責(zé)人)Beta環(huán)境下的項(xiàng)目操作權(quán)限。如下,只給caogaokui和yuxiaogang這兩個(gè)用戶(hù)(提前在“管理用戶(hù)”里創(chuàng)建好的用戶(hù))設(shè)置下面三個(gè)權(quán)限,說(shuō)明他們對(duì)該項(xiàng)目由構(gòu)建的權(quán)限。
?
在“參數(shù)化構(gòu)建過(guò)程”中選擇“List Subversion tags(and more)”,填寫(xiě)相應(yīng)業(yè)務(wù)svn的url;這里在對(duì)應(yīng)項(xiàng)目的svn(如下面的svn://192.168.9.120/fangfull_new)下特意創(chuàng)建了一個(gè)release目錄,在該目錄下建立易于區(qū)分的版本號(hào)目錄(如rel_20161031,里面存放業(yè)務(wù)代碼)用于jenkins發(fā)布版本。這樣在構(gòu)建此工程的時(shí)候,就會(huì)出現(xiàn)提示選擇一個(gè)release版本號(hào)(下面會(huì)演示到);
下面填寫(xiě)的svn://192.168.9.120/fangfull_new/releases最好提前在jenkins本機(jī)用svn co測(cè)試執(zhí)行一下(用對(duì)應(yīng)的的svn賬號(hào)和密碼,執(zhí)行一會(huì)兒就ctrl+c結(jié)束就行),看看能否正常通過(guò)svn下載,不然可能會(huì)有報(bào)錯(cuò)。 ?如下:即將svn://192.168.9.120/fangfull_new/releases下的版本目錄作為參數(shù)SVN_releases,用于構(gòu)建工程時(shí)的提示
?
下面的提示不用在意,不影響。?
?
最后,調(diào)用shell同步的腳本(腳本在jenkins本機(jī)上定義的,這里填寫(xiě)腳本的執(zhí)行命令就行)
?
?
-----------------------------------------------------------------------------------------------------------
這里列舉下jenkins內(nèi)置的環(huán)境變量(可以在jenkins構(gòu)建的項(xiàng)目配置中直接引用,如上圖Shell腳本中引用的${JOB_NAME})
BUILD_NUMBER, 唯一標(biāo)識(shí)一次build,例如23;
BUILD_ID,基本上等同于BUILD_NUMBER,但是是字符串,例如2011-11-15_16-06-21;
JOB_NAME, job的名字,例如JavaHelloWorld;
BUILD_TAG, 作用同BUILD_ID,BUILD_NUMBER,用來(lái)全局地唯一標(biāo)識(shí)一此build,例如jenkins-JavaHelloWorld-23;
EXECUTOR_NUMBER, 例如0;
NODE_NAME,slave的名字,例如MyServer01;
NODE_LABELS,slave的label,標(biāo)識(shí)slave的用處,例如JavaHelloWorld MyServer01;
JAVA_HOME, java的home目錄
WORKSPACE,job的當(dāng)前工作目錄
HUDSON_URL = JENKINS_URL, jenkins的url,例如http://localhost:8000/ ;
BUILD_URL,build的url 例如http://localhost:8000/job/JavaHelloWorld/23/;
JOB_URL, job的url,例如http://localhost:8000/job/JavaHelloWorld/;
SVN_REVISION,svn 的revison
-----------------------------------------------------------------------------------------------------------
下面貼出該項(xiàng)目配置中調(diào)用的shell腳本(腳本中的192.168.1.106是其中的一臺(tái)線上服務(wù)器):
先從線上機(jī)器拷貝一份代碼下來(lái),放到腳本中的${CODE_DIR}目錄下
接著將代碼從svn下載到腳本中的${WORKSPACE}中,然后再同步到腳本中的${FILE_DIR}/${VERSION}目錄下,已等待后續(xù)發(fā)往beta環(huán)境中。
然后執(zhí)行這個(gè)工程的構(gòu)建,如下,構(gòu)建時(shí)會(huì)提示你選擇一個(gè)SVN_release的版本號(hào)。
上面的rel_*版本目錄作為SVN_releases參數(shù),是開(kāi)發(fā)人員上傳到svn://192.168.9.120/fangfull_new/releases下的,通過(guò)svn能看到:
?
?
----------------------------------------------------------------------------------------------------------------------------------------
另一種形式:
上面的FF_Diff_Release項(xiàng)目配置中采用了“發(fā)版時(shí)選擇release版本號(hào)”的配置(如上截圖中)
也可以不采用上面這種方式:
直接配置一個(gè)svn的url(分支或主干)就行,不啟動(dòng)上面的“參數(shù)化構(gòu)建過(guò)程”
這樣,點(diǎn)擊“構(gòu)建”的時(shí)候就直接執(zhí)行項(xiàng)目構(gòu)建了,沒(méi)有上面的選擇版本號(hào)的提示了
如下的一個(gè)項(xiàng)目,就跟上面的FF_Diff_Release項(xiàng)目配置不一樣,具體采用哪種方式,根據(jù)自己的情況而定。
?
最簡(jiǎn)單的做法還可以是:在jenkins本機(jī)提前編寫(xiě)好代碼同步的腳本(svn操作在腳本中定義),然后在jenkins界面里的項(xiàng)目構(gòu)建配置中只引用shell腳本構(gòu)建即可。
----------------------------------------------------------------------------------------------------------------------------------------
2)FF_Beta項(xiàng)目配置
啟用“參數(shù)化構(gòu)建過(guò)程”,選擇“String Parameter”,里面填寫(xiě)“VERSION”。這樣構(gòu)建這個(gè)工程時(shí)就會(huì)出現(xiàn)提示你輸入版本號(hào),也就是輸入上面的FF_Diff_Release項(xiàng)目構(gòu)建后打印的版本號(hào)(在Consloe Output日志里最底部可以看到)構(gòu)建。
接下來(lái)不需要再設(shè)置“源碼管理”了,直接引用shell腳本即可。
?下面貼出該項(xiàng)目配置中調(diào)用的shell腳本(腳本中的192.168.1.25是beta服務(wù)器),可以看出,上面設(shè)置的VERSION參數(shù),在腳本里已經(jīng)被引用到了。
[root@jenkins-server Shell]# cat FF_Beta.sh #!/bin/bash FILE_DIR="/var/lib/jenkins/file_list/www.wangshibo.com" BETA_SERVER="192.168.1.25" BETA_DIR="/var/www/vhosts/www.wangshibo.com"### define check_return ### check_return() {if [[ $? != "0" ]]; then/bin/echo $1exit 255fi }### check syntax errors ### /bin/echo "check syntax errors" for line in `/bin/find ${FILE_DIR}/${VERSION} -type f -name "*.php"`; do/Data/app/php5.5.1/bin/php -l "${line}" >/dev/null 2>&1check_return "syntax errors,please check ${line}" done### release to beta server ### /usr/bin/rsync -av -e "ssh -p25791" ${FILE_DIR}/${VERSION}/ root@${BETA_SERVER}:${BETA_DIR}/ check_return "release to beta server failed"### change directory permission ### /usr/bin/ssh -p25791 -t -q -o 'StrictHostKeyChecking no' root@${BETA_SERVER} "/bin/chown -R nobody:nobody /var/www/vhosts/www.wangshibo.com; /bin/chmod -R 755 /var/www/vhosts/www.wangshibo.com/main/protected/runtime /var/www/vhosts/www.wangshibo.com/main/protected/themes /Data/logs/www/fangfull.com" ### purge memcache ### #/usr/bin/ssh -t -q -o 'StrictHostKeyChecking no' root@${BETA_SERVER} "echo flush_all | nc 127.0.0.1 11221 ; echo flush_all | nc 127.0.0.1 11222" >/dev/null 2>&1### print version ### /bin/echo "Version : ${VERSION}"點(diǎn)擊構(gòu)建腳本,就會(huì)出現(xiàn)輸入版本號(hào)的提示(注意上面Beta的shell腳本中有/Data/app/php5.5.1/bin/php進(jìn)程,把這個(gè)php服務(wù)啟動(dòng)起來(lái);按照以上腳本中的意思是在代碼發(fā)布前,將代碼中的php文件搜索出來(lái),然后用php執(zhí)行下這些php腳本文件,如果有報(bào)錯(cuò),則終止這次構(gòu)建,如果沒(méi)有報(bào)錯(cuò),則繼續(xù)進(jìn)行代碼發(fā)布;具體按照自己的實(shí)際情況對(duì)腳本進(jìn)行調(diào)試)
3)FF_Diff_Beta項(xiàng)目配置
?如下:參數(shù)名填寫(xiě)為FILE_LIST,在構(gòu)建該項(xiàng)目的時(shí)候會(huì)有這個(gè)參數(shù)的提示,即輸入要發(fā)布的文件,這是增量發(fā)版用到的(具體上面已經(jīng)總結(jié))。
?
接著直接引用shell腳本即可:
下面貼出該項(xiàng)目配置中調(diào)用的shell腳本(腳本中的192.168.1.25是beta服務(wù)器):
從腳本中可以看出:
上面“參數(shù)化構(gòu)建”中定義的FILE_LIST在腳本中被引用到了。
同步前先從beta機(jī)器上將代碼備份一份到本機(jī),然后再根據(jù)FILE_LIST進(jìn)行增量同步。
點(diǎn)擊構(gòu)建腳本,就會(huì)出現(xiàn)輸入文件的提示(多個(gè)文件之間用空格隔開(kāi)),如下,輸入文件的格式路徑可以根據(jù)shell腳本中(注意上面腳本中的dirname命令,即取一個(gè)路徑的目錄部分(即去掉一個(gè)路徑最后一級(jí)后的部分路徑))
?
4)FF_Online項(xiàng)目配置
下面貼出該項(xiàng)目構(gòu)建配置中引用的腳本(腳本中的192.168.1.106和192.168.1.220是線上服務(wù)器):
[root@jenkins-server Shell]# cat FF_Online.sh #!/bin/bash FILE_DIR="/var/lib/jenkins/file_list/www.wangshibo.com" CODE_DIR="/var/lib/jenkins/code_online/www.wangshibo.com" EXCLUDE_FILE="/var/lib/jenkins/code_online/www.wangshibo.com.exclude" ROLLBACK_DIR="/var/lib/jenkins/rollback/www.wangshibo.com" ONLINE_SERVER="192.168.1.106 192.168.1.220" REMOTE_SERVER="192.168.1.106" ONLINE_DIR="/var/www/vhosts/www.wangshibo.com"### define check_return ### check_return() {if [[ $? != "0" ]]; then/bin/echo $1exit 255fi }### check version ### if [[ ! -d ${FILE_DIR}/${VERSION} ]]; then/bin/echo "版本無(wú)效,請(qǐng)確認(rèn)."exit 255 fi### update code ### /bin/echo "update online code" /usr/bin/rsync -a -e ssh --exclude-from ${EXCLUDE_FILE} root@${REMOTE_SERVER}:/var/www/vhosts/www.wangshibo.com/ ${CODE_DIR}/ check_return "update code failed"### backup code ### /bin/echo "backup online code" cd ${CODE_DIR} && /usr/bin/rsync -aR * ${ROLLBACK_DIR}/${VERSION}/ check_return "backup code failed"### release to online server ### for SERVER in ${ONLINE_SERVER}; do/bin/echo "release to ${SERVER}"/usr/bin/rsync -av -e "ssh -o 'StrictHostKeyChecking no'" ${FILE_DIR}/${VERSION}/ root@${SERVER}:${ONLINE_DIR}//usr/bin/ssh -t -q -o 'StrictHostKeyChecking no' root@${SERVER} "/bin/chown -R nobody:nobody /var/www/vhosts/www.wangshibo.com ; /bin/chmod -R 755 /var/www/vhosts/www.wangshibo.com/main/protected/runtime /var/www/vhosts/www.wangshibo.com/main/protected/themes /Data/logs/www/fangfull.com" >/dev/null 2>&1 done### print rollback version ### /bin/echo "Rollback Version : ${VERSION}"點(diǎn)擊構(gòu)建腳本,就會(huì)出現(xiàn)輸入版本號(hào)的提示
5)FF_Rollback項(xiàng)目配置,即FF_Online的回滾方案,就是說(shuō)上線如若出現(xiàn)問(wèn)題,構(gòu)建這個(gè)FF_Rollback工程就會(huì)自動(dòng)回滾到上線前的狀態(tài)
?
?
?
下面是該回滾項(xiàng)目的shell腳本
[root@jenkins-server Shell]# cat FF_Rollback.sh #!/bin/bash FILE_DIR="/var/lib/jenkins/file_list/www.wangshibo.com" CODE_DIR="/var/lib/jenkins/code_online/www.wangshibo.com" EXCLUDE_FILE="/var/lib/jenkins/code_online/www.wangshibo.com.exclude" ROLLBACK_DIR="/var/lib/jenkins/rollback/www.wangshibo.com" ROLLBACK_VERSION=`/bin/ls -l /var/lib/jenkins/rollback/www.wangshibo.com|tail -1|awk '{print $9}'` ONLINE_SERVER="192.168.1.106 192.168.1.220" ONLINE_DIR="/var/www/vhosts/www.wangshibo.com"### define check_return ### check_return() {if [[ $? != "0" ]]; then/bin/echo $1exit 255fi }### release to online server ### for SERVER in ${ONLINE_SERVER}; do/bin/echo "release to ${SERVER}"/usr/bin/rsync -av -e "ssh -o 'StrictHostKeyChecking no'" ${ROLLBACK_DIR}/${ROLLBACK_VERSION}/ root@${SERVER}:${ONLINE_DIR}//usr/bin/ssh -t -q -o 'StrictHostKeyChecking no' root@${SERVER} "/bin/chown -R nobody:nobody /var/www/vhosts/www.wangshibo.com ; /bin/chmod -R 755 /var/www/vhosts/www.wangshibo.com/main/protected/runtime /var/www/vhosts/www.wangshibo.com/main/protected/themes /Data/logs/www/fangfull.com ; cd /var/www/vhosts/www.wangshibo.com/main/qmjjrwap/themes/ntpl; /bin/rm -rf /var/www/vhosts/www.wangshibo.com/main/qmjjrwap/themes/ntpl/*; /bin/ln -s /var/www/vhosts/www.wangshibo.com/main/qmjjrwap/dist/themes/ntpl/qmjjrwap ./; /bin/chown -R nobody:nobody /var/www/vhosts/www.wangshibo.com/main/qmjjrwap/themes/ntpl/qmjjrwap" >/dev/null 2>&1 done### print rollback version ### /bin/echo "Rollback Version : ${VERSION}"回滾即是用最近一次的備份覆蓋到線上,腳本中的“ROLLBACK_VERSION”參數(shù)實(shí)際上取的就是最近一次的備份
[root@jenkins-server Shell]# ll /var/lib/jenkins/rollback/www.wangshibo.com total 72 drwxr-xr-x 9 root root 4096 Aug 10 12:24 20160810122352 drwxr-xr-x 9 root root 4096 Aug 12 18:05 20160812180522 drwxr-xr-x 9 root root 4096 Aug 19 17:59 20160819175910 drwxr-xr-x 9 root root 4096 Aug 29 10:41 20160826170848 drwxr-xr-x 9 root root 4096 Sep 8 19:52 20160908195214 drwxr-xr-x 9 root root 4096 Sep 14 19:40 20160914193917 drwxr-xr-x 9 root root 4096 Sep 20 18:33 20160920171701 drwxr-xr-x 9 root root 4096 Sep 22 13:41 20160922110959 drwxr-xr-x 9 root root 4096 Sep 22 16:19 20160922161415 drwxr-xr-x 9 root root 4096 Sep 23 20:30 20160923201543 drwxr-xr-x 9 root root 4096 Sep 23 21:57 20160923213311 drwxr-xr-x 9 root root 4096 Sep 23 22:12 20160923220941 drwxr-xr-x 9 root root 4096 Sep 29 21:24 20160929210300 drwxr-xr-x 9 root root 4096 Oct 17 16:13 20161017161120 drwxr-xr-x 9 root root 4096 Oct 17 19:51 20161017192718 drwxr-xr-x 9 root root 4096 Oct 26 17:17 20161025173337 drwxr-xr-x 9 root root 4096 Oct 28 18:58 20161028185753 drwxr-xr-x 9 root root 4096 Nov 2 17:03 20161102145159 [root@jenkins-server Shell]# /bin/ls -l /var/lib/jenkins/rollback/www.wangshibo.com|tail -1|awk '{print $9}' 20161102145159點(diǎn)擊這個(gè)回滾項(xiàng)目的構(gòu)建,同樣會(huì)出現(xiàn)讓你輸入版本號(hào)的提示
?
?
******************************************************************************************************
擴(kuò)展小提示:
截取目錄的方法,有以下兩種:
1)dirname命令:用于取給定路徑的目錄部分。這個(gè)命令很少直接在shell命令行中使用,一般把它用在shell腳本中,用于取得腳本文件所在目錄,然后將當(dāng)前目錄切換過(guò)去。
其實(shí)就是取所給路徑的倒數(shù)第二級(jí)及其之前的路徑部分,如下:
[root@jenkins-server Shell]# dirname main/protected/xqsjmob/themes/tpl2/common/page_statistics.tpl
main/protected/xqsjmob/themes/tpl2/common
[root@jenkins-server Shell]# dirname /usr/local/tomcat7/webapps/jenkins/scripts/Shell
/usr/local/tomcat7/webapps/jenkins/scripts
[root@jenkins-server Shell]# dirname FF_Online.sh ? ? ? ? ? ?#取的結(jié)果既是當(dāng)前路徑目錄下
.
2)可以用${pathname%/*}截取掉pathname后面的文件部分。
下面比較下這兩種方法的效果:即dirname取的是倒數(shù)第二級(jí)及其以上級(jí)的路徑,而${pathname%/*}取的是"刪除最后一個(gè)/符號(hào)后的路徑部分"
[root@jenkins-server Shell]# pathname=/usr/bin/sort; echo $(dirname $pathname) ${pathname%/*}
/usr/bin /usr/bin
You have new mail in /var/spool/mail/root
[root@jenkins-server Shell]# pathname=/usr/bin/sort/; echo $(dirname $pathname) ${pathname%/*}
/usr/bin /usr/bin/sort
[root@jenkins-server Shell]# pathname=/usr/; echo $(dirname $pathname) ${pathname%/*}
/ /usr
[root@jenkins-server Shell]# pathname=/usr; echo $(dirname $pathname) ${pathname%/*}
/
---------------------------------------------------------------------------------------------------
以上的項(xiàng)目在構(gòu)建后,可以通過(guò)構(gòu)建日志查看代碼發(fā)布情況:
如下:點(diǎn)擊“Console Output"查看日志
?
?通過(guò)查看Parameter參數(shù)得到本次構(gòu)建動(dòng)作所用到的VERSION版本號(hào)或FILE_LIST文件
?
?
?
?
?
待項(xiàng)目構(gòu)建完成后,還可以創(chuàng)建視圖,將相關(guān)業(yè)務(wù)(應(yīng)用)構(gòu)建的工程放到同一個(gè)視圖下,有多少個(gè)應(yīng)用就創(chuàng)建多少個(gè)視圖。如下創(chuàng)建視圖:
?
然后將相應(yīng)的構(gòu)建工程拉到這個(gè)視圖下進(jìn)行管理
?
至此,一個(gè)完整項(xiàng)目的jenkins發(fā)版流程已經(jīng)配置完成,后續(xù)上線發(fā)版只需要在這里一鍵構(gòu)建執(zhí)行即可。這僅僅是依據(jù)本人使用jenkins的經(jīng)歷而梳理的,如有誤述,敬請(qǐng)指出,以待改正!
?
轉(zhuǎn)載于:https://www.cnblogs.com/kevingrace/p/6022447.html
總結(jié)
以上是生活随笔為你收集整理的jenkins配置记录(2)--代码发布流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle中start with...
- 下一篇: sed 解释正则表达式