Jenkins 应用案例

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;
    }
}
nginx 配置文件

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"
   }
}
pipeline 脚本
# 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"
   }
}
pipeline 脚本

 

posted @ 2020-01-31 12:41  kevin.Xiang  阅读(1635)  评论(0编辑  收藏  举报