jenkins 基本使用

jenkins 介绍:

jenkins就是一个调度平台

jenkins是一个 ci(持续集成) 和 cd(持续部署) 的平台


1.安装jenkins

jenkins支持N多种安装方式

  1. yum安装
  2. war包安装 ---> tomcat上
  3. 容器安装 ---> docker

因为jenkins是基于java开发的,索引要先安装Java环境才能启动

这里使用的是下载rpm包直接安装

安装

[root@node2 /server/tools]# yum install java -y
[root@node2 /server/tools]# yum localinstall -y  jenkins-2.176.1-1.1.noarch.rpm 
[root@node2 /server/tools]# rpm -ql jenkins
/etc/init.d/jenkins  #jenkins 的启停脚本
/etc/logrotate.d/jenkins #日志切割的脚本
/etc/sysconfig/jenkins   #主配置文件
/usr/lib/jenkins         
/usr/lib/jenkins/jenkins.war #
/usr/sbin/rcjenkins      #指向启停脚本的软连接
/var/cache/jenkins       #缓存目录
/var/lib/jenkins         #工作目录
/var/log/jenkins         #日志目录

2.jenkins的安装的3种方式

  1. 加速安装插件 ( 替换源 )
    https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

2.上传一个插件 ( .hpi文件 )
1.替换源之后,可能会出现有些偏门的插件官网没有 ,个人自己开发

https://mirror.tuna.tsinghua.edu.cn/jenkins/plugins/
https://plugins.jenkins.io

3.导入插件
新的服务器上-->安装所有的插件-->打包--->推送到其他服务器--->解包 -->导入 结束

1.jenkins的插件目录在哪
/var/lib/jenkins/plugins/

2.停止jenkins服务
[root@jenkins ~]# systemctl stop jenkins

3.解压导入插件
[root@jenkins ~]# tar xf jenkins_2.176_plugins.tar.gz
[root@jenkins ~]# \cp -rp plugins/* /var/lib/jenkins/plugins/

4.重新授权   (   因为jenkins是  jenkins用户运行的  )
[root@jenkins ~]# chown -R jenkins.jenkins /var/lib/jenkins/plugins/
[root@jenkins ~]# systemctl start jenkins

jenkins新安装的插件可以直接使用 但是 旧的升级 无法直接使用,需要重启.

3. jenkins 上基于gitlab 构建软件项目注意事项:

(1)在gitlab上添加jenkins上的公钥地址

(2)在jenkins软件中添加本服务器的私钥地址,这样才能拉取到gitlab上的文件

4.jenkins 自动上线html代码

(1)新建任务

jenkins 基本使用_第1张图片
新建项目

(2)选择项目类型

jenkins 基本使用_第2张图片
选择项目类型

(3)配置

jenkins 基本使用_第3张图片

jenkins 基本使用_第4张图片

jenkins 基本使用_第5张图片
设置Credentlals

jenkins 基本使用_第6张图片
使用shell进行自动化部署

jenkins 基本使用_第7张图片
完成构建

(4) 部署最新代码

jenkins 基本使用_第8张图片
部署最新代码

(5)shell 中的内容

[root@jenkins /server/scripts]# cat monitor.sh 
#!/bin/bash
time=`date +%F-%H-%M`
Web_host="10.0.0.7 10.0.0.8"
sdir=opt
ddir=opt
web_name=web_monitor.$time
tar_package() {
    #1、将软件包打包
    cd $WORKSPACE
    tar czf /$sdir/$web_name.tar.gz ./*
}

uploading_webserver(){

for i in $Web_host
do
    #2、推送软件包    
        scp /$sdir/$web_name.tar.gz root@$i:/$ddir
    #3、解压软件包、删除原有软件包、软连接
    ssh root@$i "mkdir /code/web_code -p && \
             tar  -xf /$ddir/$web_name.tar.gz -C /code/web_code && \ 
             rm -rf /html/www && \
             ln -s /code/web_code/ /html/www
            "
done
}
excute_web() {

tar_package
uploading_webserver
}
excute_web
[root@jenkins /server/scripts]# 

5. jenkins 代码回退

第一种代码回退

需要手动输入需要的代码版本

在配置页面选择参数化构建,选择文本参数

jenkins 基本使用_第9张图片
参数化构建

jenkins 基本使用_第10张图片
回退的脚本

jenkins 基本使用_第11张图片
选择回退到指定版本

代码回退中使用的shell脚本

[root@jenkins /server/scripts]# cat monitor_job1.sh 
#!/bin/bash

time=`date +%F-%H-%M`
Web_host="10.0.0.7 10.0.0.8"
sdir=opt
ddir=opt
web_name=web_monitor.$time-$git_version
tar_package() {
    #1、将软件包打包
    cd $WORKSPACE
    tar czf /$sdir/$web_name.tar.gz ./*

}

uploading_webserver(){

for i in $Web_host
do
    #2、推送软件包    
        scp /$sdir/$web_name.tar.gz root@$i:/$ddir
    #3、解压软件包、删除原有软件包、软连接
    ssh root@$i "mkdir /code/web_code -p && \
             tar  -xf /$ddir/$web_name.tar.gz -C /code/web_code && \ 
             rm -rf /html/www && \
             ln -s /code/web_code/ /html/www
            "
done
}
excute_web() {

tar_package
uploading_webserver
}

excute_web
[root@jenkins /server/scripts]# 

第二种代码回退

使用插件选择代码进行回退
使用Git Parameter 插件进行代码回退
在初始界面——>点击系统管理———>插件管理——选择可选插件 ——>搜索栏输入 git parameter
如图:

jenkins 基本使用_第12张图片
插件安装

配置

jenkins 基本使用_第13张图片
选择参数

jenkins 基本使用_第14张图片
设置参数

jenkins 基本使用_第15张图片
设置参数中点击(高级)后的选项

jenkins 基本使用_第16张图片
image.png

其他的与文本回退方式(第一种)一模一样,执行的shell脚本也是相同的


6、java项目手动部署

实验环境:

(1)1个maven节点、1个nginx负载均衡节点、2个tomcat节点
(2)2台tomcat节点上部署jdk环境(yum install -y java)
(3)nginx负载均衡配置tomcat负载均衡反向代理
(4)在maven节点准备jdk环境,并安装maven

1.配置tomcat节点(2台),两个节点配置相同
tomcat配置完成后验证是否可以正常访问

[root@web02 /server/tools]# yum install -y java
[root@web02 /server/tools]# tar -xf apache-tomcat-9.0.12.tar.gz 
[root@web02 /server/tools]# ls
apache-tomcat-9.0.12  apache-tomcat-9.0.12.tar.gz  sersync_installdir_64bit.zip
[root@web02 /server/tools]# mkdir /soft -p
[root@web02 /server/tools]# ln -s /server/tools/apache-tomcat-9.0.12 /soft/apache-tomcat
[root@web02 /server/tools]# ll /soft/apache-tomcat
lrwxrwxrwx. 1 root root 34 Nov 19 21:35 /soft/apache-tomcat -> /server/tools/apache-tomcat-9.0.12
[root@web02 /soft/tomcat/bin]# ./startup.sh 
  1. nginx 反向代理配置
upstream tomcat {
        server 10.0.0.7:8080;
        server 10.0.0.8:8080;
        server 10.0.0.9:8080;
}

server {
        listen 80;
        server_name test.tomcat.com;
        location / {
        proxy_pass http://tomcat;
        proxy_set_header Host $host;
        }

3.安装maven

maven使用注意事项:

注意maven 也是依赖于JDK(java)
修改/etc/maven/settings.xml文件,配置完国内maven源后,必须在对应的war包下执行mvn clean package
国内源配置参考:https://www.cnblogs.com/sunweiye/p/11103388.html

[root@jenkins ~]# yum install -y maven  
[root@jenkins ~]# yum install -y java
[root@jenkins ~]# mvn --version 
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0_232, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

4.将代码上传至maven节点

[root@jenkins /mnt/java_job]# ll    /mnt/java_job   #此目录为war包存放的目录
总用量 8
drwxr-xr-x. 2 root root  29 5月  23 2014 dist
-rw-r--r--. 1 root root 930 5月  23 2014 pom.xml
-rw-r--r--. 1 root root 213 5月  23 2014 README.md
drwxr-xr-x. 3 root root  18 5月  23 2014 src
[root@jenkins /mnt/java_job]# mvn clean package 
[root@jenkins /mnt/java_job]# ll  /mnt/java_job/  #此处可以看到多出了一个target目录,这里就存放着maven编译后,tomcat可运行的war包
total 8
drwxr-xr-x. 2 root root  29 Nov 19 22:54 dist
-rw-r--r--. 1 root root 930 Nov 19 22:54 pom.xml
-rw-r--r--. 1 root root 213 Nov 19 22:54 README.md
drwxr-xr-x. 3 root root  18 Nov 19 22:54 src
drwxr-xr-x. 5 root root 106 Nov 19 22:59 target
[root@jenkins /mnt/java_job]# ll target/
total 4
drwxr-xr-x. 4 root root   54 Nov 19 22:59 hello-world-war-1.0.0
-rw-r--r--. 1 root root 2404 Nov 19 22:59 hello-world-war-1.0.0.war
drwxr-xr-x. 2 root root   28 Nov 19 22:59 maven-archiver
drwxr-xr-x. 2 root root    6 Nov 19 22:59 surefire
[root@jenkins /mnt/java_job]# 

5.将编译好的war包推送到tomcat节点

[root@jenkins /mnt/java_job]# scp target/*.war [email protected]:/soft/tomcat/webapps/ROOT.war
hello-world-war-1.0.0.war                                             100% 2404     1.2MB/s   00:00    
[root@jenkins /mnt/java_job]# scp target/*.war [email protected]:/soft/tomcat/webapps/ROOT.war
hello-world-war-1.0.0.war          

6.重启tomcat后进行访问测试

[root@jenkins /mnt/java_job]# ssh [email protected] "pkill java && /soft/tomcat/bin/startup.sh"
Tomcat started.
[root@jenkins /mnt/java_job]# ssh [email protected] "pkill java && /soft/tomcat/bin/startup.sh"
Tomcat started.

7. jenkins 集成gitlab与maven

java项目部署流程

1) 开发提交java的源代码----------------------------------------(开发完成)
2) 运维手动拉取代码至本地 git clone---------------------------- (jenkins完成)
3) 对代码进行编译  --> war ------------------------------------(jenkins完成)
        1.下载maven:yum install java maven
        2.进入项目,执行编译命令:mvn clean package
4) 将war推送到web集群组即可-------------------------------------(jenkins完成)
5) 重启Tomcat服务----------------------------------------------(jenkins完成)

相关实验环境如下
实验环境:

(1)1台gitlab、1台jenkins、1台nginx负载均衡、2台tomcat节点
(2)2台tomcat节点上部署jdk环境(yum install -y java)
(3)nginx负载均衡配置tomcat负载均衡反向代理
(4)在gitlab 上新建一个项目,并将准备好的war包推送至新建仓库
(5)在jenkins 节点上安装 jenkins 及maven(jenkins安装本节最开始处有安装方法)

1台nginx负载均衡、2台tomcat节点如本文第6节(java项目手动部署)相同配置即可

1、搭建好gitlab 并将准备好的java代码上传至gitlab,gitlab搭建可参考本人博客:本文中有详细gitlab搭建方法及代码推送:https://www.jianshu.com/p/6235cce57a46

jenkins 基本使用_第17张图片
gitlab

2、安装jenkins 服务并安装maven
jenkins 页面配置如下:


jenkins 基本使用_第18张图片
新建任务

jenkins 基本使用_第19张图片
General选项

jenkins 基本使用_第20张图片
源码管理

jenkins 基本使用_第21张图片
构建触发器

jenkins 基本使用_第22张图片
构建环境

jenkins 基本使用_第23张图片
Pre Steps

jenkins 基本使用_第24张图片
Build

jenkins 基本使用_第25张图片
Post Steps

jenkins 基本使用_第26张图片
设置保存

jenkins 基本使用_第27张图片
JDK新增配置

jenkins 基本使用_第28张图片
Maven新增配置

Post Steps中的代码如下:

[root@jenkins ~]# cat /server/scripts/deploy_java.sh 
#!/bin/bash

time=`date +%F-%H-%M`
Web_host="10.0.0.7 10.0.0.8"
sdir=opt
ddir=opt
web_name=ROOT.$time-$git_version
tar_package() {
    #1、进入jenkins包目录
    cd $WORKSPACE
}
uploading_webserver(){

for i in $Web_host
do
    #2、推送软件包    
        scp target/*.war  root@$i:/$ddir/${web_name}.war
    #3、解压软件包、删除原有软件包、软连接
    ssh root@$i "mkdir /$ddir/$web_name -p && \
             unzip  /$ddir/${web_name}.war -d /$ddir/$web_name/ && \
             rm -rf /$ddir/${web_name}.war && \
             rm -rf /soft/tomcat/webapps/ROOT && \
             ln -s  /$ddir/$web_name /soft/tomcat/webapps/ROOT && \ 
             pkill java && \
             /soft/tomcat/bin/startup.sh
            "
done

}
excute_web() {
    tar_package
    uploading_webserver
}

excute_web
[root@jenkins ~]# 

8、jenkins 自动上线代码钉钉通知

jenkins 基本使用_第29张图片
钉钉机器人设置
jenkins 基本使用_第30张图片
jenkins 钉钉通知

9、sonarqube 手动部署

安装sonarqube

1.安装sonarqube
    
        1.环境准备
        [root@sonarqube ~]# systemctl stop firewalld 
        [root@sonarqu be ~]# systemctl disable firewalld
        [root@sonarqube ~]# setenforce 0

    2.安装Sonarqube依赖工具
    [root@sonarqube ~]# yum install git java unzip wget -y
    [root@sonarqube ~]# yum localinstall -y mysql-community-*

    3.启动数据库,然后为数据库配置密码。最后创建一个sonar库
    [root@sonarqube ~]# systemctl start mysqld
    [root@sonarqube ~]# mysqladmin password 123
    [root@sonarqube ~]# mysql -uroot -p123 -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"
    [root@sonarqube ~]# mysql -uroot -p123 -e "show databases;"
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sonar              |
    +--------------------+
    
    4.下载sonarqube,并安装解压至/usr/local
    [root@sonarqube ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.0.zip
    [root@sonarqube ~]# unzip sonarqube-7.0.zip -d /usr/local/
    [root@sonarqube ~]# useradd sonar
    [root@sonarqube ~]# chown -R sonar.sonar /usr/local/sonarqube-7.0/
    [root@sonarqube ~]# ln -s /usr/local/sonarqube-7.0/ /usr/local/sonarqube
    
    5.修改sonarqube连接数据库配置文件
    [root@sonarqube ~]# vim /usr/local/sonarqube/conf/sonar.properties
    sonar.jdbc.username=root
    sonar.jdbc.password=123
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
    
    6.启动sonarqube服务(由于es必须普通用户启动,所以不能使用root用户,否则启动失败)
    [root@sonarqube ~]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"

手动推送代码测试

手动代码测试要依赖sonarqube 客户端,客户端解压到本地可以直接使用。

手动测试有两种方法:
第一种命令推送
第二种将推送地址写入配置文件

这里演示第二种


    1.配置sonar-scanner指向sonarqube服务端
    [root@jenkins ~]# cat /usr/local/sonar-scanner/conf/sonar-scanner.properties
    sonar.host.url=http://www.sonar.com:9000
    sonar.login=113234aa9f09aed4bcb11e16092f5bd73d9ccfa7 
    #sonar.sourceEncoding=UTF-8
    
    2.配置本地hosts解析
    10.0.0.130  www.sonar.com:9000
    
    
    3.进入项目,执行sonar-scanner
    [root@jenkins ~]# /usr/local/sonar-scanner/bin/sonar-scanner \
    -Dsonar.projectKey=monitor \
    -Dsonar.sources=.

sonar.login生成方式
登录sonarqube

jenkins 基本使用_第31张图片
sonar.login

10、 jenkins 集成sonarqube

jenkins安装插件: SonarQube Scanner

告诉jenkins: jeknins上配置

    服务端是谁:   设置-->系统设置-->SonarQube servers
    客户端路径:   设置-->全局工具配置-->sonarqube scanner

客户端路径:

jenkins 基本使用_第32张图片
指明客户端位置

服务端是谁
jenkins 基本使用_第33张图片
配置服务端

11 、jenkins改造项目支持sonarqube质量检测

java  | mvn
    sonar.projectName=${JOB_NAME}
    sonar.projectKey=java
    sonar.sources=.
    sonar.java.binaries=target/sonar

html | php
    sonar.projectName=${JOB_NAME}
    sonar.projectKey=php
    sonar.sources=.

java项目:

jenkins 基本使用_第34张图片
image.png

你可能感兴趣的:(jenkins 基本使用)