利用jenkins+saltstack+sh部署項目到多台服務器


jenkins的配置(這里作用只是當做界面使用,利用它來管理執行salt命令,這里以 shop 這個項目目錄為例)

1.利用參數化構建項目,來實現是發布還是回滾操作:

2.構建操作來執行shell腳本

saltstack 的 sls文件編寫

deploy.sls文件如下

deploy:
  cmd.script:
    - source: salt://deploy.sh
    - args: "{{pillar['deploy']}} {{pillar['space']}} {{pillar['project']}} {{pillar['repertory']}} {{pillar['version']}}"
    - user: www
    - group: www

上面的作用就是 執行配置文件中設置資源目錄 下的 deploy.sh腳本,參數為args里的,以 www用戶,用戶組為www 的權限來執行sh里的內容。

shell腳本編寫

#!/bin/sh

deploy=$1
workspace=$2
#通過jenkins動態獲取
project=$3
repertory=$4
version=$5

case $deploy in
  publish)
      #init
      if [ ! -d ${workspace} ]; then
        mkdir -p $workspace
      fi
    
      #echo $project
      #初始化項目
      if [ ! -d ${project} ]; then
        cd $workspace && git clone $repertory
        composer install
      else
        cd $project && git pull
        #composer update
      fi
    ;;
  rollback)
      if [ ! -d ${project} ]; then
        echo "you need to create project first"
        exit 2
      else
        cd $project
        if [ -z ${version} ]; then
          echo "回滾上一版本"
          git reset --hard HEAD^
        else
          echo "回滾指定版本"
          git reset --hard $version 
        fi 
      fi 
    ;;
  *)
  exit
    ;;
esac

作用就是:執行sh腳本傳過來的參數

1.來判斷是發布還是回滾 操作(git)

如果是 publish 操作,判斷 指定的目錄 項目文件夾是否存在 , 存在 執行 git pull 操作,不存在(即第一次構建)執行git clone 並且 通過composer安裝相關庫。

如果是 rollback操作,判斷 參數中version(git log的唯一hash) 是否為空,如果為空則回滾到上一版本,否則回滾到指定版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM