/python-django-cd-sample

Continous Delivery Sample

Primary LanguagePython

如何构建具有持续交付能力的 Docker 化 Django 应用

目标:我们将之前实现的 Django + MySQL + Redis 留言板应用,送上云端,轻松实现应用在云端持续交付。

本项目代码维护在 DaoCloud/python-django-cd-sample 项目中。

您可以在 GitHub 找到本项目并获取本文中所提到的所有代码文件。

工欲善其器,必先利其器。首先,你需要 DaoCloud 帐号

云端镜像构建

比起本地创建,在云端创建会更简单。

  • 第一步:在控制台点击「代码构建」。

  • 第二步:在「代码构建」的界面中点击「创建新项目」。

  • 第三步:为项目指定「项目名称」并设置代码源。

点击「开始创建」后稍等片刻,您的应用便在云端构建成咯。

云端部署镜像

  • 第零步:在控制台点击「服务集成」,创建 MySQL 和 Redis 服务
  • 第一步:在控制台点击「镜像仓库」。
  • 第二步:在「代码构建」的界面中找到需要部署的镜像,点击「部署」。
  • 第三步:按照为项目指定「项目名称」,并在 「基础设置」中绑定上 MySQL 和 Redis 服务。

如果没有意外的话,您的应用便在云端航行起来咯!

云端持续集成

首先我们需要编写一些测试代码。

# chat/tests.py
from django.test import TestCase
from django.test.client import Client

# Create your tests here.
class ChatTests(TestCase):
    client_class = Client

    def test(self):
        self.assertEqual(1 + 1, 2)

本地环境下可以使用以下命令来启动测试:

./manage.py test

当我们写完测试代码之后,我们需要一个持续集成环境来自动执行测试,报告项目的健康状况。

我们只需要在源代码的根目录放置 daocloud.yml 文件便可以接入 DaoCloud 持续集成系统,每一次源代码的变更都会触发一次 DaoCloud 持续集成。关于 daocloud.yml 的格式,您可以参考 这里

daocloud.yml

image: daocloud/ci-python:2.7
services:
    - mysql
    - redis

env:
    - DAO_TEST = "True"
    - MYSQL_INSTANCE_NAME = "test"
    - MYSQL_USERNAME = "root"
    - MYSQL_PASSWORD = ""

install:
    - pip install coverage

before_script:
    - pip install -r requirements.txt

script:
    - coverage run --source='.' manage.py test
    - coverage report