2016-12-16 5 views
4

내 웹 서버 응용 프로그램 중 하나에 대해 지속적인 통합을 수행하려고합니다. Postgres를 백엔드 데이터베이스로 사용하고 있습니다. 이를 위해 우리는 NodeJS/Jenkins와 GIT를 사용할 계획입니다.웹 서버로 NodeJS/Jenkins/GIT 및 Jenkins Slave

개발자가 변경 사항을 체크인하면 빌드가 즉시 시작되고 몇 가지 기본 테스트를 수행해야합니다. 여기에는 NodeJS 서버를 시작하고 몇 가지 테스트 케이스를 실행하는 과정이 포함됩니다.

저는 젠킨스와 GIT를 통합했기 때문에 자식 변경이 통지 될 때마다 젠킨스 빌드가 시작될 수 있습니다.

동일한 Jenkins 머신에서 NodeJS 웹 서버를 실행할 수 있습니까? 아니면 이것을 위해 슬레이브 Windows 머신을 사용해야합니까?

권장 사항을 알려주십시오.

서버 컴퓨터에 Postgres DB가 설치되고 NPM이 설치된다고 가정합니다.

감사합니다.

답변

3

재구성 가능한 빌드를 사용하려면 Jenkins에 대해 Docker integration을 사용하는 것이 좋습니다. 이렇게하면 여러 빌드가 동시에 처리 될 수 있으므로 빌드가 예상보다 오래 걸리면 다른 개발자도 밀어 넣을 수 있습니다.

각 컨테이너에는 고유 한 네트워크가 있으므로 동일한 포트에서 수신 대기하는 자체 노드 서버가있는 각각의 컨테이너와 동시에 원하는만큼 컨테이너를 실행할 수 있습니다. 컨테이너 외부 (예 : 빌드 서버 자체)에서 노드 서버에 액세스 할 필요가없는 한 아무 문제가 없습니다.

Postgresql 데이터베이스의 경우 : 컨테이너에 데이터베이스 서버를 생성 할 수 있습니다. 즉, 수명이 짧은 DB 서버가 많이 있습니다. 가져올 테스트 데이터의 양에 따라 이것은 해결책이 아닐 수도 있습니다. 다른 방법은 빌드 서버에서 PostgreSQL 서버를 실행하고 컨테이너가 액세스하도록 허용하는 것입니다. 각 빌드에서 Postgresql에 템플릿을 사용하여 새 데이터베이스를 만듭니다. 나중에 db를 파괴 할 수 있습니다.

는 그래서 프로세스는 다음과 같습니다 단계를 proceesing 결과에 대한

[Developer pushes] -> [git notifies Jenkins] -> [Jenkins creates database] -> [Jenkins runs container] -> [Container builds and tests] -> [Container processes results] -> [Jenkins destroys database] 

이 그것을 할 여러 가지 방법이 있습니다. 가장 쉬운 방법 (추가 소프트웨어가 필요하지 않음)은 Jenkins가 지점을 자동으로 병합하도록하는 것입니다. 각 개발자는 작업을 위해 새 분기를 푸시하고 테스트가 성공하면 Jenkins는 분기를 마스터로 병합합니다. 사용자는 마스터 브랜치에 직접 쓰기를 권유하여이를 적용 할 수 없습니다.

다른 방법은 젠킨스를 git 호스팅 솔루션에 통합하는 것입니다 (사용하는 경우). GitLab EE supports this은 GitLab에서 각 커밋에 대한 테스트 결과를 볼 수 있음을 의미합니다. GitLab/Bitbucket/같은 것을 사용하지 않는 경우 물론, 이것은 해결책이 아닙니다. ...

관련 문제