持续集成3-jenkins

jenkins是持续集成的核心,负责代码的一键式发布,过程中使用maven进行编译打包上传到nexus,调用sonar插件进行代码检查,调用脚本远程部署到web容器启动服务

  • jenkins2.46.3是最后一个支持jdk7的版本,jenkins提供安装版和war包版,一般都使用war包版,方便灵活

  • 将war包放到tomcat或者直接通过命令行启动java -jar jenkins.war --httpPort=8080。启动之后第一次进入需要密码,页面上会提示密码的地方~/.jenkins/secrets/initialAdminPassword。然后会让创建用户,我这里用户名admin,密码admin,全名lfz(登陆后显示在右上角的名字)

  • 然后会让选择插件安装,左面是安装推荐的插件,右面是自己选择插件安装(其实里面默认选中了推荐的插件),因为我只用git管理源码,所以去掉了svn有关的插件

  • 用Jenkins的话,其实可以将maven的setting.xml中sonar的profile节点删掉,因为Jenkins可以安装sonar插件,但是最好留着,这样可以直接通过maven命令使用sonar

  • jenkins运行过程中的所有文件都在~/.jenkins文件夹下,如果想要重置jenkins,只需要将.jenkins文件夹删掉

  • 在系统管理-Global Tool Configuration中配置jdk、git、maven。配置不正确会有黄色的警告信息,我这里更改了默认maven使用的setting.xml,


    持续集成3-jenkins_第1张图片
  • 建议使用maven3.0.5,据说高版本和jenkins使用起来有问题,而且公司也要求用3.0.5,我也就一直使用的这个版本


    持续集成3-jenkins_第2张图片
  • 系统管理-Configure Global Security中,添加admin用户的全部权限,匿名用户的只读权限,开放用户注册,这样一个团队中可以根据不同的人分配不同的权限


    持续集成3-jenkins_第3张图片
    安全设置
  • 因为我们的项目使用git管理源码,需要在Credentials中配置ssh账号,在Credentials-add Credentials中kind选ssh类型,userName写生成ssh私钥时的用户名,把私钥拷贝到key里


    持续集成3-jenkins_第4张图片
    image.png
  • 想通过jenkins插件形式集成sonar的话,需要安装SonarQube Scanner for Jenkins插件,在新版本jenkins中叫SonarQube Scanner for Jenkins,之前查看资料老jenkins中插件叫SonarQube Plugin,现在最新的2.6.1版本需要jdk8,在官方插件库下载2.4.4板,因为这里用的sonar4.5.7的sonar-runner是2.4的。也可以到插件的github中下载来自己package。通过这两种方式获得的.hpi插件文件,在插件管理的高级下上传就可以安装了

    持续集成3-jenkins_第5张图片
    image.png

  • 在系统管理-系统设置中设置sonar服务的信息


    持续集成3-jenkins_第6张图片

    持续集成3-jenkins_第7张图片
  • 如果最终构建完系统,想把构建的生成文件部署到服务器上,多用于将war包部署到web容器中,需要安装Publish Over SSH插件,在系统设置里设置ssh,在我自己的mac上相当于jenkins用ssh连接本机进行部署服务,所以需要开启mac的远程登录 。在系统管理系统设置中设置要部署机器的信息,因为要通过ssh登录要部署的机器。name中给要部署的机器起个名字,设置ip和登录用的用户密码。remote directory非常重要,jenkins通过ssh登录到机器上,只有该目录下的操作权限


    持续集成3-jenkins_第8张图片
    image.png
  • 新建一个工程,如果想要新建maven,需要安装Maven Integration plugin插件

    持续集成3-jenkins_第9张图片
    新建maven工程

  • general中设置权限管理和丢弃构建的设置


    持续集成3-jenkins_第10张图片
    general设置
  • 源码管理中使用工程的github的地址、分支,使用之前配置的ssh账号


    持续集成3-jenkins_第11张图片
    源码管理
  • build中设置maven命令,deploy的话就会在构建时将war包或者jar包上传到nexus私服,如果加入sonar:sonar甚至可以不通过jenkins的sonar插件,直接通过maven的sonar插件使用sonar


    持续集成3-jenkins_第12张图片
    build设置
  • 在构建后操作中加入sonarQube scanner with maven,加入分支名和之前配置的jdk版本


    持续集成3-jenkins_第13张图片
    sonar设置
  • 在构建后操作中设置send build artifact over ssh进行部署,name是之前配置的要部署的机器的名字。source files的基础目录是该项目的workspace,也就是~/.jenkins/workspace/MyBlog,jenkins构建的时候其实是用git上把源码down到了.jenkins/workspace/projectName中,然后打包的东西就在target中,多个文件用逗号分隔。remove prefix一般就是target。remote directory的基础目录是之前配置的/User/laifuzhi。exec command是当把要上传到远程机器的文件都上传之后要执行的脚本


    持续集成3-jenkins_第14张图片
    远程部署设置
#!/bin/sh
/Users/laifuzhi/apache-tomcat-7.0.79/bin/shutdown.sh
sleep 3
rm -rf /Users/laifuzhi/apache-tomcat-7.0.79/webapps/myBlog
/Users/laifuzhi/apache-tomcat-7.0.79/bin/startup.sh

tips

修改tomcat启动脚本startup.sh,加入export JAVA_OPTS=" -Xms512m -Xmx2048m"默认的tomcat内存参数,jenkins运行一会就会显示永久代oom了,所以需要增加内存

在同一个机器上部署多个tomcat实例,需要保证每个实例的三个端口不同:

  1. 修改http访问端口(默认为8080端口)
  2. 修改Shutdown端口(默认为8005端口)
  3. 修改JVM启动端口(默认为8009端口)
肥肥小浣熊

你可能感兴趣的:(持续集成3-jenkins)