이 블로그에서는 데이터베이스와 통신하는 Java 애플리케이션을 위해 Jenkins 및 Docker를 사용하여 배포 파이프라인을 만드는 방법을 설명합니다.
Jenkins는 파이프라인 생성을 지원합니다. 파이프라인은 Groovy 프로그래밍 언어에 기반한 파이프라인 DSL(도메인별 언어)을 사용하는 간단한 텍스트 스크립트로 구축됩니다. 이 스크립트는 일반적으로 젠킨스 파일
를 정의하고, 여러
설정한 매개변수에 따라 간단한 작업과 복잡한 작업을 모두 실행할 수 있는 단계입니다. 일단 생성된 파이프라인은 코드를 빌드하고 커밋에서 배포까지 애플리케이션을 구동하는 데 필요한 작업을 오케스트레이션할 수 있습니다.
파이프라인은 다음과 같이 구성됩니다. 단계, 노드 그리고 단계. 파이프라인은 노드(Jenkins 설치의 일부인 컴퓨터)에서 실행됩니다. 파이프라인은 종종 여러 단계로 구성됩니다. 한 단계는 여러 단계로 구성됩니다. 읽기
파이프라인 시작하기 에서 자세한 내용을 확인하세요.
애플리케이션의 경우 기본 흐름은 다음과 같습니다:
사용된 애플리케이션의 전체 소스 코드는 다음 링크에서 확인할 수 있습니다. github.com/arun-gupta/docker-jenkins-pipeline.
이 애플리케이션은 웹앱
디렉토리를 클릭합니다. 디렉터리에 대한 연결이 열립니다. 카우치베이스 데이터베이스를 사용하여 간단한 JSON 문서를 저장합니다. 카우치베이스 자바 SDK.
이 애플리케이션에는 데이터베이스에 실제로 지속된 문서가 포함되어 있는지 확인하는 테스트도 있습니다.
많은 분들께 감사드립니다. 알렉스소토브 Jenkins 구성을 도와주셔서 감사합니다.
시작해보자!
Jenkins 다운로드 및 설치
- 다음에서 Jenkins를 다운로드하세요. jenkins.io. 이 테스트는 Jenkins 2.21.
- Jenkins를 시작합니다:
1젠킨스_홈=~/.jenkins 자바 -jar ~/다운로드/jenkins-2.21.war --httpPort=9090
이 명령은 모든 구성 정보가 저장된 홈 디렉터리를 지정하여 Jenkins를 시작합니다. 또한 Jenkins가 실행되는 포트도 정의합니다.
경청하고 있습니다,9090
이 경우 - Jenkins를 처음 시작하면 콘솔에 다음과 같은 메시지가 표시됩니다:
1234567891011121314***************************************************************************************************************************************************************************************Jenkins 이니셜 설정 는 필수. An 관리자 사용자 has been 생성 그리고 a 비밀번호 생성됨.제발 사용 의 다음 비밀번호 에 진행 에 설치:3521fbc3d40448efa8942f8e464b2dd9이 may 또한 be 발견 에서: /사용자/arungupta/.jenkins/비밀/초기 관리자 비밀번호***************************************************************************************************************************************************************************************
여기에 표시된 비밀번호를 복사합니다. 이 비밀번호는 Jenkins의 잠금을 해제하는 데 사용됩니다. - 다음 주소에서 Jenkins 콘솔에 액세스하세요. localhost:9090 를 클릭하고 비밀번호를 붙여넣습니다:
를 클릭합니다.다음
. - 그림과 같이 첫 번째 관리자 사용자를 만듭니다:
를 클릭합니다.저장 및 완료
. - 를 클릭합니다.
추천 플러그인 설치
:
여러 기본 플러그인이 설치되어 있습니다:
Ant와 Subversion이 기본 플러그인이라는 사실이 놀라웠습니다. - 로그인 화면이 표시됩니다.
앞서 지정한 사용자 아이디와 비밀번호를 입력합니다. - 드디어 Jenkins를 사용할 준비가 되었습니다:
기본적인 Jenkins를 시작하려면 꽤 많은 단계를 거쳐야 합니다. Jenkins를 시작하려면 정말 이 모든 단계를 거쳐야 하나요? 더 쉽고, 더 간단하고, 더 멍청하고, 더 게으른 방법으로 Jenkins를 시작할 수 있는 방법이 있을까요? 구성에 대한 관례 따르기
를 클릭하고 원클릭으로 사전 구성된 설치를 제공합니다.
Jenkins 플러그인 설치
Jenkins에 필요한 플러그인을 설치합니다.
- Java 프로젝트가 Maven을 사용하여 빌드된 경우 Jenkins에서 Maven을 구성해야 합니다. 를 클릭하고
젠킨스 관리
,글로벌 도구 구성
,Maven 설치
을 클릭하고 Maven의 위치를 지정합니다.
도구의 이름을Maven3
나중에 구성에 사용되는 이름이기 때문입니다. 다시 말하지만, 사용자가 위치를 지정할 것으로 기대하는 대신 Jenkins가 Maven의 기본 위치를 선택할 수 없는 이유는 무엇입니까? - 를 클릭합니다.
젠킨스 관리
,플러그인 관리
,사용 가능
탭에서도커 파이프
. 선택CloudBees 도커 파이프라인
를 클릭하고재시작 없이 설치
.
를 클릭합니다.재시작 없이 설치
.도커 파이프라인 플러그인 플러그인은 젠킨스 파일을 이해하고 실행합니다.
에 나열된 명령을 실행합니다. - 다음 화면에는 설치된 플러그인 목록이 표시됩니다:
마지막 줄은 CloudBees 도커 파이프라인 플러그인이 성공적으로 설치되었음을 보여줍니다. 선택Jenkins 다시 시작
체크박스를 선택합니다. 그러면 재시작 젠킨스도 설치됩니다.
젠킨스 작업 만들기
Jenkins에서 파이프라인을 실행할 작업을 만들어 보겠습니다.
- Jenkins가 다시 시작되면 로그인 화면이 표시됩니다. 앞서 만든 사용자 아이디와 비밀번호를 입력합니다. 그러면 다음과 같은 화면으로 돌아옵니다.
플러그인/업그레이드 설치
페이지로 이동합니다. 왼쪽 상단의 Jenkins 아이콘을 클릭하면 기본 대시보드가 표시됩니다:
- 를 클릭합니다.
새로운 일자리 창출
를 클릭하고 이름을도커-젠킨스-파이프라인
을 클릭하고 유형을 파이프라인으로 선택합니다:
확인을 클릭합니다. - 그림과 같이 파이프라인을 구성합니다:
이 경우 로컬 git 리포지토리가 사용됩니다. github에서 호스팅되는 리포지토리를 선택할 수 있습니다. 또한 이 리포지토리는 일정한 간격으로 git 훅 또는 폴링으로 구성하여 파이프라인을 트리거할 수 있습니다. 리포지토리의
저장
를 클릭하여 구성을 저장합니다.
젠킨스 빌드 실행
작업을 시작하기 전에 Couchbase 데이터베이스를 명시적으로 다음과 같이 시작해야 합니다:
1 |
도커 실행 -d --이름 db -p 8091-8093:8091-8093 -p 11210:11210 arungupta/oreilly-카우치베이스:최신 |
이 문제는 다음 이후에 해결됩니다. #9 가 수정되었습니다. http://localhost:8091 에서 카우치베이스에 액세스할 수 있는지 확인합니다. 관리자
를 로그인 및 비밀번호
을 비밀번호로 입력합니다. 를 클릭합니다. 데이터 버킷
탭을 클릭하고 책
버킷이 생성되었습니다.
를 클릭합니다. 지금 구축
와 유사한 출력이 표시될 것입니다:
모든 녹색이 좋습니다!
무대 뒤에서 무슨 일이 일어났는지 이해해 보겠습니다. 젠킨스 파일 는 파이프라인이 어떻게 구축되는지 설명합니다. 최상위 레벨에서는 패키지, 만들기, 만들기
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
읽을 만한 추가 참고 자료가 있습니다:
- 젠킨스 파일 시작하기
- CloudBees 도커 파이프라인 플러그인
- CloudBees 도커 파이프라인 플러그인 사용 가이드
- 젠킨스파일 DSL 참조
- 자바존 2016의 젠킨스 파이프라인 강연
Couchbase에 대한 자세한 정보:
다음 주소로 버그를 제출해 주세요. github.com/arun-gupta/docker-jenkins-pipeline/issues 를 클릭하거나 PR을 보내세요.