最全3台虚拟机SVN+Jenkins环境搭建
准备阶段
1.apache-tomcat-7.0.75.tar.gz
2.jdk-8u121-linux-x64.tar.gz
3.apache-maven-3.6.3-bin.tar.gz
4.jenkins.war
网盘地址:链接:https://pan.baidu.com/s/1hmV0YgR_m4OphjE9XtWMcA
提取码:ayzo
创建3个虚拟机
1.CI-Subversion 部署svn
2.CI-Jenkins 部署Jenkins(需要JDK tomcat maven)
3.CI-ApplicationServer 部署应用(需要JDK tomcat环境)
虚拟机我是用VirtualBox创建的,个人感觉很方便,轻巧
1.CI-Subversion
第一步:通过yum命令安装svnserve,命令如下:
yum -y install subversion
第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)
mkdir /svn/svnrepos
第三步:创建svn版本库
在第二步建立的路径基础上,创建版本库,命令如下
svnadmin create /svn/svnrepos/demo
创建成功后,进入xxxx目录下
cd /svn/svnrepos/demo
进入目录,可以看见如下文件信息:
[root@CI-node1 demo]# ll
total 8
drwxr-xr-x. 2 root root 54 Jul 13 02:31 conf
drwxr-sr-x. 6 root root 253 Jul 14 00:12 db
-r--r--r--. 1 root root 2 Jul 13 02:17 format
drwxr-xr-x. 2 root root 250 Jul 13 15:59 hooks
drwxr-xr-x. 2 root root 41 Jul 13 02:17 locks
-rw-r--r--. 1 root root 229 Jul 13 02:17 README.txt
下面是这些目录的详细讲解
目录文件夹详解.jpg
第四步:配置修改
进入已经创建好的版本库目录下,也就是前文说创建的demo,进入conf
[root@CI-node1 conf]# ll
total 12
-rw-r--r--. 1 root root 1095 Jul 13 02:19 authz
-rw-r--r--. 1 root root 327 Jul 13 02:20 passwd
-rw-r--r--. 1 root root 3074 Jul 13 02:31 svnserve.conf
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
1.编辑 authz 文件(注意:[/]也是必须的)
1.png[/] 表示根目录,即 /svn/svnrepos
fancl = rw 表示用户fancl对根目录具有读写权限。
2.编辑 passwd 文件
2.png如上所示,用户名为:fancl,认证密码为:123456
3.编辑 svnserve.conf 文件(注意:配置的前面不能有空格,一定要顶格写)
3.png
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /var/svnrepos:指定认证域,即 /svn/svnrepos 目录
第五步:防火墙开启(这里以iptable防火墻为例, 注意:如果防火墙关闭 就无需这一步设置)
多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题【注意:如果是阿里云,腾讯云的服务器,还需在安全组添加端口开启规则】
vi /etc/sysconfig/iptables
添加配置信息
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
保存退出
systemctl restart iptables.service #重启防火墙使配置生效
第六步 启动svn服务器(重启虚拟机 需要重新启动svn服务)
svnserve -d -r /svn/svnrepos
启动成功后,可用ps -aux查看服务启动是否成功
ps -ef | grep 'svnserve'
[root@CI-node1 conf]# ps -ef | grep 'svnserve'
root 1002 1 0 Jul13 ? 00:00:00 svnserve -d -r /svn/svnrepos
root 1376 975 0 00:37 pts/0 00:00:00 grep --color=auto svnserve
[root@CI-node1 conf]#
七:客户端访问svn服务器
在windows客户端,输入地址:svn://ip地址:3690/xxxx (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)
弹出输入用户名和密码,输入即可访问
2.CI-Jenkins
软件安装目录
JDK:/jdk/jdk1.8.0_121
maven:/mvn/apache-maven-3.6.3
tomcat:/usr/local/tomcat/apache-tomcat-7.0.75
修改 /etc/profile 配置
export JAVA_HOME=/jdk/jdk1.8.0_121
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-7.0.75
export MAVEN_HOME=/mvn/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
修改完运行下面命令
source /etc/profile ##重启配置
安装tomcate
tomcat-user.xml 配置
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
配置编码 添加 URIEncoding="UTF-8"
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
把jenkins.war 包放到tomcat的webapps目录下
然后启动成功 : ./startup.sh
[root@CI-node3 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-7.0.75
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-7.0.75
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-7.0.75/temp
Using JRE_HOME: /jdk/jdk1.8.0_121
Using CLASSPATH: /usr/local/tomcat/apache-tomcat-7.0.75/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.75/bin/tomcat-juli.jar
Tomcat started.
[root@CI-node3 bin]#
登录Jenkins 地址:http://192.168.56.201:8080/jenkins/
秘钥地址:vi /root/.jenkins/secrets/initialAdminPassword
需要添加两个插件
1.Subversion Plug-in #svn插件,可以获取到项目代码
2.Deploy to container Plugin ##maven打包后部署到其他服务器tomcat中
Jenkins修改显示语言为中文(可以参考这里)
修改 jenkins配置
5.png别名一定要取 后面会用到(供选择 下拉框)
maven中setting配置 自己要修改好
比如:本地仓库文件夹创建配置 (/maven_repository)
阿里云加速下载(如下面配置)
<localRepository>/maven_repository</localRepository>
##
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
##
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
另外一个jenkins配置
6.png3.CI-ApplicationServer 同 2.CI-Jenkins 一样 只需要安装(JDK 、tomcat) (不再累赘复述)
4.基础环境都配置完成 开始配置jenkins
4.png第一步,jenkins创建任务
7.png配置源码管理
8.png3中点进去添加svn用户,密码
9.png
选择一个用户
10.png
构建配置
11.png12.png
构建后配置
13.png14.png
构建触发器
就是身份令牌 可以写的长点 复杂点
15.pngJENKINS_URL=http://192.168.56.201:8080/jenkins
/job/demo/build?token= #除了demo是任务名称外 其他是一样的
fcl_demo #就是身份令牌 可以写的长点 复杂点
组合起来就是【http: //192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo】
最后一步,就是在svn服务器上配置钩子程序
进入到svn中demo的目录下
[root@CI-node1 demo]# ll
total 8
drwxr-xr-x. 2 root root 54 Jul 14 00:31 conf
drwxr-sr-x. 6 root root 253 Jul 14 00:12 db
-r--r--r--. 1 root root 2 Jul 13 02:17 format
drwxr-xr-x. 2 root root 250 Jul 14 01:40 hooks
drwxr-xr-x. 2 root root 41 Jul 13 02:17 locks
-rw-r--r--. 1 root root 229 Jul 13 02:17 README.txt
[root@CI-node1 demo]#
进入hooks目录下
[root@CI-node1 hooks]# ll
total 40
-rwxr-xr-x. 1 root root 2107 Jul 13 15:59 post-commit
-rw-r--r--. 1 root root 1977 Jul 13 02:17 post-commit.tmpl
-rw-r--r--. 1 root root 1638 Jul 13 02:17 post-lock.tmpl
-rw-r--r--. 1 root root 2289 Jul 13 02:17 post-revprop-change.tmpl
-rw-r--r--. 1 root root 1567 Jul 13 02:17 post-unlock.tmpl
-rw-r--r--. 1 root root 3426 Jul 13 02:17 pre-commit.tmpl
-rw-r--r--. 1 root root 2434 Jul 13 02:17 pre-lock.tmpl
-rw-r--r--. 1 root root 2786 Jul 13 02:17 pre-revprop-change.tmpl
-rw-r--r--. 1 root root 2122 Jul 13 02:17 pre-unlock.tmpl
-rw-r--r--. 1 root root 2780 Jul 13 02:17 start-commit.tmpl
[root@CI-node1 hooks]#
复制一份post-commit.tmpl
cp post-commit.tmpl post-commit ##注意复制的那份没有任何后缀 post-commit
修改post-commit内容
#别的东西注释掉
# REPOS="$1"
# REV="$2"
#别的东西注释掉
# mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
#curl的命令 如果你虚拟机没有 自己安装个curl
curl -X post -v -u admin:e10a2382a7f84ece8428f5e6cb5a4f92 http://192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo
注意:#curl的命令 如果你虚拟机没有 自己安装个curl
admin:e10a2382a7f84ece8428f5e6cb5a4f92 这个是jenkins的账号密码
http ://192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo 这个就是jenkins任务中配置的触发器
使用chmod 命令修改成可运行程序
chmod 755 post-commit
补充
如果发生 Jenkins 服务器从 SVN 服务器下载代码不是最新版的情况,那么就在 SVN服务器的 URL 地址后面加上@HEAD 强制要求下载最新版
16.png