搭建SVN

yum install subversion

rpm -ql subversion

svnversion --version 看安装成功没

mkdir -p /var/svn/svnrepos 创建svn版本库目录 

svnadmin create /var/svn/svnrepos 创建版本库会在/var/svn/svnrepos目录下生成如下这些文件

进入conf目录authz文件是权限控制文件,passwd是帐号密码文件,svnserve.conf SVN服务配置文件


vi passwd

在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan

vi authz

在末尾添加如下代码:

[/]

dan=rw

w=r

意思是版本库的根目录dan对其有读写权限,w只有读权限。

vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

vi svnserve.conf

打开下面的几个注释:

anon-access = read #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

启动svn版本库

svnserve -d -r /var/svn/svnrepoos



Jenkins

方便网站部署和持续集成

需要一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库如SVN,GIT等

一个jenkins持续集成服务器


下载jdk,解压

vi /etc/profile

export JAVA_HOME=/usr/jdk

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

source    /etc/profile            ; java -version


下载apache-tomcat,解压,移到usr/local目录下,改名成tomcat

/usr/local/tomcat/bin/startup.sh


wget -c http://mirrors.jenkins-ci.org/war/latest/jenkins.war;

jar -xf解压war文件并移到tomcat发布目录

访问8080,系统设置

配上jdk和maven,应用,保存

下载maven解压移到data下

cd /data

 wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/binaries/apache-maven-3.1.1-bin.tar.gz

mv apache-maven-3.1.1 maven


创建新项目,选maven项目

配上svn,下面的build里的Goals and options加上clean install -Dmaven.test.skip=true

点项目后面的启动,看console out,最后会有个war文件

clock of the subversion server appears to be out of sync. This can result in inconsistent check out behavior.

提示这个错误,是你主机的时间不对,ntp调下时间

Caused by: java.lang.NoSuchFieldError: DEFAULT_USER_SETTINGS_FILE

提示这个错误,是maven版本太高,换成3.3以下

maven报错,就换个maven,maven里要有lib

这里的执行流程:

1通过svn取代码2进行编译,读取pom文件的依赖3生成war包

在target目录下有个.war包,我们只需要把这个包部署到远程机器,这里部署到本地tomcat下


自定义发布目录,在server.xml配置文件末尾 前加入如下行:

ture表示实时变动,想自定义生效,要把webapps下的默认内容删掉

解压edu.war


我们发现jenkins并没有自动部署,最好是shell脚本定制部署,通过ansible,saltstack,ssh批量部署

远程部署:jenkins把这个eru.war通过http发布,或者scp edu.war,然后解压到tomcat发布目录,删掉work这个缓存文件

点项目,配置,最下面有个add post-build step,选execute shell

这里的命令是在jenkins上运行

1.发布http包cp /root/.jenkins/workspace/shaitu/target/edu.war /var/www/html

1.或者在项目下面选构建后操作,选Archive the artifacts,填**/target/*.war


这样jenkins会自动拷贝所有的war包到/root/.jenkins/jobs/shaitu/builds/lastSuccessfulBuild/archive/target/,但是这个包是在这个工程结束了才存,这里留的是上个版本的,所以还得自己从target里拷过来。。

2.远程执行脚本ssh -l root 192.168.1.10* '/bin/bash /tmp/auto_deploy_war.sh'

3.直接在远程执行脚本ssh [email protected]* 'bash -x -s' < /data/sh/auto_deploy_war.sh

其中-x和-s是打印执行过程,可以去掉

作业:写成脚本自动部署100台

用ansible自动部署,在剧本里写

- hosts: all

  remote_user: root

  tasks:

  - name: deploy launch war

    shell: cd /usr/local/tomcat/webapps/ROOT;rm -rf *;wget http://192.168.1.107:8080/edu.war;jar -xf edu.war;/usr/local/t

omcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh

后台执行命令

#screen

#输命令

#exit