`

shell从svn远程打包部署工程

 
阅读更多

    通过SVN的分支功能,实现同套代码进行测试和上线,有效提高开发自动化和上线质量。

    qa在客户端执行部署脚本(xxx.sh tagxxx),部署脚本能够执行中间机上的远程脚本实现从SVN下载指定分支代码,编译,打包,发送部署包到本地,然后在本地部署,重启服务器。

 

1客户端执行的shell脚本

 

#!/bin/sh

#set dir [index $argv 0]

#中间机密码

passwd="xxxx"

passwd2="xxxx"

passwd1="xxxx"

#TAG号

tag=$1

#远程执行中间机上的脚本

expect <<EOF

set timeout 100

 

spawn ssh user@ip "bash /home/work/xxx/xxx_test.sh $tag"

expect {

        "*yes/no" { send "yes\r" }

        "*password:" { send "123\r"

                expect "*Permission denied, please try again.*" {send "$passwd1\r"

                                expect "*Permission denied, please try again.*" {send "$passwd2\r"

                                }

                        }

                }

        }

expect eof

EOF

#路径

BACKUP_PATH="/home/work/xxx/backup"

#resin服务war包文件名

WEB_FILE="xxx.war"

#日期

time=`date +%Y-%m-%d-%H-%M-%S`

#生成备份路径

function getbackupdir(){

        if [ ! -d ${BACKUP_PATH} ]

        then

                mkdir ${BACKUP_PATH}

        fi

 

        if [ ! -d ${BACKUP_PATH}${time} ]

        then

                mkdir ${BACKUP_PATH}${time}

        fi

        echo ${BACKUP_PATH}${time}

}

 

if [ -e $WEB_FILE ]

then

        mv union `getbackupdir`

        unzip -oq $WEB_FILE -d union

        rm -f $WEB_FILE

        echo "-----redeploy $WEB_FILE finished----"

else

        echo "$WEB_FILE not found!"

        exit 0

fi

 

xxx_httpd.sh restart

 

exit 0

 

2部署中间机执行的shell脚本

 

#!/bin/sh

SVNLOCATION="2015021314"

#export mvn "/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin"

if [ $# -gt 0 ]

then

SVNLOCATION=$1

SOURCE_LOCATION="/home/work/xxx/test"

sleep 1s

else

echo "warning:参数不能为空,请输入准确的tag号!!!"

exit 1

fi

rm -rf $SOURCE_LOCATION

mkdir $SOURCE_LOCATION

echo "删除旧版本代码成功。。。"

echo "svn地址 tag号:"$SVNLOCATION

expect <<EOF

set timeout 60

spawn svn --username xxx --password xxx checkout http://xxx/svn/trunk/xxx-tag/$SVNLOCATION $SOURCE_LOCATION

expect {"*yes/no" 

{send "yes\r"}}

expect eof

EOF

#if [[ $? -eq 0 ]]

#then echo "源码下载成功" 

#else echo "源码下载失败"

#exit 1

#fi

sleep 1s

cd $SOURCE_LOCATION

#打包

/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin/mvn clean

/home/work/opt/apache-maven-3.2.2-bin/apache-maven-3.2.2/bin/mvn install -Ptest -Dmaven.test.skip=true

if [[ $? -eq 0 ]]

then echo "打包成功"

else echo "打包失败"

exit 1

fi

#修改安装包包名称

/home/work/rsync/bin/rsync -vzrtopg --progress --delete  --password-file=/home/work/rsync/rsync.pas --port=3334 $SOURCE_LOCATION/xxx.war work@ip::xxx/xxx.war

echo "xxx"

分享到:
评论

相关推荐

    Jenkins+SVN+MAVEN+SHELL实现项目一键发布

    3. 添加Shell脚本:在构建步骤中添加Shell命令,执行部署相关的操作,比如将打包后的应用复制到远程服务器,或者执行数据库迁移。 4. 配置部署环境:确保远程服务器上已安装好必要的环境(如Java运行时、服务器软件...

    Jenkins增量更新部署

    Jenkins 有一些插件可以帮助实现增量部署,如 `Build Trigger Plugin` 和 `Publish Over SSH Plugin`,它们可以自动化触发构建、传输文件和执行远程命令等操作。 7. **最佳实践**: - 定期全量部署:虽然增量部署...

    jenkins+svn+maven构建

    Jenkins+SVN+Maven构建 ...Jenkins的部署方法包括通过Jenkins+SSH+Shell实现代码发布及回滚,也可以通过SVN回滚。Jenkins的持续集成意义在于它可以自动化构建、测试、部署和发布软件,提高软件开发效率和质量。

    vue-autodeploy:从svn或者git自动打包vue工程的脚本

    Vue Autodeploy是一个用于自动化Vue.js项目部署的脚本,主要针对从SVN或Git版本控制系统获取代码后的构建和发布过程。这个脚本利用了Shell命令行工具,为开发者提供了便利,可以节省手动构建和部署的时间,提高工作...

    maven 一键打包

    6. **部署**:将打包好的文件发布到指定的远程仓库,供其他项目引用。 ### Maven 一键打包脚本 为了实现一键打包,通常我们会编写一个shell脚本或者Ant任务,该脚本会调用Maven的相关命令。例如,可以使用以下命令...

    Jenkins + Maven + SVN + SSH持续集成实战手册

    4. **SSH连接与部署**:SSH(Secure Shell)协议用于安全地远程访问和操作服务器。在Jenkins中,可以使用SSH Steps插件或Jenkinsfile中的sshagent指令,建立与目标服务器的安全连接,进行文件传输或执行远程命令,...

    常用的shell命令.pptx

    2. 使用Jenkins构建Android工程,通常会集成Git拉取代码、编译、测试和部署等流程。 3. `https://blog.csdn.net/alangshan/article/details/83413018`等文章提供了Jenkins配置Android项目的教程。 4. Jenkins的工作...

    Jenkins自动化发布工具相关插件

    SSH(Secure Shell)插件允许Jenkins通过SSH协议与远程服务器进行通信,执行命令或者部署应用。这对于分布式部署和自动化运维非常关键。你可以配置Jenkins连接到远程服务器,执行例如启动、停止服务,或者复制构建...

    自动打包脚本.zip

    3. **自动拉取源码**:脚本可能包含命令行接口(CLI)调用,如`svn update`或`git pull`,以自动从远程仓库获取最新的代码。这确保开发者始终与服务器上的最新版本保持同步。 4. **自动打包**:在Unity中,打包通常指...

    Jekins自动化部署.pdf

    1. 从版本控制系统(如SVN或Git)获取源代码,并检出到本地环境。 2. 使用Maven在本地执行构建命令,通常是clean package,来编译源代码、运行测试并打包成可执行的jar文件。 3. 将构建生成的jar包通过SSH上传到远程...

    Jenkins使用说明

    在使用 Jenkins 过程中,可能会遇到各种问题,如 SVN 权限问题、找不到私服上的 JAR 包、JDK 版本不兼容、DUBBO 启动失败、SSH 主机密钥验证失败、远程 shell 命令执行失败等。这些问题需要根据具体情况进行排查和...

    Jenkins技术指南1

    - **执行子包打包及发布**:编写 shell 脚本进行打包、发布和备份操作。 - **跨服务传输**:使用 expect 脚本进行 SCP 自动认证传输,确保安全地将构建产物发送到远程服务器。 七、构建流程 在 Jenkins 中,构建...

    Shell中使用scp命令实现文件上传代码

    在Linux或Unix系统中,`scp`(Secure Copy)命令是一种用于安全地在本地主机和远程主机之间传输文件的工具,它基于SSH(Secure Shell)协议。在Shell脚本中使用scp命令可以自动化文件上传过程,提高效率,减少错误。...

    jenkins工具

    Jenkins 提供了SSH插件,如Jenkins SSH Plugin,允许它连接到Linux服务器并执行远程命令,如部署应用、执行shell脚本等。这使得开发者能够在构建完成后,自动将软件发布到目标环境,实现自动化部署。 **5. Shell ...

    高级软件测试工程师简历模版

    - **构建部署**:对代码进行构建、打包,并部署到测试服务器。 ### 工具与平台 - **Web测试工具**:Xenu、HTML Link Validator等用于链接验证;HTTPWatch、Firebug等用于网络监控。 - **自动化测试工具**:QTP等...

    shh_ssh_

    3. **测试环境打war包及版本发布流程svn000.docx** - 这是一个关于在测试环境中打包Java Web应用(通常以.war文件形式)的流程文档,同时提到了版本控制工具Subversion(SVN)。流程可能包括代码编译、版本控制、...

    S2S2H3 环境搭建

    9. **远程开发和部署**:如何通过SSH从本地IDE直接连接到远程服务器进行开发和部署,例如使用Jenkins或GitLab CI/CD进行自动化部署。 10. **安全性**:如何保持SSH连接的安全,避免中间人攻击,定期更新密钥,限制...

    群晖中docker开启ssh (2).pdf

    1. **获取容器Shell**:在宿主机上,使用`docker exec -it centos-svn /bin/bash`命令进入容器的命令行界面。 2. **检查或卸载SSH服务**:在容器内部,可以使用`rpm -qa openssh*`查询已安装的SSH软件包,如果已...

    基于Web的农产品销售管理系统.zip

    "ssh":这里的SSH可能指的是Struts2、Spring和Hibernate三个框架,是另一种常见的Java Web开发组合,但在这个上下文中,也可能是指Secure Shell,一种网络协议,用于安全地远程登录和管理服务器。考虑到系统类型,...

    Linux服务器命令.pdf

    然而,我们依然可以尝试从其中抽取出与Linux服务器相关的命令,解释它们的作用,并提供一些实际应用的例子。 Linux服务器命令是控制Linux系统运行、管理文件和目录、监控系统资源、配置网络服务等任务的指令集合。...

Global site tag (gtag.js) - Google Analytics