一、创建项目

  • 1.选择自由风格的项目;名称建议与代码中的项目名一致
    CentOS 7  搭建Jenkins自动化部署Django项目_守护进程

  • 2.项目配置-获取源码
    CentOS 7  搭建Jenkins自动化部署Django项目_守护进程_02
    到这一步直接保存,然后Build 就会将代码拉到服务器:/var/lib/jenkins/workspace/目录下

补充:
如果jenkins所在的服务器没有安装git ,源码管理时配置会报错:
Failed to connect to repository : Error performing command: git ls-remote -h
https://github.com/lzwjava/OpenSourceNotes.git HEAD

解决方案:

安装git:`yum  install git`
验证:
[root@VM_0_4_centos opt]# git --version
git version 1.8.3.1

  • 3.项目配置-构建
    CentOS 7  搭建Jenkins自动化部署Django项目_git_03
cd ..
pwd
BUILD_ID=DONTKILLME
sh runserver.sh /var/lib/jenkins/workspace/MxShop/ 8000

注:如果不指定BUILD_ID=DONTKILLME则jenkins会自动将运行的相关服务进程kill掉

这里描述一下我的构建原理:

由于jenkins构建会将整个项目目录更新,所以我在与项目同级的目录写配置的runserver.sh,也就是/var/lib/jenkins/workspace。而每次构建shell默认会在项目目录,所以cd..workspace目录执行

runserver.sh参考:

#! /bin/sh
# $1 第一个参数
# $2 第二个参数
# "$*" 所有参数列表
# "$@" 所有参数列表

# ------------------上面是基本的语法-------------------------------

is_work=1
# $#:判断传递到脚本的参数个数: 项目绝对路径、启动端口
if [ $# != "2" ]
then
	# 如果不是2个参数,则输出一下信息,并且退出脚本
    echo "需要参数:  <project_dir> <runport>"
    is_work=0
fi

# 定义一个函数
run_temp_server(){
    project_dir=$1 # 传到函数的第一个参数:项目绝对路径
    runport=$2 # 第二个参数 端口
	
    # 检查绝对路径是否存在
    if [ ! -d $project_dir ]
    then
	# 项目不存在则输出以下信息
        echo "no such file or directory: $project_dir"
    
    else
		# 存在则执行下面命令
		echo "项目路径:$project_dir"
		echo "端口号:$runport"
		# 像在终端一样使用这些shell 命令
        cd $project_dir 
  	    # 检查安装依赖包
		pip3 install -r requirements.txt
		# 数据库迁移
		# python3 manage.py makemigrations
        # python3 manage.py migrate
		# 守护进程方式 启动celery
		# python3 manage.py celery multi start w1 -A QAPlatform  --loglevel=info
		# 启动项目 "&"表示后台运行
		python3 manage.py runserver 0.0.0.0:$runport &
		echo "启动成功"
    fi
}

if [ $is_work -eq "1" ]
then
    # 执行函数 并且传入参数
    run_temp_server  $1 $2
fi

 

补充:
确认服务是否启动:ps aux |grep python(对指定进程进行监测)
杀死进程:$ kill -s 9 pid

构建结果:
CentOS 7  搭建Jenkins自动化部署Django项目_服务器_04