前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SVN 以及自动部署配置 原

SVN 以及自动部署配置 原

作者头像
用户2836074
发布于 2018-08-15 02:01:42
发布于 2018-08-15 02:01:42
84000
代码可运行
举报
文章被收录于专栏:清风清风
运行总次数:0
代码可运行

1.配置权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost conf]# cat authz 

[groups]
g_manager = user1,user2
g_developer = user2

[repo:/]
@g_manager = rw
* =

[repo:/inspur]
@g_manager = rw
@g_developer = rw
* =

[root@localhost conf]# cat passwd 
[users]
user1=123456
user2=123456
[root@localhost conf]# 

[root@localhost conf]# cat svnserve.conf 
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access = none
#认证用户的权限,可以是read,write,none,默认为write
auth-access = write
#密码数据库的路径,去掉前面的#
password-db = passwd
authz-db = authz

2.启动命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost conf]# /usr/bin/svnserve -d -r /home/logonuser/svn --listen-port 7001 &

3.ANT自动部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost hooks]# cat build.xml
<?xml version="1.0"?>
<!-- 从svn更新源代码,并重新编译、打包、部署 -->
<project name="auto-deploy" basedir="/home/logonuser/www/guangjie" default="redeploy">

        <!-- 定义存放检出代码的目录 -->
        <property name="project_dir" value="/home/logonuser/www/guangjie"/>
        <!-- 指明jetty的目录 -->
        <property name="jetty_home" value="/home/logonuser/jetty/bin"/>
        <!--在ant中添加property,使用eclipse jdt compiler编译-->
        <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>

        <!-- 当前时间及格式 -->
        <tstamp>
                <format property="current_time" pattern="yyyyMMddhhmm" locale="zh"/>
        </tstamp>

        <!-- 项目的classpath路径 -->
        <path id="project_classpath">
                <fileset dir="${project_dir}/WebRoot/WEB-INF/lib/"> 
                        <include name="*.jar"/>
                </fileset>
        </path> 

                <!-- 清除旧的编译文件 -->
        <target name="clean-class">
        <echo message="开始清空classes文件夹内之前编译生成的旧的类文件,请稍后..." />
                <delete dir="${project_dir}/WebRoot/WEB-INF/classes"/>
                <mkdir dir="${project_dir}/WebRoot/WEB-INF/classes"/>
                <echo message="classes文件清空完毕。" />

        </target>

        <!-- 编译源代码 -->
        <target name="compile-ext" depends="clean-class">
                <echo message="开始编译源文件,请稍后..." /> 
                <javac nowarn="true" destdir="${project_dir}/WebRoot/WEB-INF/classes" source="1.6" target="1.6" 
                                debug="true" debuglevel="lines, vars, source">  
                        <src path="${project_dir}/jfinal.ext"/>
                        <classpath refid="project_classpath"/>
                </javac>  
        </target> 
        <target name="compile" depends="compile-ext">
                <echo message="开始编译源文件,请稍后..." /> 
                <javac nowarn="true" destdir="${project_dir}/WebRoot/WEB-INF/classes" source="1.6" target="1.6" 
                                debug="true" debuglevel="lines, vars, source"> 
                        <src path="${project_dir}/src"/>
                        <classpath refid="project_classpath"/>
                </javac>  
        </target> 

        <!-- 复制配置文件 -->
        <target name="copy-config-files" depends="compile">
                <copy todir="${project_dir}/WebRoot/WEB-INF/classes/">  
                        <fileset dir="${project_dir}/cfg/"/>
                </copy>
        </target> 

        <!-- 部署,主要是执行依赖任务 -->  
  <target name="redeploy" depends="copy-config-files">  
      <echo>部署完毕,请测试是否部署成功。</echo>  
  </target>

</project>

[root@localhost hooks]# cat post-commit
#!/bin/sh   
export LANG=zh_CN.UTF-8 

JAVA_HOME=/usr/java/jdk1.6.0_32
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
CLASSPATH=./home/logonuser/svn/repo/hooks/jar/1.jar:/home/logonuser/svn/repo/hooks/jar/2.jar:/home/logonuser/svn/repo/hooks/jar/3.jar:/home/logonuser/svn/repo/hooks/jar/4.jar:/home/logonuser/svn/repo/hooks/jar/5.jar:/home/logonuser/svn/repo/hooks/jar/6.jar:$CLASSPATH
#1-6.jar下载链接: https://pan.baidu.com/s/1o8MuzLS 密码: xf6t
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JAVA_BIN PATH CLASSPATH
    
REPOS="$1"                                       # 仓库的路径   
REV="$2"                                         # 新提交的版本号   
LOGFILE=/home/logonuser/autosvn.log              # 钩子脚本的日志   
# 脚本的标准输出和标准错误输出都打印到日志文件里   
exec 1>>"$LOGFILE" 
exec 2>&1   

SVN=/usr/bin/svn  
SVNLOOK=/usr/bin/svnlook  
TIME=$(date "+%Y-%m-%d %H:%M:%S")   
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")      #提交作者   
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)     #修改的目录集合   
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")        #提交时的备注信息,不建议用中文   
    
# SVN客户端配置 ***********************************************       
CLIENTSVNROOT=/home/logonuser/www               #WEB服务器的代码根目录   
SVNUSER="xxx" 
SVNPASSWD="xxx" 
#**************************************************************   
    
function myecho() {   
    echo "$TIME" "$*" 
}   
    
myecho "**************************************************************" 
myecho "提交版本:$REV 作者:$AUTHOR" 
myecho "提交备注:$MESSAGE" 
myecho "修改目录:$(echo $CHANGEDDIRS | tr '\n' ' ')" 
    
Content=$(echo $CHANGEDDIRS | tr '\n' ' ')
MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)  #CHANGEDDIRS里的主目录   
# 遍历提交的代码目录,同步到WEB服务器上   
while [ "$CHANGEDDIRS" != "" ];do
                myecho   
                myecho "同步目录:$MASTERDIR" 
                myecho "同步 $MASTERDIR 到 $CLIENTSVNROOT/$MASTERDIR"
                ${SVN} update --no-auth-cache --username $SVNUSER --password $SVNPASSWD $CLIENTSVNROOT/$MASTERDIR
    # 在目录集合里删除已经同步好的目录   
    CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "^$MASTERDIR")   
    # 获取新的需要同步的主目录   
    MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)   
done
if [[ $Content =~ "src" ]]
then
        /home/logonuser/jetty.test/bin/jetty.sh stop
        ant -f /home/logonuser/svn/repo/hooks/build.xml
        chown -R logonuser:logonuser /home/logonuser/www/guangjie/WebRoot/WEB-INF/classes
        /home/logonuser/jetty.test/bin/jetty.sh restart
else
        echo "不包含src文件,不需要重启服务器"
fi

if [[ $MESSAGE =~ "none" ]]
then
        echo "包含none,不需要发送通知"
else
        /usr/bin/mutt -s "作者 $AUTHOR 部署了新代码,提交版本 $REV,提交备注 $MESSAGE" xxx@139.com
fi
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/09/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java: ant 脚本示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!--basedir是从build.xml所在的目录为基础算起的--> 4 <project nam
菩提树下的杨过
2018/01/24
8690
Tomcat 自动部署、回滚(java project)脚本
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53770801
shaonbean
2019/05/26
7420
编译Hadoop 1.2.1 Hadoop-eclipse-plugin插件
个人理解,ant的初衷是打造一个本地化工具,而编译hadoop插件的资源间的依赖超出了这一目标。导致我们在使用ant编译的时候需要手工去修改配置。那么自然少不了设置环境变量、设置classpath、添加依赖、设置主函数、javac、jar清单文件编写、验证、部署等步骤。
星哥玩云
2022/06/29
4180
编译Hadoop 1.2.1 Hadoop-eclipse-plugin插件
Linux(CentOS)下完美部署Solr 搜索引擎
首先将软件包上传到/tmp目录下 1、  jdk安装 [root@svn-server /]# cd /tmp/              [root@svn-server /]#tar zxvf  jdk-7u9-linux-x64.tar.gz [root@svn-server /]#mv  jdk1.7.0_09 /usr/ [root@svn-server /]#vi  /etc/profile 在最后一行复制以下代码添加如下内容: Java_HOME=/usr/jdk1.7.0_09/ CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH 保存退出(:wq!)后,执行下面命令生效: source /etc/profile
星哥玩云
2022/06/30
4410
Linux(CentOS)下完美部署Solr 搜索引擎
JAVAWEB项目自动打包部署脚本(SVN+ANT)
acts_meeting_build.xml 脚本: <?xml version="1.0" encoding="utf-8"?> <project name="acts_meeting" base
小柒2012
2018/04/13
2.2K0
web项目ant打包完整案例
前两周做的web项目要部署到服务器上去,为了后续升级部署方便,决定采用Ant进行(开发用的myeclipse 8.5),ant打包测试也是在myeclipse上进行,build.xml测试完成后地通过
小小科
2018/05/02
2K0
web项目ant打包完整案例
ant命令征集详解
ANT的命令到此结束。他们的依赖关系,大家细细琢磨。本人目前已经不使用ANT脚本很久了。目前使用的maven,maven比ANT好多了,具体好在哪里大家可以到网上搜一搜。等以后有时间了给大家贡献maven的讲解。请大家多多关注本人的博客!!
业余草
2019/01/21
6930
ant命令征集详解
Tomcat中JSP预编译处理Jasper 2 JSP Engine
The Apache Jakarta Tomcat 5.5 Servlet/JSP Container Jasper 2 JSP Engine How To
阿敏总司令
2019/02/28
2.6K0
Ant_build.xml的最完整解释
Ant的概念 Make命令是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计。 Ant 与 makefile Makefile有一些不足之处,比如很多人都会碰到的烦人的Tab问题。最初的Ant开发者多次强调”只是我在Tab前面加了一个空格,所以我的命令就不能执行”。有一些工具在一定程度上解决了这个问题,但还是有很多其他的问题。An
流柯
2018/08/30
1.5K0
CentOS7安装配置SVN及SVN Hook实战
一、概述 1、何为svn? Apache Subversion(简称SVN,svn),一个开放源代码的版本控制系统;用来管理文档,程序代码等文档的版本;svn相对git来说有点古老,是一个中心控制的版
星哥玩云
2022/07/13
1.1K0
CentOS7安装配置SVN及SVN Hook实战
实现自动化构建与集成:Jenkins与SVN整合的指南
进入Jenkins插件管理,Available选项,搜索Strict Crumb插件安装Strict Crumb Issuer插件,然后进入jenkins->系统设置->全局安全设置->跨站请求伪造保护,把下拉选项改成Strict Crumb Issue,点开右下高级设置,去除掉Check the session ID选项选中,当然我这样设置了貌似没有生效。
小尘要自信
2023/11/05
1.4K0
实现自动化构建与集成:Jenkins与SVN整合的指南
Ant下载安装及使用详解
Apache Ant 是由 Java 语言开发的工具,由 Apache 软件基金会所提供。Apache Ant 的配置文件写成 XML 容易维护和书写,而且结构很清晰。
JavaEdge
2020/05/27
3.2K0
Ant下载安装及使用详解
分享一例脚本发版和tomcat重启脚本
线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat。 tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下载到本地,首次下载后,后续就使用svn update更新代码即可。 发版脚本: [root@redmine ~]# cd /Data/webroot_svncode/xqsj_app/banshanbandao/bsbd_war/ [root@redmine bsbd_war]# ls ROOT.war
洗尽了浮华
2018/01/23
6180
利用SVN的POST-COMMIT钩子自动部署代码
最近配置了一台SVN服务器,用来保存自己一些小项目的代码。同时,SVN服务器也是一台前端的Web。所以希望利用SVN的POST-COMMIT钩子HOOKS,在提交代码的同时进行部署。
大江小浪
2018/07/25
1.2K0
Ant + Jenkies +Tomcat 自动构建部署Web项目
前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给大家。如果有哪些说的不对的地方,还请大家不吝赐教。 1、工具版本 Ant:apache-ant-1.9.1 Jenkies:jenkins-2.46.3 Tomcat:apache-tomcat-8.0.43 系统:window7 开发工具:IDEA 2、Web项目     简述:这里只是在本地简单的
JMCui
2018/03/15
1.3K0
Ant + Jenkies +Tomcat 自动构建部署Web项目
Ant是什么?「建议收藏」
Ant是Java的生成工具,是Apache的核心项目; Ant类似于Unix中的Make工具,都是用来编译、生成; Ant是跨平台的,而Make不能; Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目。 下载地址:http://ant.apache.org/bindownload.cgi
全栈程序员站长
2022/09/18
1.8K0
Ant是什么?「建议收藏」
ANT标签详解
1、<project>标签 每个构建文件对应一个项目,project标签是构建文件的跟标签,它可以有多个内在属性,各个属性的含义分别如下所示: default表示默认的执行目标,这个属性是必须的。 basedir表示项目的基准路径,这个属性是必须的。 name表示项目名称。 description表示项目的描述(或者是对这个标签的作用进行表述)。 每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有自己的构建文件。
用户4522413
2021/07/21
1K0
ANT标签详解
Hadoop2.4.0 Eclipse插件制作
 跌跌撞撞两天装Hadoop2.4.0的环境,今天终于可以尝试写点程序了,想了一想,不得其法,但有一点是肯定的,那就是需要用eclipse,查了一上午的资料,怎么讲的都有,最后锁定了这个帖子,hadoop2x-eclipse-plugin。想用Github下载,但是最后下载失败,页面右侧有个Download ZIP,用这个下载成功。下边来说说我的整个制作过程吧:
星哥玩云
2022/07/01
4100
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
1.安装ant 环境,https://ant.apache.org/bindownload.cgi
雷子
2021/03/15
7260
ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率
SVN Hooks的介绍及使用
Hooks 钩子,主要实现的功能就是在特定事件发生之前或者之后自动执行事先定义好的脚本代码来实现某些功能,类似于JS中的监听事件、MySQL中的触发器、Django中的signals信号等
37丫37
2019/01/03
3.9K0
相关推荐
java: ant 脚本示例
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文