개발공작소
article thumbnail
728x90

 

 

 

 

 

저번 글에서 젠킨스(Jenkins) 서버를 Windows기반으로 설치해보았다. 이제 자동 빌드 및 배포를 위해

젠킨스를 Git과 연동해야 한다. 

 

Git과 연동하기 전에 대충 내가 이해한대로 젠킨스의 로직을 그려보았다.

 

 

내가 생각한 젠킨스 CI/CD 로직

 

로직 그림

 

젠킨스에서 개발자가 원하는 파이프라인(빌드,배포,테스트)을 자동으로 수행하기 위해서는 

개발자가 소스가 수정(push, merge)될 때마다 변경사항을 감지하고 있어야 한다.

 

그래서 젠킨스서버를 Git과 연동해서, 젠킨스는 Git서버의 변경사항을 24시간 감시하고 있게 해야 한다.

그럼 이제 젠킨스 서버와 Git서버를 연동해보자.

 

 

 

젠킨스 서버와 Gitea 연동하는 방법

 

젠킨스가 설치 되어 있지 않다면 아래 링크를 참조해서 설치하도록 하자.

(Gitea는 Windows용으로 하면 쉽게 설치 가능함..)

 

[CI/CD] [1. 설치] 젠킨스 서버를 설치해보자 ( Windows.ver )

 

1. 젠킨스 접속 - Jenkins 관리

 

Gitea와 연동하기 위해서는 플러그인 설치가 필요하다.

플러그인 설치를 위해 Jenkins 관리 메뉴로 이동하도록 하자.

 

2. 플러그인 설치

플러그인 클릭

 

플러그인을 보면 16이라고 작게 적혀있다. 나는 젠킨스를 설치할 때, 기본적으로 많이 쓰이는

플러그인을 설치하는 옵션을 선택했기 때문에 저렇게 16개의 플러그인이 설치 되어있다.

 

Plugins를 클릭하여 Gitea연동에 필요한 플러그인들을 설치하자.

 

Pluguns에 들어왔다면 왼쪽 메뉴에서 Available plugins를 클릭하고 4개의 플러그인을 검색하고 설치하도록 하자.

 

1) Gitea

2) Multibranch Scan Webhook Trigger

3) Parameterized Trigger

4) Delivery Pipeline

 

 

 

설치하려면 설치하고자 하는 플러그인의 왼쪽에 있는 체크박스를 체크한뒤 우측 상단에 있는 Install 버튼을

누르면 된다.

 

 

 

3. Gitea 저장소 확인

 

자신이 연동하고자 하는 Gitea 저장소에 가자. ( Gitea 저장소가 없다면 만들어주도록 하자. )

나는 bome-jenkins라는 저장소를 하나 만들어주었다. 여기에 각자 프로젝트가 있을테지만

나는 프로젝트가 올리기 귀찮아서 그냥 txt파일로 테스트 해보려고 함..

(나중에 뷰프로젝트 하나 올려야지...)

 

 

4. Jenkins 설정

젠킨스에서 Gitea와 연동하기 위해서는 Gitea의 정보를 감지(webhook) 하려면 Gitea에 대한접근정보

(URL, 저장소, 계정토큰..)을 가지고 있어야 한다.

 

 

우측상단에 프로필 선택 -> 설정 -> 어플리케이션 -> 토큰생성 순으로 진행하여 토큰을 생성하도록 하자.

이 토큰을 나중에 젠킨스에 입력해야 하기 때문에 잘 보관해두도록 하자.

 

 

보관해두자

 

 

5. Credentials 추가

이제 젠킨스에 다시 돌아와 Credentials 정보를 추가해주도록 하자. Credentials는 git, ssh등에 접근하기 위해

필요한 정보를 저장해주는 플러그인이다.

 

우리가 Gitea에 접근하기 위해 필요한 정보들 (URL, 저장소, 계정, 토큰...)등의 정보를 저장해두어야 한다.

 

 

 

 

 

 

정보입력

 

Gitea정보를 입력한다.

여기서 중요한건 Kind와 Token인데, Kind는 Gitea Personal Access Token을 선택해주어야 한다.

 

만약 보이지 않는다면 Gitea 플러그인이 설치 되지 않은 것이니, 설치해주도록 하자.

 

그리고 Token은 아까 Gitea저장소에서 생성한 토큰을 입력해주도록 하자. 나머지는

그냥 자신이 입력해주고 싶은대로 입력해주면 된다.

 

그리고 Create버튼을 누르면 Credentials이 생성된다.

 

 

 

6. Gitea서버 추가

 

 

Jenkins 관리 -> System으로 이동

 

 

이제 밑으로 내리다보면 Gitea Server라고 보일 것이다. 여기서 Gitea Server를 선택해주도록 하자.

(Github나 Gitbab등도 보인다. 아마 비슷한 방식으로 연동하지 않을까?)

 

 

 

 

여기서 Name은 아무거나 입력하도록 하자. 중요한건 Server URL과 Credentials인데,

 

여기서 의미는 내가 이 Server URL로 접근을 할 생각인데, 접근정보는 이 Credentials에 있습니다. 

이제 접근해도 되겠지요? 이런 느낌이다..

 

이제 맨 아래에 있는 "저장" 버튼을 눌러 정보를 저장 해주도록 하자.

 

7. 젠킨스 프로젝트 생성

 

이제 젠킨스에서 프로젝트를 만들어 보자. 

Gitea에서 변동사항이 생기면 이 프로젝트에서 Gitea의 변경을 감지하고 트리거(파이프라인)를 수행한다.

 

 

Dashboard -> 새로운 Item 클릭

 

 

프로젝트명과 Multibranch pipeline을 선택하고 저장한다.

 

여기서 Multibranch pipeline는 연동된 저장소의 변경을 감지하고 

사용자가 Git의 변경에 따라 원하는 작업을 수행하고자 하는 파이프라인들을 세팅하여 수행할 수 있도록 한다.

 

 

 

프로젝트를 저장하고 나면 프로젝트에 대한 정보를 입력할 수 있는 화면으로 전환되는데

여기서 Branch Sources에 대한 정보를 입력해주도록 하자.

 

여기서 Gitea를 선택해준다. 그럼 Gitea에 대한 정보를 입력할 수 있는 창으로 전환이 된다.

아래와 같이 자신의 Gitea 저장소 정보를 입력해주도록 하자.

 

 

 

여기서 연동정보를 입력해주는데, 이미 우리는 Gitea에 대한 URL, Credentials를 저장해두었기 때문에

따로 입력해주지 않고 그냥 셀렉트박스에서 선택해줄 수 있다. 물론 저장소의 Repository까지도..

 

 

아래로 내리다보면 Behaviours이라는 탭이 보이는데 여기서

Discover pull requests from origin과 Discover pull request from forks를 제거해준다.

 

 

이제 아래 [Add]를 통해 Filter by name (with regular expression)을 추가 해주도록 하자.

 

 

 

여기에는 자신이 연동해서 감지 할 브랜치명을 입력 해주도록 하자.

나는 main을 해주었다. ( 따로 브랜치를 안만들었음... )

 

8. Scan Multibranch Pipeline Triggers 설정

 

여기서 입력한 Trigger token은 나중에 Gitea 웹훅을 연결할 때 사용한다.

여기서는 자신이 쓸 이름을 아무거나 써도 된다.

 

여기까지 입력이 됬으면 [Save] 버튼을 눌러 저장해주도록 하자.

 

 

여기까지 오면 이제 Jenkins 프로젝트 생성이 됬다. 

그런데 Jenkinsfile을 찾을 수 없다는 문구가 보인다. 이제 저 Jenkinsfile을 만들어 주도록 하자.

 

Jenkinsfile

pipeline {
  		agent any
    		stages {
      			stage('stage 1') {
        			steps {
          				echo "Hello world"
        			}
      			}
    		}
	}

 

위 내용을 가지는 Jenkinsfile을 만들어 주도록 하자.

 

 

root경로에 Jenkinsfile을 생성해주도록 하자.

 

npm기반의 프로젝트인 경우, package.json이 위치하는 root 경로에 Jenkinsfile을 생성하면 된다.

 

 

 

push를 해주도록 하자.

 

이제 다시 돌아오면 아래와 같은 화면을 볼 수 있다.

 

성공!

 

이런 화면이 보이면 정상적으로 Gitea에 있는 브랜치와 연동이 된 것이다..

 

이제 연동이 제대로 되었는지 테스트 해보자..

 

연동 테스트

 

연동테스트 파일 생성

 

 

연동테스트.txt를 main 브랜치로 push 해보았다.

 

 

main 브랜치에서 직접 확인해보니 "연동테스트.txt" 파일이 정상적으로 push 된 것을 확인 할 수 있다.

이제 젠킨스에서 확인해보도록 하자.

 

성공!!

 

우리가 만들었던 Jenkins project에 들어오면 로그가 하나 들었다. 마우스를 갖다대면 각 커밋정보를

확인할 수 있다.

 

확인해보니 정상적으로 연동테스트.txt 파일이 커밋된 것을 감지하였다.

 

여기까지 Gitea와 Jenkins 연동방법에 대한 정리를 마치겠다.

 

이제 Gitea와 연동을 하였으니, 변동사항을 젠킨스에서 감지 가능할테고, 감지가 된 경우에

사용자가 원하는 작업을 파이프라인에 정의하여, 트리거를 걸어주면 코드 테스트와 자동배포 또한 가능하다.

 

다음에 시간이 되면 코드테스트와 자동배포 또한 정리 해보도록 하겠다.

 

나는 프로젝트를 만들기 귀찮아 그냥 Windows에 파일로 테스트하였지만 프로젝트도 똑같이

적용하면 되니 너무 어렵게 생각하지 말도록 하자.

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!