JavaRush /Java Blog /Random-KO /지속적인 통합
Nikita Koliadin
레벨 40
Днепр

지속적인 통합

Random-KO 그룹에 게시되었습니다
안녕하세요, 동료 여러분! 컴퓨터가 지속적으로 프로젝트를 빌드하도록 강요하는 데 지치셨나요? 그렇다면 이 글은 당신을 위한 것입니다! 지속적인 통합 - 1이 기사에서는 지속적 통합(이하 간단히 CI)에 관한 자료를 간단하고 명확하게 제시하려고 노력할 것이며 "이것이 무엇입니까?", "왜?" 와 같은 간단한 질문에 답할 것입니다. 그리고 왜?" 테스트 프로젝트의 예를 들어 보겠습니다. 이 문서는 최소한 Build System: Maven 에 익숙하고, Git 사용 방법을 알고 , 프로젝트를 GitHub 에 푸시하는 방법을 알고 있는 숙련된 사용자를 대상으로 합니다 .

"지속적 통합이란 무엇입니까?"

Wiki가 이 질문에 대해 무엇을 말하는지 살펴보겠습니다 . 지속적인 통합(CI, English Continuous Integration)은 하루에 여러 번 작업 복사본을 공통의 주요 개발 브랜치에 병합하고 초기에 프로젝트의 자동화된 빌드를 자주 수행하는 소프트웨어 개발 방식입니다. 잠재적인 결함을 감지하고 통합 문제에 대한 솔루션을 제공합니다. 무섭지 않나요? 이 용어를 간단한 단어로 설명해 보겠습니다. 지속적인 통합은 버그와 비호환성을 감지하기 위해 특정 컴퓨터에서 특정 구성으로 소프트웨어를 구축하고 자동화된 테스트를 수행하는 시스템입니다. 좋아요, 문제 없습니다. 우리가 알아냈지만 다음과 같은 논리적인 질문이 생깁니다.

CI가 왜 필요한가요?

대규모 프로젝트를 작성 중이고 기능을 추가/변경해야 한다고 가정해 보겠습니다. 성공적으로 작성하고, 테스트를 작성하고, 실행하면 모든 것이 괜찮은 것처럼 보이지만 그렇지 않습니다. 한 기능의 변경이 다른 기능에 영향을 주고, 다른 기능은 세 번째 기능에 영향을 미치다가 버그가 어딘가에 빠져 오류가 발생하는 상황이 있습니다. 예, 이것이 잘못 설계된 프로젝트일 가능성이 높다고 말할 수 있으며 귀하가 옳을 수도 있습니다. 하지만 그렇지 않고 이러한 연결이 실제로 존재해야 한다면 어떻게 될까요? 그리고 프로젝트를 두 번 이상 작성하고 생성하는 경우(종종 발생하는 경우)는 어떻게 됩니까? 새로 작성된 기능에 대해 테스트를 실행했고 긍정적인 결과를 얻었습니다. 당신은 빨리 약속을 한 다음 어딘가로 밀고 값 비싼 위스키를 마시면서 집에서 시가를 어떻게 피울 것인지 이미 생각하고 있지만 그렇지 않습니다. 안타깝게도 당신의 동료나 상사는 당신의 커밋으로 인해 전체 빌드가 중단되었다고 말합니다. 당신은 당신이 프로그래머이고 모든 것을 테스트했다고 당황하면서 말합니다. 그러나 종종 전체 프로젝트를 지속적으로 테스트할 시간이 없으며 전체 어셈블리가 아닌 변경한 코드 부분만 테스트했습니다. 이것이 바로 CI가 우리를 도와주는 곳입니다. 리소스에 푸시할 때마다 CI는 프로젝트를 처음부터 빌드하고 모든 테스트를 실행합니다. 모든 테스트가 통과하고 프로젝트가 빌드된 경우에만 빌드가 통과 상태를 받습니다 . 그렇지 않으면 다시 돌아와서 무엇이 잘못되었는지 확인할 기회가 있을 것입니다. 이제 "왜 이것이고 그렇지 않은가? " 라는 질문을 던져야 할 때입니다. 소프트웨어 구현을 살펴보세요. 예제 이미 말했듯이 이 글은 Maven과 Git에 익숙한 사람들을 대상으로 작성되었습니다. 그러므로 CI 등의 설정 외에 제가 하는 일이 무엇인지, 어떻게 하는지 알아주셨으면 좋겠습니다.
  1. 먼저 간단한 Maven 테스트 프로젝트를 만들고 "Hello World!"를 인쇄하는 클래스를 만들어 보겠습니다. 몇 가지 간단한 작업을 수행하고 이 클래스에 대한 가장 간단한 테스트를 작성해 보겠습니다.

    결과적으로 우리는 기본 프로젝트 구조를 갖게 됩니다.

    지속적인 통합 - 2

    모든 소스는 내 GitHub에 있습니다. Main에 무엇을 작성하고 어떤 테스트가 있을지는 중요하지 않습니다.

  2. 우리는 프로젝트를 GitHub에 푸시합니다.

  3. 이제 재미있는 부분이 나옵니다. CI 중에서 가용성과 안정성 때문에 Travis CI를 선택했습니다. Travis는 GitHub를 사용하여 소스 코드를 호스팅합니다.

    Travis CI 홈페이지 에 접속하여 GitHub를 통해 로그인을 해주세요. 프로필에서 프로젝트를 연결합니다.

    지속적인 통합 - 3

    누를 때마다 모든 것이 조립 준비가 되어 있지만 문제는 어떻게 조립하느냐입니다.

  4. 우리가 사랑하는 IDEA로 돌아가서 .travis.yml 파일을 만듭니다.

    이 파일은 Travis 빌드 구성을 담당합니다. 가장 인기 있는 설정을 살펴보겠습니다.

    일반적인 Travis 구성은 다음과 같습니다.

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    명확성을 위해 링크와 함께 설명을 추가했습니다.

  5. 다시 GitHub로 푸시하고 Travis 웹사이트를 열고 프로젝트를 선택하고 빌드를 모니터링합니다. 결과적으로 성공적인 빌드에 대한 알림을 받습니다.

    지속적인 통합 - 4 지속적인 통합 - 5

    또한 사이트에서 프로젝트가 성공적으로 조립되었다는 배지를 볼 수 있으며 이를 README.md에 삽입할 수 있습니다.

    지속적인 통합 - 6
유용한 링크: 본문 내용에 오류 및 누락이 있을 수 있습니다. 관심을 가져주셔서 감사합니다!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION