Jenkins 2.x部署
版本:
Linux: CentOS Linux release 7.0.1406 (Core)
java: 1.8.0_111
jenkins: 2.107.3
jenkins 2.x 部署
查考官方文档
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions
安装java:
yum或自定义安装(需将路径添加进/etc/init.d/jenkins文件 candidates 列表),选yum安装java-1.8.0-openjdk、java-1.8.0-openjdk-devel
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# 稳定版本:
# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins
启动文件:/etc/init.d/jenkins
配置文件:/etc/sysconfig/jenkins
主目录:/var/lib/jenkins
默认用户:jenkins
默认启动端口:8080
启动后浏览器打开,按照提示输入
/var/lib/jenkins/secrets/initialAdminPassword
里的管理员密码
默认推荐插件(20/57):
![](https://img.haomeiwen.com/i3890328/9e033b34be3c3ca7.jpg)
Organization and Administration (2/3):Folders 、OWASP Markup Formatter
Build Features (4/10):Build Timeout 、Credentials Binding 、Timestamper 、Workspace Cleanup
Build Tools (2/4):Ant 、Gradle
Build Analysis and Reporting (0/6)
Pipelines and Continuous Delivery (4/9):Pipeline 、GitHub Branch Source 、Pipeline: GitHub Groovy Libraries 、Pipeline: Stage View
Source Code Management (2/12):Git 、Subversion
Distributed Builds (1/3):SSH Slaves
User Management and Security (3/5):Matrix Authorization Strategy 、PAM Authentication 、LDAP
Notifications and Publishing (2/5):Email Extension 、Mailer
可以不创建管理用户用默认的admin密码也用默认,防忘🤣
服务器yum install git
添加git认证:
1.秘钥认证(ssh方式git@)
切换到jenkins用户:
su -s /bin/bash jenkins
生成秘钥:
ssh-keygen -t rsa
公钥添加进git ssh-keys
添加know_hosts,
git ls-remote -h git@example.com/my/repo.git HEAD
否则git fetch报错:returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: Could not read from remote repository.
2.密码认证(http方式 http://)
Jenkins > Credentials > System > Add domain
现在这里用的是账号密码。效果是可以http不能ssh。
待测试详细区别,这里也可以添加私钥,应该只添加私钥是不行的,还要把公钥上传到gitlab,需要搞清楚,http ssh区别,目前测试结果是,这里设置的账号密码方式可以http不能ssh,公钥方式可以ssh不能http,感觉应该是http-密码 ssh-秘钥/密码(暂时不行,待详细测试,节省时间的话可以用一种可以行的方式就好)
maven 安装:
官网(http://maven.apache.org/download.html)
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
配置环境变量:
export M3_HOME=/usr/local/src/apache-maven-3.5.3
export PATH=${M3_HOME}/bin:${PATH}
全局工具配置中添加M3
![](https://img.haomeiwen.com/i3890328/7976de3efdd537cd.jpg)
全局工具配置中添加JDK8
![](https://img.haomeiwen.com/i3890328/1b8b654a3ed22785.jpg)
pipeline 插件
不要使用像 Build Pipeline 插件或者 Buildflow 插件这样的旧插件。而是使用真正的 Jenkins Pipiline 插件套装。
pipeline 脚本使用版本控制,不要直接在写在jenkins
172.20.133.16:8080 admin initxfasfasfasf
Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。什么是Pipeline,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念
Pipeline的几个基本概念:
Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
node{
stage('get clone'){
//check CODE
git credentialsId: 'f3eb1fea-42b0-46b2-8342-a2be6a65fe73', url: 'http://xx.xx.xx/xx/qd_api.git'
}
//定义mvn环境
def mvnHome = tool 'M3'
env.PATH = "${mvnHome}/bin:${env.PATH}"
stage('mvn test'){
//mvn 测试
sh "mvn test"
}
stage('mvn build'){
//mvn构建
sh "mvn clean install -Dmaven.test.skip=true"
}
stage('deploy'){
//执行部署脚本
echo "deploy ......"
}
}
使用插件 mvn 命令,在script语句里面,我们使用的tool工具来获取全局Maven配置M3,这里我们也可以使用Pipeline Maven Integration Plugin插件来完成。
点击插件管理 —》可选插件 —》Pipeline Maven Integration Plugin —》立即安装,安装完成之后,就可以使用该插件使用mvn命令了。
Cobertura
mvn cobertura:cobertura -Pmetrics
后面加了-Pmetrics表示生成报告。---测试失败
一直提示:
The requested profile "metrics" could not be activated because it does not exist.
也没有生成
**/target/site/cobertura/coverage.xml'
mvn cobertura:cobertura -Dcobertura.report.format=xml --测试可行
pipeline+cobertura
script:
node {
def mvnHome
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git branch: 'dev',url: 'git@gitlab.skysri.com:system_group/ipcloud.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'M3'
}
stage('Build') {
sh "'${mvnHome}/bin/mvn' cobertura:cobertura -Dcobertura.report.format=xml"
}
stage('Post') {
cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/target/site/cobertura/coverage.xml', conditionalCoverageTargets: '70, 0, 0', failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 0, 0', maxNumberOfBuilds: 0, methodCoverageTargets: '80, 0, 0', onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false
}
}