1、獲取image
不要使用官方的jenkins/jenkins:lts
這個基本上初始化插件都不會成功襟沮,當然網(wǎng)絡狀況好的情況下可以。
這里推薦使用中文社區(qū)版docker pull jenkinszh/jenkins-zh:latest
裕循,使用這個下載插件那可以說是爽的飛起臣嚣。
2、創(chuàng)建并啟動容器
映射jenkins_home:-v ~/jenkins_home/:/var/jenkins_home
映射maven:-v /usr/share/apache-maven:/usr/local/maven
jenkins容器自帶jdk剥哑,故不需要映射硅则;
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-demo -v ~/jenkins_home/:/var/jenkins_home -v /usr/share/apache-maven:/usr/local/maven jenkinszh/jenkins-zh:latest
這里有可能會運行不起來,提示
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
權(quán)限問題株婴,需要執(zhí)行:sudo chown -R 1000:1000 /home/mwm/jenkins_home
3怎虫、初始化配置
瀏覽器訪問ip:8080暑认,根據(jù)界面上的路徑提示獲得初始化密碼。需要使用命令docker exec -it jenkins-demo /bin/bash
進入到容器內(nèi)使用cat命令 cat /var/jenkins_home/secrets/initialAdminPassword
大审;
登錄到系統(tǒng)后選擇推薦的插件進行初始化操作蘸际;
默認的時間可能和宿主機的不一致,可以先檢查一下容器的時間徒扶,如果都沒有問題粮彤,一般是由于jenkins的時區(qū)不正確。
在系統(tǒng)管理——>腳本執(zhí)行里面設置正確的時區(qū):System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
4姜骡、全局配置
進入到全局配置
配置jdk导坟,jenkins容器自帶jdk,只需要進入到容器內(nèi)部執(zhí)行
echo $JAVA_HOME
查看jdk路徑
配置maven圈澈,使用創(chuàng)建容器時掛載的路徑即可
5惫周、安裝插件
通過搜索安裝maven和svn插件
安裝完重啟jenkins
6、新建任務
通用配置
源碼管理添加svn地址和驗證递递,第一次添加時Credentials沒有憑證信息,需要自己創(chuàng)建一個啥么,把svn的驗證信息加進去就行了。
最后配置構(gòu)建環(huán)境等信息囚戚,build選項的高級里面有個使用自定義的工作空間,也就是各種文件包括打包好的jar文件都在里面了舟扎,這個目錄默認是前面我們掛載的~/jenkins_home
目錄分飞,這里面我寫了個mwm就是代表~/jenkins_home/mwm
目錄。
到此為止就可以選擇構(gòu)建任務進行打包操作了睹限,在左側(cè)構(gòu)建執(zhí)行狀態(tài)中還可以看到控制臺輸出信息譬猫。
7讯檐、自動運行
在加入下面的腳本
#!/bin/bash
echo "------開始執(zhí)行shell腳本------"
bash /var/jenkins_home/shell/stop.sh "manager-prod.jar"
BUILD_ID=dontKillMe
bash /var/jenkins_home/shell/startup.sh "mwm_manager" "manager-prod.jar"
echo "------shell腳本執(zhí)行完成------"
這里面主要是去執(zhí)行stop.sh和startup.sh文件
在/var/jenkins_home/shell/
目錄中創(chuàng)建sh文件,對應宿主機的路徑就是~/jenkins_home/shell/
stop.sh
#!/bin/bash
echo "-----------------stoping server--------------------"
pid=`ps -ef | grep $1 | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ];then
echo "kill -9 pid:"$pid
kill -9 $pid
fi
startup.sh
#!/bin/bash
echo "starting----------------------------"
cd /var/jenkins_home/$1/target
chmod 777 $2
java -jar $2 &