Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作 。
==安裝Jenkins需要2G以上內(nèi)存==
一、Jenkins安裝方法
1、下載軟件包及插件
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
2、安裝JDK和Jenkins
cd /opt
rpm -ivh jdk-8u181-linux-x64.rpm
rpm -ivh jenkins-2.190.1-1.1.noarch.rpm
3、修改配置文件
vim /etc/sysconfig/jenkins
JENKINS_USER="root" #將啟動用戶改為root
4、啟動服務(wù)
systemctl start jenkins
systemctl enable jenkins
5、進入網(wǎng)頁進行配置
http://xxx.xxx.xxx.xxx:8080 #jenkins主機ip地址


==要先修改管理員登錄密碼!!==

6、安裝插件
(1)、通過清華源在線安裝
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json



(2)、使用軟件包離線安裝
tar xf jenkins_plugins.tar.gz -C /var/lib/jenkins/
ll /var/lib/jenkins/plugins #查看插件目錄是否有文件
systemctl restart jenkins #重啟服務(wù)
二、Jenkins自動發(fā)布代碼
1、在Jenkins主機上生成密鑰對,復(fù)制公鑰信息
ssh-keygen -t dsa
cat /root/.ssh/id_dsa.pub
2、進入gitlab頁面配置jenkins公鑰信息





3、在Jenkins主機上復(fù)制私鑰信息
cat /root/.ssh/id_dsa
4、Jenkins網(wǎng)頁上創(chuàng)建一個新任務(wù)


5、設(shè)置任務(wù)源碼管理




6、設(shè)置任務(wù)構(gòu)建觸發(fā)器



7、在gitlab項目中設(shè)置網(wǎng)鉤



8、設(shè)置任務(wù)構(gòu)建,執(zhí)行腳本命令


9、在Jenkins主機上編寫腳本
第一種:
mkdir -p /server/scripts
vim /server/scripts/jenkins.sh
#!/bin/sh
CODE_DIR="/html/$(date +%F_%H:%M)_code"
IP="172.16.1.7"
#打包代碼文件
cd ${WORKSPACE}/
tar zcf /tmp/${JOB_NAME}.tar.gz ./* --exclude=.git
#發(fā)送代碼文件到web主機
ssh $IP "mkdir -p ${CODE_DIR}"
scp /tmp/${JOB_NAME}.tar.gz ${IP}:${CODE_DIR}
#遠程解壓代碼
ssh $IP "cd ${CODE_DIR} && tar xf ${JOB_NAME}.tar.gz "
#刪除壓縮包及舊軟鏈接
ssh $IP "rm -rf ${CODE_DIR}/${JOB_NAME}.tar.gz && rm -rf /html/www"
#創(chuàng)建新的軟鏈接
ssh $IP "cd /html && ln -s $(date +%F_%H:%M)_code www"
chmod +x /server/scripts/jenkins.sh
分發(fā)公鑰到web主機
ssh-copy-id -i 172.16.1.7
修改web主機上的Nginx配置文件
vim /etc/nginx/conf.d/www.conf
server {
listen 80;
server_name localhost;
location / {
root /html/www;
index index.html;
}
}
systemctl restart nginx
10、測試是否成功




三、將Jenkins構(gòu)建結(jié)果返回給GitLab
1、gitlab生成訪問令牌


2、Jenkins添加訪問令牌





3、設(shè)置任務(wù)構(gòu)建后操作

4、測試是否成功




四、自動回滾代碼
1、gitlab上給倉庫打標簽





2、在Jenkins任務(wù)添加標簽選擇參數(shù)


3、將分支說明改成標簽名稱變量

4、添加選項參數(shù)


5、修改Jenkins主機腳本
vim /server/scripts/jenkins.sh
#!/bin/bash
CODEDIR=/html
IP=172.16.1.7
TAR_CODE(){
cd ${WORKSPACE}
tar zcf /opt/${git_version}.tar.gz ./* --exclude=.git
}
SCP_CODE(){
ssh ${IP} "mkdir ${CODEDIR}/${git_version} -p"
scp /opt/${git_version}.tar.gz ${IP}:${CODEDIR}/${git_version}
}
XF(){
ssh ${IP} "cd ${CODEDIR}/${git_version} && tar xf ${git_version}.tar.gz && rm -rf ${git_version}.tar.gz"
}
CREATE_LN(){
ssh ${IP} "cd ${CODEDIR} && rm -rf www && ln -s ${git_version} www"
}
main(){
if [[ "${choice}" == "publish" ]];then
if [[ "$GIT_COMMIT" == "GIT_PREVIOUS_SUCCESSFUL_COMMIT" ]];then
echo "構(gòu)建失敗,該版本已發(fā)布"
else
TAR_CODE
SCP_CODE
XF
CREATE_LN
fi
else
CREATE_LN
fi
}
main
6、測試是否成功



