Travis CI持续集成
-
在Travis CI官网 使用github账号授权
-
Travis 会列出 Github 上面你的所有仓库,以及你所属于的组织。此时,选择你需要 Travis 帮你构建的仓库,打开仓库旁边的开关。一旦激活了一个仓库,Travis 会监听这个仓库的所有变化。
如果没有找到自己的项目,点击Sync account同步之后即可 -
在git上新建一个空项目test,本地新建项目并连接远程仓库test
项目目录:
.travis.yml
readme.md
requirements.txt
test.pyimport numpy as np a = np.array([1,2,3]) print("test success") print(a)
-
配置 .travis.yml
sudo: false language: python python: - 3.6 install: - pip install -r requirements.txt script: - python test.py
-
上传到git
-
在Travis CI上可以看到这一次的部署情况
Travis CI + Django + Mysql自动化测试
现在有一个Django项目WeChatTicket,使用Travis CI完成自动化测试
-
配置.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
-
在Django项目tests.py文件中添加一些测试
-
上传,通过
Travis CI自动部署
通过.travis.yml文件的配置,使上传的代码可以直接部署在服务器
- 服务器上完成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 your_user@your.ip.address.here "bash /home/ubuntu/WeChatTicket/deploy.sh"#运行脚本,sshpass允许你明文书写密码
addons:
ssh_konwn_hosts:your.ip.address.here
运行结果: