设为首页 收藏本站
查看: 1163|回复: 0

[经验分享] Jenkins 持续集成平台构建之通过svn提交代码

[复制链接]

尚未签到

发表于 2018-9-4 09:40:38 | 显示全部楼层 |阅读模式
  一、简介
  Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  主要功能:
  1、持续的软件版本发布/测试项目。
  2、监控外部调用执行的工作。
  主要特点:
  1、易于安装,只要把jenkins.war部署到servlet容器,不需要数据库的支持
  2、易于配置,所有配置都是通过其提供的web界面实现
  3、集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
  4、生成JUnit/TestNG测试报告
  5、分布式构建支持Jenkins能够让多台计算机一起构建/测试
  6、文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等
  7、插件支持:支持扩展插件,你可以开发适合自己团队使用的工具
  二、安装配置
  1、环境介绍
  Centos6.6 x86_64 IP: 10.0.90.27
  2、安装方式:
  第一种:可以war包安装
  第二种:也可以下载rpm包安装
  第三种:可以yum直接安装(需要创建Jenkins.repo源)
  官网链接:http://pkg.jenkins-ci.org/redhat/
  方式如下:
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat/jenkins.repo  
sudo rpm --import
  
yum install jenkins
  本次实验介绍直接war包安装的方式,其他方式有时间再介绍
  3、软件版本:
jdk      8.0.92  
tomcat   8.0.36
  
Jenkins  2.9
  
SVN      1.6.11
  将下载好的jdk、apache-tomcat、Jenkins.war 包上传到服务器上,然后开始安装
  4、安装jdk
#rpm -ivh jdk-8u92-linux-x64.rpm  
Preparing...                ########################################### [100%]
  
   1:jdk1.8.0_92            ########################################### [100%]
  
Unpacking JAR files...
  
        tools.jar...
  
        plugin.jar...
  
        javaws.jar...
  
        deploy.jar...
  
        rt.jar...
  
        jsse.jar...
  
        charsets.jar...
  
        localedata.jar...
  5、安装tomcat
#tar xf apache-tomcat-8.0.36.tar.gz -C /usr/local/  
# cd /usr/local/
  
# ln -sv apache-tomcat-8.0.36/ tomcat
  
`tomcat' -> `apache-tomcat-8.0.36/'
  6、安装Jenkins
#nohup java -jar jenkins.war &   ##安装的过程中,会提示你记住一个密码,记录下来,如下  
……………………
  
……………………
  
Jenkins initial setup is required. An admin user has been created and a password generated.
  
Please use the following password to proceed to installation:
  

  
fb4eea02635f4889865fd231a9837dd5
  

  
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
  

  
*************************************************************
  
*************************************************************
  
*************************************************************
  
………………
  
………………
  
………………
  
wiki":"https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin"}
  
        at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
  
        at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1043)
  
        at net.sf.json.JSONObject.fromObject(JSONObject.java:156)
  
        at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:348)
  
        at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:955)
  
        at net.sf.json.JSONObject._fromString(JSONObject.java:1145)
  
        at net.sf.json.JSONObject.fromObject(JSONObject.java:162)
  
        at net.sf.json.JSONObject.fromObject(JSONObject.java:132)
  
        at hudson.model.UpdateSite.updateData(UpdateSite.java:192)
  
        at hudson.model.UpdateSite.updateDirectlyNow(UpdateSite.java:176)
  
        at hudson.model.UpdateCenter.updateDefaultSite(UpdateCenter.java:2165)
  
        at jenkins.install.SetupWizard.init(SetupWizard.java:170)
  
        at jenkins.install.InstallState$3.initializeState(InstallState.java:105)
  
        at jenkins.model.Jenkins.setInstallState(Jenkins.java:971)
  
        at jenkins.install.InstallUtil.proceedToNextStateFrom(InstallUtil.java:94)
  
        at jenkins.model.Jenkins.(Jenkins.java:888)
  
        at hudson.model.Hudson.(Hudson.java:85)
  
        at hudson.model.Hudson.(Hudson.java:81)
  
        at hudson.WebAppMain$3.run(WebAppMain.java:227)
  

  
Jun 15, 2016 10:43:10 PM hudson.WebAppMain$3 run
  
INFO: Jenkins is fully up and running
  执行如上命令之后,就开始在浏览器访问8080端口,在web界面访问并安装Jenkins,如下:
  http://10.0.90.27:8080
  #如果不出问题,会提示你输入一个字符串,就是刚才要你记录下来的字符串(也可以根据提示到对应文件中查看),输入之后,然后继续,会出现“Customize Jenkins”界面,然后就按照默认的选择(Install suggested plugins)继续下一步,然后会看到提示安装plugin,如下图:
DSC0000.png

  安装plugin需要花费一些时间,等这些plugin安装好之后,会让你创建一个admin用户,你可以自定义这个用户,配置好用户名、密码邮箱,也可以继续使用admin用户--(Continue as admin),本次实验我是创建了一个普通用户,创建好之后,点击“Save and Finish”按钮,会弹出“Jenkins is ready!”界面,然后点击“Start using Jenkins”,就会看到安装好的Jenkins界面了,如下:
DSC0001.png

  用户名admin,密码就是刚才设置的密码,然后到Jenkins服务器上查看java进程,如下:
#netstat -tunlp  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2632/sshd
  
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1076/master
  
tcp        0      0 :::22                       :::*                        LISTEN      2632/sshd
  
tcp        0      0 ::1:25                      :::*                        LISTEN      1076/master
  
tcp        0      0 :::52236                    :::*                        LISTEN      6527/java
  
tcp        0      0 :::8080                     :::*                        LISTEN      6527/java
  
udp        0      0 :::33848                    :::*                                    6527/java
  
udp        0      0 :::5353                     :::*                                    6527/java
  然后可以创建一个项目,点击左侧的“新建”,会出现如下界面:
DSC0002.png

  然后输入item name,下面的选项,根据情况进行选择,我这里是选择的是第一个。
  三、安装SVN
  1、SVN运行方式:
  SVN服务器有2种运行方式:独立服务器和借助apache运行,两种方式各有利弊,可以自行选择
  独立服务器:  例如 svn://xxx.com/xxx
  借助于apache  例如 http://svn.xxx.com/xxx
  这里使用独立服务器的方式运行
  2、开始安装(这里直接yum安装)
#yum install subversion -y  3、SVN代码库创建(自定义代码库路径)
#mkdir -pv  /opt/svndata/  
建立svn版本库,自定义名字为myproject
  
#svnadmin create /opt/svndata/myproject
  
执行此命令之后,自动建立myproject测试库,查看/opt/svndata/myproject/目录下面,包含了
  
conf  db  format hooks locks  README.txt,说明一个SVN库已经建立了
  4、配置代码库
  首先进入第3步生成的conf下进行配置
#cd /opt/svndata/myproject/conf  
配置用户和密码
  
#vi passwd
  
在 [users] 下面创建
  
格式:
  
用户名 = 密码
  
如下:
  
[users]
  
# harry = harryssecret
  
# sally = sallyssecret
  
xingliguang = liguang
  
保存退出!
  
权限控制authz配置,目的是设置哪些用户可以访问哪些目录,修改authz文件
  
#vi authz
  
[aliases]
  
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
  

  
[groups]                #组
  
# harry_and_sally = harry,sally
  
# harry_sally_and_joe = harry,sally,&joe
  
admin = xingliguang    #创建一个admin组,将xingliguang用户加入该组
  
# [/foo/bar]
  
# harry = rw
  
# &joe = r
  
# * =
  
[/]                  #根目录权限设置,就是“svndata”这个文件夹
  
xingliguang = rw     #赋予xingliguang用户rw权限
  

  
[myproject:/]        #myproject:/,表示对myproject版本库下的所有资源设置权限
  
@admin = rw          #admin组的用户对myproject版本库有读写权限
  

  
# [repository:/baz/fuz]
  
# @harry_and_sally = rw
  
# * = r
  注释:
  [game2:/test]         #表示对版本库game2中的test项目设置权限
  [game2:/test/test1]     #表示对版本库game2中的test项目的test1目录设置权限,权限主体可以是用户组、用户、或者是* ,用户组在前面加@ ,* 表示全部用户权限可以是 w、r、rw和空 ,空表示没有任何权限
  5、svn配置文件的相关配置
#vi svnserve.conf   ##修改为如下:  
[general]                     #匿名访问的权限,可以使read,write,none
  
anon-access = none            #这里不允许匿名访问svn
  
auth-access = write           #是授权用户有些权限
  
password-db = passwd          #密码数据库的路径,也可以自定义password-db = /path/to
  
authz-db = authz              #访问控制文件
  
realm = My First SVN Server   #认证命名空间,subversion会在认证的时候提示
  6、启动SVN服务
#svnserve -d -r /opt/svndata/     ##如果没有报错,表示OK  查看端口
# netstat -tunlp  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2632/sshd
  
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1076/master
  
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      7309/svnserve
  
tcp        0      0 :::22                       :::*                        LISTEN      2632/sshd
  
tcp        0      0 ::1:25                      :::*                        LISTEN      1076/master
  
tcp        0      0 :::52236                    :::*                        LISTEN      6527/java
  
tcp        0      0 :::8080                     :::*                        LISTEN      6527/java
  
udp        0      0 :::33848                    :::*                                    6527/java
  
udp        0      0 :::5353                     :::*                                    6527/java
  看到端口已经启动OK。
  启动指令介绍:
  此指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口。可以使用“--listen-port=”或者“--listen-host=”来指定其它端口。-r 选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。
  7、使用checkout导出文件
#svn checkout svn://127.0.0.1/myproject  
Authentication realm:  My First SVN Server
  
Password for 'root':        ###回车即可
  
Authentication realm:  My First SVN Server
  
Username: xingliguang       ##输入svn中创建的用户名
  
Password for 'xingliguang':      ##输入密码
  

  
-----------------------------------------------------------------------
  
ATTENTION!  Your password for authentication realm:
  

  
    My First SVN Server
  

  
can only be stored to disk unencrypted!  You are advised to configure
  
your system so that Subversion can store passwords encrypted, if
  
possible.  See the documentation for details.
  

  
You can avoid future appearances of this warning by setting the value
  
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
  
'/root/.subversion/servers'.
  
-----------------------------------------------------------------------
  
Store password unencrypted (yes/no)? yes
  
Checked out revision 0.
  四、svn客户端工具安装
  这里介绍在windows物理机安装TortoiseSVN客户端(如果自己安装的有开发工具,比如eclipse等,可以自行配置),软件包:TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.1420009570.msi,双击安装即可。
  然后右键单击图标(一个小乌龟图标),选择“TortoiseSVN”--“Repo-browser”,在URL中输入svn的地址,如下:
DSC0003.png

  点击OK,之后,会出现如下界面:输入svn的用户名和密码
DSC0004.png

  然后点击OK,会出现如下界面:
DSC0005.png

  然后你就可以在此界面操作(右键单击,会看到很多功能),创建代码库目录,上传文件等。
DSC0006.png

  点击OK,弹出如下界面:可以添加一些Message,作为备注信息,然后点击OK即可。
DSC0007.png

  就会看到刚才创建的目录了
DSC0008.png

  然后将一些代码上传到wphr_sys目录中,选中wphr_sys项目,右键单击,选择“Add Folder”,会弹出windows方框,选中需要上传的目录(这里是server目录,下面有一个cat.tar.gz 包和一个cat.txt文件)即可,如下
DSC0009.png

  点击OK,开始上传到svn,完成之后,查看:
DSC00010.png

  五、Jenkins通过svn拉取代码并进行代码构建
  1、首先创建一个项目,这里选择的是第一个类型的,
DSC00011.png

  点击OK之后,会弹出如下界面:
DSC00012.png

  项目名称:自定义,名称最好可以通俗易懂,描述:可写也可不写,代码管理:配置svn的地址以及可以访问svn的用户名和密码,点击Jenkins来添加如下:
DSC00013.png

  点击"Add",然后查看:
DSC00014.png

  保存即可。
  2、构建之前,到Jenkins服务器查看
#cd /root/.jenkins/jobs  
#ll         ##可以看到创建的项目Test_project已经存在了
  
total 12
  
drwxr-xr-x 4 root root 4096 Jun 17 00:06 House_SOA
  
drwxr-xr-x 3 root root 4096 Jun 17 02:18 Test_project
  
drwxr-xr-x 5 root root 4096 Jun 17 00:25 yfykapp
  
# ll Test_project/     ##不过此目录中就只有生成的2个文件,等过会构建之后再查看此目录。
  
total 8
  
drwxr-xr-x 2 root root 4096 Jun 17 02:30 builds
  
-rw-r--r-- 1 root root 1337 Jun 17 02:30 config.xml
  3、开始构建,如下,构建过的项目,前面会显示淡蓝色圆球,和时间,没有构建过的项目是灰色圆球和提示“没有”。
DSC00015.png

  单击“Test_project”,会看到如下页面:
DSC00016.png

  然后点击“立即构建”,会出现一个控制台输出小球;
DSC00017.png

  点击上图红框中的“#1”,会弹出另一个页面,然后点击此页面左侧的“Console Output”查看构建日志,如下:
DSC00018.png

  看到最后的SUCCESS,就表示成功了,然后再到Jenkins目录查看
#/root/.jenkins/jobs  
# ll Test_project/workspace/server/
  
total 8
  
-rw-r--r-- 1 root root 1651 Jun 17 02:39 cat.tar.gz
  
-rw-r--r-- 1 root root   23 Jun 17 02:39 cat.txt
  可以看到刚才我们通过svn上传的2个文件已经在这里了,说明构建成功了。
  六、Jenkins+maven,构建jar格式的代码包
  1、安装maven
  到官网下载:https://maven.apache.org/download.cgi
  本次实验使用的版本是3.3.9
  开始安装:
#tar xf  apache-maven-3.3.9-bin.tar.gz -C /usr/local/  
#cd /usr/local
  
#ln -sv apache-maven-3.3.9 maven
  
设置环境变量
  
#vi /etc/profile   #在末尾添加
  
##maven
  
MAVEN_HOME=/usr/local/maven
  
export MAVEN_HOME
  
export PATH=${PATH}:${MAVEN_HOME}/bin
  
执行source,使设置生效
  
#source /etc/profile
  
查看maven信息
  
#mvn -v
  
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
  
Maven home: /usr/local/maven
  
Java version: 1.8.0_92, vendor: Oracle Corporation
  
Java home: /usr/java/jdk1.8.0_92/jre
  
Default locale: en_US, platform encoding: UTF-8
  
OS name: "linux", version: "2.6.32-504.el6.x86_64", arch: "amd64", family: "unix"
  到这里maven就安装OK了。
  2、然后通过Jenkins构建jar包
  在Jenkins的web界面设置maven,选择左侧的“系统管理”--“Global Tool Configuration”,会看到如下界面:
DSC00019.png

  选择“Maven安装”,配置为如下,然后保存。
DSC00020.png

  然后到具体的某一个项目中配置maven,依yfykapp项目为例子,选择yfykapp项目,然后选择“配置”,拉到“构建”那里,会看到“增加构建步骤”下拉框,如下:
DSC00021.png

  选择“Invoke top-level Maven targets”,并选择“高级”,设置为如下(如果想自定义也可以):
DSC00022.png

  然后“Apply”--“保存”即可。
  注意:如果想在不改变源代码的基础上反复构建,需要修改选项,改为如下:
DSC00023.png

  3、上传代码(代码是从一个朋友哪里copy的)到svn,上传之后,如下:
DSC00024.png

  注:一定要有pom.xml文件,不过一般java的代码开发人员会自己定义这个文件。
  然后开始在Jenkins界面进行构建,这里以yfykapp项目为例子:
  选择“yfykapp”--“立即构建”,就开始了,如果构建不成功,在Build History下面会提示红色小球;构建成功的,会提示淡蓝色小球,点击进去就可以查看构建日志,来排除问题。
DSC00025.png

  选择“#11”--再选择配置下面的“default”--选择左侧的“Console Output”,就会看到控制台输出的本次构建过程的全部信息,这里只贴出一部分信息:
DSC00026.png

  看到如上的信息,表示构建成功了。
  初次配置Jenkins,不足之处请多多指出!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562305-1-1.html 上篇帖子: jenkins 全局安全设置 下篇帖子: Jenkins deploy package remotely onto the JBoss server.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表