使用jenkins部署Django项目

环境准备

我已经提前在机器上布好了如下环境:

  • Ubuntu16.04
  • java8
  • jenkins
  • python2.7
  • django1.11.29

创建远程仓库

由于是测试,我们选择在gitee上创建一个仓库
使用jenkins部署Django项目_第1张图片
将这个仓库拉到本地
使用jenkins部署Django项目_第2张图片

本地环境准备(项目环境)

pip list 查看django是否安装
使用jenkins部署Django项目_第3张图片
确认django安装后创建django项目

cd django_jenkins
# 创建django项目
django-admin startproject test1
cd test1
# 创建一个app
python manage.py startapp test2
# 创建模板目录
mkdir templates

vim test1/settings.py 注册app,修改模板路径

# 设置允许任何IP连接
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'test2'
]
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR+"/templates",],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

创建index.html

root@kdltest:~/django_jenkins/test1/templates# vim index.html
root@kdltest:~/django_jenkins/test1/templates# cat index.html
<h1>diango_test hello jenkins</h1>

修改test2/views.py的视图 vim test2/views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'index.html')

修改urls.py匹配路径vim test1/urls.py

from django.conf.urls import url
from django.contrib import admin
from test2 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$' , views.index)
]

启动项目测试 python manage.py runserver 0.0.0.0:8008
使用jenkins部署Django项目_第4张图片
同步项目至远程仓库

root@kdltest:~/django_jenkins# git add test1/
root@kdltest:~/django_jenkins# git commit -m "first commit"                                                             [master 06bd086] first commit
 23 files changed, 217 insertions(+)
 create mode 100644 test1/db.sqlite3
 create mode 100755 test1/manage.py
 create mode 100644 test1/templates/index.html
 create mode 100644 test1/test1/__init__.py
 create mode 100644 test1/test1/__init__.pyc
 create mode 100644 test1/test1/settings.py
 create mode 100644 test1/test1/settings.pyc
 create mode 100644 test1/test1/urls.py
 create mode 100644 test1/test1/urls.pyc
 create mode 100644 test1/test1/wsgi.py
 create mode 100644 test1/test1/wsgi.pyc
 create mode 100644 test1/test2/__init__.py
 create mode 100644 test1/test2/__init__.pyc
 create mode 100644 test1/test2/admin.py
 create mode 100644 test1/test2/admin.pyc
 create mode 100644 test1/test2/apps.py
 create mode 100644 test1/test2/migrations/__init__.py
 create mode 100644 test1/test2/migrations/__init__.pyc
 create mode 100644 test1/test2/models.py
 create mode 100644 test1/test2/models.pyc
 create mode 100644 test1/test2/tests.py
 create mode 100644 test1/test2/views.py
 create mode 100644 test1/test2/views.pyc
 root@kdltest:~/django_jenkins# git push

创建本地构建任务

使用jenkins部署Django项目_第5张图片
使用jenkins部署Django项目_第6张图片
构建触发器
这里我们选择轮询SCM,也就是每2分钟会自动检查远端仓库和本地有没有变化,有变化则拉取新的代码开始构建
使用jenkins部署Django项目_第7张图片
构建操作,创建测试脚本,使用 python manage.py test 来测试用例。
使用jenkins部署Django项目_第8张图片

构建后操作,构建失败后会发送邮件给设置的邮箱
使用jenkins部署Django项目_第9张图片
此时进入 工作空间 已经可以查看节点上的工程目录
使用jenkins部署Django项目_第10张图片
每2分钟会自动轮询git
使用jenkins部署Django项目_第11张图片

创建部署构建任务

使用jenkins部署Django项目_第12张图片
使用jenkins部署Django项目_第13张图片
创建任务并选择复制test_build任务
使用jenkins部署Django项目_第14张图片
构建触发器,选择 其他工程构建后触发 ,也就只有当测试通过后,才能构建当前这个任务
使用jenkins部署Django项目_第15张图片
构建
BUILD_ID=DONTKILLME : 在jenkins里面在后台运行的程序都会被jenkins自动杀死 所以需要加上BUILDID这个参数 加了这个参数你的程序就不会被杀死
使用jenkins部署Django项目_第16张图片

测试

由于远程仓库的代码和本地一致,所以此时一直不会执行构建任务,所以我们更新index.html并push到远程仓库

root@kdltest:~/django_jenkins/test1/templates# cat index.html
<h1>diango_test hello jenkins</h1>
<h2>alter test!!</h2>

查看git轮询日志
使用jenkins部署Django项目_第17张图片

你可能感兴趣的:(django,jenkins,python,运维)