이 블로그에서는 데이터베이스와 통신하는 Java 애플리케이션을 위해 Jenkins 및 Docker를 사용하여 배포 파이프라인을 만드는 방법을 설명합니다.

Jenkins는 파이프라인 생성을 지원합니다. 파이프라인은 Groovy 프로그래밍 언어에 기반한 파이프라인 DSL(도메인별 언어)을 사용하는 간단한 텍스트 스크립트로 구축됩니다. 이 스크립트는 일반적으로 젠킨스 파일를 정의하고, 여러
설정한 매개변수에 따라 간단한 작업과 복잡한 작업을 모두 실행할 수 있는 단계입니다. 일단 생성된 파이프라인은 코드를 빌드하고 커밋에서 배포까지 애플리케이션을 구동하는 데 필요한 작업을 오케스트레이션할 수 있습니다.

파이프라인은 다음과 같이 구성됩니다. 단계, 노드 그리고 단계. 파이프라인은 노드(Jenkins 설치의 일부인 컴퓨터)에서 실행됩니다. 파이프라인은 종종 여러 단계로 구성됩니다. 한 단계는 여러 단계로 구성됩니다. 읽기
파이프라인 시작하기 에서 자세한 내용을 확인하세요.

애플리케이션의 경우 기본 흐름은 다음과 같습니다:

docker-pipeline-jenkins

사용된 애플리케이션의 전체 소스 코드는 다음 링크에서 확인할 수 있습니다. github.com/arun-gupta/docker-jenkins-pipeline.

이 애플리케이션은 웹앱 디렉토리를 클릭합니다. 디렉터리에 대한 연결이 열립니다. 카우치베이스 데이터베이스를 사용하여 간단한 JSON 문서를 저장합니다. 카우치베이스 자바 SDK.
이 애플리케이션에는 데이터베이스에 실제로 지속된 문서가 포함되어 있는지 확인하는 테스트도 있습니다.

많은 분들께 감사드립니다. 알렉스소토브 Jenkins 구성을 도와주셔서 감사합니다.

시작해보자!

Jenkins 다운로드 및 설치

  • 다음에서 Jenkins를 다운로드하세요. jenkins.io. 이 테스트는 Jenkins 2.21.
  • Jenkins를 시작합니다:

    이 명령은 모든 구성 정보가 저장된 홈 디렉터리를 지정하여 Jenkins를 시작합니다. 또한 Jenkins가 실행되는 포트도 정의합니다.
    경청하고 있습니다, 9090 이 경우
  • Jenkins를 처음 시작하면 콘솔에 다음과 같은 메시지가 표시됩니다:

    여기에 표시된 비밀번호를 복사합니다. 이 비밀번호는 Jenkins의 잠금을 해제하는 데 사용됩니다.
  • 다음 주소에서 Jenkins 콘솔에 액세스하세요. localhost:9090 를 클릭하고 비밀번호를 붙여넣습니다:
    docker-pipeline-jenkins-unlock
    를 클릭합니다. 다음.
  • 그림과 같이 첫 번째 관리자 사용자를 만듭니다:
    docker-pipeline-jenkins-create-admin-user
    를 클릭합니다. 저장 및 완료.
  • 를 클릭합니다. 추천 플러그인 설치:
    docker-pipeline-jenkins-install-suggested-plugins
    여러 기본 플러그인이 설치되어 있습니다:
    docker-pipeline-jenkins-installing-suggested-plugins
    Ant와 Subversion이 기본 플러그인이라는 사실이 놀라웠습니다.
  • 로그인 화면이 표시됩니다.
    docker-pipeline-jenkins-login
    앞서 지정한 사용자 아이디와 비밀번호를 입력합니다.
  • 드디어 Jenkins를 사용할 준비가 되었습니다:
    docker-pipeline-jenkins-start-using

기본적인 Jenkins를 시작하려면 꽤 많은 단계를 거쳐야 합니다. Jenkins를 시작하려면 정말 이 모든 단계를 거쳐야 하나요? 더 쉽고, 더 간단하고, 더 멍청하고, 더 게으른 방법으로 Jenkins를 시작할 수 있는 방법이 있을까요? 구성에 대한 관례 따르기
를 클릭하고 원클릭으로 사전 구성된 설치를 제공합니다.

Jenkins 플러그인 설치

Jenkins에 필요한 플러그인을 설치합니다.

  1. Java 프로젝트가 Maven을 사용하여 빌드된 경우 Jenkins에서 Maven을 구성해야 합니다. 를 클릭하고 젠킨스 관리, 글로벌 도구 구성, Maven 설치을 클릭하고 Maven의 위치를 지정합니다.docker-pipeline-jenkins-configure-maven
    도구의 이름을 Maven3 나중에 구성에 사용되는 이름이기 때문입니다. 다시 말하지만, 사용자가 위치를 지정할 것으로 기대하는 대신 Jenkins가 Maven의 기본 위치를 선택할 수 없는 이유는 무엇입니까?
  2. 를 클릭합니다. 젠킨스 관리, 플러그인 관리, 사용 가능 탭에서 도커 파이프. 선택 CloudBees 도커 파이프라인를 클릭하고 재시작 없이 설치. docker-pipeline-jenkins-pipeline-plugin
    를 클릭합니다. 재시작 없이 설치.도커 파이프라인 플러그인 플러그인은 젠킨스 파일을 이해하고 실행합니다.
    에 나열된 명령을 실행합니다.
  3. 다음 화면에는 설치된 플러그인 목록이 표시됩니다:
    docker-pipeline-jenkins-pipeline-plugin-restart-jenkins
    마지막 줄은 CloudBees 도커 파이프라인 플러그인이 성공적으로 설치되었음을 보여줍니다. 선택 Jenkins 다시 시작 체크박스를 선택합니다. 그러면 재시작 젠킨스도 설치됩니다.

젠킨스 작업 만들기

Jenkins에서 파이프라인을 실행할 작업을 만들어 보겠습니다.

  1. Jenkins가 다시 시작되면 로그인 화면이 표시됩니다. 앞서 만든 사용자 아이디와 비밀번호를 입력합니다. 그러면 다음과 같은 화면으로 돌아옵니다. 플러그인/업그레이드 설치 페이지로 이동합니다. 왼쪽 상단의 Jenkins 아이콘을 클릭하면 기본 대시보드가 표시됩니다:
    docker-pipeline-jenkins-dashboard
  2. 를 클릭합니다. 새로운 일자리 창출를 클릭하고 이름을 도커-젠킨스-파이프라인 을 클릭하고 유형을 파이프라인으로 선택합니다:docker-pipeline-jenkins-create-project
    확인을 클릭합니다.
  3. 그림과 같이 파이프라인을 구성합니다:
    docker-pipeline-jenkins-configure-pipeline
    이 경우 로컬 git 리포지토리가 사용됩니다. github에서 호스팅되는 리포지토리를 선택할 수 있습니다. 또한 이 리포지토리는 일정한 간격으로 git 훅 또는 폴링으로 구성하여 파이프라인을 트리거할 수 있습니다. 리포지토리의
    저장 를 클릭하여 구성을 저장합니다.

젠킨스 빌드 실행

작업을 시작하기 전에 Couchbase 데이터베이스를 명시적으로 다음과 같이 시작해야 합니다:

이 문제는 다음 이후에 해결됩니다. #9 가 수정되었습니다. http://localhost:8091 에서 카우치베이스에 액세스할 수 있는지 확인합니다. 관리자 를 로그인 및 비밀번호 을 비밀번호로 입력합니다. 를 클릭합니다. 데이터 버킷 탭을 클릭하고 버킷이 생성되었습니다.
docker-pipeline-couchbase-books
를 클릭합니다. 지금 구축 와 유사한 출력이 표시될 것입니다:
docker-pipeline-jenkins-build-run
모든 녹색이 좋습니다!

무대 뒤에서 무슨 일이 일어났는지 이해해 보겠습니다. 젠킨스 파일 는 파이프라인이 어떻게 구축되는지 설명합니다. 최상위 레벨에서는 패키지, 만들기, 만들기
Docker 이미지, 애플리케이션 실행 및 테스트 실행. 각 단계는 Jenkins 대시보드에서 상자로 표시됩니다. 각 단계에 걸린 총 시간이 상자에 표시됩니다.

각 단계에서 어떤 일이 일어나는지 이해해 보겠습니다.

  • 패키지 - 애플리케이션 소스 코드는 웹앱 디렉터리로 이동합니다. Maven 명령 mvn 클린 패키지 -DskipTests 은 애플리케이션의 JAR 파일을 만드는 데 사용됩니다. maven 프로젝트에는
    를 사용하여 명시적으로 건너뛰는 테스트입니다. -디스킵 테스트. 일반적으로 테스트는 별도의 다운스트림 프로젝트.Maven 프로젝트는 멀리 떨어진 JAR 파일을 생성합니다.
    의 모든 종속성을 포함합니다.
  • 도커 이미지 만들기 - 애플리케이션의 도커 이미지는 다음을 사용하여 빌드됩니다. 도커파일 에서 웹앱 디렉터리로 이동합니다.
    이미지에는 단순히 지방 JAR을 포함하고 다음을 사용하여 실행합니다. java -jar각 이미지에는 다음을 사용하여 빌드 번호로 태그가 지정됩니다. ${env.BUILD_NUMBER}.
  • 애플리케이션 실행 - 애플리케이션을 실행하려면 도커 컨테이너 애플리케이션을 실행해야 하며 데이터베이스 컨테이너의 IP 주소는 도커 인스펙트 명령.데이터베이스 컨테이너와 애플리케이션
    컨테이너가 모두 기본 bridge 네트워크에 연결합니다. 이를 통해 두 컨테이너가 서로 통신할 수 있습니다. 또 다른 개선 사항은 스웜 모드 클러스터에서 파이프라인을 실행하는 것입니다. 이렇게 하려면
    를 사용하여 오버레이 네트워크.
  • 테스트 실행 - 테스트는 컨테이너에 대해 MVN 테스트 명령을 실행합니다. 테스트가 통과되면 이미지가 Docker Hub로 푸시됩니다. 테스트 결과는 어느 쪽이든 캡처됩니다.이 단계에서는 또한 시도/catch/마침내 블록을 추가합니다. 테스트가 통과되면 이미지가 Docker Hub로 푸시됩니다. 이 경우 다음 위치에서 사용할 수 있습니다. hub.docker.com/r/arungupta/docker-jenkins-pipeline/tags/.

몇 가지 할 일 ...

  • 테스트를 다운스트림 프로젝트로 이동(#7)
  • Git 훅 또는 폴링을 사용하여 파이프라인을 트리거합니다(#8)
  • 데이터베이스 시작/종료 자동화(#9)
  • 스웜 모드를 사용하여 도커 엔진 클러스터에서 파이프라인을 실행합니다(#10)
  • 이미지를 빈트레이로 푸시하는 대체 구성 표시(#11)

또 다른 문제점은 전역 변수 구문이 어디에도 문서화되어 있지 않다는 것입니다. 오직 :/job/docker-jenkins-pipeline/pipeline-syntax/globals에서만 사용할 수 있습니다. 이것도 약간 형편없습니다!

불가능한 것이 아니라 아직 구현되지 않았을 뿐입니다." #sadpanda

읽을 만한 추가 참고 자료가 있습니다:

Couchbase에 대한 자세한 정보:

다음 주소로 버그를 제출해 주세요. github.com/arun-gupta/docker-jenkins-pipeline/issues 를 클릭하거나 PR을 보내세요.

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 남기기