ningleesherry 发表于 2018-9-4 11:38:05

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(一)(网内首发超详细版)

  目录结构如下:
  目录
  1说明及环境介绍3
  1.1说明3
  1.2环境准备及格式约定4
  2 Linux下apache搭建svn服务器4
  2.1 apache安装部署4
  2.2 svn安装部署5
  2.3整合svn和apache6
  2.4 ssl方式部署apache7
  2.4.1安装apache7
  2.4.2安装svn7
  2.4.2 部署认证8
  3 Linux下svn独立服务器方式部署9
  3.1安装SVN9
  3.2 配置环境10
  3.3 权限配置样例11
  3.4 启动SVN服务器12
  3.5 访问方式12
  3.6 开启防火墙SVN端口12
  4 yum方式快速部署apache和svn13
  5 Jenkins部署方法13
  5.1 Jenkins部署方法一13
  5.2 Jenkins部署方法二14
  6安装maven15
  7 java环境自动构建部署16
  7.1 新建job16
  7.2利用maven命令创建web项目16
  8 Subversion FAQ19
  8.1 官方FAQ网址19
  8.2 svn遇到错误总结19
  8.2.1 svn不显示日志19
  8.2.2 版本冲突问题19
  8.2.3 svnadmin报错19
  9 apache FAQ20

  9.1 Could not>  9.2 svn客户端提交文件失败20
  9.3无法访问版本库40320
1说明及环境介绍
1.1说明
  以下将采用apache+svn+Jenkins+maven部署一套易于java环境快速开发的版本控制及自动构建系统。以2者相结合的方式进行快速开发。
  在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:
  WebDAV
  基于Apache配置的Subversion服务器使用了被许多其它程序支持的WebDAV协议。举个例子,你可以在Windows的资源管理器中将这样的一个版本库挂载成一个“Webfolder”,然后像文件系统中的其它文件夹一样访问它。
  浏览版本库
  你可以在不安装Subversion客户端的情况下,使用浏览器来浏览版本库中的内容。这将使得更大范围的用户可以访问你的数据。
  用户验证
  你可以使用任何Apache支持的验证机制,包括SSPI和LDAP。
  安全
  Apache是非常的稳定和安全,因此你的版本库自然而然地拥有同样的安全性。包括SSL加密。
  Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能
  Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:
  1)持续的软件版本发布/测试项目。
  2)监控外部调用执行的工作。
  Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用
  Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制 项目。
  绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant的项目管理工具(作为 make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它信息(如开发人员/拥有者、版本或站点主页)。
  Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
1.2环境准备及格式约定
  系统:centos5.9 x64
  Apache+svn:192.168.1.19
  Jenkins+maven:192.168.1.20
  下载所需软件
  apache下载地址:http://www.apache.org/
  wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
  wget http://labs.mop.com/apache-mirror/subversion/subversion-1.7.8.tar.gz
  wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz
  wget http://archive.apache.org/dist/apr/apr-1.4.6.tar.gz
  wget http://www.sqlite.org/sqlite-amalgamation-3071502.zip
  环境清理
  系统在默认情况下,是已经有apr-util及apr这两个包的,只不过他们的版本较低,只支持subversion 1.4
  因此,具体可以看看:
  yum -y remove subversion或者yum erase subversion
  查看默认安装
  # rpm -qa | grep apr
  而subversion要求较高的版本,为此,我们需要删除系统自带的apr,apr-util这两个包!强行删掉!
  # rpm -e --allmatches apr-util
  # rpm -e --allmatches apr-util --nodeps
  # rpm -e --allmatches apr --nodeps
  默认安装svn-1.61版本
  rm -rf /usr/bin/svn* (不删除环境变量不生效)
  格式约定
  一级标题:黑体四号
  二级标题:黑体四号
  三级标题:黑体小四
  正文:5号楷体
  注释及注意:深红5号楷体
2 Linux下apache搭建svn服务器
2.1 apache安装部署
  安装openssl(非必须,可以使用默认openssl)
  wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
  tar zxvf openssl-1.0.1g.tar.gz
  cd openssl-1.0.0g
  make && make install
  cp /usr/local/ssl/bin/openssl /usr/bin/          #覆盖系统默认的openssl命令
  openssl version                      #查看openssl版本
  安装apache
  tar -xzvf httpd-2.2.19.tar.gz
  cd httpd-2.2.19
  ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-mods-shared=all
  make && make install
2.2 svn安装部署
  安装svn相关软件包
  tar -xzvf apr-1.4.6.tar.gz
  cd apr-1.4.6
  ./configure --prefix=/usr/local/apr
  make && make install
  tar -xzvfapr-util-1.5.1.tar.gz
  cd apr-util-1.5.1
  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  make && make install
  echo "/usr/local/apr/lib/" >> /etc/ld.so.conf
  ldconfig
  tar -xzvf neon-0.29.6.tar.gz
  cd neon-0.29.6
  ./configure --prefix=/usr/local/neon
  make && make install
  echo "/usr/local/neon/lib" >> /etc/ld.so.conf
  ldconfig
  unzip sqlite-amalgamation-3071502.zip
  tar -xzvf subversion-1.7.8.tar.gz
  mv sqlite-amalgamation-3071502 ./subversion-1.7.8/sqlite-amalgamation
  cd subversion-1.7.8
  ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db --with-ssl
  make && make install
  验证svn安装是否成功,如果报错请看错误章节
  /usr/local/svn/bin/svnserve --version
  添加svn用户
  groupadd svn
  useradd -g svn -s /sbin/nologin svn
  添加SVN版本库目录,并赋予SVN用户权限
  mkdir -p /data/svndata
  chown -R svn.svn /data/svndata
  创建版本库
  /usr/local/svn/bin/svnadmin create/data/svndata/fengwang
  注:svn默认数据存储类型为--fs-type fsfs 可以自己选择,建议用默认方式。
  详见:http://www.blogjava.net/jasmine214--love/archive/2011/01/18/343160.html
  添加svn用户
  /usr/local/apache2/bin/htpasswd -bc /usr/local/svn/conf/svnusers.conf svntest 123456
  添加svn认证文件
  cat >> /usr/local/svn/conf/authz.conf
页: [1]
查看完整版本: 利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(一)(网内首发超详细版)