利用gitlab、maven、docker自動構建web應用__web

來源:互聯網
上載者:User

      以前團隊每次構建應用都要通過Eclipse/STS匯出war包,然後再上傳到伺服器,拷貝到tomcat,還要手動停止/啟動tomcat服務,實在麻煩,還非常容易出錯。

      我利用gitlab、maven、docker工具,加上一個shell指令碼,做了個簡單的自動構建工具。

1.首先安裝jdk 64版、maven,修改/etc/profile檔案如下:

JAVA_HOME=/home/git/jdk1.8.0_161JRE_HOME=$JAVA_HOME/jre#CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/libCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jarexport MAVEN_HOME=/home/git/src/apache-maven-3.5.2PATH=$JAVA_HOME/bin:/home/git/apache-maven-3.5.2/bin:$PATHexport JAVA_HOME CLASSPATH JRE_HOME PATHTZ='Asia/Shanghai'; export TZ

2.安裝docker,並利用docker安裝gitlab,可以參考我以前的部落格。https://blog.csdn.net/jzd1997/article/details/79297250

2.1 下載tomcat鏡像,並啟動。


sudo docker pull tomcatsudo docker cp /etc/localtime gitlab:/etc/localtime   #解決容器和主機時間不一致問題sudo docker run -d -p 8080:8080 --name customer tomcat

啟動後可以進入docker tomcat執行個體,確認tomcat存放位置。

sudo docker exec -it customer /bin/bash

root@f945b6723f41:/usr/local/tomcat# cd webapps/

root@f945b6723f41:/usr/local/tomcat/webapps# pwd

/usr/local/tomcat/webapps

root@f945b6723f41:/usr/local/tomcat/webapps# ls

CumstomerManage      ROOT  examples manager

CumstomerManage.war  docs  host-manager

root@f945b6723f41:/usr/local/tomcat/webapps#

3.編寫自動構建指令檔。

#!/bin/bash#切換目錄cd ~/customermanage_web/#拉取最新代碼git pull#產生war包mvn package -Dmaven.test.skip=truesudo docker restart customer#拷貝war包sudo docker cp ~/customermanage_web/target/CumstomerManage.war customer:/usr/local/tomcat/webapps#重啟tomcatsudo docker restart customer

完成後添加指令碼執行許可權。

chmod 755 deploy_customer.sh

ps.這個地方還解決了一個mvn打包編譯問題,mvn packge的時候提示 [Maven]package com.sun.image.codec.jpeg does not exist

原因為Oracle在jdk7以後就對com.sun的所有包都退休了。

Synopsis: The Non-standard com.sun.image.codec.jpeg Package is RetiredDescription: The com.sun.image.codec.jpeg package was added in JDK 1.2 (Dec 1998) as a non-standard way of controlling the loading and saving of JPEG format image files. This package was never part of the platform specification and it has been removed from the Java SE 7 release. The Java Image I/O API was added to the JDK 1.4 release as a standard API and eliminated the need for the com.sun.image.codec.jpeg package.

解決這個問題只需要在pom檔案當中添加

<plugin><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><compilerArgument>-XDignore.symbol.file</compilerArgument>                                </configuration>

4. 執行指令碼,確認執行結果

./deploy_customer.sh

5. 剛才team member用了下覺得很方便,然後又提出了一個小需求,希望每天自動產生daily build版本,測試第二天一早就可以驗證最新的代碼,實現也很簡單,在crontab中添加定時任務。

crontab -e# m h  dom mon dow   command0 1 * * * /home/git/deploy_customer.sh

第一個參數是分,第二個參數是小時,後面幾個*代表每天運行。


到這裡就結束後,後續如果有時間準備再折騰下Jenkins,實現持續整合。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.