Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

seoyyyy-dev

젠킨스 CI/CD - 젠킨스 구성 본문

개발 독서 스터디/젠킨스로 배우는 CIㆍCD 파이프라인 구축

젠킨스 CI/CD - 젠킨스 구성

seoyyyy 2025. 5. 11. 23:09

젠킨스 구성을 시작하기 전 젠킨스 서버를 시작하고 로그인 하는 방법에 대해서 알아보자

 

🎈 젠킨스 서버 시작

젠킨스 서버를 시작하기 위해서는 .war 파일을 사용해야 한다. 만약 젠킨스를 msi 설치파일로 설치한 경우라면 젠킨스 서비스를 시작해야한다. 윈도우 시스템에서 젠킨스 서버를 시작하는 두가지 방법을 알아보자

 

✔️ 윈도우 명령 프롬프트(cmd)에서 명령어로 실행(Jenkins.war 파일을 이용한 실행)

java -jar <.war_파일까지의_경로> --httpListenAddress=<시스템의_IP_주소> --httpPort=<원하는_포트_번호>

 

위의 명령어를 실행해 주니 쭉쭉 진행이 되어진다. 

 

 

서버가 시작되면 Jenkins is fully up and running 이란 메세지가 나타난다.

중간에 빨간색으로 지운 것은 admin 유저의 초기 패스워드가 생성된 것 같아서 중요하지 않을 수 있지만 혹시 몰라 지워봤다.😓

이 비밀번호는 혹시나 잊어버리더라도 바로 아래줄의 경로로 이동하면 초기 패스워드를 확인할 수 있다.

(확인해보니 초기 비밀번호일 뿐이고 처음 세팅 외에는 의미 없는 값이었다.)

 

✔️ 서비스 방식으로 젠킨스 실행(msi로 설치한경우)

 

서비스(앱) 항목 선택 시 서비스 창이 나타난다.

 

Jenkins 항목에 마우스 우클릭을 하고 시작(S)을 클릭한다. 시작 버튼이 비활성화 되어있다면 이미 '실행중' 을 의미한다.

 

젠킨스는 기본적으로 8080 포트를 사용하지만 포트변경을 원할 시 $JENKINS_HOME/jenkins.xml에서 <arguments> 태그의 --httpPort 부분을 수정하면 된다.

값을 변경한 후에는 서비스 목록의 Jenkins 항목에서 마우스 우클릭을 하고 '다시 시작'을 클릭하면 된다.

 

😢참고로 jenkins.xml 파일을 수정하다가 태그 하나를 잘못수정했더니 서비스 시작을 실패했다. 해당 파일을 수정할 땐 태그 안의 경로나 정보들을 맞게 잘 입력했는지 꼭꼭 확인하자

 

 

💡실습에서는 하지 않을 예정이지만 만일 도커 컨테이너로 시작 시 윈도우 명령 프롬프트에서 다음 명령어를 실행한다. 도커 허브에서 제공하는 젠킨스 도커 이미지를 사용해서 젠킨스 서버가 실행된다.

docker run -p 8080:8080 -name=Jenkins-server jenkins/jenkins

 

위 명령어의 -p 8080:8080은 포트 포워딩 설정이며 도커 컨테이너의 8080 포트(:의 좌측)로 들어오는 요청이 도커에서 실행중인 젠킨스 서버의 8080 포트(:의 우측)로 전달된다는 것을 의미한다.

 

💡또한 리눅스에서 젠킨스를 시작한다면 다음 명령어로 실행하면 된다. (참고로 다른 설정도 필요하지만 간단하게만 설명했다.)

 

- 설치

yum install -y jenkins

 

- 서비스 활성화

sudo systemctl start jenkins

 

만일 8080포트가 이미 사용중이라면 젠킨스 서버를 시작할 수 없다는 오류가 발생한다. 그때 /etc/default/jenkins 파일을 열어 -HTTP_PORT=8080 부분의 포트 번호를 다른 포트번호로 변경한 후 재시작하면 된다.

 

젠킨스 서비스가 실행되고 있는지 상태를 체크할 때는 아래 명령어를 입력한다.

sudo systemctl status jenkins

 

 

브라우저 실행 및 로그인하기

이제 브라우저를 실행해보자

--httpPort를 8092로 설정했으므로 브라우저 주소창에 localhost:8092 로 접속했더니 http://localhost:8092/login?from=%2F 주소로 포워딩 되었다.

 

보니까 좀전에 cmd 창에서 실행했을 때 제공된것과 같은 admin 유저의 초기 password 를 입력하라는 것 같다.

좀전에 cmd에서 실행했을때와 msi로 실행했을 때 initialAdminPassword 가 저장된 경로가 다른걸 확인할 수 있으며 해당 경로의 파일을 열어 텍스트를 복사해 붙여넣으면 된다.

 

initialAdminPassword 파일을 열어서 텍스트를 복사해와 아래 입력창에 붙여넣기한 후 Continue 버튼을 클릭한다.

 

그럼 다음과 같은 창이 뜨는데 젠킨스에서 제안해주는 플러그인을 설치할지 내가 직접 필요한 플러그인을 선택해 설치할지 고르는 화면인 것 같다.

 

일단 모르겠으니 좌측의 추천 플러그인을 설치하는 쪽으로 가보자

 

왼쪽 Install suggested plugins 을 선택하니 설치가 진행중인 상황을 직관적인 화면으로 보여준다.

 

이전에 디렉터리 구조 소개때 자세히 보지는 않았지만 플러그인 설치가 진행되면 다음 경로에 여러 플러그인들이 설치된 것을 확인할 수 있다.

 

플러그인에 관해서는 다음 챕터에 있으니 우선 보류하고 설치가 완료되면 Admin User 계정에 대한 설정을 하게 된다.

 

입력항목을 채운 후  Save and Continue 버튼을 클릭하면 Jenkins URL을 지정할 수 있는 화면이 나온다.

URL을 확인한 후 Save and Finish 버튼을 클릭하면

 

드디어 젠킨스 설정이 완료되었다. Start using Jenkins 버튼을 눌러 메인화면으로 가보자

 

반가운 메인화면이다. 책에서는 영어로 메뉴를 알려줬는데 Jenkins 화면은 한국어로 번역되어서 보이고 있어 메뉴 설명 시 영어에 괄호로 한국어 메뉴를 작성하겠다. 

 

왼쪽 메뉴의 Manage Jenkins(Jenkins 관리) 를 들어가보자.

 

붉은색으로 경고 메세지가 두개가 뜨는데 내장 노드에서 빌드하는 것은 보안 문제가 될 수 있다고 분산 빌드를 설정하라고 한다.

두번째 경고는 Java 17이 해당 버전에 대한 지원이 2026.3.31일에 종료된다고 한다.

 

현재는 실습일 뿐이니 우선 두가지 메세지 다 무시하기로 한다.

 

위 화면에 톱니바퀴 모양 아이콘인 System 을 클릭하면 System Configuration(시스템 구성) 페이지가 나타난다.

 

이 중 자주 사용되는 주요 설정들은 다음과 같다. 

 

🍟 Home Directory(홈 디렉토리)

   : JENKINS_HOME에서 지정한 디렉토리로서 젠킨스의 작업 및 구성 파일 등 모든 폴더와 파일이 저장되는 경로

   : UI에서는 변경이 불가능하며 jenkins.xml 파일의 JENKINS_HOME 을 변경해주자.

   : 보통 디렉터리 경로 변경은 해당 디렉토리에 액세스 권한이 없거나 충분한 저장 공간이 없는 등의 경우에 수행한다. 경로를 변경하는 경우 이전 경로에 남아 있는 파일을 모두 정리해야 한다.

 

🍟 Jenkins URL(젠킨스 인터넷 주소)

   : 젠킨스 서버에 접속할 수 있는 인터넷 주소를 입력한다. 이때 젠킨스 서버를 시작할 때 사용할 IP주소와 포트 번호가 포함된다. 현재는 localhost:8092 로 설정했지만 다른 컴퓨터에서 접속하기 위해서는 이 URL을 서버의 IP주소로 변경해야 한다.

🍟 System Admin e-mail address(시스템 관리자 이메일 주소)

   : 젠킨스 작업 시 생성되는 알림 메세지를 보낼 이메일 주소 항목이다. 이메일 알림을 구성하는 방법에 대해서는 뒤에서 다룬다고 한다. 


 

사용자 이름과 비밀번호 재설정 방법

 

1️⃣ 실행 중인 젠킨스 서버를 중지한다.

     - jenkins.war로 실행했다면 실행중인 명령 프롬프트(cmd) 창을 닫고, 서비스로 실행했다면 서비스에서 Jenkins 항목을 찾아  중지시킨다.

 

2️⃣ JENKINS_HOME의 config.xml 파일을 편집한다. 

    - 참고로 권한으로 막혀있어 편집이 안될 수 있으니까 메모장을 관리자 권한으로 실행하여 편집한다. 

위 캡쳐 이미지 처럼 <useSecurity> 태그를 true 에서 false 로 변경한다.

 

3️⃣ 젠킨스 서버를 재시작 한다. 

4️⃣ 브라우저에 젠킨스 서버로 접속한다. 

   - 브라우저를 열고 젠킨스 서버의 URL을 입력하면 이전과 다르게 사용자 이름과 비밀번호를 묻는 절차 없이 바로 대시보드로 이동한다. 

   - 이미 젠킨스를 사용 중이었다면 대시보드에서 기존 작업들이 표시될 수 있다. 

   - 아래와 같이 대쉬보드에 "Jenkins는 현재 보안이 취약하여 네트워크상의 누구든 사용자를 대신하여 프로세스를 실행할 수 있습니다. 개인 네트워크에서도 보안을 설정하고 익명 접근을 제한하는 것이 좋습니다." 라는 경고 메세지가 하나 더 추가된다.

 

 

5️⃣ 왼쪽 메뉴의 Manage Jenkins(Jenkins 관리)를 클릭하고 자물쇠 아이콘인 Security를 클릭한다.   

그리고 아래 화면이 나타나면 Authorization(권한부여) 섹션에서 Anyone can do anything(모든 사용자가 모든 작업을 수행 가능)을 선택한 후 Save 버튼을 클릭한다.

6️⃣ 재설정할 사용자를 삭제하기 위해 People 메뉴를 클릭한다.

 

.... 라고 하지만 나의 경우 어디에도 People 메뉴가 보이지 않는다.

확인해보니 Jenkins 관리  하위 메뉴의 Users로 이동한 것으로 추측된다. 

 

또한 이 Users 메뉴가 안보일 경우 Security 설정에서 Security Realm(보안영역)Jenkins' own user database로 설정되어있는지 확인해보자. 나의 경우는 None으로 세팅되어 있어 변경해주었다. 

 

Save 한 후에 다시 Jenkins 관리 화면으로 이동하면 Security 라인에서 Users가 나타나있다.

 

 

Users 화면은 다음과 같다.

 

 

계정의 우측 휴지통 아이콘을 클릭해 사용자를 삭제한 후 Create User 버튼을 통해 다시 추가하거나 아이디 우측 더보기 아이콘을 클릭하여 나타난 하위메뉴의 Security를 선택하면 비밀번호를 변경할 수 있는 화면이 나타난다. 

 

비밀번호 변경 또는 신규 사용자 추가가 완료되었다면 다시 Jenkins 관리 메뉴에서 Security 아이콘을 클릭한 후 Authorization 설정을 다음과 같이 바꾸어준다.

 

기존 모든 사용자에게 권한을 허용하는 Anyone can do anything에서 Loggin-in userse can do anything(로그인한 사용자는 모든 작업 가능)으로 변경한 후 Allow anonymous read access(익명 읽기 액세스 허용) 항목을 체크 해제해주고 Save 한다.