最近學習中接觸了jenkins自動部署,所以花點時間瞭解了下。它可以在代碼上傳倉庫(如github,gitee,gitlab)後,在jenkins後臺頁面中通過獲取代碼倉庫中最新代碼,進行自動化部署,而省去手動打包、上傳服務器、部署這一系列步驟,非常方便。
文章參考自:
環境搭建+Jenkins安裝
jdk安裝
從本地上傳一份jdk8到服務器,解壓移動到(/usr/local),配置環境變量,
[root@Docker dowoload]# tar -zxvf jdk-8u77-linux-x64.tar.gz
[root@Docker dowoload]# mv jdk1.8.0_77 /usr/local/
[root@Docker local]# vi /etc/profile
#######最後增加如下代碼:
#set java env
export JAVA_HOME=/usr/local/jdk1.8.0_77
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@iz2ze0dr07y7jess3rvzlgz local]# source /etc/profile
[root@iz2ze0dr07y7jess3rvzlgz local]# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
maven安裝
下載一份maven3.5.4,解壓移動到(/usr/local),配置環境變量
[root@Docker dowoload]# wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@iz2ze0dr07y7jess3rvzlgz download]# tar -zxvf apache-maven-3.5.4-bin.tar.gz
[root@iz2ze0dr07y7jess3rvzlgz download]# mv apache-maven-3.5.4 /usr/local/
[root@iz2ze0dr07y7jess3rvzlgz local]# vi /etc/profile
#######最後增加如下代碼:
#set Maven environment
export M2_HOME=/usr/local/apache-maven-3.5.4
export PATH=${M2_HOME}/bin:$PATH
[root@iz2ze0dr07y7jess3rvzlgz local]# source /etc/profile
[root@iz2ze0dr07y7jess3rvzlgz local]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/apache-maven-3.5.4
Java version: 1.8.0_77, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_77/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.4.1.el7.x86_64", arch: "amd64", family: "unix"
配置maven(修改apache-maven-3.5.4/conf/settings.xml )
1.修改maven阿里源
在 <mirrors>標籤下添加:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.修改本地倉庫地址
創建/usr/local/maven-repo 文件夾
在 <settings>標籤下添加:
<localRepository>/usr/local/maven-repo</localRepository>
小坑:第一次用了別的maven版本,代碼一直編譯不過去,這個版本自己用着沒問題
Jenkins安裝
官網地址:https://jenkins.io/download/
常見的安裝有 docker安裝,war包安裝,rpm安裝
小坑:本人首次安裝使用的是Docker,最後因爲maven環境變量問題一直沒有成功,有待解決(慎用!)
下面是docker-compose.yml文件
jenkins:
image: jenkins/jenkins:lts
volumes:
- /data/jenkins/:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
- /usr/local/apache-maven-3.5.4:/usr/local/apache-maven-3.5.4
ports:
- "8029:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
restart: always
container_name: jenkins
environment:
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
我選擇 yum安裝Jenkins(此方式偶然間發現在早上六七點的時候下載賊快,其他時間都是龜速)
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key //如果已經有 key 存在,請忽略。具體見官方 wiki
sudo yum install jenkins
安裝完成後首次啓動會有異常,修改方法如下:
1.增加本地java環境到配置文件(/etc/init.d/jenkins)
2.修改Jenkins用戶(因mvn編譯的時候要刪除target,這裏不修改會權限不足無法刪除)(/etc/sysconfig/jenkins )
3.修改啓動 端口號(/etc/sysconfig/jenkins )
最後啓動Jenkins
[root@iz2ze0dr07y7jess3rvzlgz ~]# systemctl restart jenkins
[root@iz2ze0dr07y7jess3rvzlgz ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Tue 2019-11-05 22:55:41 CST; 24s ago
Docs: man:systemd-sysv-generator(8)
Process: 14696 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
Process: 14715 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
├─12420 java -Xms246m -Xmx500m -Dhudson.util.ProcessTree.disable=true -jar /var/lib/jenkins/workspace/pipi/target/login-test-0.0.1-SNAPSHOT.jar
└─14736 /usr/local/jdk1.8.0_77/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/...
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz systemd[1]: Stopped LSB: Jenkins Automation Server.
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz systemd[1]: Starting LSB: Jenkins Automation Server...
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz runuser[14720]: pam_unix(runuser:session): session opened for user root by (uid=0)
Nov 05 22:55:41 iz2ze0dr07y7jess3rvzlgz jenkins[14715]: Starting Jenkins [ OK ]
Nov 05 22:55:41 iz2ze0dr07y7jess3rvzlgz systemd[1]: Started LSB: Jenkins Automation Server.
[root@iz2ze0dr07y7jess3rvzlgz ~]#
Jenkins啓動&插件安裝
一:地址欄輸入 ip:8029 訪問jenkins(如不能訪問,請檢查防火牆或jenkins服務是否正確啓動)
[root@Docker dowoload]# cat /var/lib/jenkins/secrets/initialAdminPassword
查看密碼並輸入
出現如下頁面
解決方法如下:
輸入:http://ip:8029/pluginManager/advanced
方框中的地址:https://updates.jenkins.io/update-center.json
改爲:http://updates.jenkins.io/update-center.json
Https
協議改爲http,然後服務器重啓jenkins服務,再次訪問jenkins首頁
二:選擇安裝推薦的插件
成功打開首頁後:
安裝maven info和coding web hook插件
進入系統管理-->插件管理-->點擊avalible-->搜索maven,找到maven info,同樣,找到coding webhook插件,點擊安裝,安裝之後重啓Jenkins就可以了
三、配置系統變量
配置系統變量之前需要在系統安裝git、jdk、maven,具體的不多說了
點擊系統管理-->全局工具配置-->配置jdk\mavn
五、創建項目
Pre Steps : 構建項目的時候殺死java進程
build :git clone 代碼,並且maven編譯
Post Steps :把編譯好的xxx.jar 通過 java -jar 命令運行(因jenkins啓動完成後會殺死衍生進程,所以需要做特殊處理)
在碼雲上設置
進入碼雲,進入具體的項目,點擊右邊的“管理”,進入管理頁面,然後點擊左邊的“webHooks”,進行設置,其中URL需要填寫jenkins中的webhook地址,密碼填寫jenkins的webhook令牌,然後點擊添加保存就可以了。
build.sh腳本
#!/usr/bin/env bash
echo "開始啓動java程序。。。。"
export BUILD_ID=dontKillMe
nohup java -Xms246m -Xmx500m -Dhudson.util.ProcessTree.disable=true -jar /var/lib/jenkins/workspace/pipi/target/login-test-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
sleep 10s
最後點擊構建,就可以看到項目的構建過程了