티스토리 뷰

내가 담당하고 있는 서비스는, 불행하게도 CI/CD가 없다. 그러면 어떻게 배포하느냐? 다 수동이다.

 

  1. 이클립스에서 gradle build
  2. 생성된 war 파일을 git을 이용해 서버에 업로드
  3. 서버에서 스크립트를 통해 배포

간단해 보이는 과정이지만 이 서비스가 갖고 있는 Java 프로젝트만 10개가 넘고, 임시로 생성된 branch들 때문에 수동으로 배포하게 되면 실수가 발생할 수 밖에 없다. 또 코드를 배포하는 사람이 한명이 아니기 때문에, 실제로도 반영되지 말아야되는 버전의 코드가 배포되는 등의 생겼었다.

 

상용화된 서비스에 바로 반영해볼수는 없기 때문에 로컬환경에서 먼저 작업해봤다. 문제는 내 로컬 OS가 윈도우라는 것 때문에 제법 큰 문제가 발생했었고, 이 문제를 수정하는데 너무 진을 뺐었다. 이 내용은 마지막에 추가로 덧붙이겠다.

1. Jenkins 설치

주소 : https://www.jenkins.io/download/ 에서 windows 버전의 .msi 파일을 설치했다. 처음엔 리눅스에서 설치하던거와 같이 생각해서

 


이걸 선택해 설치했다. 쭉쭉 다음다음 눌러서 이동하다가

 


위에 작성된 경로로 이동해서 파일을열고, 패스워드를 입력하고

 


계정 정보를 생성하고

 


포트 입력.

 

나는 Jenknis의 포트를 8888로 했다. Jenkins 기본포트는 8080이다.


http://localhost:8080 으로 접근하면 로그인 화면이 나오고 접속 가능하다.

2. SVN Plugin 설치하고 연결하기

우리 회사 코드는 Torstoise SVN으로 관리한다. 하지만 Jenkins를 처음 설치하고새로운 Item > Freestyle project > 소스 코드 관리를 보면, Subversion이 없다.

 

없음...

 

다시 홈으로 돌아와

 

Jenkins 관리 > 설치 가능 > Subversion 검색 > Download now and install after restart 선택

 

다시 Freestyle project를 만들어보면

 

 

아래와 같이 생성된다. 초기화면은 Credentials가 none으로 설정되어 있는데, Add를 클릭해 본인의 계정정보를 작성하면 된다.

 

그럼 해당 repository의 head를 가져와 자동으로 빌드할 수 있는 파이프라인이 완성된다.

3. 배포를 위한 Git 연동

Tomcat 배포하기 위해서는 war나 jar 파일을 생성해야 한다.

Build 탭으로 이동해서, 내 환경은 Window기 때문에 Add build step > Execute Windows batch command를 선택한다.

 


gradle 빌드를 하기 때문에 build.gradle이 있는 경로로 이동해서 빌드하게끔 위와같이 명령어를 작성했다.

 

그런데 windows batch command는 linux의 cmd랑 몇가지 명령어의 차이가 있어서 불편하다. 그럴땐 git bash를 사용하면 편하기 때문에 추가 설정해주자.

 

Jenkins 관리 > 시스템 설정 > Shell > Shell excutable에 git bash 경로를 설정한다.

 

그럼 이제부터 윈도우 환경에서도 Execute Shell을 사용해도 정상 동작한다.

 

gradle 빌드까지 진행했으니 git repository가 설정된 경로로 파일을 보내서 push만 하는상태가 됐다.

 

자 윈도우로 설정해 사용중이라면, 여기서 문제가 발생한다.

 

git pull 에서 무한로딩이 걸린다.

 

4. 무한 로딩 해결법

 

문제의 원인은

 

여기였다. 저 상태로 젠킨스를 실행시키면 LocalSystem 계정으로 Jenkins가 실행된다.

 

whoami를 cmd에 남겨보면 바로 확인할 수 있다.

 


Jenkins console에 출력된 현재 사용자이다.

 

앞서 젠킨스를 실행할때, jenkins의 Logon Credentials을 windows의 LocalSystem으로 만들어서 jenkins에서 git 명령어를 실행하면, LocalSystem의 권한으로 실행시키게 된다.

 

하지만 git 설정은 windows의 현재 사용자 권한으로 잡혀있기 때문에, git repository에 접근권한이 없어서 정상동작하지 않는 것이다.

 

이 문제를 해결하는게 조금 골치 아팠다.

 

여기서 문제 해결 방법을 찾았는데, 해결방법은 단순하다.

 

Jenkins 서비스의 권한을  windows의 개인계정에서 현재 사용자로 변경하면 된다.

 

문제는 이 기능이 Windows 10 Home Edition에는 없다는 것이다...

 

이 또한 해결 방법을 블로그에서 찾았다.

 

위 배치 스크립트를 실행시켜서 안내대로 설치하면 실행이 끝나면 로컬 그룹 정책 편집기(gpedit.msc)와 로컬 보안 정책(secpol.msc)을 실행할 수 있다.

 

우리가 필요한건 로컬 보안 정책(secpol.msc)이다.

 

보안 설정 > 로컬 정책 > 사용자 권한 할당 > 서비스로 로그온 > 사용자 또는 그룹 추가 > 본인의 윈도우 로그인 계정을 추가

 

위 작업을 마무리한 후에 Execute Shell에서 git 명령어를 작성하면 정상 동작한다.

4. 마치며

리눅스에선 명령어를 통해서 간단하게 줬던 권한이 윈도우에선 이렇게 발목을 잡을 줄 몰랐다. 내가 한 삽질이 누군가에게 빠른 정답이 되어줬으면 좋겠다...

'개발 > 인프라' 카테고리의 다른 글

AWS EC2에서 Jenkins 자동배포 구축하기 (1)  (1) 2023.01.26
웹서버와 WAS의 차이 정리  (1) 2023.01.26
Docker 정리  (0) 2023.01.26
VM(Virtual Machine)과 Docker  (1) 2023.01.26
캐시(Cache)와 CDN(Content Delivery Networks)  (0) 2023.01.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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 31
글 보관함