通过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"
相关推荐
3. 添加Shell脚本:在构建步骤中添加Shell命令,执行部署相关的操作,比如将打包后的应用复制到远程服务器,或者执行数据库迁移。 4. 配置部署环境:确保远程服务器上已安装好必要的环境(如Java运行时、服务器软件...
Jenkins 有一些插件可以帮助实现增量部署,如 `Build Trigger Plugin` 和 `Publish Over SSH Plugin`,它们可以自动化触发构建、传输文件和执行远程命令等操作。 7. **最佳实践**: - 定期全量部署:虽然增量部署...
Jenkins+SVN+Maven构建 ...Jenkins的部署方法包括通过Jenkins+SSH+Shell实现代码发布及回滚,也可以通过SVN回滚。Jenkins的持续集成意义在于它可以自动化构建、测试、部署和发布软件,提高软件开发效率和质量。
Vue Autodeploy是一个用于自动化Vue.js项目部署的脚本,主要针对从SVN或Git版本控制系统获取代码后的构建和发布过程。这个脚本利用了Shell命令行工具,为开发者提供了便利,可以节省手动构建和部署的时间,提高工作...
6. **部署**:将打包好的文件发布到指定的远程仓库,供其他项目引用。 ### Maven 一键打包脚本 为了实现一键打包,通常我们会编写一个shell脚本或者Ant任务,该脚本会调用Maven的相关命令。例如,可以使用以下命令...
4. **SSH连接与部署**:SSH(Secure Shell)协议用于安全地远程访问和操作服务器。在Jenkins中,可以使用SSH Steps插件或Jenkinsfile中的sshagent指令,建立与目标服务器的安全连接,进行文件传输或执行远程命令,...
2. 使用Jenkins构建Android工程,通常会集成Git拉取代码、编译、测试和部署等流程。 3. `https://blog.csdn.net/alangshan/article/details/83413018`等文章提供了Jenkins配置Android项目的教程。 4. Jenkins的工作...
SSH(Secure Shell)插件允许Jenkins通过SSH协议与远程服务器进行通信,执行命令或者部署应用。这对于分布式部署和自动化运维非常关键。你可以配置Jenkins连接到远程服务器,执行例如启动、停止服务,或者复制构建...
3. **自动拉取源码**:脚本可能包含命令行接口(CLI)调用,如`svn update`或`git pull`,以自动从远程仓库获取最新的代码。这确保开发者始终与服务器上的最新版本保持同步。 4. **自动打包**:在Unity中,打包通常指...
1. 从版本控制系统(如SVN或Git)获取源代码,并检出到本地环境。 2. 使用Maven在本地执行构建命令,通常是clean package,来编译源代码、运行测试并打包成可执行的jar文件。 3. 将构建生成的jar包通过SSH上传到远程...
在使用 Jenkins 过程中,可能会遇到各种问题,如 SVN 权限问题、找不到私服上的 JAR 包、JDK 版本不兼容、DUBBO 启动失败、SSH 主机密钥验证失败、远程 shell 命令执行失败等。这些问题需要根据具体情况进行排查和...
- **执行子包打包及发布**:编写 shell 脚本进行打包、发布和备份操作。 - **跨服务传输**:使用 expect 脚本进行 SCP 自动认证传输,确保安全地将构建产物发送到远程服务器。 七、构建流程 在 Jenkins 中,构建...
在Linux或Unix系统中,`scp`(Secure Copy)命令是一种用于安全地在本地主机和远程主机之间传输文件的工具,它基于SSH(Secure Shell)协议。在Shell脚本中使用scp命令可以自动化文件上传过程,提高效率,减少错误。...
Jenkins 提供了SSH插件,如Jenkins SSH Plugin,允许它连接到Linux服务器并执行远程命令,如部署应用、执行shell脚本等。这使得开发者能够在构建完成后,自动将软件发布到目标环境,实现自动化部署。 **5. Shell ...
- **构建部署**:对代码进行构建、打包,并部署到测试服务器。 ### 工具与平台 - **Web测试工具**:Xenu、HTML Link Validator等用于链接验证;HTTPWatch、Firebug等用于网络监控。 - **自动化测试工具**:QTP等...
3. **测试环境打war包及版本发布流程svn000.docx** - 这是一个关于在测试环境中打包Java Web应用(通常以.war文件形式)的流程文档,同时提到了版本控制工具Subversion(SVN)。流程可能包括代码编译、版本控制、...
9. **远程开发和部署**:如何通过SSH从本地IDE直接连接到远程服务器进行开发和部署,例如使用Jenkins或GitLab CI/CD进行自动化部署。 10. **安全性**:如何保持SSH连接的安全,避免中间人攻击,定期更新密钥,限制...
1. **获取容器Shell**:在宿主机上,使用`docker exec -it centos-svn /bin/bash`命令进入容器的命令行界面。 2. **检查或卸载SSH服务**:在容器内部,可以使用`rpm -qa openssh*`查询已安装的SSH软件包,如果已...
"ssh":这里的SSH可能指的是Struts2、Spring和Hibernate三个框架,是另一种常见的Java Web开发组合,但在这个上下文中,也可能是指Secure Shell,一种网络协议,用于安全地远程登录和管理服务器。考虑到系统类型,...
然而,我们依然可以尝试从其中抽取出与Linux服务器相关的命令,解释它们的作用,并提供一些实际应用的例子。 Linux服务器命令是控制Linux系统运行、管理文件和目录、监控系统资源、配置网络服务等任务的指令集合。...