jenkins自动部署

假设:

  • 一台SVN服务器
  • 一台装了jboss的服务器
  • 一台服务器作自动部署

步骤:

动部署服务器上装jenkins

  • http://www.jenkins.io下载jenkins.war,放到自动部署服务器上~/ci/
  • 设置JENKINS_HOME,默认为~/jenkins/
  • 启动jenkins 
nohup java -jar jenkins.war --httpPort=8888 >> ~/ci/jenkins.log 2>&1 &

        可访问外网用在线方式:系统管理->管理插件->可选插件->安装SSH plugin

        内网用离线方式:下载 ssh.hpi http://updates.jenkins-ci.org/latest/ssh.hpi ,更名为ssh.jpi,放入$JENKINS_HOME/plugins/ java


  • 重启jenkins使插件生效 http://x.x.x.x:8888/restart,重启后在add post-build step中将能够看到remote ssh选项
  • 配置jenkins使用的jdk,maven,remote ssh等

配置jenkins服务器和java应用服务器之间的public key authentication ssh,用于免密码scp

  • 在jenkins服务器~目录下生成公私钥对
ssh-keygen -t rsa #生成公私钥对 ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub
  • 把jenkin服务器上生成的公钥~/.ssh/id_rsa.pub复制到java应用服务器的~/.ssh目录
  • 在java应用服务器上,把公钥加入可信列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 设置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#chmod 600 ~/.ssh/id_rsa
  • 删了java应用服务器上的公钥

rm ~/.ssh/id_rsa.pub

配置jenkins job(这里是maven project)

  • SVN check out
  • maven build
clean install -Pdev -DskipTests=true
  • execute shell,把war包scp到应用服务器
scp ~/.m2/repository/com/demo/gateway/1.0.0/gateway-1.0.0.war app@172.17.140.11:/home/app/gateway.war
  • execute shell on remote host using ssh,ssh到应用服务器,部署并重启jboss服务器
home_path=/home/app
server_path=$home_path/servers/jboss
deploy_path=$server_path/standalone/deployments

cd $deploy_path
rm -rf gateway.war
mkdir gateway.war
cd gateway.war
cp $home_path/gateway.war ./
$JAVA_HOME/bin/jar xvf gateway.war
rm gateway.war

nohup $server_path/bin/xxx.sh stop > /dev/null 2>&1 &
sleep 5
nohup $server_path/bin/xxx.sh start > /dev/null 2>&1 &


如今,只要在jenkins上执行job就能进行自动部署了 shell

相关文章
相关标签/搜索