Comments (5)
개인 리포지토리에 travis CI 를 잠깐 테스트해보았습니다.
일단 젠킨스 등의 유료(아마도) CI 서비스들과는 어떤 차이가 있는지까지는 알아보지 않았습니다만, 지금 우리 상황에서는 충분히 light 하게 쓸만하다고 보입니다. (이런거 도입하는걸 좋아하는 성격 탓도 있습니다;;ㅋ)
장점
- 각 개인마다 다른 개발환경(JDK / Maven 버전, Maven 환경변수, 시스템 환경변수 등등...) 에 신경쓸 필요없이 표준화된 test 환경을 가질 수 있다.
- Github 과 연동되어 push 만 하면 알아서 지정한 build 절차를 수행해준다.
- Web UI 기반으로, 개별 push 및 PR 마다의 build 결과를 history 로 볼 수 있다.
- Github repository 에 icon 으로 현재 commit 의 build 결과를 한눈에 표시해준다.
단점
- travis CI 가 별도의 virtual 환경을 생성하여 빌드를 수행하기 때문에, (VM 생성 과정 때문에) 단일 build, test 시간은 수동으로 직접 하는 것보다 느리다.
- 우리의 경우, arcus-memcached 와 zookeeper 가 어딘가에 떠 있어야 mvn test 수행이 가능하기 때문에, travis build 용으로 상시 arcus-memcached + zookeeper 를 띄워 놓을 서버가 필요하다.
- 위의 상시 서버를 띄워 둘 경우, m001 이나 m002 정도가 적당하다고 생각이 되는데... mvn test 의 환경변수 (-D...) 로 서버주소, 서비스코드를 지정해야 하기 때문에 이 내용이 외부로 노출된다.
- (이런 경우가 있을지는 모르겠지만) 동시에 2개 이상의 mvn test 가 같은 서버로 connect 할 경우 cache 의 내용이 꼬여 build fail 이 발생할 가능성이 있어 보인다.
정도입니다. 틈틈이 계속 써보고 내용 추가하겠습니다.
from arcus-java-client.
아래 링크에 들어가실 수 있을지 모르겠지만 travis 를 도입하려고 테스트 하다가 몇 가지 문제로 delay 했었습니다.
https://travis-ci.org/whchoi83/arcus-java-client
먼저 arcus-java-client 를 CI 를 통해 지속적으로 테스트 하려면 반드시 arcus-memcached 가 구동되어 있어야 합니다. 문제는 ci 가 동작할 때 마다 travis-ci 에 arcus-memcached 가 "build 되고 구동되거나", "구동되거나" 해야 합니다. 아마도... arcus-memcached 를 clone 받은 뒤, build 하고, 구동해야 할 것 같습니다. 또한 이중화용 테스트를 위해서는 이중화 구성도 해야되고 ZooKeeper 도 구성해야 되고 등등등 이 있습니다.
이를 위해서는 자체적으로 Jenkins 같은 CI를 구성해야 하는데 @jhpark816 님과 상의 후 비용적인 측면이 맞지 않다고 판단하고 delay 했었습니다.
아니면 우리가 arcus-java-client 의 ci 를 위해서 별도의 ARCUS 를 구축해 두고 -D 옵션을 이용해 구축해놓은 ARCUS 를 사용하도록 해야 하는데, 이왕 CI 를 적용한다면 arcus-java-client 외에 다른 것들도 함께 구축하는 것이 좋을 것 같은데 그렇다면 ARCUS 만 별도 서버로 구축해서 travis 를 사용하는 것은 좀 맞지 않을 듯 합니다.
어쨌든 각설하고,
이번 문제도 그렇고, 실수로 mvn test 를 빼먹거나, 환경이나 branch 문제로 누락되게 되면 동일한 문제가 발생할 것 같습니다. 이번 기회에 CI 를 구축하는게 좋을 것 같습니다.
(결론... 서버가 필요합니다. 시간이 필요합니다. 😢)
from arcus-java-client.
CI 환경 구축에 필요한 장비 사양을 고민해 주세요.
from arcus-java-client.
링크 들어가집니다. ^^ 해본것과 똑같네요.
일단 급한 이슈가 아니니, 천천히 여유를 갖고 이것저것 테스트해 보았으면 합니다.
별도의 독립 서버를 구축한다고 해도, 사무실 내부는 공유기를 통한 private network 으로 구성되어 있는 점도 그렇고, 위 단점 4번째에서 언급한 - 동시에 2개 이상의 travis VM 이 하나의 cache cloud 로 동일한 key-value set 으로 테스트를 시도하는 - 경우 테스트 결과의 신뢰성에 문제가 있는 점 등도 해결해야 합니다.
그렇다고 너무 신경을 안써도 안되니... 3분기 (~9월) 내로 결정을 하는 것으로 생각하고 진행해 보아요 ^^;;
독립 서버 환경을 구축하는 것도 우선 사무실에 남는 PC 한대로 trial 환경 정도는 갖춰볼 수 있을 것이라 생각됩니다.
from arcus-java-client.
travis CI 빌드에 걸리는 시간입니다.
로컬 맥 | travis CI | |
---|---|---|
USE_ZK=false | 03:30 | 03:30 (04:46) |
USE_ZK=true | 27:56 | 27:57 (29:24) |
travis CI 에서나, 로컬 맥에서나 mvn test 에 걸리는 시간은 같았고, 전체 시간 (괄호 안 : travis 에서 mvn test 를 위한 환경을 준비하는 데 걸리는 시간까지 포함한 시간) 은 약 1분 20~30초 정도가 더 걸리는 정도네요.
- 참고 : 이 결과는 travis CI 의 cache 기능을 이용해 arcus-memcached 의 소스/빌드결과물 을 캐싱해 두었다가 꺼내서 사용한 결과입니다. arcus-memcached 의 버전이 바뀌어 새로 빌드해야 할 경우는 시간이 훨씬 더 늘어날 수 있습니다.
이만하면 충분히 써볼 만 하겠다 생각됩니다.
지금까지는 제 개인 repo 에서 테스트해봤는데, github organization 의 repository 에 대해서 어떻게 적용이 가능한지 더 알아보고 결과 남기겠습니다.
from arcus-java-client.
Related Issues (20)
- asyncGetAttr 수행 시의 오류 메세지 발생. HOT 3
- debug log 출력 방식 일치 HOT 5
- 중복된 Test code 제거 작업 HOT 1
- Migration 기능 추가 HOT 9
- matchStatus 내에서 불필요한 log 출력 제거 HOT 2
- setupResend() 이상한 부분 검증 HOT 1
- updateConnection()에서의 cancel 처리 질문 HOT 1
- fillWriteBuffer() 코드 검증. HOT 2
- optimize() 코드 검증 HOT 3
- 응용이 cancel한 operations은 node의 queue에서 언제 제거되는 지를 검증 HOT 1
- pipe 연산과 다수 연산을 던지는 방식 비교
- ketama hash collision 시의 owner 결정 HOT 1
- replication 사용 플래그 설정의 재검토. HOT 10
- arcus-java-client API 재점검.
- modify next index issue 수정 빠진 부분 추가 HOT 1
- Element Flag Filter 사용 시 command line 길이 및 처리방식 확인.
- setArcusReplEnabled 사용에 대한 message 수정 HOT 5
- Operation Timeout 로그에 TimeUnit 추가 HOT 2
- Map 자료구조 직렬화, 역직렬화 버그 HOT 11
- Boxing 타입 생성자 대신 valueOf 메서드 사용 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arcus-java-client.