Jenkins学习及配置教程

jenkins

软件开发生命周期:

需求分析----设计----实现(编码)----测试(功能测试,代码测试,压力测试)----进化(运维)

软件开发瀑布模型:(不适用软件需求变化太快的项目)

软件的敏捷开发:

what?
增量迭代式开发时敏捷开发的核心

持续集成:(CI)

持续部署:(CD)

通过持续集成,可以达到敏捷开发的目的,有了持续集成就可以更好的进行敏捷开发了

持续集成的步骤:
提交----测试----构建----测试(二轮)----部署----回滚(部署的版本可能有问题就会回滚到上一个版本)

持续集成的组成要素:

1:自动构建过程
2:有代码仓库的参与
3:有一个持续集成的服务器(有一台或多台服务器)

Jenkins是什么:

是开源的持续集成的工具,具有自动化构建,测试,和部署等功能

安装jenkins后修改配置:

vi/etc/syscofig/jenkins
进入后修改配置如下:
JENKINS_USER="root"
JENKINS_PORT="8888"
启动Jenkins:
systemctl start jenkins


构建过程:

git拉取--编译打包--部署到tomcat

一:自由风格:

首先:(拉取代码)
新建Item---输入任务名称(见名知意)--确定--然后选择源码管理里的Git---URL粘贴进去---选择凭证---保存---点击BuildNow

然后:(编译打包)
配置---构建---选择Execute shell---编写脚本
echo "开启进行编译和构建"
mvn clean package
echo "编译构建结束"
--点击应用保存---再次BuildNow


最后:(远程部署)
需要插件 Deploy to container
然后回到刚才项目---构建后操作---Deploy war/ear to a container
---WAR/EAR files中填写  target/*.war --- ContextPath不填
--- Containers添写tomcat认证及tomcat访问地址

二:Maven项目构建风格:

首先:
安装插件Maven Integration---新建Item---输入任务名---点击  构建一个maven项目---确定---Build---在Root POM中输入pom.xml----在Goals and options中输入 clean package 就可以了,因为默认就是maven命令----然后就是部署(和上面自由风格一样)

三:Pipeline流水线项目构建风格:

概念:Pipeline就是一套运行在Jenkins上的工作流框架,将原来独立运于单个或多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作
Pipeline脚本支持两种语法:Declarative(声明式)和Scripted Pipeline(脚本式)语法
pipeline也有两种创建方法:
1:可以直接在Jenkins的Web UI界面中输入脚本
2:也可以通过创建一个Jenkinsfile脚本文件放入项目源码库中(一般推荐使用第二种)

具体操作:
首先:安装  Pipeline  插件
之后:新建Item,选择流水线,输入任务名
再然后:流水线中就可以编写Pipeline脚本了(需要对语法有所了解熟悉)

语法:(声明式)
  例:
  Pipeline{
    agent any
    
    stages{
      stage('Hello'){
       steps{
         echo 'Hello World'
       }
      }
    }
  }
  
Pipeline分为两部分:
    一部分是stages上面部分,一般是环境之类的配置,当然也可以加一些工具,比如maven工具,jdk工具等等
    另一部分就是stages(所有阶段),就是包含了自由风格和maven风格的所有步骤(包括拉取代码和构建以及部署)
       stages中包含stage(阶段),一个stages中可以写多个stage,比如说,一个stage可以做拉取代码,一个stage可以做编译打包,还可以有一个stage做发布等,stage中包含steps(步骤),这里面可以写shell脚本,maven指令,都可以以这个steps的方式去编写
比如:
Pipeline{
  agent any
  
  stages{
    stage('pull code'){
       steps{
         echo '命令。。。。'
       }
    }
  }
}


语法:(脚本式)
例:node{
 def mvnHome
 stage('pull code'){
  echo '命令'
 }
}


采用第二种Jenkinsfile:
   1:在项目文件夹下创建Jenkinsfile,里面编写脚本
   2:然后推送到git上进行版本控制
   3:在Jenkins的流水线选项中的定义这一栏,选择 Pipeline script from SCM,然后下面的SCM选择git,然后填写git地址。。。
   4:脚本路径这一栏填写项目路径下的Jenkinsfile这个文件名(如果文件名是自定义的,这里要填写你自定义的文件名,并且,路径默认找的是项目路径下)

构建触发器:Jenkins内置4种,不需要安装插件即可使用

但是四种都不是开发建议的,有另一种原理:
   同事们将代码传到git,然后git触发一个命令,发送到Jenkins,在进行流水线工作
   好处就是在于代码有变化,就会去构建,而不是定期大量扫描,
   但现阶段因为没有搭建gitlib仓库,github没有webhook功能,只能先采用其四种方法之一

Jenkins配置邮箱服务器发送构建结果

Jenkins结合sonarQube代码审查

1:安装SonarQube
2:首先在MySQL创建sonar数据库
3:将sonar解压,并设置权限(稍后我会上传到钉钉文件夹中),然后进行下面这些命令
    yum install unzip
    unzip sonarqube-6.7.4.zip 解压
    mkdir /opt/sonar 创建目录
    mv sonarqube-6.7.4/* /opt/sonar 移动文件
    useradd sonar 创建sonar用户,必须sonar用于启动,否则报错
    chown -R sonar. /opt/sonar 更改sonar目录及文件权限
    
4:然后:    
修改sonar配置文件
vi /opt/sonarqube-6.7.4/conf/sonar.properties
内容如下:
sonar.jdbc.username=root sonar.jdbc.password=root123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?
useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=
maxPerformance&useSSL=false  


5:最后就是:
启动sonar
cd /opt/sonarqube-6.7.4
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs 查看日志


6:接下来进行Jenkins上安装SonarQube Scanner插件
7:然后进行添加SonarQube凭证,需要注意的是,填写secret这一行的时候,在登录sonarqube时候会弹出一个token,这里填的就是那个token
8:Jenkins进行SonarQube配置 位置: Manage Jenkins->Configure System->SonarQube servers(配置上name,Server URL,name见名知意,URL为服务器ip+sonarqube端口号)
9:在Manage Jenkins->Global Tool Configuration中填写name:sonarqube-scanner

在项目添加SonaQube代码审查(流水线项目)

首先就是配置文件:大概是通用的(在项目根目录下,创建sonar-project.properties文件)


sonar.projectKey=web_demo
sonar.projectName=web_demo
sonar.projectVersion=1.0
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
sonar.sourceEncoding=UTF-8


修改Jenkinsfile,加入SonarQube代码审查阶段
一般代码审查可以放在拉取代码这步骤之后或者项目部署这部分之前


最后更新git,进行构建项目,观察Jenkins控制台构建过程,查看sonarqubeUI界面的代码审查结果

重点!!!:

Jenkins+Docker+SpringCloud微服务持续集成:(思路)

代码提交到Gitlab,Jenkins进行拉取,代码审查,编译,打包,构建镜像,上传镜像到Docker私有仓库,上传后可以将镜像删除,然后进行项目部署(这里的项目部署就是触发一个命令,然后让生产服务器去Docker私有仓库拉取镜像,然后创建容器就可以进行访问了)

docker相关命令:

镜像命令:

docker search 镜像名称 搜索镜像
docker pull 镜像名称 拉取镜像
docker images 查看本地所有镜像
docker rmi -f 镜像名称 删除镜像


容器命令:
docker run -i 镜像名称:标签 运行容器(默认是前台运行)
docker ps 查看运行的容器
docker ps -a 查询所有容器
docker exec -it 容器ID/容器名称 /bin/bash 进入容器内部
docker start/stop/restart 容器名称/ID 启动/停止/重启容器
docker rm -f 容器名称/ID 删除容器

接下来下载安装Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,除了Harbor这个私有镜像仓库之外,还有Docker官方提供的Registry


1:先安装docker-compose:

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose

2:给docker-compose添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

3:查看docker-compose是否安装成功
docker-compose -version

4:下载Harbor的压缩包
  群文件有
  
5:上传压缩包到linux,并解压
tar -xzf harbor-offline-installer-v1.9.2.tgz
mkdir /opt/harbor
mv harbor/* /opt/harbor
cd /opt/harbor

6:修改Harbor的配置
vi harbor.yml

7:修改hostname和port
hostname: 服务器IP
port: 设置端口

8:安装Harbor
./prepare
./install.sh

9:启动Harbor
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动

然后就可以访问啦
ip+端口
默认账户密码:admin/Harbor12345

服务器上使用Docker跑流水线流程:

1:git上创建仓库
2:修改项目中Dockerfile和Jenkinsfile文件
3:加依赖
   
   <plugin> 
			<groupId>com.spotify</groupId> 
			<artifactId>dockerfile-maven-plugin</artifactId> 
			<version>1.3.6</version> 
			<configuration> 
			   <repository>${project.artifactId}</repository> 
			     <buildArgs> 
			        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> 
			     </buildArgs> 
			</configuration> 
   </plugin>
   
4:上传git
5:配置Jenkins上的项目信息
6:PostMan测接口

注意注意注意:

在写Jenkinsfile时候,有个坑别踩,那就是
    提取变量一定要加上双引号,引用的时候也要双引号引用变量

在这里插入图片描述
以上属于不是集群版,后续我会继续编写集群版,各位大佬多多指教

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值