젠킨스는 무엇입니까? CI(지속적 통합) 도구를 사용하는 이유는 무엇입니까?
젠킨스란?
젠킨스 다음으로 작성된 오픈 소스 지속적 통합 서버입니다. Java 자동화된 방식으로 지속적인 통합 프로세스를 달성하기 위해 일련의 작업을 조율합니다. Jenkins는 소프트웨어 구축, 테스트, 문서화, 배포 및 기타 소프트웨어 개발 수명 주기 단계까지 소프트웨어의 전체 개발 수명 주기를 지원합니다.
Jenkins는 전 세계적으로 널리 사용되는 애플리케이션으로, 약 300만 건의 설치가 이루어졌으며 매일 증가하고 있습니다. Jenkins를 사용하면 소프트웨어 회사는 소프트웨어 개발 프로세스를 가속화할 수 있습니다. Jenkins는 빠른 속도로 빌드와 테스트를 자동화할 수 있기 때문입니다.
이는 서버 기반 애플리케이션이며 Apache Tomcat과 같은 웹 서버가 필요합니다. Jenkins 소프트웨어가 인기를 얻은 이유는 프로젝트 개발 중에 발생하는 반복 작업을 모니터링하기 때문입니다. 예를 들어 팀이 프로젝트를 개발하는 경우 Jenkins는 프로젝트 빌드를 지속적으로 테스트하고 개발 초기 단계에서 오류를 보여줍니다.
지속적인 통합이란 무엇입니까?
지속적인 통합 여러 개발자의 코드 변경 사항을 단일 프로젝트에 여러 번 통합하는 프로세스입니다. 소프트웨어는 코드 커밋 후 즉시 테스트됩니다. 각 코드 커밋을 통해 코드가 빌드되고 테스트됩니다. 테스트를 통과하면 배포를 위해 빌드가 테스트됩니다. 배포가 성공하면 코드가 프로덕션으로 푸시됩니다.
이 커밋, 빌드, 테스트 및 배포는 지속적인 프로세스이므로 지속적인 통합/배포라는 이름이 붙습니다.
Jenkins는 어떻게 작동합니까?
Jenkins는 서버 기반 애플리케이션이며 다음과 같은 다양한 플랫폼에서 실행하려면 Apache Tomcat과 같은 웹 서버가 필요합니다. Windows, 리눅스, macOS, Unix 등 Jenkins를 사용하려면 Jenkins 서버가 수행할 일련의 단계인 파이프라인을 생성해야 합니다. Jenkins 지속적 통합 파이프라인은 다음을 위해 설계된 도구 세트로 구성된 강력한 도구입니다. 주인, 모니터, 편집하다 and test 코드 또는 다음과 같은 코드 변경:
- 지속적인 통합 서버 (젠킨스, Bamboo, CruiseControl, TeamCity및 기타)
- 소스 제어 도구 (예: CVS, SVN, GIT, Mercurial, Perforce, ClearCase 등)
- 빌드 도구 (메이크, ANT, 메이븐, 아이비, Gradle및 기타)
- 자동화 테스트 프레임워크 (Selenium, Appium, TestComplete, UFT 등)
젠킨 역사
- 카와구치 코스케 Java SUN Microsystems에서 일하는 개발자는 반복적으로 코드를 작성하고 오류를 수정하는 데 지쳤습니다. 2004년에 빌드 및 테스트 작업을 자동화하는 Hudson이라는 자동화 서버를 만들었습니다.
- 2011년에 Oracle Sun Microsystems의 소유주가 Hudson 오픈소스 커뮤니티와 분쟁이 생겨서 Hudson을 포크하여 Jenkins로 이름을 바꾸었습니다.
- 허드슨과 젠킨스는 모두 독립적으로 운영을 계속했습니다. 하지만 짧은 시간 안에 젠킨스는 많은 프로젝트와 기여자를 확보한 반면 허드슨은 32개의 프로젝트만 유지했습니다. 시간이 지나면서 젠킨스는 더 인기를 얻었고 허드슨은 더 이상 유지되지 않습니다.
Jenkins와 지속적인 통합을 사용하는 이유는 무엇입니까?
어떤 사람들은 소프트웨어를 개발하는 구식 방법이 더 나은 방법이라고 생각할 수도 있습니다. 다음 예제를 통해 Jenkins를 사용한 CI의 장점을 이해해 보겠습니다.
약 10명의 개발자가 하나의 프로젝트를 진행하고 있다고 상상해 봅시다. 공유 저장소. 일부 개발자는 25일 만에 작업을 완료하는 반면 다른 개발자는 완료하는 데 30일이 걸립니다.
젠킨스 이전 | 젠킨스 이후 |
---|---|
모든 개발자는 할당된 코딩 작업을 완료한 후 동시에 코드를 커밋하곤 했습니다. Later, 빌드가 테스트되고 배포되었습니다.
코드 커밋이 빌드되었으며 테스트 주기가 매우 드물었고 며칠 후에 단일 빌드가 완료되었습니다. |
개발자가 코드를 커밋하는 즉시 코드가 빌드되고 테스트됩니다. Jenkin은 하루 동안 여러 번 코드를 빌드하고 테스트합니다.
빌드가 성공하면 Jenkins는 소스를 테스트 서버에 배포하고 배포 팀에 알립니다. 빌드가 실패하면 Jenkins는 개발자 팀에 오류를 알립니다. |
코드가 한꺼번에 빌드되었기 때문에 일부 개발자는 다른 개발자가 코딩을 마칠 때까지 기다려야 빌드를 확인할 수 있습니다. | 코드는 개발자가 커밋한 직후에 빌드됩니다. |
여러 커밋에 대한 오류를 격리, 감지 및 수정하는 것은 쉬운 작업이 아닙니다. | 단일 개발자가 커밋할 때마다 코드가 빌드되므로 빌드 실패의 원인이 된 코드가 누구인지 쉽게 감지할 수 있습니다. |
코드 빌드 및 테스트 프로세스 전적으로 수동이라 실패할 확률이 많습니다. | 자동화된 빌드 및 테스트 프로세스로 타이밍을 절약하고 결함을 줄입니다. |
모든 오류가 수정되고 테스트된 후 코드가 배포됩니다. | 모든 성공적인 빌드와 테스트가 끝난 후에 코드가 배포됩니다. |
개발주기가 느리다 | 개발주기가 빠릅니다. 사용자는 새로운 기능을 더욱 쉽게 사용할 수 있습니다. 이익이 증가합니다. |
지속적인 통합에 대한 실제 사례 연구
나는 여러분 모두가 오래된 Nokia 휴대폰에 대해 알고 있다고 확신합니다. Nokia는 Nightly Build라는 절차를 구현하곤 했습니다. 낮 동안 다양한 개발자가 여러 번 커밋한 후 소프트웨어가 매일 밤 구축되었습니다. 소프트웨어는 하루에 한 번만 빌드되었기 때문에 대규모 코드 기반에서 오류를 격리, 식별 및 수정하는 것은 엄청난 고통입니다.
Later, 그들은 지속적인 통합 접근 방식을 채택했습니다. 개발자가 코드를 커밋하자마자 소프트웨어가 구축되고 테스트되었습니다. 오류가 감지되면 해당 개발자는 신속하게 결함을 수정할 수 있습니다.
젠킨스 플러그인
기본적으로 Jenkins에는 제한된 기능 세트가 제공됩니다. Jenkins 설치를 Git과 같은 버전 제어 도구와 통합하려면 Git 관련 플러그인을 설치해야 합니다. 실제로 Maven과 같은 도구와의 통합을 위해서는 Amazon EC2의 경우 Jenkins에 해당 플러그인을 설치해야 합니다.
젠킨스 사용의 장점
- Jenkins는 매우 개방적인 커뮤니티에 의해 관리되고 있습니다. 그들은 매달 공개 회의를 열고 대중으로부터 Jenkins 프로젝트 개발을 위한 의견을 수렴합니다.
- 지금까지 약 280개의 티켓이 마감되었으며 프로젝트는 XNUMX개월마다 안정적인 릴리스를 게시합니다.
- 기술이 성장함에 따라 Jenkins도 성장합니다. 지금까지 Jenkins의 플러그인 데이터베이스에는 약 320개의 플러그인이 게시되어 있습니다. 플러그인을 사용하면 Jenkins는 더욱 강력해지고 기능이 풍부해집니다.
- Jenkins 도구는 클라우드 기반 아키텍처도 지원하므로 클라우드 기반 플랫폼에 Jenkins를 배포할 수 있습니다.
- 젠킨스가 인기를 얻은 이유는 개발자가 개발자를 위해 만들었기 때문이다.
Jenkins 사용의 단점
Jenkins는 매우 강력한 도구이지만 결함도 있습니다.
- 현재 UI 트렌드에 비해 인터페이스가 구식이고 사용자 친화적이지 않습니다.
- Jenkins는 많은 개발자들에게 사랑을 받고 있지만 Jenkins는 서버에서 실행되고 활동을 모니터링하려면 서버 관리자로서 약간의 기술이 필요하기 때문에 유지 관리가 쉽지 않습니다.
- 많은 사람들이 Jenkins를 구현하지 않는 이유 중 하나는 Jenkins를 설치하고 구성하는 것이 어렵기 때문입니다.
- 작은 설정 변경으로 인해 지속적인 통합이 정기적으로 중단됩니다. 지속적인 통합이 일시 중지되므로 개발자의 주의가 필요합니다.
결론
- 지속적인 통합에서는 코드 커밋 후 소프트웨어가 즉시 구축되고 테스트됩니다.
- 소프트웨어 프로젝트에서 지속적인 통합을 위한 일련의 작업을 조정하는 데 사용되는 Jenkins
- Jenkins 이전에는 모든 개발자가 할당된 코딩 작업을 완료했을 때 코드를 모두 동시에 커밋하곤 했습니다. Later, 빌드가 테스트되고 배포되었습니다.
- Jenkins 이후에는 개발자가 코드를 커밋하자마자 코드가 빌드되고 테스트됩니다. Jenkin은 하루 동안 여러 번 코드를 빌드하고 테스트합니다.
- 기본적으로 Jenkins에는 제한된 기능 세트가 제공됩니다. Jenkins 설치를 Git과 같은 버전 제어 도구와 통합하려면 Git 관련 플러그인을 설치해야 합니다. 또한 확인 최고의 Jenkins 대체 도구
- Jenkins의 가장 큰 장점은 Jenkins 프로젝트 개발을 위해 공개 회의를 개최하고 대중의 의견을 수렴하는 커뮤니티에서 관리된다는 것입니다.
- Jenkins의 가장 큰 단점은 현재 UI 트렌드에 비해 인터페이스가 오래되고 사용자 친화적이지 않다는 것입니다. 보다 현대적인 사용자 환경을 제공할 수 있는 다른 옵션을 고려하고 있다면 다음 중 일부를 살펴보는 것이 좋습니다. 최고의 지속적 통합 도구 사용할 수 있습니다.