在Centos7搭建jenkins實現自動化部署springboot專案
在Centos7搭建jenkins實現自動化部署springboot專案
安裝前要把基本的環境裝好
1.jdk安裝
關於centos上的java
Jenkins不支援在centos的預設的jdk上工作。所以要刪除自己裝
查詢jdk命令
rpm -qa | grep jdk 或者 rpm -qa | grep gcj
然後強制解除安裝:yum -y remove java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
安裝jdk
新建一個目錄 上傳官網下載的jdk至目錄
解壓 tar -zxvf jdk-8u131-linux-x64.tar.gz
然後進入解壓後的jdk bin目錄輸入java測試一下
配置環境變數:vim /etc/profile
用vim編輯器來編輯profile檔案,在檔案末尾新增一下內容(按“i”進入編輯):
export JAVA_HOME=/usr/java/jdk1.8.0_131 此為jdk安裝目錄
export JRE_HOME=
{JAVA_HOME}/lib:
CLASSPATH
export JAVA_PATH=
{JRE_HOME}/bin
export PATH=
{JAVA_PATH}
2.安裝git客戶端
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils- MakeMaker
3.安裝maven
下載官網linux maven 解壓
再用vim編輯器來編輯profile檔案,在檔案裡新增上環境變數
一.安裝jenkins
下載:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
安裝:
sudo yum install jenkins
啟動和停止
啟動:sudo service jenkins start
停止:sudo service jenkins stop
重啟:sudo service jenkins restart
執行
servicejenkins start 時,報錯如下:
按照提示執行:systemctl status jenkins.service,提示如下:
發現是找不到jdk,修改檔案:
vim /etc/init.d/jenkins
candidates="
/setup/tools/jdk1.8.0_144/bin/java #此處為加入的java路徑
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
下面檢視:
vim /etc/sysconfig/jenkins
do
[ -x “KaTeX parse error: Expected 'EOF', got '&' at position 21: …NS_JAVA_CMD" ] &̲& break JEN…candidate”
done
4、jenkins的預設設定
Jenkins會隨系統啟動而啟動。詳情參照/etc/init.d/jenkins
Jenkins會建立一個使用者叫做jenkins, 如果你修改了user,
則要修修改所屬者:/var/log/jenkins,/var/lib/jenkins,/var/cache/jenkins
如果遇到問題,檢視日誌/var/log/jenkins/jenkins.log
配置檔案/etc/sysconfig/jenkins
預設啟用8080
5、開啟和關閉防火牆
開啟非80埠需要開啟防火牆,參考:http://www.cnblogs.com/rslai/p/7954080.html
6、配置埠修改
vi /etc/sysconfig/jenkins
JENKINS_PORT=“8080”
9、yum安裝Jenkins預設路徑為
/var/lib/jenkins
二、進入jenkins
1、開啟
http://192.168.3.231:8080 這裡是ip加埠
2、檢視密碼,將內容填寫到密碼處點選繼續
cat /var/lib/jenkins/secrets/initialAdminPassword
3、選擇預設外掛即可
4、設定管理員
在系統管理裡
安裝maven 外掛
找到Maven Integration 然後
第一個選項安裝不重啟,第二個選項立即下載並在重新啟動後安裝 ,第三個現在檢查
點第一個進行安裝
然後在系統管理裡點全域性工具配置
maven配置有兩處
第一處:
第二處:
jdk配置:
git配置:
以下是讓jenkins執行shell指令碼時擁有root許可權
以下過程是CentOS
1.開啟此指令碼(使用VIM或其他編輯器):
vim /etc/sysconfig/jenkins
2.找到
JENKINS_USER=“jenkins”
修改成:$JENKINS_USER=“root”
3.然後更改Jenkins主頁,webroot和日誌的所有權:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4.重新啟動Jenkins並檢查使用者是否已更改:
service jenkins restart
ps -ef | grep jenkins
現在你應該能夠以root使用者身份執行Jenkins作業,並且所有的shell命令將被執行root。
新建maven專案
到首頁下點
輸入專案名稱和點構建一個maven專案
然後點下面的:
下面進行專案配置:
一.git倉庫地址
二.配置掃描倉庫策略:下面配置是兩分鐘檢視倉庫有沒變化,有拉下來重新構建,沒有不會改變
三.配置打包命令,不需要在命令前寫mvn
四.寫執行指令碼:
然後點save
shell指令碼
#!/bin/bash
cd /home/release/ #!這個是進入到jar包放入的地址和下面指令碼存入的地址
sh stop.sh
sh replace.sh
echo “Execute shell Finish”
BUILD_ID=dontKillMe bash /home/release/startup.sh &
shop.sh
#! /bin/bash
jar_name=test-1.0.0-SNAPSHOT.jar #!這個是jar包名稱
PID=$(ps -ef | grep $jar_name | grep -v grep | awk '{ print KaTeX parse error: Expected 'EOF', got '}' at position 3: 2 }̲') if [ -z "PID" ]
then
echo Application is already stopped
else
echo $PID
kill $PID
fi
replace.sh
#!/bin/bash
echo copy
jar_name=test-1.0.0-SNAPSHOT.jar
#!jar包所在位置
jar_address=/home/release
#!備份
backup_address=/home/release/backup
#!編譯好的jar包存放地址
file_path=/var/lib/jenkins/workspace/test/target
#!將現有的jar備份後,將新的jar包替換
file="/home/release/test-1.0.0-SNAPSHOT.jar"
if [ -f “$file” ]
then
#如果已經有檔案了,做備份
mv
jar_name
jar_name.date +%Y%m%d%H%M%S
fi
#拷貝過來
cp
jar_name $jar_address
startup.sh
#!包名修改jar_name=後面為自己的maven打包的包名,不加.jar
jar_name=test-1.0.0-SNAPSHOT
#!輸出控制檯檔名
name=test
jar_address=/home/release
echo “授予當前使用者許可權”
chmod 777
jar_name.jar
echo “執行…”
cd $jar_address
java -jar
name.file 2>&1 &
echo “test on jenkins started***”
注:在執行前要在/home/release/目錄下建兩個資料夾分別是
file 和 backup
file資料夾裡存放的是專案的控制檯輸出檔案
backup是備份的jar包位置
這個是針對單個maven下 springboot專案jar包啟動的方式
然後點立即構建
這個就構建成功了
檢視構建日誌:
預設jenkins工作空間地址:
/var/lib/jenkins/workspace/
這個是我花了一天半時間研究jenkins的一點成果,其它專案構建釋出指令碼自己學習修改
不足之處大家相互討論下。
參考文件:
https://www.cnblogs.com/rslai/p/8135460.html