jenkins+github持續集成中的坑


1.前言

剛開始開發自己的獨立博客的時候,每次發布都要手動打包,上傳服務器,殺tomcat進程,重啟,來回這么重復性工作,很快就有點不耐煩了。如果能自動化的東西,就絕不要手動了,所以自己搭建了個持續集成環境,配好了結合github進行push時自動構建,自動發布的流程,提交代碼,泡杯咖啡就發布好了。
本以為很簡單,但沒想到中間細節還是有不少坑,查了很多資料,牆都翻了好幾次,把遇到的問題記錄在這里。

2.正文

詳細安裝教程就不復制粘貼了,推薦此文
手把手教你搭建Jenkins+Github持續集成環境
下面開始填坑

2.1手動安裝插件

安裝插件時,由於網絡原因,插件基本沒法一次安裝成功,可以多試幾次看臉,我最開始是這么靠人品安的,方便的話掛vpn,我的服務器沒有vpn,后來才發現可以手動安裝。
在jenkins->管理插件->高級 頁面有手動上傳功能,安裝失敗時通過如圖復制下載地址,然后掛Lantern之類的下載上傳即可。
圖片cdn異常,請查看原文

2.2.自動構建的代碼路徑及權限配置

在Repository URL 請使用ssh方式的url
git@github.com:chulung/chulung.com.git
原因同樣是網絡問題,走http或https極有可能失敗。
另外點擊add->Additional Behaviours 將Timeout 設置為30 防止超時導致失敗,也可以設置更長。
注意勾上Build when a change is pushed to GitHub,才能在提交后自動構建。

參考:jenkins下使用git獲取源碼的配置方法
圖片cdn異常,請查看原文

2.3.自動部署

我的jenkins和chulung.com是跑在同一台服務器上的,所以腳本發布最直接,注意其中
export BUILD_ID=dontKillMe這行是必不可少的,否則會jenkins會殺掉shell進程,導致自動部署失敗。

#!/bin/bash
echo "復制war包"
cp -f /root/.jenkins/workspace/chulung.com/target/*.war /var/www
tomcat_home=/home/apache-tomcat-8.0.28
echo "kill tomcat $tomcat_home"
ID=`ps -ef | grep java | grep $tomcat_home|awk '{print $2}'`
for id in $ID 
do 
    kill -9 $id 
    echo "killed pid=$id" 
done 
echo "執行tomcat啟動shell"
#防止jenkins構建完成后殺死tomcat進程
export BUILD_ID=dontKillMe
sh $tomcat_home/bin/startup.sh
#tail -f $tomcat_home/logs/catalina.out

圖片cdn異常,請查看原文

作者:初龍

原文鏈接:https://chulung.com/article/pit-in-jenkins+github-continuous-integration

本文由MetaCLBlog於2017-07-17 09:11:15自動同步至cnblogs

本文基於 知識共享-署名-非商業性使用-禁止演繹 4.0 國際許可協議發布,轉載必須保留署名及鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM