- 一、jenkins是什么
- 二、jenkins的特征
- 三、Jenkins安装和持续集成环境配置
- 四、Pipeline流水线项目构建
- 五、自动触发构建
- 六、配置邮箱服务器发送构建结果
- 八、代码审查
- 总结
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
官网: http://jenkins-ci.org/。
1.开源,Java语言开发,支持持续集成,持续部署。 2.易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。 3.消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。 4.分布式构建:支持Jenkins能够让多台计算机一起构建/测试。 5.文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。 6.丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker三、Jenkins安装和持续集成环境配置
1)、windows10系统,VMware16
CentOS7(官网下载链接:http://isoredirect.centos.org/centos/7/isos/x86_64/)
| 名称 | 安装软件 |
|---|---|
| 代码托管服务器 | Gitlab-12.4.2 |
| 持续集成服务器 | jenkins-2.277.4-1.1,JDK1.8,Maven3.6.2,Git,SonarQube |
| 应用测试服务器 | JDK1.8,Tomcat8.5 |
2)、Gitlab安装
1. 安装相关依赖 yum -y install policycoreutils openssh-server openssh-clients postfix 2. 启动ssh服务&设置为开机启动 systemctl enable sshd && sudo systemctl start sshd 3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能 systemctl enable postfix && systemctl start postfix 4. 开放ssh以及http服务,然后重新加载防火墙列表 firewall-cmd --add-service=ssh --permanent firewall-cmd --add-service=http --permanent firewall-cmd --reload 如果关闭防火墙就不需要做以上配置 5.下载gitlab包,并且安装 在线下载安装包: wget http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm 安装: yum install policycoreutils-python rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm 6.修改gitlab配置 vi /etc/gitlab/gitlab.rb 修改gitlab访问地址和端口,默认为80,我们改为82 external_url 'http://虚拟机IP:82' nginx['listen_port'] = 82 7. 重载配置及启动gitlab gitlab-ctl reconfigure gitlab-ctl restart 8. 把端口添加到防火墙 firewall-cmd --zone=public --add-port=82/tcp --permanent firewall-cmd --reload 启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可 登录后可以将自己的项目上传到gitlab上
3)、Jenkins安装
1)安装JDK yum install java-1.8.0-openjdk* -y 安装目录为:/usr/lib/jvm 2)获取jenkins安装包 https://mirrors.tuna.tsinghua.edu.cn/ 安装文件:jenkins-2.190.3-1.1.noarch.rpm 3)把安装包上传到192.168.66.101服务器,进行安装 rpm -ivh jenkins-2.277.4-1.1.noarch.rpm 4)修改Jenkins配置 vi /etc/sysconfig/jenkins 修改内容如下: JENKINS_USER="root" JENKINS_PORT="8888" 5)启动Jenkins systemctl start jenkins 注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口 firewall-cmd --zone=public --add-port=8888/tcp --permanent firewall-cmd --reload 6)打开浏览器访问 7)获取并输入admin账户密码 cat /var/lib/jenkins/secrets/initialAdminPassword 8)修改Jenkins插件下载地址 注意:需要等jenkins的插件完全下载完,这个目录才会出现 /var/lib/jenkins/updates 修改为国内的镜像: sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json && sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json 最后在jenkins可视化界面中Manage Plugins点击Advanced,把Update Site改为国内插件下载地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
4)、Git安装
yum install git -y git --version 安装后查看版本
5)、安装Credentials Binding插件,在可选插件中搜索并安装
成功之后
可以在凭证配置中配置
添加凭证
之后就可以新建任务进行测试。
使用SSH测试:
1)ssh-keygen -t rsa 生成秘钥和公钥 id_rsa:私钥文件 id_rsa.pub:公钥文件 在/root/.ssh/目录保存 2)把生成的公钥放在Gitlab中 以root账户登录->点击头像->Settings->SSH Keys 复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"
在jenkins中创建任务,并添加凭证,使用id_rsa的内容
6)Maven安装和配置
1)先上传apache-maven-3.6.2-bin.tar.gz
tar -xzf apache-maven-3.6.2-bin.tar.gz 解压
mkdir -p /opt/maven 创建目录
mv apache-maven-3.6.2target/surefire-reports/TEST-*.xml'
archiveArtifacts 'targetmaster']],
doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'gitlab凭证', url:
'项目地址']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: 'tomcat凭证', path: '', url: 'tomcat访问地址')], contextPath: "/web-demo",
war: 'targettesttarget/**
sonar.java.source=1.8
sonar.java.target=1.8
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
修改jenkinsfile文件
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${branch}']],
doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: '7c804458-849b-4e6b-8360-63041800aedd', url:
'git@192.168.226.131:jenkins-01/web-demo.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package'
}
}
stage('SonarQube代码审查') {
steps{
script {
scannerHome = tool 'sonarqube-scanner'
}
withSonarQubeEnv('sonarqube-6.7.4') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: '67f00f94-5472-448a-be39-ef350374df8a', path: '', url: 'http://192.168.226.133:8080')], contextPath: "/web-demo",
war: 'target/*.war'
}
}
}
post {
always{
emailext(subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}',to: 'xx@qq.com')
}
}
}
SonarQube的UI界面j就可以查看审查结果
学习笔记!



