一.准備工作
1.啟動虛擬機linux
使用虛擬機啟動兩個linux系統重點(關閉防火牆,使端口可以訪問,線上可以開啟指定端口,本地學習不用那么麻煩)
規划:
jenkins:192.168.244.132
2.都安裝好java環境(略)
檢查java是否安裝完成
java -version
3.下載好jenkins文件
下載地址http://mirrors.jenkins-ci.org/war/2.281/jenkins.war,可以使用迅雷下載速度快一些
4.配置組和用戶,授權目錄上傳文件
jenkins服務器:
使用root用戶創建一個組叫cicd,創建一個用戶叫就叫jenkins並且指定到cicd組
[root@localhost ~]# groupadd cicd
[root@localhost ~]# useradd jenkins -g cicd
創建一個jenkins的目錄,就放到/data/software/jenkins
[root@localhost ~]# mkdir -p /data/software/jenkins
將這個目錄指定給jenkins和cicd組
[root@localhost ~]# chown -R jenkins:cicd /data/software/jenkins
給jenkins指定一個密碼:1q23lsc45+ [古詩:一去二三里,山村四五家]
[root@localhost ~]# passwd jenkins
更改用戶 jenkins 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
切換成jenkins用戶
[root@localhost ~]# su jenkins
進入工作目錄
[jenkins@localhost root]$ cd /data/software/jenkins/
使用rz命令上傳下載的jenkins.war
上傳完畢使用ll命令查看文件
[jenkins@localhost jenkins]$ ll
總用量 71672
-rw-r--r--. 1 jenkins cicd 73388412 2月 28 16:56 jenkins.war
5.啟動jenkins服務
啟動命令
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &
查看日志是否啟動成功
[jenkins@localhost jenkins]$ tail -f -n 200 jenkins.log
有一串數字,記錄下來,這個是密碼
e672197178284eceab4ed5a425b51f67
你的和我的不一樣,到時候使用自己的
6.修改鏡像
由於外網下載慢,所以修改國內鏡像下載
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/updates
把default.json中updates.jenkins-ci.org/download替換為mirrors.tuna.tsinghua.edu.cn/jenkins
www.google.com替換為www.baidu.com
[jenkins@localhost updates]$ sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
回到上一級目錄
[jenkins@localhost .jenkins]$ cd /home/jenkins/.jenkins
修改hudson.model.UpdateCenter.xml文件的站點為https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
[jenkins@localhost .jenkins]$ vim hudson.model.UpdateCenter.xml
7.重啟項目
[jenkins@localhost .jenkins]$ cd /data/software/jenkins/
使用jps命令查看進程,kill掉再啟動
[jenkins@localhost jenkins]$ kill -9 17148
再次啟動
[jenkins@localhost jenkins]$ nohup java -jar /data/software/jenkins/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins/jenkins.log 2>&1 &
8.基礎jenkins
瀏覽器訪問:http://192.168.244.132:8777
填入上面記錄的那個密碼
選擇推薦安裝
等待安裝即可
創建用戶
保存配置
登錄
9.配置jenkins
1.配置java
保存時候GIT那塊可能出錯,先刪除那個
2集成git
為了能拉取代碼,現在使用root用戶在服務器安裝git
[root@localhost jdk1.8.0_201]# yum install git -y
使用
[jenkins@localhost jenkins]$ git version查看版本
3.創建憑證
為了能從git服務器拉取代碼,肯定需要憑證,這里用用戶名密碼為例
4.測試
創建一個任務
找到git代碼地址
配置地址和憑證
立即構建
查看日志輸出
[jenkins@localhost jenkins]$ cd /home/jenkins/.jenkins/workspace/get_code_test
可以看到代碼已經拉取過來了,勝利在望
10.安裝maven
等待系統重啟
服務器安裝maven軟件
使用root安裝maven
su root
切換目錄
[root@localhost local]# cd /usr/local/
創建目錄
[root@localhost local]# mkdir maven
在amven目錄下下載maven軟件
[root@localhost maven]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解壓文件
[root@localhost maven]# tar -zxvf apache-maven-3.6.3-bin.tar.gz
進入目錄
[root@localhost maven]# cd apache-maven-3.6.3
使用pwd獲取路徑
[root@localhost apache-maven-3.6.3]# pwd
記錄路徑
/usr/local/maven/apache-maven-3.6.3
修改/etc/profile
[root@localhost apache-maven-3.6.3]# vim /etc/profile
刷新配置
[root@localhost apache-maven-3.6.3]# source /etc/profile
查看maven
[root@localhost apache-maven-3.6.3]# mvn -version
配置maven
是要root用戶創建maven倉庫 [root@localhost apache-maven-3.6.3]# cd /data/software [root@localhost software]# mkdir repository [root@localhost software]# cd repository/ [root@localhost repository]# pwd /data/software/repository 配置maven的setting.xml文件 [root@localhost repository]# cd /usr/local/maven/apache-maven-3.6.3/conf/ [root@localhost conf]# vim settings.xml <!--本地倉庫--> <localRepository>/data/software/repository</localRepository> <mirrors> <!--阿里雲鏡像--> <mirror> <id>aliyun-maven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven mirror</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors>
11.構建maven項目
編輯配置
clean package -U -Dmaven.test.skip=true
保存並構建
構建報錯,分析原因是repository目錄是root創建的 ,jenkins用戶沒有權限訪問,給他賦權
chown -R jenkins /data/software/repository
再次構建可以看到在下載依賴了
第一次構建要下載的依賴有點多,所以時間較長
看到這個說明構建成功
我們去linux 看看是否生成jar了
[root@localhost target]# cd /home/jenkins/.jenkins/workspace/my_first_maven_project/target
可以看到jar生成了
12.配置免密碼拷貝
使用jenkins用戶生成秘鑰 [jenkins@localhost ~]$ ssh-keygen -t rsa 三次回車 [jenkins@localhost ~]$ cd .ssh/ [jenkins@localhost .ssh]$ ll 總用量 8 -rw-------. 1 jenkins cicd 1679 2月 28 20:08 id_rsa -rw-r--r--. 1 jenkins cicd 411 2月 28 20:08 id_rsa.pub 接下來需要將公鑰導入到認證文件中 [jenkins@localhost .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 修改權限 [jenkins@localhost .ssh]$ chmod 700 ~/.ssh [jenkins@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys
切換為另一台服務器,配置用戶和組以及秘鑰
[root@localhost ~]# groupadd java [root@localhost ~]# useradd java -g java [root@localhost ~]# mkdir -p /data/software/java [root@localhost ~]# chown -R java:java /data/software/java [root@localhost ~]# passwd java 更改用戶 java 的密碼 。 新的 密碼: 重新輸入新的 密碼: passwd:所有的身份驗證令牌已經成功更新。 切換用戶 [java@localhost root]$ ssh-keygen -t rsa [java@localhost ~]$ chmod 700 ~/.ssh
使用jenkins服務器拷貝授權文件
[jenkins@localhost .ssh]$ scp -p ~/.ssh/id_rsa.pub java@192.168.244.133:/home/java/.ssh/authorized_keys The authenticity of host '192.168.244.133 (192.168.244.133)' can't be established. ECDSA key fingerprint is SHA256:ZE3LIJ/6YStL3NcK4pAkS1HfuOlhI5WD0Zh1PzSXo1Q. ECDSA key fingerprint is MD5:a9:79:0d:3a:e5:a7:9c:16:07:4f:b9:8a:d7:06:05:f0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.244.133' (ECDSA) to the list of known hosts. java@192.168.244.133's password: id_rsa.pub
java 服務器修改文件權限
[java@localhost .ssh]$ chmod 600 ~/.ssh/authorized_keys
jenkins服務器測試拷貝文件
在用戶目錄創建文件 [jenkins@localhost ~]$ vim aaa.txt [jenkins@localhost ~]$ scp aaa.txt java@192.168.244.133:/home/java/aaa.txt aaa.txt 在java服務器查看文件 [java@localhost .ssh]$ cd [java@localhost ~]$ ll 總用量 4 -rw-r--r--. 1 java java 5 2月 28 20:35 aaa.txt [java@localhost ~]$ cat aaa.txt aaaa 拷貝完成,我們就可以用來拷貝jar了
13.拷貝jar
我們在java服務端定一個目錄放jar
[java@localhost app]$ mkdir -p /data/software/java/app/
配置打包后的操作
#!/bin/bash echo "my_first_maven_project" DIR="/data/software/java/app" projectName="cicd-demo" echo "待部署的應用服務器,可多台" server_ips="192.168.244.133" for server_ip in ${server_ips[@]} do echo "ssh連接進行備份操作" ssh -Tq -oStrictHostKeyChecking=no java@${server_ip} <<EOF mkdir -p $DIR/backup/${projectName} if [ -f "$DIR/${projectName}/${projectName}.jar" ];then mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar fi EOF echo "拷貝jar包到目標服務器的tmp目錄" scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar java@${server_ip}:/tmp/${projectName}.jar echo "ssh遠程連接進行發布操作" ssh -q -oStrictHostKeyChecking=no java@${server_ip} <<EOF mkdir -p $DIR/${projectName} mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar cd ${DIR} sh stop.sh ${projectName} sh start.sh $DIR ${projectName} EOF done echo "success"
創建兩個sh
start.sh
#!/bin/bash set -e #任何命令出錯就退出 set -o pipefail APP_DIR=$1 PROJECT_NAME=$2 nohup java -jar ${APP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.jar > ${PROJECT_NAME}.log & start_ok=false if [[ $? = 0 ]];then sleep 3 tail -n 10 ${PROJECT_NAME}.log sleep 5 tail -n 50 ${PROJECT_NAME}.log fi aaa=`grep "Started" ${PROJECT_NAME}.log | awk '{print $1}'` if [[ -n "${aaa}" ]];then echo "app started ok" exit 0 else echo "app started error" exit 1 fi
stop.sh
#!/bin/bash PROJECT_NAME=$1 ps aux | grep ${PROJECT_NAME} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
14.構建項目
構建成功:
查看程序
瀏覽器訪問:http://192.168.244.133:8080/date
程序已經啟動
我們修改代碼
再次構建程序
再次刷新請求
已經刷新成功
完結撒花
參考: