Jenkins Git 통합 – 모든 DevOps 전문가에게 유용



이 블로그는 Git과 Jenkins의 통합에 대해 설명합니다. 또한 데모와 함께 Git을 Jenkins와 통합하는 이점에 대해서도 설명합니다.

Jenkins 없이는 확실히 불완전합니다. Jenkins와 Git은 훌륭한 조합입니다. 따라서이 기사에서는 Jenkins Git 통합과 그 장점에 대해 설명합니다. 우리가 다룰 포인터는 다음과 같습니다.

이제 첫 번째 주제부터 시작하겠습니다.





Git이란 무엇인가 – 왜 Git인가 존재하게 되었습니까?

우리 모두는“필요는 모든 발명의 어머니”라는 것을 알고 있습니다. 마찬가지로 Git은 개발자가 Git 이전에 직면 한 특정 필요성을 충족하기 위해 등장했습니다. 이제 VCS (Version Control Systems)에 대한 모든 내용과 Git이 어떻게 생겨 났는지 알아보기 위해 한 걸음 물러서겠습니다.

버전 관리 문서, 컴퓨터 프로그램, 대규모 웹 사이트 및 기타 정보 수집에 대한 변경 관리입니다.



VCS에는 두 가지 유형이 있습니다.

  • 중앙 집중식 버전 관리 시스템 (CVCS)

  • 분산 버전 관리 시스템 (DVCS)



중앙 집중식 VCS

중앙 집중식 버전 제어 시스템 (CVCS)은 중앙 서버를 사용하여 모든 파일을 저장하고 팀 협업을 가능하게합니다. 사용자가 중앙 서버에 직접 액세스 할 수있는 단일 저장소에서 작동합니다.

CVCS에 대한 더 나은 아이디어를 얻으려면 아래 다이어그램을 참조하십시오.

위 다이어그램의 저장소는 각 프로그래머의 워크 스테이션에 직접 연결된 로컬 또는 원격이 될 수있는 중앙 서버를 나타냅니다.

모든 프로그래머는 최신 정보 저장소에있는 데이터가있는 워크 스테이션. 또한 데이터를 변경하거나 범하다 저장소에. 모든 작업은 저장소에서 직접 수행됩니다.

단일 저장소를 유지하는 것이 매우 편리해 보이지만 몇 가지 주요 단점이 있습니다. 그들 중 일부는 다음과 같습니다.

  • 로컬에서 사용할 수 없으므로 작업을 수행하려면 항상 네트워크에 연결해야합니다.

  • 모든 것이 중앙 집중화되어 있기 때문에 중앙 서버가 충돌하거나 손상되면 프로젝트의 전체 데이터가 손실됩니다.

    자바 스윙 사용 방법

분산 VCS가 문제를 해결하는 곳입니다.

분산 VCS

이러한 시스템은 프로젝트 파일의 모든 버전을 저장하기 위해 반드시 중앙 서버에 의존하지 않습니다.Distributed VCS에서 모든 기여자는 기본 저장소의 로컬 복사본 또는 '복제본'을 갖습니다. 여기에서 모든 사람은 기본 저장소에있는 모든 파일과 메타 데이터를 포함하는 자체 로컬 저장소를 유지합니다.

아래 다이어그램을 참조하면 더 잘 이해할 수 있습니다.

위의 다이어그램에서 볼 수 있듯이 모든 프로그래머는 자신의 하드 드라이브에있는 중앙 저장소의 복사본 또는 복제 인 로컬 저장소를 자체적으로 유지 관리합니다. 간섭없이 로컬 저장소를 커밋하고 업데이트 할 수 있습니다.

''라는 작업을 통해 중앙 서버의 새 데이터로 로컬 저장소를 업데이트 할 수 있습니다. 손잡이 ”라는 작업을 통해 기본 저장소의 변경 사항에 영향을줍니다. 푸시 ”로컬 저장소에서.

이제 Git의 정의에 대해 알아 보겠습니다.

  • Git은 고품질 소프트웨어 개발을위한 데이터 보증을 제공하여 분산 된 비선형 워크 플로를 지원하는 분산 버전 제어 도구입니다. Git과 같은 도구를 사용하면 개발 팀과 운영 팀 간의 커뮤니케이션이 가능합니다.

  • 일반적으로 대규모 프로젝트를 개발할 때 많은 수의 공동 작업자가 있습니다. 따라서 프로젝트를 변경하는 동안 공동 작업자 간의 의사 소통이 매우 중요합니다.

  • Git의 커밋 메시지는 팀 간의 커뮤니케이션에서 매우 중요한 역할을합니다. 통신 외에도 Git을 사용하는 가장 중요한 이유는 항상 안정적인 버전의 코드를 가지고 있기 때문입니다.

  • 따라서 Git은 DevOps에서 성공하는 데 중요한 역할을합니다.

Jenkins는 무엇입니까?

Jenkins는 지속적 통합 목적으로 빌드 된 플러그인을 사용하여 Java로 작성된 오픈 소스 자동화 도구입니다. Jenkins는 소프트웨어 프로젝트를 지속적으로 빌드하고 테스트하는 데 사용되어 개발자가 변경 사항을 프로젝트에 더 쉽게 통합하고 사용자가 새로운 빌드를 쉽게 얻을 수 있도록합니다. 또한 수많은 테스트 및 배포 기술과 통합하여 소프트웨어를 지속적으로 제공 할 수 있습니다.

Jenkins를 사용하면 조직은 자동화를 통해 소프트웨어 개발 프로세스를 가속화 할 수 있습니다. Jenkins는 빌드, 문서, 테스트, 패키지, 준비, 배포, 정적 분석 등을 포함하여 모든 종류의 개발 수명주기 프로세스를 통합합니다.

Jenkins는 플러그인의 도움으로 지속적인 통합을 달성합니다. 플러그인을 사용하면 다양한 DevOps 단계를 통합 할 수 있습니다. 특정 도구를 통합하려면 해당 도구에 대한 플러그인을 설치해야합니다. 예를 들어 Git, Maven 2 프로젝트, Amazon EC2, HTML 게시자 등

Jenkins의 장점은 다음과 같습니다.

  • 훌륭한 커뮤니티 지원을 제공하는 오픈 소스 도구입니다.

  • 설치가 너무 쉽습니다.

  • 작업을 쉽게하기 위해 1000 개 이상의 플러그인이 있습니다. 플러그인이 존재하지 않는 경우이를 코딩하여 커뮤니티와 공유 할 수 있습니다.

  • 무료입니다.

  • Java로 빌드되었으므로 모든 주요 플랫폼에 이식 할 수 있습니다.

이제 Jenkins가 기존 SDLC 단점을 어떻게 극복하는지 알게되었습니다. 아래 표는“Before and After Jenkins”의 비교를 보여줍니다.

Jenkins 이전Jenkins 이후
전체 소스 코드가 빌드되고 테스트되었습니다. 빌드 및 테스트 실패시 버그를 찾고 수정하는 것은 어려웠고 시간이 많이 걸리므로 소프트웨어 제공 프로세스가 느려졌습니다.소스 코드에서 만들어진 모든 커밋은 빌드되고 테스트됩니다. 따라서 전체 소스 코드를 확인하는 대신 개발자는 특정 커밋에만 집중하면됩니다. 이로 인해 새로운 소프트웨어가 자주 출시됩니다.
개발자는 테스트 결과를 기다려야합니다.개발자는 실행시 소스 코드에서 이루어진 모든 커밋의 테스트 결과를 알고 있습니다.
전체 과정은 수동입니다당신은소스 코드에 대한 변경 사항을 커밋하면 Jenkins가 나머지 프로세스를 자동화합니다.

Jenkins와 Git이 함께 사용되는 이유는 무엇입니까?

앞서 논의했듯이 가다 소스 제어 관리자입니다. 여기에서 시간이 지남에 따라 발생하는 모든 코드 변경 사항을 추적하고 릴리스 준비가되었을 때 버전의 기준을 맞추기 위해 소스 코드를 보관합니다.

젠킨스 반면에는 지속적인 통합 솔루션입니다. 개발자가 새로운 애플리케이션을 개발하는 동안 수행해야하는 대부분의 작업 (코드 품질 검사, 빌드 아티팩트 보관, 통합 테스트, 다양한 환경에 배포 등)을 자동화하도록 고안되었습니다. CI 솔루션없이 개발자 이러한 반복적 인 비생산적인 작업을 수행하는 데 많은 시간을 소비해야합니다.

장점 :

  • Git과 Jenkins는 모두 매우 강력하지만 강력한 힘에는 큰 책임이 따릅니다. 불필요한 양을 정당화하는 것은 매우 일반적입니다. 빌드 파이프 라인의 복잡성 단순히 할 수 있기 때문입니다.
  • Jenkins는 깔끔한 트릭을 많이 가지고 있지만 Git의 기능을 쉽게 활용할 수 있습니다. 버그 추적이 훨씬 쉬워졌습니다. 시간이 지남에.
  • 빌드하는 코드 버전에주의하고 적절하게 태그를 지정하면됩니다. 이것은 유지 코드에 가까운 릴리스 관련 정보 , Jenkins 빌드 번호 또는 기타 모니 커에 의존하는 것과는 대조적입니다.
  • Git 브랜치 보호 인적 오류의 위험 감소 , 가능한 한 많은 작업을 자동화하면 그러한 사람을 괴롭 히거나 기다려야하는 빈도가 줄어 듭니다.

예:

웹 애플리케이션의 새로운 기능을 예로 들어 보겠습니다. 개발자가 식별되고 작업에 할당되고, 그는 소스 컨트롤에서 기존 코드베이스를 가져옵니다. 예를 들어 Git은 변경하고 단위 테스트를 수행하고 코드 품질을 수동으로 확인하고 새 코드를 Git으로 다시 확인합니다.

그런 다음 코드를 빌드하고, 통합 인스턴스에 배포하고, 통합 테스트를 실행하고, 변경 사항이 만족스러워지면 프로덕션 배포를 요청해야합니다. 이제이 테스트, 구축, 품질 검사 및 배포 섹션을 처리 할 부하가 있다면 가난한 개발자는 기능의 논리를 구현하고 개선하는 등 자신이 잘하는 일에 더 집중할 수있었습니다.

이 미니언은 젠킨스입니다. 변경 사항이 소스 제어 (Git)에 체크인되면이 모든 활동을 실행하는 오케 스트레이터 역할을하므로 개발자가 변경 한 내용이 프로덕션 배포에 적합한 지 여부에 대한 빠른 피드백을 개발자에게 제공합니다.매우 유연하고 오픈 소스이며 원하는 거의 모든 작업을 수행 할 수있는 수많은 플러그인이 있습니다.

데모

여기서는 Git을 Jenkins와 통합하는 방법을 살펴 보겠습니다. 따라야 할 5 단계가 있습니다.

1. 샘플 프로그램을 만듭니다.

Java, Python 또는 기타 프로그램과 같이 원하는 샘플 프로그램을 만들 수 있습니다. 여기서 우리는 간단한 Python 프로그램 Hello, World!를 인쇄합니다.

2. Jenkins 작업을 만듭니다.

  • 여기에서 먼저 Jenkins 시작 명령 프롬프트를 사용합니다.

  • 이를 위해 먼저 시스템의 Jenkins 위치로 이동하여 다음 명령을 사용해야합니다. java -jar jenkins.war

  • 이 명령을 실행 한 후 웹 브라우저를 열고 링크를 사용하여 Jenkins의 홈페이지로 이동합니다. localhost : 8080 . 이것이 기본 포트 번호입니다.

  • Jenkins 홈페이지 열기 사용자 이름과 비밀번호를 입력합니다.

  • 프로젝트를 생성하려면 새로운 물품 그리고 입력 프로젝트 이름 그리고 선택 자유형 프로젝트 . 확인을 클릭하십시오.

3.이 프로그램을 Github에 추가합니다.

  • git bash 열기 시스템에서. 탐색 프로그램의 위치에. 명령을 사용하여 빈 저장소 초기화 자식 초기화 .

  • 명령 사용 git add. 작업 디렉토리에서 스테이징 영역에 파일을 추가합니다.

  • 이제 명령을 사용하여 파일을 로컬 저장소에 추가하십시오. git commit -m“demo.py file added” .

  • 이제 당신은 푸시 이 파일을 원격 저장소에 추가합니다. 이를 위해 GitHub 계정으로 이동하여 새 공용 저장소를 만듭니다. 이제이 저장소의 위치를 ​​복사하고 git bash 터미널로 이동하십시오. 여기에 명령을 입력하십시오 git remote add origin . 이제 원격 저장소에 연결 했으므로 이제 다음 명령을 사용하여 코드를 푸시 할 수 있습니다. git push -u origin master. 이를 확인하려면 GitHub 계정으로 이동하여 페이지를 새로 고칩니다. 거기에 추가 된 파일을 볼 수 있습니다.

4. Jenkins에 Git 플러그인을 추가합니다.

  • Jenkins의 홈페이지에서 Jenkins 관리 .

  • 다음 클릭 플러그인 관리 . 여기 설치된 섹션에서 Git 플러그인을 확인하십시오. 여기에서 사용할 수없는 경우 사용 가능한 섹션에서 검색하여 다운로드하십시오.

5. 빌드를 트리거하도록 Jenkins 작업을 구성합니다.

  • 2 단계에서 만든 Jenkins의 프로젝트로 이동합니다. 여기 소스 코드 관리 섹션에서 자식 선택 3 단계에서 생성 한 공용 저장소의 링크를 입력합니다. 빌드 트리거 섹션 , 클릭 SCM 폴링 옵션 . 여기 일정 부분에서 공백으로 구분 된 5 개의 별표를 입력해야합니다. 이것은 귀하의 작업에 대한 cron 구문에 불과합니다. 즉, Jenkins는 매분 소스 코드의 변경 사항을 확인하고 변경 사항이 있으면 Jenkins 빌드를 트리거합니다.

  • 클릭 대다 그리고 나서 저장 . 다음으로 프로젝트 홈 페이지에서 지금 구축 . 그러면 프로젝트가 실행되고 콘솔 출력에서 ​​프로그램이 Jenkins 작업의 상태를 출력하는 것을 볼 수 있습니다. 모든 것이 정상이면 다음과 같이 표시됩니다. 성공 .

그래서 이것이 Jenkins Git 통합이 수행되는 방법입니다. 이것으로 Jenkins Git 통합에 대한이 기사의 끝까지 왔습니다. 이 기사를 즐기 셨기를 바랍니다.

이제 무엇을 이해 했습니까? Jenkins Git 통합 이것 좀 봐 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka DevOps 인증 교육 과정은 학습자가 DevOps가 무엇인지 이해하고 Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack 및 GIT와 같은 다양한 DevOps 프로세스 및 도구에 대한 전문 지식을 습득하여 SDLC의 여러 단계를 자동화하는 데 도움이됩니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.