Jello's development blog

Jello's development blog

Travis CI에서 mysql 사용하기

테스트를 자동화할 때, travis CI에서 database까지 사용해야 하는 경우가 있다. 나의 경우 mysql을 사용했고, 테스트 더블을 만들어서 해결하려 했지만 mocking의 복잡도가 증가함에 따라, 기존 테스트 코드는 레거시로 놔두고 DB까지 테스트하는 방향으로 바꿔보았다. 이 방법이 맞을지는 모르지만, 기존과 비교해서 속도도 거의 같고, 더블을 만들지 않아도 되기 때문에 생산성을 올려주었으니 만족하고 있다.

Travis에서 mysql 사용하기

Travis CI에서 database을 사용하는 방법은 간단하다. (설명하지 않아도 될만큼..)

Mysql의 경우에는 .travis.yml 파일에 다음 항목을 추가해주면 된다.

...

services:
	...
	- mysql

before_install
	...
	- mysql -e 'CRATE DATABASE [DATABASE_NAME]'

...

services 항목에는 mysql을 입력했고, before_install 항목에는 mysql -e 옵션을 이용해서 바로 database를 생성했다. 예를 들어, Table이 미리 만들어져 있어야 한다면 before_install에 위와 같이 명령어를 입력해서 원하는 상태를 설정할 수 있다.

Travis CI에는 travisroot 유저가 있고, travis 유저는 일반 사용자 권한을 가지고 있다. 비밀번호는 모두 없다.

Travis CI는 mysql뿐만 아니라 거의 모든 database를 설정할 수 있고, 문서에 친절하게 사용법이 나와있으니 고급 기능이 필요하지 않다면 미지원에 대한 걱정은 안해도 될 것 같다.