CI/CD 구축 - 2. Jenkins 와 Gitea 연동

송기영개발잘하고싶다·2023년 5월 12일
0

JENKINS

목록 보기
4/7

개요

이전 시간에 이어 Jenkins와 Gitea를 연동하는 방법을 소개하고자 합니다.

연동방법

Plugin 설치

Jenkins에서 Gitea와 Webhook을 사용하기 위해서는 Plugin을 먼저 설치해야합니다. Jenkins 좌측 메뉴 Jenkins 관리 -> 플러그인 관리로 이동합니다.

플러그인 안에서 좌측메뉴의 Available plugins를 클릭합니다. 이후 검색창에 아래의 플러그인들을 입력해 나오는 플러그인에 체크합니다.


설치 목록

	gitea
    Multibranch Scan Webhook Trigger
    Parameterized Trigger
    Delivery Popline

Install without restart 버튼을 클릭해 플러그인을 설치합니다.

정상적으로 설치가 완료되면 메인 페이지로 돌아가기를 클릭하시면 됩니다.

Gitea 저장소 생성

test라는 조직안에 front-base라는 이름의 저장소를 생성합니다.

React 프로젝트 생성 후 푸쉬

Vite를 이용해 front-base라는 이름을 가진 React 프로젝트를 생성 후 Gitea 저장소에 푸쉬하도록 하겠습니다. CRA를 이용해 프로젝트를 생성하셔도 됩니다.

Vite를 이용해 프로젝트를 생성하는 부분은 포스팅을 참고하시면 됩니다.

생성된 프로젝트의 모든 내용을 위에서 만든 test/front-base 저장소에 푸쉬하도록 하겠습니다.

	git init
    git add .
    git commit -m "first commit"
    git remote add origin http://192.168.10.15:3000/test/front-base.git
	git push -u origin master

주의 : 이때 커밋 메시지에 이모지가 들어가게 된다면 에러가 나오게 되므로 모든 연동을 하기전까지는 커밋 메시지에 이모지는 사용하지 말아주시기바랍니다.

정상적으로 푸쉬가 됬다면 저장소에 아래와 같이 폴더들이 존재하게됩니다.

Jenkins 설정

Jenkins에서 Gitea의 Webhook을 캐치를 하려면 계정에 대한 정보가 필요합니다. 따라서 Jenkins에 Gitea 계정에 대한 정보를 추가하겠습니다.

Gitea 계정 액세스 토큰 생성

Gitea의 오른쪽 상단에 프로필아이콘 -> 설정 -> 어플리케이션 탭으로 이동합니다.

토큰 이름을 입력해 토큰을 생성합니다. 생성된 토큰은 다시 확인할 수 없으니 따로 관리하시기바랍니다.

저는 기존에 만들어놓은 Jenkins 이름의 토큰을 사용하도록 하겠습니다.

Credentials 추가

Jenkins의 메인화면에서 Jenkins 관리 -> Credentials 순으로 이동해줍니다.

System의 Domains(global)이름에 마우스를 올리면 화살표 표시가 나타나게 되는데 화살표 표시를 누르면 아래로 드롭박스가 생성이 됩니다. 드롭박스내에 있는 Add credentials를 클릭해줍니다.

New credentials 페이지에서 Kind를 Gitea Personal Access Token으로 변경해줍니다. 여기서 Kind 항목에 Gitea Personal Access Token이 존재하지 않을 경우 Gitea Plugin을 설치를 해주셔야합니다.

위에서 만든 Gitea 계정 액세스 토큰정보와 나머지 정보를 입력 후 좌측하단에 Create 버튼을 클릭합니다.

Gitea Server 설정

Jenkins의 메인화면에서 Jenkins 관리 -> 시스템 설정으로 이동합니다.

마우스를 내려 Gitea Servers항목의 Add -> Gitea Server를 선택합니다.

아래와 같이 정보를 입력하고 Manage hooks를 설정합니다. 여기에서 선택된 Credentials은 위에서 추가한 Gitea의 Jenkins 계정 정보입니다.

계정정보를 모두 입력했으면 좌측하단에 저장버튼을 클릭하여 저장합니다.

Jenkins 프로젝트 생성

Jenkins의 메인화면에서 좌측 메뉴에서 새로운 Item을 선택합니다. 프로젝트 이름을 입력하고 Multibranch Pipleline을 선택 후 왼쪽 아래 OK 버튼을 클릭합니다.

Branch Sources 설정

Branch Sources의 Add source -> Gitea를 선택합니다.

생성된 폼에 다음과 같이 입력해줍니다. Owner는 조직의 이름을 넣게되면 Repository는 자동으로 목록을 불러오게 됩니다. 목록이 나오지 않는 경우 저장소 접근권한 혹은 대소문자를 확인하시기 바랍니다.

주의 : 조직 혹은 사용자 이름은 소문자만 지원합니다.

Behaviours의 Discover branches를 제외한 Discover pull requests from origin, Discover pull requests from forks를 삭제 후 Add -> Filter by name (with regular expression)을 추가해줍니다.

Filter by name에는 브랜치 이름을 입력해주시면 됩니다.

Scan Multibranch Pipeline Triggers 설정

Multibranch Pipeline Triggers 관련 설정을 진행합니다. Scan by webhook의 키값은 Gitea 웹훅 연결시에 사용합니다.

모든 내용 입력 후 좌측하단에 Save 버튼을 클릭합니다. 저장 시 아래와 같은 화면이 생성이되는데 Jenkinsfile을 찾을 수 없다는 메시지가 나타납니다. Jenkinsfile을 이전에 생성한 React 프로젝트에 생성해주겠습니다.

Jenkinsfile 생성

위에서 생성한 프로젝트로 이동해 package.json과 동일한 root위치에 Jenkinsfile을 생성합니다.

파일의 내용은 다음과 같습니다.

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

파일 생성 완료 후 커밋 후 저장소에 푸쉬를 해줍니다.

	git add .
    git commit -m "젠킨스 파일 생성"
    git push origin master

Jenkins로 돌아와 Scan Multibranch Popeline Now를 클릭 후 새로고침하여 정상동작을 확인합니다.

Gitea 저장소 Webhook 생성

Gitea의 front-base 저장소내의 설정 -> 웹훅 -> Webhook 추가 -> Gitea를 선택합니다.

대상 URL에 다음과 같이 입력 후 좌측하단의 Webhook 추가를 클릭해줍니다.

	http://{젠킨스주소}/multibranch-webhook-trigger/invoke?token={Scan by webhook값}

웹훅 추가후 오른쪽아래 전달시험을 누르고 아래와같이 메시지가 나온다면 정상적으로 웹훅연결이 됬음을 확인할 수 있습니다.

주의 : 젠킨스가 설치된 서버와 Gitea가 설치된 서버는 같은 네트워크 망에 있거나 포트포워딩이 되어있어야합니다.

연동확인

front-base 프로젝트에서 커밋과 푸쉬를 진행합니다.

푸쉬를 했을때 Jenkins에서 아래와 같이 화면이 나온다면 연동이 정상적으로 됬음을 확인할 수 있습니다.

다음 글에서는 코드품질 관리는 해주는 Sonarqube 설치방법을 포스팅 하겠습니다.

레퍼런스
https://code00.tistory.com/133

profile
업무하면서 쌓인 노하우를 정리하는 블로그🚀 풀스택 개발자를 지향하고 있습니다👻

0개의 댓글