Jenkins 2.x部署

2018-08-03  本文已影响0人  blaker

版本:

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):


image
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


image

全局工具配置中添加JDK8


image

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
    }

}
上一篇 下一篇

猜你喜欢

热点阅读