天天看點

GitLab1.4.5之Jenkins2.319.1(CI/CD)

Jenkins插件安裝

Git ( 使用Git通路遠端倉庫 )
GitLab ( 用于推送建構結果給 GitLab )
Publish Over SSH ( 使用 SSH 的方式遠端連接配接伺服器,并進行檔案的傳輸和指令執行 )
           

GitLab建立通路令牌(Jenkins建立憑證時用到)

GitLab1.4.5之Jenkins2.319.1(CI/CD)

建立好了請儲存到本地,下次通路時将不再顯示:9Km5X3sS4-xN7hjtd_or

GitLab1.4.5之Jenkins2.319.1(CI/CD)

Jenkins建立憑證

GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)

Jenkins連接配接GitLab

GitLab1.4.5之Jenkins2.319.1(CI/CD)

Jenkins配置SSH伺服器(運作Java服務)

GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)

Jenkins建立任務

GitLab1.4.5之Jenkins2.319.1(CI/CD)
  • General
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
  • 源碼管理
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
  • 建構觸發器
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
  • 建構環境
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
  • 建構
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
    GitLab1.4.5之Jenkins2.319.1(CI/CD)
# windows下建立 run.sh 啟動腳本
# 在執行shell腳本的時候會出現‘$’\r’: 未找到指令’錯誤。絕大多數情況下是因為在window系統中寫的shell腳本然後上傳到伺服器執行造成的
# yum install dos2unix
# dos2unix run.sh
# sh run.sh
#
#!/bin/sh
#
# 全局變量
serverRootPath="/usr/local/server"
serverBackRootPath="/usr/local/server/back"
serverName="JavaForGitRunner"
demo1TargetPath="$serverRootPath/$serverName/Demo1/target"
demo1ResultName=""
demo2TargetPath="$serverRootPath/$serverName/Demo2/target"
demo2ResultName=""
#
echo "重新編譯Class檔案"
cd $serverRootPath/$serverName && mvn clean package
echo ""
# 
echo "擷取Demo1服務的jar名稱并備份"
for file in `ls -a $demo1TargetPath`
do
	if [ "${file##*.}"x = "jar"x ] || [ "${file##*.}"x = "war"x ];then
        #echo $file
		demo1ResultName=$file
		# 備份Demo1服務的jar
		cp -rf $serverRootPath/$serverName/Demo1/target/$demo1ResultName $serverBackRootPath
		echo "Demo1服務的jar備份成功"
		echo ""
		break
    fi  
done   
#
echo "擷取Demo2服務的jar名稱并備份"
for file in `ls -a $demo2TargetPath`
do
	if [ "${file##*.}"x = "jar"x ] || [ "${file##*.}"x = "war"x ];then
        #echo $file
		demo2ResultName=$file
		# 備份Demo2服務的jar
		cp -rf $serverRootPath/$serverName/Demo2/target/$demo2ResultName $serverBackRootPath
		echo "Demo2服務的jar備份成功"
		echo ""
		break
    fi  
done   
# 
ps -aux | grep Demo1 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done
echo "Demo1程序已關閉"
rm -rf $serverRootPath/Demo1.jar
echo "Demo1.jar已删除"
echo ""
ps -aux | grep Demo2 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done
echo "Demo2程序已關閉"
rm -rf $serverRootPath/Demo2.jar
echo "Demo2.jar已删除"
echo ""
# 
echo "啟動Demo1服務...."
cp -rf $serverBackRootPath/$demo1ResultName $serverRootPath/Demo1.jar
nohup java -jar $serverRootPath/Demo1.jar >/dev/null 2>&1 &
echo "啟動Demo1服務成功"
echo ""
# 
echo "啟動Demo2服務...."
cp -rf $serverBackRootPath/$demo2ResultName $serverRootPath/Demo2.jar
nohup java -jar $serverRootPath/Demo2.jar >/dev/null 2>&1 &
echo "啟動Demo2服務成功"
           
# Exec command執行腳本
# 使環境變量生效
source /etc/profile
echo "建構開始"
cd /usr/local/server && sh run.sh
echo "建構結束"
           

GitLab配置Webhooks

GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)
GitLab1.4.5之Jenkins2.319.1(CI/CD)

繼續閱讀