CI System







Outline
-
Introduction
-
Working Flow
-
Problem we met
-
What I have learned
-
Reference
-
Q & A
Introduction



Demo Travis & heroku
Introduction

Demo GitLab CI
Why not using GitLab CI?
Introduction
-
Build project per commit
-
Less flexiblility
- plugin
- gitlab ci cannot adjust when to test
Introduction

Introduction
Why using Jenkins?
-
Well know
-
Easy to use
-
Flexibility
- a lot of plugin (mail, pipline...etc)
- adjust build time when you need
Currently, we think that jenkins is more suitable for us
Working Flow
-
phase1:
-
Update Jenkins jobs
-
Update CI Master
-
-
phase2:
-
Assign jobs to labs
-
- phase3:
- update labs scripts before test run
- run test
phase1: Update jenkins jobs
&
CI Master

Phase2: Assign jobs to lab

Phase3: Update lab & run job

Problem we met
Dev Environment


Jobs configs
Logs
Jobs configs
Jenkins server 1
Jenkins server 2
Dev Environment


Jobs configs
Logs
Jobs configs
Jenkins server 1
Jenkins server 2
current solution: rsync
rsync
Test Golden Data
- synoqc
- synostorage
- our lab
How to test CI System?
Multiple Serverices (container & DS)
- Check DS alive or died in lab
- Control container like a lot of host
- not like single cluster host
- Define what data need to log in database
- Server (container) deploy to different machine
- Add Test lab (currently by manual)
Multiple Serverices (container & DS)
Solutions?
- docker-machine style behavior
- docker swarm
- etcd , consul
Mail List
&
When send reports
(failed, success, any ...ect)
Report Format
What I have learned?
A lot of python programming technique

Testing Framework

Generating document is important

- sphinx
- webapi-DSM5/docs/apidoc.py

Implement Applications in docker
Database ORM
&
Database Migration


Advanced use jenkins

SSH is Powerful

Provide Service not just provide app

Service discover is important



Some cluster concepts

Reference
Q & A
CI System
By chang-ning tsai
CI System
- 464