Travis Ci+Django+Mysql实践

Travis CI持续集成

  1. 在Travis CI官网 使用github账号授权

  2. Travis 会列出 Github 上面你的所有仓库,以及你所属于的组织。此时,选择你需要 Travis 帮你构建的仓库,打开仓库旁边的开关。一旦激活了一个仓库,Travis 会监听这个仓库的所有变化。
    Travis Ci+Django+Mysql实践_第1张图片
    如果没有找到自己的项目,点击Sync account同步之后即可Travis Ci+Django+Mysql实践_第2张图片

  3. 在git上新建一个空项目test,本地新建项目并连接远程仓库test
    项目目录:
    .travis.yml
    readme.md
    requirements.txt
    test.py

    import numpy as np
    a = np.array([1,2,3])
    print("test success")
    print(a)	
    
  4. 配置 .travis.yml

    sudo: false
    
    language: python
    
    python:
      - 3.6
     
    install:
     - pip install -r requirements.txt
      
    script:
      - python test.py
    
    
  5. 上传到git

  6. 在Travis CI上可以看到这一次的部署情况Travis Ci+Django+Mysql实践_第3张图片

Travis CI + Django + Mysql自动化测试

现在有一个Django项目WeChatTicket,使用Travis CI完成自动化测试

  1. 配置.travis.yml
    引入mysql:

    services:
    	- mysql
    

    创造需要的数据库:

    before_install:
    	- sudo mysql -e 'CREATE DATABASE wechat_ticket;'
    

    整体代码:

    sudo: required
    
    language: python
    
    services:
    	- mysql
    
    python:
    	- 3.6
    
    before_install:
    	- sudo mysql -e 'CREATE DATABASE wechat_ticket;'
    
    install:
    	- pip install -r requirements.txt
    
    script:
    	- cp configs.example.json configs.json
    
    	- python manage.py makemigrations
    	- python manage.py migrate
    	- python manage.py test
    
    
  2. 在Django项目tests.py文件中添加一些测试

  3. 上传,通过
    Travis Ci+Django+Mysql实践_第4张图片

Travis CI自动部署

通过.travis.yml文件的配置,使上传的代码可以直接部署在服务器

  1. 服务器上完成Travis CI的下载和登录
    apt-get直接下载的travis并不是我们需要的travis

sudo apt-get install ruby
sudo apt-get isntall ruby-dev  
sudo gem sources --add https://gems.ruby-china.com/
sudo gem install travis

https://gems.ruby-china.org 已经被移除,现在使用 https://gems.ruby-china.com 替代
这个过程可能还会碰到其他的坑,百度一下基本都能解决

sudo travis login --auto

输入github用户名和密码,也可以使用–access-token(在Github–> Settings -->Developer settings–>Personal access tokens里面设置)

切换目录到项目文件下

sudo travis encrypt-file ~/.ssh/id_rsa --add

然后你的.travis.yml文件中会多出几行

before_install:
  - openssl aes-256-cbc -K $xxxxxxxxxxxx $xxxxxxxxxxxx
   -in id_rsa.enc -out ~\/.ssh/id_rsa -d

为了避免权限问题,我建议把最后一行的目的地~\/.ssh/id_rsa 改成id_rsa

2.配置.travis.yml文件

sudo: required
language: python
services:
- mysql
python:
- 3.6
before_install:
- sudo chmod 600 ~/.ssh/*
- sudo touch rg_rsa
- sudo apt-get install sshpass
- sudo openssl aes-256-cbc -K $encrypted_033a364aed3b_key -iv $encrypted_033a364aed3b_iv
  -in rg_rsa.enc -out rg_rsa -d
- sudo mysql -e 'CREATE DATABASE wechat_ticket;'
install:
- pip install -r requirements.txt
- pip install uwsgi
script:
- cp configs.example.json configs.json
- python manage.py makemigrations
- python manage.py migrate
- python manage.py test
after_success:
- sudo chmod 600  ~/.ssh/rg_rsa
- sudo sshpass -p 'your_password' ssh [email protected] "bash /home/ubuntu/WeChatTicket/deploy.sh"#运行脚本,sshpass允许你明文书写密码
addons:
 ssh_konwn_hosts:your.ip.address.here

运行结果:

Travis Ci+Django+Mysql实践_第5张图片

项目链接

你可能感兴趣的:(Travis Ci+Django+Mysql实践)