- 0x00 前言
繼續上午的坑爹部署後,打算將需要執行的jar包用Jenkins構建並運行。
- 0x01 思路
1. 使用maven的maven-shade-plugin插件,把maven項目的各種依賴jar包統統打包,生成.jar文件。
2. 通過Jenkins持續集成構建項目。
3. 停止之前運行的jar包。
4. Jenkins構建後生成的jar包替換掉到我指定的文件夾中的舊的jar包。
5. 運行jar包。
- 0x02 maven打包插件
在pom.xml中添加如下配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.tooldin.main.ActiveMQMain</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 0x03 配置Jenkins
選擇構建一個自由風格的軟件項目就好,什麼Subversion啊,這些根據需求自己設置,主要是構建步驟。
首先是Invoke top-level Maven targets
其次是Execute Shell,我這服務器用的ubuntu,所以Execute Shell
Command部分
#!/bin/bash
cd /home/deploy-mq/
./stop.sh
./replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /home/deploy-mq/startup.sh &
- 1
- 2
- 3
- 4
- 5
- 6
這裏需要三個文件,分別是 stop.sh, replace.sh, startup.sh
放在/home/deploy-mq目錄中
stop.sh
echo "Stopping tooldin-mq"
pid=`ps -ef | grep tooldin-mq.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
replace.sh
cp /var/lib/jenkins/workspace/tooldin-mq/target/tooldin-mq.jar /home/deploy-mq
- 1
startup.sh
java -jar /home/deploy-mq/tooldin-mq.jar
- 1
-0x04 結束
經過一細節的配置, 再嘗試構建, Jenkins輸出了 Finished: SUCCESS, 並亮起了小太陽, 雞凍。自此,maven工程就打成jar包,通過Jenkins構建並部署執行就成功啦!
-0x05 常見問題
如果在執行sh腳本時出現promission denied 是因爲jenkins 執行權限不夠
- 配置文件/etc/sysconfig/jenkins
# 打開配置文件
vim /etc/sysconfig/jenkins
# 修改用戶爲root
JENKINS_USER="root" #該行涉及到jenkins 執行sh腳本時的權限問題