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

[经验分享] jenkins+svn安装

[复制链接]

尚未签到

发表于 2018-1-8 13:49:14 | 显示全部楼层 |阅读模式
  参考资料:
  http://blog.csdn.net/wuxuehong0306/article/details/50016547
  https://www.ibm.com/developerworks/cn/opensource/os-autotesting-jenkins-testing/
  http://www.imooc.com/article/12626
  http://aoyouzi.iteye.com/blog/2294990
  https://jenkins.io/
  资源包:链接:http://pan.baidu.com/s/1qYibCAS 密码:u4m7
  一. 安装环境
  System: CentOS 6.8x64 (deploy.example.com)
  Jenkins: Jenkins ver. 1.650
  Ansible: Ansible 2.1.0
  Gitlab: GitLab 7.14.3
  Svn安装
[iyunv@bogon ~]# yum install subversion (SVN服务器)

  mysql-server (用于codestriker)
  httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)
  sendmail (用于配置用户提交代码后发邮件提醒)
  wget gcc-c++ make unzip perl* (必备软件包)
  ntsysv vim-enhanced (可选)
  基本的SVN服务器配置
  新建一个目录用于存储SVN所有文件
  # mkdir /mnt/svn
  新建一个版本仓库
  #svnadmin create /mnt/svn/project

  在conf目录下的文件的意义

  authz文件是权限控制文件
  passwd是帐号密码文件
  svnserve.conf SVN服务配置文件
  (1)svnserve.conf:  svn服务配置文件。
  其中关于svnserve.conf的文件配置项分为以下5项 而且这写是需要打开的,详细解释如下
  anon-access = read #匿名用户可读
  auth-access = write #授权用户可写
  password-db = passwd #使用哪个文件作为账号文件
  authz-db = authz #使用哪个文件作为权限文件
  realm = /var/svn/svnrepos # 认证空间名,版本库所在目录建议使用相同的用户名口令数据文件
  下面是本机配置
[iyunv@bogon conf]# cat svnserve.conf | grep -v '^#' | grep -v '^$'

[general]

  anon-access = none
  auth-access = write
  password-db = /mnt/svn/project/conf/passwd
  authz-db = /mnt/svn/project/conf/authz
  realm = /mnt/svn/project

  (2)passwd: 用户名口令文件
  在[users]块中添加用户和密码,格式:帐号=密码,如quwenzhe=123456
  在svnserve.conf文件里启用这个文件。然后配置如下:
[iyunv@bogon conf]# cat passwd | grep -v '^#' | grep -v '^$'

[users]

  text=123456
  pm=123456
  server_group=123456
  client_group=123456
  text_group=123456

  (3)authz: 权限配置文件
[iyunv@bogon conf]# cat authz | grep -v '^#' | grep -v '^$'

[aliases]

[groups]

  project_p=pm,text
  project_s=server_group
  project_c=client_group
  project_t=test_group
[project:/]

  @project_p=rw
  * =
[project:/server]

  @project_p=rw
  @project_s=rw
  * =

  启动svn
[iyunv@bogon conf]# svnserve -d -r /mnt/svn


  完成后测试svn是否正常
  Linux端测试
  #检测版本库
  svn checkout  svn://172.16.110.233/project/  --username=text --password=123456
  #删掉不要的版本svn cl --remove  文件名
[iyunv@bogon db]# svn --username=pm co svn://172.16.110.233/project


  Win端测试


  回到svn可以看到

  Linux客户端(清除本地缓存)
  方法一:
  linux下删除~/.subversion/auth即可清除之前的用户名和密码:rm -rf ~/.subversion/auth
  以后再操作svn会提示你输入用户名,这时就可以使用新的了
  方法二:
  svn操作时带上–username参数,比如svn –username=smile co svn_path local_path
  建立Jenkins到svn的账号
  账户:   svn
  密码:  qpmall2017

  完成以上操作后,安装web工具支持apache和nginx都可以,为了方便,我们直接
  yum -y install http*
  完成后我们需要对配置文件进行修改
  如果有subversion.conf 这个文件就最好,没有的话,自己创建

[iyunv@bogon conf.d]# vim subversion.conf

  <Location /svn>
  DAV svn
  SVNListParentPath on
  SVNParentPath /mnt/svn                    #svn的根目录
  AuthType Basic                            #Basic认证方式
  AuthName "Authorization"                  #认证时显示的信息
  AuthUserFile /mnt/svn/project/conf/passwd    #用户文件
  AuthzSVNAccessFile /mnt/svn/project/conf/authz    #访问权限控制文件
  Require valid-user                             #要求真实用户,不能匿名
  </Location>
  然后看看apache是否支持svn模块

  最后看看apache默认的端口,可以直接使用80,也可以修改默认端口,为了避免冲突,我做了修改
  #vim /etc/httpd/conf

  以上做完后,我们可以启动服务看下效果了

  尽管svn在之前的测试时是好的,但是和apache服务搭配后,无限循环在下面的页面,直到报错,所有的svn用户都进不去(svn的conf文件中的passwd记录的用户)

  经过排查,发现是apache的自动模块的用户没有加入到svn的passwd文件中

  这个文件在svn服务创建的时候自带的,所以我们需要在这个文件中加入相关的用户和密码
  所以我们在svn的conf目录下
  执行#htpasswd -c passwd svn
  输入密码123456
  ——————————
  备注htpasswd -c passwd username  增加用户
  只有第一个用户加-c,其余用户不用-c
  htpasswd -D passwd username   删除用户
  htpasswd -m passwd username   修改密码
  加[user]非常重要,因为用htpasswd的方式加用户会负载掉[users],所以每次加完用户,都需要补一下该节点, 如下图:

  ————————————————

  此时svn用户已经备加入用户组了,我们重新启动服务
[iyunv@bogon ~]# service httpd restart

[iyunv@bogon ~]# svnserve -d -r /mnt/svn

  虽然安全进入,但是此时又报错了

  看提示是因为没有权限被拒绝了,所以我们需要给这个svn用户一个权限,此时就需要修改
  /mnt/svn/project/conf/authz文件中的权限了,修改完成后如下:

  完成后我们重新启动服务后,效果如下

  此时说明我们成功的建立了svn和apache服务的联系
  三. Jenkins配置
  #  wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  # rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  # yum  -y  install jenkins
  #vim /etc/sysconfig/jenkins
[iyunv@bogon ~]# cat /etc/sysconfig/jenkins | grep -v '^#'| grep -v '^$'

  JENKINS_HOME="/home/qpmall/jenkins"
  JENKINS_JAVA_CMD=""
  JENKINS_USER="root"
  JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
  JENKINS_PORT="8080"
  JENKINS_LISTEN_ADDRESS=""
  JENKINS_HTTPS_PORT=""
  JENKINS_HTTPS_KEYSTORE=""
  JENKINS_HTTPS_KEYSTORE_PASSWORD=""
  JENKINS_HTTPS_LISTEN_ADDRESS=""
  JENKINS_DEBUG_LEVEL="5"
  JENKINS_ENABLE_ACCESS_LOG="no"
  JENKINS_HANDLER_MAX="100"
  JENKINS_HANDLER_IDLE="20"
  JENKINS_ARGS=""
  登录网页(http://IP:8080),出现如下界面

  按照提示打开密码文件

  在登陆页中的password处输入7df23528ef4b42e685718c5fd645d9f3
  后出现

  我们为了偷懒选择安装所有

  完成后界面

  这里有2个选择,一个是用原先他给你的那个用户名和密码(点击左下方as admin),一个是建立自己的,我们这里自己创建一个
  用户名:qpmall
  密  码:qpmall123
  电子邮件:qpmall@qpmall.com
  完成后点击Save and finsh
  此时会提示你完成

  完成后的界面,如下,中文的,开心吗,O(∩_∩)O哈哈~

  现在开始安装自动化需要的插件Publish Over和SVN Publisher
  过程如下




  在这个页面进行配置的修改,程序的设定和维护
  现在要保证jenkins和引用服务器的联通性
  在Jenkins服务器中做如下操作
[iyunv@bogon ~]# ssh-keygen -t rsa

  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa):
  Created directory '/root/.ssh'.
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  30:95:9a:43:ed:4e:a3:ad:0a:b7:72:e2:8e:74:66:77 root@bogon
  The key's randomart image is:
  +--[ RSA 2048]----+
  |       ...       |
  |      ..o        |
  |     .o+         |
  |      +o+        |
  |       *S.       |
  |      . o        |
  | ..+.. E         |
  |..*oo.o          |
  |.oo+o.           |
  +-----------------+
  完成后有以下文件

  在jenkinsfs服务器的家目录~/.ssh/下会有私钥id_rsa和公钥id_rsa.pub
  在应用服务器上创建~/.ssh文件夹和~/.ssh/authorized_keys文件,并将jenkins服务器的公钥id_rsa.pub中的内容复制到authorized_keys文件
  应用服务器上重启ssh服务,service sshd restart
  现在jenkins服务器可免密码直接登陆应用服务器,如下图


  Passphrase:密码(key的密码,如果你设置了)
  Path to key:key文件(私钥)的路径
  SSH Server Name:标识的名字(随便你取什么)
  Hostname:需要连接ssh的主机名或ip地址,此处填写应用服务器IP(建议ip)
  Username:用户名
  Remote Directory:远程目录(根据需要填写文件传到此目录下)
  “Use password authentication, or use a different key”:使用密码验证(这里使用了密钥认证所以不开启)
  配置完成后可点击“Test Configuration”测试到目标主机的连接,出现”success“则成功连接


  如果有多台应用服务器,可以点击”增加“,配置多个“SSH Servers”
  点击“保存”以保存配置
  系统配置好ssh连接后,到项目配置中配置构建后发布的步骤
  点击(项目名“fin_test1”–>左侧菜单的“配置”)来更改项目的配置
  在配置最后找到“增加构建后操作步骤”,选择"Send build artifacts over SSH"

  可以选择git或者svn仓库,但是我们用svn


  ——————————————————————
  PS:这里介绍下如何添加Credentials
  在 jenkins 上设置 Credentials,然后再新建job的时候使用设置的 Credentials 即可
  在jenkins界面,依次点击: Credentials -> System -> Add domain:
  Domain Name: 填写你git服务器的地址,如 github.xxx.com
  Description: 随便写一点描述,如 This is the Credential for github

  点击 ok 后,在点击 “adding some credentials?”
  进入页面后,可以选择 Username with password 或者 SSH Username with private key, 根据你的情况选择,这里我们选择 Username with private key:
  Username: 随便起一个名字,以便在创建 Job 的时候使用该 Credential
  Private Key:可以指定文件,也可以使用默认的 ~/.ssh,当然也可以直接将私钥复制粘贴到此处。
  Passphrase: 如果你在创建 ssh key 的时候输入了 Passphrase 那就填写相应的Passphrase,为空就不填写
  ID: 空
  Description: 空

  点击 ok 后 Credential 就创建好了。
  如果你再新建 Job 就可以看到我们的 Credential 选项了:

  ——————————————————————————————————



  然后保存,执行。
  现在一套自动跟新系统完成了,如果是代码上线,这个很合适。
  如果是java上线的话,这个架构需要在优化一下,比如比对文件和重启tomcat

  关于Jenkins的自动打包(这个是自动化部署的前提)
  当你建立好一个job后,会有一个工作空间,如下图


  这个pom.xml文件很重要,关系到maven是否打包成功,记得问开发要,理论上开发给你的是正确版的(他们自己打包测试过),里面会有各种聚会和私服地址,还有模块等内容

  要告诉Jenkins把pom.xml放到这里,否则会在job里面提示找不到相关文件(这里可以自动放,也可以手动放,看需要)
  文件内容大致如下


  在你的job里面选择如下

  然后在命令栏中输入你想要的操作

  如果不想使用shell,也可以用别的比如ant等
  这里我用的shell命令和脚本来完成包java包的备份和部署

  完成后可以执行job了




  此版本是测试环境,还有需要完善的地方,等正式线上没有问题后,会再次更新本文档

运维网声明 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-432935-1-1.html 上篇帖子: 通过实例介绍持续集成的应用 下篇帖子: 尘埃轻舞的测试生活
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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