安裝部署docker jenkins 環境
創建一個文件夾 用於存放jenkins相關配置
mkdir /Users/mengfanxiao/docker/jenkins
下載docker jenkins鏡像
docker pull jenkins/jenkins
當前版本:Jenkins 2.243
啓動鏡像
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
訪問jenkins
http://localhost:8080/
PS : 如果一直在Please wait while Jenkins is getting ready to work...頁面,資源訪問過慢加載不出來
解決方法
找到/Users/mengfanxiao/docker/jenkins目錄下的
hudson.model.UpdateCenter.xml文件,
將https://updates.jenkins.io/update-center.json
替換爲http://mirror.xmission.com/jenkins/updates/update-center.json
然後重啓啓動docker jenkins
登陸賬號
輸入密碼
啓動命令中有一個文件映射 將docker中的配置文件映射到本地電腦
即 -v /Users/mengfanxiao/docker/jenkins:/var/jenkins_home jenkins/jenkins
既然 docker jenkins已經啓動 那麼配置文件也從docker映射到本地一份了
由上面[輸入密碼]截圖可以看要去/var/jenkins_home/secrets/initialAdminPassword文件中找初始密碼
(發現截圖上的目錄少了一個jenkins)
那麼只需要從 本地文件 /Users/mengfanxiao/docker/jenkins/secrets/initialAdminPassword 即可
安裝插件
這裏選擇安裝推薦的插件
PS : 這裏等待時間太久 如何解決?
解決辦法 :
修改更新配置源
-
找到/Users/mengfanxiao/docker/jenkins/updates/default.json
-
把 "www.google.com” 改成 "http://www.baidu.com/"
-
把 "updates.jenkins-ci.org/download" 替換成 "mirrors.tuna.tsinghua.edu.cn/jenkins"
快速更新的辦法
使用vim的命令
-
替換所有插件下載的url
:1,$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
-
替換連接測試url
:1,$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g
注意:進入vim先輸入:然後再粘貼上邊的:後邊的命令,注意不要寫兩個冒號!修改完成保存退出:wq
心理PS:速度卡卡的快啊(留下了幸福的眼淚)
創建用戶
創建好用戶之後 就可以進入到首頁了
檢查並修復插件
查看失敗插件
-
打開系統管理頁面 如果有安裝失敗的插件 則會顯示(失敗插件名稱及原因)
-
查看已安裝的插件
http://localhost:8080/pluginManager/installed
報紅的則是安裝失敗的插件
-
功能不全
假如 如果在創建任務的時候沒有[構建一個maven項目]選項 則需要安裝maven插件
如何安裝插件
以上面的功能不全-沒有[構建maven項目]爲例
-
點開可選插件 輸入maven
http://localhost:8080/pluginManager/available
-
安裝後的效果
重啓使得剛剛安裝的插件生效
如果插件有了改變 則已安裝插件頁面的最下面有一個重啓的提示,
重啓了之後 剛剛已安裝的插件就會生效
通過jenkins部署項目
創建一個任務
General配置
Git配置
git信息配置
訪問git的賬號配置
指定分支的含義是 獲取指定git地址下面的指定分支進行代碼部署
build
這裏需要配置下maven
clean package -U -Dmaven.test.skip=true
-U表示強制更新
Post Steps
在這一步之前的操作是 jenkins通過maven將指定的項目編譯打jar或war包或其他形式的
這一步是 訪問指定的服務器 在指定的路徑下面 執行指定的腳本 啓動jar或war或其他
所以需要先配置下服務器: 系統管理-系統配置-SSH Server
並測試下是否可以連接
-
源文件 表示當前項目編譯打包之後是jar包還是war包
-
可執行文件
root@iZuf6heduaqlfxz2wj9zc3Z:~# cat /home/jenkins/vote-api/vote-api-test.sh
#!/bin/bash
# 配置jdk環境
export JAVA_HOME=/usr/local/software/jdk1.8.0_141
export JAR_HOME=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 配置項目名稱
APP_NAME=vote-api.jar
#判斷進程是否存在 若存在 則kill
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
# 刪除上一次編譯打包後的文件
rm -rf /home/test-vote-api/*.jar
# 將jenkins打包編譯之後的文件複製到指定位置
cp -rf /home/jenkins/vote-api/target/*.jar /home/test-vote-api/${APP_NAME}
# 啓動項目
nohup java -jar -Dspring.profiles.active=dev /home/test-vote-api/${APP_NAME} -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m --server.port=8082 >/home/test-vote-api/logs/vote-api.log 2>&1 &
echo "程序已啓動..."
# 進程是否存在
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. pid is ${pid} "
else
echo "${APP_NAME} is not running."
fi
exit
注意點
-
上述腳本中的文件夾先創建好
mkdir /home/test-vote-api/logs
-
PS:文件訪問權限問題
如果jenkins在配置server的時候訪問用戶不是root用戶
比如是jenkins用戶
查看文件的訪問權限 上面是當前用戶可以讀寫可執行、當前用戶所屬於用戶組可讀可寫可執行、其他用戶可讀可寫可執行
只有這樣 jenkins用戶纔可以訪問
如果不是這樣 則需要 chmod 777 /home/jenkins -R 設置下文件夾訪問權限
郵件通知項目部署情況
構建
後記
至此,已經說完了jenkins環境搭建過程和如何通過jenkins部署一個項目的過程,
我就不演示了構建的過程了 因爲我用的公司的服務器,擔心內存不夠,把公司運行的項目給搞停掉😂