Jenkins 應用案例
服務器環境
系統:Centos 7.4 x64
1台:web應用服務器
1、准備PHP博客項目
2、安裝mysql數據庫
3、安裝nginx服務
4、安裝php-fpm服務
1台:Jenkins服務器+git庫服務器
准備工作
1、配置好服務器之前的SSH秘鑰對認證。
2、提前下載好博客項目
百度雲:https://pan.baidu.com/s/1Cad-7sKVZ_gW7G7B6G2Gww
密碼:fpm0
web應用服務器:搭建博客項目環境
一、安裝mariadb數據庫
- 數據庫版本:mariadb-server.x86_64 1:5.5.64-1.el7
1、通過yum安裝數據庫
yum -y install mariadb-server
2、啟動數據庫
systemctl start mariadb
3、修改數據庫root密碼
mysqladmin -uroot password '123456'
4、登錄數據庫、並創建數據庫
mysql -uroot -p123456
create database wordpress;
quit
二、安裝nginx與php-fpm服務
- 服務版本:nginx-1.16.1-1.el7.x86_64
- 服務版本:php-fpm-5.4.16-46.1.el7_7.x86_64
1、通過yum安裝nginx與php-fpm
# 安裝擴展yum源 yum install epel-release -y # 安裝服務 yum install nginx php-fpm php-mysql
2、添加新的nginx配置文件
vim /etc/nginx/conf.d/web.conf

server { listen 8000; server_name 192.168.1.113; root /usr/share/nginx/html/web; index index.htm index.html index.php; location ~ \.php$ { root /usr/share/nginx/html/web; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/web$fastcgi_script_name; include fastcgi_params; } }
3、創建網站訪問目錄
mkdir -p /usr/share/nginx/html/web
4、啟動服務
systemctl start nginx
systemctl start php-fpm
5、解壓項目包、並將文件移動到網站目錄、賦予權限
unzip wordpress.zip cp -rf wordpress/* /usr/share/nginx/html/web/ chown -R apache:apache /usr/share/nginx/html/web/
6、訪問網站安裝
http://192.168.1.113:8000/index.php
7、填寫數據庫信息
8、填寫網站信息
9、安裝成功后登陸測試
10、完成
安裝Jenins+git服務並配置
Jenins 安裝配置:https://www.cnblogs.com/xiangsikai/p/12244819.html
Git 安裝配置:https://www.cnblogs.com/xiangsikai/p/12244782.html
Git服務器配置添加Git倉庫
一、創建存放web網站源碼倉庫
1、git服務器操作:通過git創建web倉庫
# 1、切換git su - git # 2、創建web倉庫 mkdir web cd web # 3、初始話git倉庫 git --bare init
2、git客戶端操作:下載git倉庫
# 下載倉庫 git clone git@118.31.225.36:/home/git/web
3、將web源代碼導入git倉庫並提交、這里我在web服務器內提交作為git客戶端演示
# 1、進入拉取的web倉庫 cd web/ # 2、將代碼拷貝到當前目錄 cp -rf /usr/share/nginx/html/web/* . # 3、提交到git倉庫 git add . git commit -m "all" git push origin master
二、創建存放Jenkins Pipeline腳本倉庫
1、git服務器操作:通過git創建jenkinsfile倉庫
# 1、切換git su - git # 2、創建jenkinsfile倉庫 mkdir jenkinsfile cd jenkinsfile # 3、初始話git倉庫 git --bare init
2、客戶端操作:下載git倉庫提交pipeline腳本
# 1、下載倉庫 git clone git@118.31.225.36:/home/git/jenkinsfile cd jenkinsfile/ # 2、創建文件
vi jenkinsfile

node { stage('git checkout') { checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigu } stage('code copy') { sh '''rm -rf ${WORKSPACE}/.git ssh root@192.168.1.113 "mv /usr/share/nginx/html/web /backup/web-$(date +"%F_%T")" scp -r ${WORKSPACE} root@192.168.1.113:/usr/share/nginx/html/web''' } stage('test') { sh "curl http://192.168.1.113:8000/status.html" } }
# 3、提交文件 git add . git commit -m "jenkinsfile" git push origin master
配置 Jenkins CI/CD
一、創建與pipeline相關連文件
1、git客戶端操作:創建status.html測試文件到web項目中,並提交到git倉庫
# 1、創建文件 cd web vim status.html OK !!! # 2、提交文件 git add . git commit -m "status.html" git push origin master
2、jenkins服務端操作:創建版本備份目錄
mkdir /backup/
二、配置Jenkins流水線任務
1、進入Jenkins網站
http://118.31.225.36:8080/
2、創建新的任務、並命名、使用流水線工程
3、設置丟棄就得構建 閾值為七
4、設置參數化構建過程選擇git Parameter、根據branch類型構建
5、配置Pipeline根據SCM訪問git倉庫下的pipeline腳本文件、保存
6、執行任務 --> Build with Parameters --> 選擇分支 --> Build
問題說明:通過jenkins任務來啟動tomcat時,無法成功啟動。
原因:當jenkins使用Pipeline任務執行完成后他會關閉所有派生進程,導致派生進程在關閉時也關閉掉了tomcat啟動進程,造成tomcat無法啟動。
解決方案:JENKINS_NODE_COOKIE=dontkillme
作用說明:傳入該變量后它會去告訴jenkins完成任務后不要去關閉派生進程。
其他 Pipline案例
JAVA+Maven 案例

node { //def mvnHome = '/usr/local/maven' stage('git checkout') { checkout([$class: 'GitSCM', branches: [[name: '${branch'}]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], user } stage('maven build') { sh '''export JAVA_HOME=/usr/local/java /opt/apache-maven-3.6.0/bin/mvn clean package -Dmaven.test.skip=true''''' } stage('deploy') { JENKINS_NODE_COOKIE=dontkillme sh '''export JAVA_HOME=/usr/local/java TOMCAT_NAME=tomcat TOMCAT_HOME=/usr/local/$TOMCAT_NAME WWWROOT=$TOMCAT_HOME/webapps/ROOT if [ -d $WWWROOT ]; then ¦ mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T") fi unzip ${WORKSPACE}/target/*.war -d $WWWROOT PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\') [ -n "$PID" ] && kill -9 $PID /bin/bash $TOMCAT_HOME/bin/startup.sh''''' } stage('test') { sh "curl http://xxxxx/status.html" } }