jenkins搭建篇:系统搞挂了?快来试试修改配置文件!

达芬奇密码2018-07-12 10:21
    大家都知道,考拉之前的持续集成一直用的是杭研的持续集成系统,但随着考拉的业务越来越庞大,对于持续集成的需求也越来越大,自动化测试、单元测试、静态代码检查等等....终于在2017年的某一天,杭研的系统挂了...考拉这边的持续集成也不得不等待着兄弟部门的修复..严重影响了工作效率...基于上述情况(当然还有其它维护、数据方便的原因啦~),测开组童鞋决定自己搭建一套持续集成系统...
=========抱歉,上面都是些废话,下面咱进入正题=========
一、关于jenkins基本搭建步骤
其实关于jenkins搭建,网上的教程实在太多太多了,我这里结合我们自己搭建的实践简单说说吧,将一些基础搭建的配置步骤整合到一起(网上的一些资料比较离散),对于有jenkins搭建经验的童鞋来说,这边都可以直接忽略了哦~~~如果没有搭建过的童鞋,可以试着看看呢 说不定你以后可能会用到的~/
1、【下载文件】
  • 下载jenkins源码包:https://jenkins.io/ (官网提供了很多版本,我们这次安装直接用的war包,比较简单方便)
  • 下载tomcat包: http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz (大家可以结合自己的需求下载最新版本)
  • 下载jdk: jenkins最新版的安装包是需要jdb 1.8 的,现在我搭建jenkins的时候大部分的机器都是 jdk 1.6 or jdk1.7,如果实在因为权限问题,无法将服务器的jdk升级为1.8,请自行下载jdk1.8到一个自定义的目录(保证不会被别人删除!),然后使用绝对路径启动就阔以啦~~~
2、【服务器上部署master主机、使用tomcat启动服务】
  • 安装tomcat
解压文件 (opt/下解压):tar -zxvf apache-tomcat-*.tar.gz  
重命名:mv apache-tomcat-* /opt
为启动的脚本文件添加环境变量(tomcat7/bin/startup.sh):
JAVA_HOME=/usr/java/jdk-8u121
JRE_HOME=/usr/java/jdk-8u121/jre\
 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME:$PATH
 CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 TOMCAT_HOME=/opt/tomcat7
  • 配置jdk环境变量(打开配置文件vi /etc/profile、配置完毕source /etc/profile 保存退出,使设置生效)
export JAVA_HOME=/usr/java/jdk-8u121
export JAVA_BIN=/usr/java/jdk-8u121/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
可以运行 sh startup.sh 命令,检查tomcat是否能够正常启动!成功的话,页面上打开  localhost:8080 可以看到tomcat欢迎页
  • 安装jenkins
在tomcat webapps目录下新建ROOT文件夹,我们将把安装到这个目录下面: 解压jenkins.war :   /usr/java/jdk1.8.****/bin/jar -xvf jenkins.war
配置环境变量  vi /etc/profile  ---> export JENKINS_HOME=/opt/tomcat7/webapps/jenkins
至此,基本环境搭建完毕,运行nohup sh startup.sh > nohup.out & 启动tomcat, 打开ocalhost:8080即可看到jenkins初始化页面
3、【一些基本配置】
  • maven配置:【系统管理】--> Global Tool Configuration --> Maven --> Maven 安装
  • 节点机配置:【系统管理】-->【管理节点】-->【新建节点】
  • 如果节点机启动方法:【Launch agent via java web start】 如果启动方法中找不到这一项,请按照如下配置:【系统管理】-->【Configure Global Security】-->随机选取四个选项全部勾上
  • 启动节点机 : /home/appops/jdk1.8.0_151/bin/java -jar slave.jar -jnlpUrl http://主机名称/computer/节点机名称/slave-agent.jnlp -secret 密钥efd3 -workDir /home/appops/jenkins【节点机jenkins目录】
  • 后面还有各种邮件配置、job新建配置等可以自行去网上查阅资料哈 这里不再赘述了
二、oh no?!!不小心在页面上改了个配置,系统起不来了?系统挂了?系统登不进来了?
首先说下为啥要写这个..哎..真是一把辛酸泪啊.. 本人在搭建jenkins的过程中,因为各种手误(贱)不小心改了某个配置或者增加了某个配置,然后.....系统就起不来了,网上找了好多资料,看看能不能直接通过配置文件来修复系统,what?!!! 竟然找不到!!搜到的竟然是一堆配置图,这个我早就操作过n遍了啊....当时的心情如下:
针对这种老是把系统搞挂的问题,我使用了两种方案:
  • 重新安装大法(不得不说 此大法我修炼了至少10次啊,每一次修炼都是一种酸楚,宝宝不想说话)
  • 改xml配置文件复原大法(上述大法实在折磨的人想吐学,木有办法,只好自个儿去研究下服务器上的配置文件 嘿嘿 貌似有解药!!!)
下面我们就针对jenkins的一些配置文件就行简述,有不当的地方欢迎指正!
  1. gitlab连接配置(对应系统配置中gitlab): com.dabsquared.gitlabjenkins.connection.GitLabConnectionConfig.xml 、com.dabsquared.gitlabjenkins.GitLabPushTrigger.xml 可以配置gitlab name、url、权限用户信息、配置api-level等
  2. 【重头戏】系统配置:config.xml    匿名用户: anonymous 登录用户:authenticated
    执行者数量:<numExecutors>0</numExecutors>
    启用安全:<useSecurity>true</useSecurity>如果一旦权限配置有问题 请修改这个地方为false 保证能够登录进入系统 重新配置
    用户权限设置: 
    <authorizationStrategy >
    Credentials 权限:
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:hzzhushanshan</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:hzzhushanshan</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:hzzhushanshan</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update:hzzhushanshan</permission>
    <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View:hzzhushanshan</permission>
    Agent权限:
    <permission>hudson.model.Computer.Build:hzzhushanshan</permission>
    <permission>hudson.model.Computer.Configure:hzzhushanshan</permission>
    <permission>hudson.model.Computer.Connect:hzzhushanshan</permission>
    <permission>hudson.model.Computer.Create:hzzhushanshan</permission>
    <permission>hudson.model.Computer.Delete:hzzhushanshan</permission>
    <permission>hudson.model.Computer.Disconnect:hzzhushanshan</permission>
    Overall权限:
    <permission>hudson.model.Hudson.Administer:hzzhushanshan</permission>
    <permission>hudson.model.Hudson.Read:hzzhushanshan</permission>
    Job权限:
    <permission>hudson.model.Item.Build:hzzhushanshan</permission>
    <permission>hudson.model.Item.Cancel:hzzhushanshan</permission>
    <permission>hudson.model.Item.Configure:hzzhushanshan</permission>
    <permission>hudson.model.Item.Create:hzzhushanshan</permission>
    <permission>hudson.model.Item.Delete:hzheqian</permission>
    <permission>hudson.model.Item.Discover:hzzhushanshan</permission>
    <permission>hudson.model.Item.Move:hzzhushanshan</permission>
    <permission>hudson.model.Item.Read:hzzhushanshan</permission>
    <permission>hudson.model.Item.Workspace:hzzhushanshan</permission>
    Run权限:
    <permission>hudson.model.Run.Delete:hzzhushanshan</permission>
    <permission>hudson.model.Run.Replay:hzzhushanshan</permission>
    <permission>hudson.model.Run.Update:hzzhushanshan</permission>
    View权限:
    <permission>hudson.model.View.Configure:hzzhushanshan</permission>
    <permission>hudson.model.View.Create:hzzhushanshan</permission>
    <permission>hudson.model.View.Delete:hzzhushanshan</permission>
    <permission>hudson.model.View.Read:hzzhushanshan</permission>
    SCM权限:
    <permission>hudson.scm.SCM.Tag:hzzhushanshan</permission>
    </authorizationStrategy>
    访问控制 --> 安全域-->OpenID SSO --> provier URL【一不小心配置了一个不可用的url 可以修改这边 将这边删除 重新页面上尝试】:
    <securityRealm  plugin="openid@1.8"><endpoint>https://login.netease.com/openid</endpoint</securityRealm> 
    此外,这个文件中还有jdk、view的详细配置,大家可以自行去查阅配置文件理解
  1. 【jenkins全局credentials权限文件】credentials.xml
    <com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
    <scope>GLOBAL</scope> //是否全局可用
    <id>用户id</id>
    <description></description>
    <username>hzzhushanshan</username>
    <password>加密后的password</password>
    </com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
  2. gitlab-hook 配置文件:github-plugin-configuration.xml
  3. maven插件配置文件:hudson.maven.MavenModuleSet.xml
  4. jenkins更新中心:hudson.model.UpdateCenter.xml
  5. jenkins 邮件配置:hudson.plugins.emailext.ExtendedEmailPublisher.xml 包括smtp服务、邮箱的登录账号和密码 以及一些邮件消息通知配置
  6. jenkins url配置:jenkins.model.JenkinsLocationConfiguration.xml (如果这里jenkinsUrl配置错了 将会导致系统无法登入,请修改配置文件将jenkinsUrl一行删除即可
    <jenkins.model.JenkinsLocationConfiguration
    <adminAddress>ci_klqa@163.com</adminAddress>
    <jenkinsUrl>http://ci.kaolatest.netease.com/</jenkinsUrl></jenkins.model.JenkinsLocationConfiguration>
  7. 每一个job的配置在 jobs文件夹下面,点击相应的job名称进入目录,对应配置文件 config.xml;job相应的构建信息也会在这里出现!
        安装一个插件 均会在master服务器上生成一些对应的配置文件,大家可以自行查看其它的配置文件,这里不再多说啦!理解配置文件 对于出错、理解插件的设置很有帮助!! 
说完啦,其实也是讲了一点点,jenkins的功能很强大,一切都还在学习和研究中,希望大家一起学习一起进步~ 

本文来自网易实践者社区,经作者朱珊珊授权发布。