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

相關文章
相關標籤/搜索