이 글을 시작으로 jenkins와 github의 특정 프로젝트를 연동 시켜두고 해당 프로젝트에서 push 발생 시, jenkins가 이것을 인식하고 자동으로 배포하는 과정에 대해서 진행하려고한다. 배포될 프로젝트는 spring boot 프로젝트로 진행할 것이고 빌드 툴은 gradle을 사용할 예정이다. (필자는 젠킨스를 도커 컨테이너로 실행시켰으니 이점을 참고하길 바람 - 도커환경이 아니어도 상관없음)
일단 이번 글에서는 젠킨스로 깃허브 레포지토리의 소스코드를 pull하여 빌드 후에 실행시키는 과정에 대해 알아보도록하자.
0. 환경구성
이 글에서는 AWS 인스턴스 환경에서 진행될 예정이고 jenkins도 해당 인스턴스 위에서 실행될 예정이다. 또한 프로젝트 코드도 해당 인스턴스 위에 배포될 예정이다. AWS PC에 git 설치가 안되어 있다면, 아래 링크를 참고하여 설치하도록 하자. (docker 컨테이너로 젠킨스를 실행 시켰다면, 깃을 설치할 필요없음)
여기서는 Centos를 사용하기 때문에 아래의 명령어로 git 설치를 진행하도록 하자.
#깃 설치
sudo dnf install git-all
#깃 버전 확인
git --version
#결과
git version 2.27.0
1. Local 저장소와 Remote 저장소 연동
로컬 저장소와 github 저장소와 연동하는 내용은 이 글에서 중요한 부분은 아니기 때문에 건너뛰도록하겠다.
2. jenkins 프로젝트 생성
프로젝트 생성을 위해 jenkins 대시보드에서 새로운 Item 메뉴를 선택하자.
그런 후에, item name을 입력하고 Freestyle project를 선택한 후에 OK 버튼을 클릭하도록하자.
3. jenkins 프로젝트 환경 구성
프로젝트를 생성하게 되면 바로 프로젝트 환경 구성 페이지가 나오는데, 처음으로 General 탭에서는 아래와 같이 표시된 부분에 기입하도록하자. Github Project url의 입력 양식은, https://github.com/{USER_NAME}/{PROJECT_NAME} 이다.
위에서 모두 입력하였다면, "소스 코드 관리" 탭으로 이동하여 "Git"을 선택한 후에 Repository URL을 입력하도록 하자.
Repository URL 입력 후에 Credential Add 버튼을 클릭하도록하자. 여기서 Branches to build 항목이 있는데, 어떤 브랜치의 형상을 빌드할지 설정하는 곳이다. (여기서는 master 브랜치로 설정)
Credential 추가를 할때는 아이디/패스워드 방식과 SSH 방식이 있는데, 이 글에서는 아이디/패스워드 방식을 살펴보도록하자.
아래의 화면에서 Kind를 Username with password로 설정 한 후에 각 입력 값을 채우고 Add 버튼을 클릭하자.
Username = 깃허브 아이디
Password = 깃허브 패스워드
ID = 임의로 사용할 ID -> 아무 값이나 기입
description = 해당 설정에 대한 설명
아래와 같이 Credential이 추가된 것을 확인할 수 있다.
Credential 추가가 완료되었다면, gradle build 테스트를 진행해보도록하자.
build 설정은 Build 탭에서 "Use Gradle Wrapper" 를 선택한 후에, Tasks 항목에 아래처럼 기입하도록 하자.
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" 메뉴를 클릭하여 빌드 로그를 확인 하도록하자.
정상적으로 빌드가 완료된 것을 확인 할수 있다. 위처럼 빌드된것 까지 확인하였다면, 생성된 jar 파일을 실행까지 진행해보도록 하자. 스프링 부트 프로젝트는 아래와 같이 간단한 소스코드를 작성해둔 상태이다.
TestController.java
// .. 중략
@RestController
@RequestMapping("test")
public class TestController {
@GetMapping("/hello")
public String getString() {
return "hello";
}
}
소스코드가 위와 같이 작성된 상태에서 git hub에 push가 된 상태라면,
젠킨스 프로젝트의 "구성" 메뉴의 "Build" 탭으로 이동하자. 그런 후에 Excute shell을 빌드 스텝에 추가하고 아래와 같이 명령어를 입력한 후에 저장하도록하자.
위처럼 작성한 후에 빌드실행 버튼을 누르면, 젠킨스에서 해당 프로젝트를 빌드하여
/var/jenkins_home/workspace/jenkins-dev/build/libs 경로 하위에 jar파일을 생성시킨다.(도커 환경인 경우) 하지만 위의 명령어는 해당 젠킨스 프로젝트 하위 루트 디렉토리에서 실행되기 때문에 "build/libs/{프로젝트명}-0.0.1-SNAPSHOT.jar" 명령어만 입력하여 파일을 실행시키는 것이다.
위의 설정까지 완료되었다면, 다시 빌드 버튼을 눌러서 정상적으로 빌드가 된 후 실행이 되는지 확인해 보도록하자.
서비스가 정상적으로 실행된것을 확인할 수 있다.
여기 까지 완료되었다면, 다음 글에서는 깃허브 웹훅을 통해 소스코드 push시 자동으로 빌드가 되는것을 진행하도록하자.
다음글
'Infra > Jenkins' 카테고리의 다른 글
[Jenkins] Jenkins로 Nginx 및 Spring Boot 컨테이너를 원격서버에 띄워서 Reverse Proxy 구성하기 (0) | 2021.02.07 |
---|---|
[Jenkins] Jenkins를 이용하여 원격 서버에 SpringBoot 컨테이너 띄우기 (0) | 2021.01.24 |
[Jenkins] Jenkins & Github 연동 및 자동배포 구성하기 3 (0) | 2020.12.31 |
[Jenkins] Jenkins & Github 연동 및 자동배포 구성하기 2 (0) | 2020.12.30 |
[Jenkins] Linux(Centos & RHEL)에 Jenkins 설치하기 (1) | 2020.12.22 |
댓글