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) 是否为空,如果为空则回滚到上一版本,否则回滚到指定版本。

posted on 2018-04-23 15:03  睡着的糖葫芦  阅读(3177)  评论(0编辑  收藏  举报