1. 程式人生 > >jenkins+svn+rsync+php_一鍵自動化部署可持續化整合伺服器叢集專案_支援回滾

jenkins+svn+rsync+php_一鍵自動化部署可持續化整合伺服器叢集專案_支援回滾

此文的方案支援回滾,支援回滾,支援回滾,重要的事情說三遍!

前言:
此文的解決方案,只能解決釋放運維一半的工作量,為何一半?因為需要部署程式碼的伺服器叢集,都事先安裝配置好專案執行所需的環境,例如java專案需要tomcat,php專案需要nginx+php-fpm等。
如果問有沒有更好叢集部署方案,都能連執行環境都統一自動化叢集部署?答案肯定是有的,要用docker容器化叢集,而不是伺服器叢集。此方案後續會更新博文講解。


一、前期準備
1、程式碼分發伺服器:192.168.0.1
2、需要部署程式碼的伺服器:192.168.0.2
3、需要分發伺服器安裝好rsync服務,並配置好,用於分發程式碼。具體參照之前的文章
rsync安裝配置

4、需要分發伺服器安裝好Jenkins服務,並配置好,用於一鍵自動化叢集部署。具體參照之前的文章jenkins安裝配置
5、需要 部署的伺服器叢集都安裝好rsync服務,用於拉取程式碼


二、配置jenkins
1、瀏覽192.168.0.1:8080,訪問安裝好jenkins服務的分發伺服器,輸入之前安裝時設定的賬號密碼登入
2、登入後找到,系統管理-》管理外掛-》可選外掛,搜尋Publish Over SSH,安裝外掛,如果安裝了忽略
 


3、配置需要叢集部署的伺服器ssh連線,找到系統管理-》系統設定-》Publish over SSH-》SSH Servers,點選新增配置ssh,點選高階可展開更多配置,如有多臺就配置多臺,配置圖中幾項即可,然後點選儲存應用。
 



三、構建伺服器叢集部署程式碼
1、jenkins找到新建任務,輸入任務名稱,選擇構建一個自由風格的軟體專案,點選確定
 

2、找到general,

2.1、勾選丟棄舊的構建,設定保持構建的天數輸入7天,設定保持構建的最大個數輸入10,可按需設定
 
2.2、勾選引數化構建過程,設定兩個文字引數,status-構建動作,預設值有deploy-釋出,roll_back-回滾;version-構建記錄id值,預設值為0
 


3、找到原始碼管理,選擇svn,輸入svn地址,選擇svn使用者,沒有則新建,Check-out Strategy選擇Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update',勾選Quiet check-out
 



4、找到構建觸發器,其中,觸發遠端構建,定時構建,輪詢SCM很有用,但不屬於此篇文章範疇,構建觸發器都不勾選,後續再寫博文講解。
 


5、找到構建環境,也忽略不勾選配置


6、找到構建,增加構建步驟-》執行shell,輸入以下內容
case $status in
deploy)
    echo "status:$status"
        backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/target"
        deploy_path="/data/${JOB_NAME}/deploy_target"
        if [ -d $backup_path ];then
        echo "$backup_path is exists!"
        else
        mkdir -p $backup_path
        fi
        if [ -d $deploy_path ];then
        echo "$deploy_path is exists!"
        else
        mkdir -p $deploy_path
        fi
cp -r ${WORKSPACE} $backup_path/
cp -r ${WORKSPACE} $deploy_path/
        echo "deploy done!"
;;
roll_back)
echo "status:$status"
echo "build_id:$version"
        backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/$version/target"
deploy_path="/data/${JOB_NAME}/deploy_target"
rm -rf $deploy_path
cp -r $backup_path $deploy_path/
echo "roll_back done!"
        ;;
*)
    exit
    ;;
esac
 


構建過程的指令碼功能說明:
指令碼分為 釋出 和 回滾,
釋出:
先把svn拉下來的程式碼,備份到backup_path這個變數的目錄裡,再複製到deploy_path這個變數的釋出目錄裡
回滾:
根據構建記錄ID找到對應的備份程式碼目錄,然後複製到deploy_path這個變數的釋出目錄裡


7、找到構建後操作
7.1、點選增加構建後操作步驟,選擇Send build artifacts over SSH
SSH Server-》Name,選擇剛剛配置好的伺服器叢集的伺服器
SSH Server-》Transfers-》Exec command,輸入
rsync -vzrtopg [email protected]::test_php_deploy /home/www/test_new/ --password-file=/etc/rsyncd.passwd –delete
chmod -R 777 /home/www/test_new/
用於需要部署程式碼的伺服器同步拉取程式碼
 
其中,rsync命令中的模組test_php_deploy對應的path要改成與構建過程的指令碼的deploy_path一致的路徑,vim /etc/rsyncd.conf修改,因此可得知,rsync同步的是deploy_path目錄的程式碼到其他伺服器的。

7.2、可以點選add server新增多臺需要部署程式碼的伺服器
 

7.3、增加構建後操作步驟-》E-mail Notification,輸入郵箱,有錯誤構建會發送郵件通知

8、點選應用儲存

四、一鍵自動化部署
1、點選Build with Parameters,輸入status構建動作,deploy部署或roll_back回滾,輸入roll_back則需要輸入version構建記錄ID,version構建記錄ID對應的是構建歷史的ID,例如#37的37


點選開始構建,然後構建歷史會出現一次構建歷史,點選檢視細節

2、在構建歷史可點選控制檯輸出,檢視構建過程,如果失敗檢視原因




相關推薦

jenkins+svn+rsync+php_自動化部署可持續化整合伺服器叢集專案_支援

此文的方案支援回滾,支援回滾,支援回滾,重要的事情說三遍!前言:此文的解決方案,只能解決釋放運維一半的工作量,為何一半?因為需要部署程式碼的伺服器叢集,都事先安裝配置好專案執行所需的環境,例如java專案需要tomcat,php專案需要nginx+php-fpm等。如果問有沒

SpringBoot + maven + Jenkins + docker 實現docker叢集自動化部署

整體可分為以下幾個步驟:1,建立springboot專案2,搭建docker私服庫3,build映象並上傳到私服庫4,搭建docker swarm叢集5,搭建jenkins並構建部署演示系統使用centos7,jdk1.81,建立Springboot專案:在eclipse上新

自動化部署web架構

一鍵自動化 lnmp lamp 自動化安裝 逗哥自動化 一鍵自動化部署web架構 (LNMP LAMP 等github見底部) 一、前言 要實現自動化,首先要是文檔化---標準化--流程化--自動化,環境的統一是最低標準,所以我們平臺系統環境全部來源於1個腳本,這樣就可以自動化管理,減少企

003-Ambari自動化部署指令碼

    微信搜尋公眾號:BearData,關注更多內容。 根據前兩篇 “Ambari大資料平臺搭建利器(一)&(二)”, 我們已經完成大資料平臺的搭建,但是我們發現安裝Ambari的步驟比較繁瑣。我們發現手動部署存在以下的劣勢: 每個節點都要執行重複的命令,我們前

SaltStack自動化部署高可用負載均衡叢集

本節內容涉及的saltstack配置以及各服務的安裝包和配置檔案均打包上傳到了百度雲,可自由下載使用 實驗環境(rhel6.5 x86_64bit virtual machine) 172.25.5.91 salt-master rhel65-lockey1

Asp.net Core 使用Jenkins + Dockor 實現持續集成、自動化部署(四):發布與

截圖 begin 更強 else https 分發 集成測試 block 執行 寫在前面 我們以前windows跑.net Framework程序的時候,發布,自己乖乖的替換程序;備份,也是自己一個一個的重命名備份;回滾,發布遇到問題的回滾更是不用說了;運維很是怕我們 這

rsync軟件服務利用ansible實現部署

一鍵化部署首先創建一個腳本文件 /server/tools/peizhi.shcat /server/tools/peizhi.shcat >>/etc/rsyncd.conf<<EOF#luo##paichu.sh##uid = rsyncgid = rsyncuse chroot

利用ansible實現部署 rsync服務

linux創建腳本cat /server/scripts/rsyncd.conf.sh修改rsync配置文件cat >>/etc/rsyncd.conf<<EOFuid = rsyncgid = rsyncuse chroot = nomax connections = 200tim

利用ansible部署nfs&rsync並實時同步

linux管理端 :[root@m01 tools]# cat quanwang.sh#!/bin/bashsh /server/scripts/piliangceshimiyao.shansible-playbook /server/tools/rsyncpiliang.ymlansible-playboo

部署rsync和nfs服務,掛載web服務器到nfs,實現共享目錄和備份

sts backup 批量 1.7 ict util local install user 使用ansible服務,實現批量管理第一步,先分發公鑰,實現ansible無密碼進行控制#!/bin/bash #mk key 2rm -f /root/.ssh/id*ssh-ke

基於Jenkins+docker實現部署

摘要】本實踐介紹了利用Jenkins 和docker技術,如何實現CI/CD的各環節的步驟,包括環境準備,程式碼提交,編譯程式,構建映象,部署,測試。一套完整的流程,和今日元宵佳節的圓月甚是應景,希望大家能有所收穫。【關鍵詞】Docker、映象、Jenkins、持續整合、自動

publish over ssh 實現 Jenkins 遠端部署 / jenkins 遠端執行shell 遠端釋出 tomcat / jenkins分別釋出多個專案到多個遠端主機

1. 以下是本地Jenkins生成war包直接釋出本機。參照了(jenkins 遠端執行shell 一鍵遠端釋出 tomcat) BUILD_ID=DONTKILLME  (加這個原因是因為沒加之前用command startup tomcat一直啟動失敗而shutd

如何自動化期中50臺規模集群網站搭建

linux本文出自 “sandshell” 博客,請務必保留此出處http://sandshell.blog.51cto.com/9055959/1956938如何一鍵自動化期中50臺規模集群網站搭建

ansible批量部署nfs服務

nfs 一鍵安裝 批量一鍵安裝nfs服務#install nfs_server - hosts: 172.16.1.31 服務端 tasks: -name: installnfs-utils rpcbind yum: name=nfs-utils,rpcbind

rnfs軟件服務利用ansible實現部署

一鍵化部署創建配置文件[[email protected] tools]# cat nfspeizhi.shcat >>/etc/exports<<EOF /data 172.16.1.0/24(rw,sync)EOF劇本:[[email pro

centos7 OpenStack 自動部署

var one tar img tmp ima dmi kconfig ntp 1、[root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# systemctl enable Netw

Linux環境自動化安裝oracle軟件的構想(附shell腳本)

don 服務器 ons redhat7 cif tex entos sdi class 一、自動化批量安裝ORACLE軟件的構想1、1構想從哪裏來?熟悉PXE+KICKSTART一鍵批量安裝Liunx操作系統的童鞋都知道,該方式可實現快速定制,規範化,自動化的無人值守安裝。

jenkins+mvn+publish over ssh實現自動化部署

log 變量 9.png 安裝 pre apach export oss images 這裏以java項目為例前提:安裝mvn軟件及publish over ssh插件1) 安裝maven cd /data/ wget http://mirrors.hust.edu.cn

微信企業號開發原始碼Java編寫,懶人開發部署專案,WeChatEnterprise框架你值得擁有

幾年前無意間接觸了微信公眾平臺開發,這個在當時還是一個新鮮的事物,但現在已經很流行了,發展的型別也特別的多,比如訂閱號、服務號、小程式、微信企業號等,這些產品在人們日常的生活與開發中,都是非常常見的。 當時的博主也順應時代的變化,去嘗試著開發公眾平臺,到目前為止也算得上是得

搭建基於IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自動化測試環境

第一步:工具下載安裝配置 第二步:整合各個工具到自動化測試環境 1.IDEA上的各種操作 a.通過在idea工具,新建一個maven專案,在右邊載入框這裡,選擇maven-archetype-quickstart,然後點選next b.輸入Group Id:域.公司簡稱;Artifact Id:專案名稱