본문 바로가기
Infra/Jenkins

[Jenkins] Jenkins & Github 연동 및 자동배포 구성하기 1

by dbjh 2020. 12. 29.
반응형

이 글을 시작으로  jenkins와 github의 특정 프로젝트를 연동 시켜두고 해당 프로젝트에서 push 발생 시, jenkins가 이것을 인식하고 자동으로 배포하는 과정에 대해서 진행하려고한다. 배포될 프로젝트는 spring boot 프로젝트로 진행할 것이고 빌드 툴은 gradle을 사용할 예정이다. (필자는 젠킨스를 도커 컨테이너로 실행시켰으니 이점을 참고하길 바람 - 도커환경이 아니어도 상관없음)

일단 이번 글에서는 젠킨스로 깃허브 레포지토리의 소스코드를 pull하여 빌드 후에 실행시키는 과정에 대해 알아보도록하자.

출처 : 구글검색

 

0. 환경구성

이 글에서는 AWS 인스턴스 환경에서 진행될 예정이고 jenkins도 해당 인스턴스 위에서 실행될 예정이다. 또한 프로젝트 코드도 해당 인스턴스 위에 배포될 예정이다. AWS PC에 git 설치가 안되어 있다면, 아래 링크를 참고하여 설치하도록 하자. (docker 컨테이너로 젠킨스를 실행 시켰다면, 깃을 설치할 필요없음)

 

Git - Git 설치

이 책은 Git 2.0.0 버전을 기준으로 썼다. 대부분의 명령어는 그 이전 버전에서도 잘 동작하지만, 몇 가지 기능은 아예 없거나 미묘하게 다를 수 있다. Git의 하위 호환성은 정말 훌륭하기 때문에 2.0

git-scm.com

여기서는 Centos를 사용하기 때문에 아래의 명령어로 git 설치를 진행하도록 하자.

#깃 설치
sudo dnf install git-all

#깃 버전 확인
git --version

#결과
git version 2.27.0

 

1. Local 저장소와 Remote 저장소 연동

로컬 저장소와 github 저장소와 연동하는 내용은 이 글에서 중요한 부분은 아니기 때문에 건너뛰도록하겠다. 

2. jenkins 프로젝트 생성

프로젝트 생성을 위해 jenkins 대시보드에서 새로운 Item 메뉴를 선택하자.

새로운 Item 메뉴 클릭

 

그런 후에, item name을 입력하고 Freestyle project를 선택한 후에  OK 버튼을 클릭하도록하자.

프로젝트 생성

 

3. jenkins 프로젝트 환경 구성

프로젝트를 생성하게 되면 바로 프로젝트 환경 구성 페이지가 나오는데, 처음으로 General 탭에서는 아래와 같이 표시된 부분에 기입하도록하자. Github Project url의 입력 양식은, https://github.com/{USER_NAME}/{PROJECT_NAME} 이다.

General 탭 설정 값 기입

위에서 모두 입력하였다면, "소스 코드 관리" 탭으로 이동하여 "Git"을 선택한 후에 Repository URL을 입력하도록 하자. 

Repository URL

Repository URL 입력 후에 Credential Add 버튼을 클릭하도록하자. 여기서 Branches to build 항목이 있는데, 어떤 브랜치의 형상을 빌드할지 설정하는 곳이다. (여기서는 master 브랜치로 설정)

Credential 추가

Credential 추가를 할때는 아이디/패스워드 방식과 SSH 방식이 있는데, 이 글에서는 아이디/패스워드 방식을 살펴보도록하자.


아래의 화면에서 Kind를 Username with password로 설정 한 후에 각 입력 값을 채우고 Add 버튼을 클릭하자.

Username with password Credentials 설정

Username = 깃허브 아이디
Password = 깃허브 패스워드
ID = 임의로 사용할 ID -> 아무 값이나 기입
description = 해당 설정에 대한 설명

 

아래와 같이 Credential이 추가된 것을 확인할 수 있다.

추가된 Credential

Credential 추가가 완료되었다면, gradle build 테스트를 진행해보도록하자.

build  설정은 Build 탭에서 "Use Gradle Wrapper" 를 선택한 후에, Tasks 항목에 아래처럼 기입하도록 하자.

gradle build 스크립트 설정

Use Gradle Wrapper를 이용하는 이유는 아래와 같다.

The Gradle wrapper is a script that can be added to your Gradle project and used to execute your build. The advantage of this is that:

  • you don’t need to have Gradle installed on your machine to build the project
  • the wrapper guarantees you’ll be using the version of Gradle required by the project
  • you can easily update the project to a newer version of Gradle, and push those changes to version control to ensure other team members will use the newer version

여기서 포인트는 결국 gradle 설치없이 gradle 프로젝트를 빌드할 수 있다는것이다.
위처럼 입력하게 되면 해당 프로젝트 경로에서 아래의 스크립트를 실행하는 것과 같다.

# gradle clean
./gradlew clean

# gradle build
./gradlew build

 

설정이 완료되었으면 저장을 하고 빌드를 진행하도록하자.

Build Now 버튼을 클릭하여 빌드를 진행하면 좌측하단에서 빌딩 현황을 볼 수 있다.

 

빌드 확인

좀더 자세한 사항을 확인하고 싶다면, 위에서는 "#1" 과 같은 빌드번호를 클릭하고, "Console Output" 메뉴를 클릭하여 빌드 로그를 확인 하도록하자.  

build 로그화면

정상적으로 빌드가 완료된 것을 확인 할수 있다. 위처럼 빌드된것 까지 확인하였다면, 생성된 jar 파일을 실행까지 진행해보도록 하자. 스프링 부트 프로젝트는  아래와 같이 간단한 소스코드를 작성해둔 상태이다.

TestController.java

// .. 중략

@RestController
@RequestMapping("test")
public class TestController {

    @GetMapping("/hello")
    public String getString() {
        return "hello";

    }
}

 

소스코드가 위와 같이 작성된 상태에서 git hub에 push가 된 상태라면,
젠킨스 프로젝트의 "구성" 메뉴의 "Build" 탭으로 이동하자. 그런 후에 Excute shell을 빌드 스텝에 추가하고 아래와 같이 명령어를 입력한 후에 저장하도록하자.

Build Step 추가 하여 shell script 작성

위처럼 작성한 후에 빌드실행 버튼을 누르면, 젠킨스에서 해당 프로젝트를 빌드하여
/var/jenkins_home/workspace/jenkins-dev/build/libs 경로 하위에 jar파일을 생성시킨다.(도커 환경인 경우) 하지만 위의 명령어는 해당 젠킨스 프로젝트 하위 루트 디렉토리에서 실행되기 때문에 "build/libs/{프로젝트명}-0.0.1-SNAPSHOT.jar" 명령어만 입력하여 파일을 실행시키는 것이다. 

 

위의 설정까지 완료되었다면, 다시 빌드 버튼을 눌러서 정상적으로 빌드가 된 후 실행이 되는지 확인해 보도록하자.

스프링부트 서비스 실행 로그

서비스가 정상적으로 실행된것을 확인할 수 있다.


여기 까지 완료되었다면, 다음 글에서는 깃허브 웹훅을 통해 소스코드 push시 자동으로 빌드가 되는것을 진행하도록하자.

 

다음글

 

[Jenkins] Jenkins & Github 연동 및 자동배포 구성하기 2

이번글에서는 github의 특정 repository에 push가 발생했을때, jenkins가 상황을 인지하고 배포하는 과정에 대해 알아보도록하자. 1. Github Webhook 세팅 Webhook 이란? 웹훅이란? 위 사진은 웹훅을 정말 잘 설.

dbjh.tistory.com

 

반응형

댓글