程序员

最全3台虚拟机SVN+Jenkins环境搭建

2020-07-13  本文已影响0人  月下饿狼

准备阶段

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.png

3.CI-ApplicationServer 同 2.CI-Jenkins 一样 只需要安装(JDK 、tomcat) (不再累赘复述)

4.基础环境都配置完成 开始配置jenkins

4.png

第一步,jenkins创建任务

7.png

配置源码管理

8.png

3中点进去添加svn用户,密码


9.png

选择一个用户


10.png

构建配置

11.png
12.png

构建后配置

13.png
14.png

构建触发器

就是身份令牌 可以写的长点 复杂点

15.png
JENKINS_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

终于到这一步结束了, 有哪里不懂可以评论回复

上一篇下一篇

猜你喜欢

热点阅读