::: IT인터넷 :::

Jenkins에서 윈도우 에이전트를 이용한 Visual Studio 빌드 구성 (1)

정보보안썰문가 곰탱이푸우 2021. 8. 19. 08:20
반응형

이제 Jenkins에 등록한 윈도우 에이전트를 이용하여 Visual Studio 빌드를 구성한다.

Jenkins와 Nexus에 추가로 설정할 것들이 있기 때문에 사전 준비와 빌드 설정을 나눠서 포스팅한다.

 

빌드 구성에 필요한 사전 작업은 다음과 같다.

  • Jenkins 플러그인 설치
  • 배포에 사용할 Nexus 계정 생성
  • 빌드에 사용할 GitLab 계정 생성
  • GitLab Access Token 발급
  • Jenkins에 GitLab Access Token 등록
  • MSBuild 설정
  • Nexus3 설정

 

빌드 설정과 빌드 진행은 다음 포스팅을 참고한다.

 

Jenkins에서 윈도우 에이전트를 이용한 Visual Studio 빌드 구성 (2)

이전 포스팅에서 Jenkins의 빌드 구성을 위한 사전 작업을 진행했다. Jenkins에서 윈도우 에이전트를 이용한 Visual Studio 빌드 구성 (1) 이제 Jenkins에 등록한 윈도우 에이전트를 이용하여 Visual Studio 빌

www.bearpooh.com

 

전체적으로 내용이 아주 길기 때문에 차분하고 꼼꼼하게 읽기를 권장한다.

 

 

Jenkins 플러그인 설치

Jenkins에서 빌드 구성에 필요한 플러그인들을 설치한다.

유용한 플러그인들이 아주 많으므로 구글링해서 찾아보면 더 좋은 플러그인도 만날 수 있다.

  • GitLab Plugin - GitLab 접근을 위해 사용한다.
  • Node and Label parameter - 빌드 구성할때 에이전트에 부여한 Label로 지정할 수 있다.
  • MSBuild Plugin - Visual Studio 빌드에 필요하다.
  • Git Parameter Plug-in - git의 master 브랜치 또는 작업중인 브랜치 목록을 선택할 수 있다.
  • Nexus Artifact Uploader - 빌드 산출물을 Nexus에 업로드하는데 필요하다.

 

아래 플러그인은 필요 여부에 따라 설치한다.

  • GitLab Hook Plugin - GitLab에 Commit이나 Pull Request 등이 발생할때 빌드 트리거를 설정할 수 있다.
  • SSH Agent Plugin - 빌드 에이전트에 SSH로 접근할때 필요하다.

 

플러그인을 설치하기 위해서는 Jenkins 관리 - 플러그인 관리를 클릭한다.

 

설치 가능 탭에서 상단의 돋보기 모양의 입력창에 사용할 플러그인 이름을 입력하면 필터링 된다.

설치할 플러그인에 체크하고 하단의 Install without restart를 클릭하면 설치가 진행된다.

 

설치가 진행된다. 설치 후 Jenkins 재시작을 원하는 경우 제일 하단의 옵션을 체크한다.

 

 

배포에 사용할 Nexus 계정 생성

빌드 머신에서 Nexus에 배포하는데 사용할 계정을 생성한다.

기존에 사용중인 Nexus 개인 계정을 사용해도 상관 없지만, 관리자 권한이 부여되어 있는 경우가 많아 작업용으로 사용하기는 부적합하다.

따라서 개인 계정은 개발 과정에 사용하고, 빌드머신에서 배포하는 작업을 위한 계정을 별도로 설정하는 것이 좋다.

 

Nexus에서 Role 생성

Nexus에서는 저장소별 작업 권한을 Role이라는 그룹으로 묶어서 관리한다.

Role에 사용할 저장소 별로 작업 권한을 부여하고, 사용자 계정에 해당 Role을 부여하여 권한을 관리하는 방식이다.

 

Nexus 관리 화면에서 Security - Roles를 클릭하면 우측에 현재 사용중인 Role 목록이 출력된다.

상단의 Create role - Nexus role을 클릭한다.

 

Role 생성에 필요한 정보를 입력한다.

  • Role ID - exe 배포에 사용할 것이므로 nx-exe로 지정했다.
  • Role name, Role description - Role 리스트에 출력 될 정보이다. Role ID와 동일하게 입력했다.
  • Privileges - 각 저장소별 권한을 부여한다. raw 타입의 exe-repos 저장소를 사용한다.

 

exe-repos 생성 방법은 다음 포스팅을 참고한다.

 

exe 파일 Nexus에 배포하기

Visual Studio에서 빌드를 하면 EXE 또는 DLL 파일이 생성된다. EXE 파일의 경우 바로 사용 가능하기 때문에 배포해야 하는데 방법은 여러가지가 있다. FTP 서버를 사용한다. 웹서버를 사용한다. 사설 저

www.bearpooh.com

 

Privileges는 nx-repository-권한 수준-저장소 타입-저장소 이름-작업 종류 형태로 구성된다.

  • 권한 수준 - admin은 관리자 권한, view는 사용자 권한이다.
  • 저장소 타입 - pypi, raw, docker 등 산출물의 형태이다.
  • 저장소 이름 - Repository로 생성한 저장소 이름이다.
  • 작업 종류 - add, browse, delete, edit, read 작업으로 구분한다.
  • 특정 항목의 모든 대상을 선택하는 건 * 표시를 선택한다.

 

raw 저장소의 모든 저장소에 대한 모든 작업을 허용하는 사용자 권한은 nx-repository-view-raw-*-* 이다.

 

아래 Role 부분은 기존의 다른 Role을 권한에 추가할 수 있다. 해당 사항이 없으므로 선택하지 않는다.

 

 

계정 생성

빌드 에이전트에서 Nexus에 배포할때 사용할 계정을 생성한다.

관리자 화면의 Security - Users - Create local user를 클릭한다.

 

Jenkins에서 사용할 계정이므로 jekninsbuild 계정을 생성했다.

  • Status는 Active로 설정한다.
  • Roles는 nx-exe를 선택한다. Avalable 목록에서 Grant로 옮긴다.
  • 향후 Docker나 Python 빌드 배포에도 사용할 것이므로 관련 Role도 추가했다.
  • 나머지 항목은 적절하게 입력한다.

 

계정이 생성되었다.

 

 

빌드에 사용할 GitLab 계정 생성

빌드 머신에서 GitLab의 소스코드를 가져오는데 사용할 계정을 생성한다.

기존에 사용중인 GitLab 개인 계정을 사용해도 상관 없지만, 관리자 권한이 부여되어 있는 경우가 많아 작업용으로 사용하기는 부적합하다.

따라서 개인 계정은 개발 과정에 사용하고, 빌드머신에서 배포하는 작업을 위한 계정을 별도로 설정하는 것이 좋다.

 

GitLab의 Menu - Admin - Users - Add User를 클릭하고 계정을 사용한다.

일반적으로 빌드에 사용하는 buildman 계정을 생성했다.

 

생성한 buildman 계정에 Jenkins에서 빌드할 Group이나 Project에 대한 권한을 부여한다.

좌측의 Groups 또는 Project 항목을 클릭하고, 우측의 Add user(s) to the group 항목에서 생성한 계정을 추가한다.

  • Search for a user에 추가할 계정을 입력하고 선택한다.
  • Guest로 표시 된 부분의 권한을 Developer로 변경한다.

 

Add users to group을 클릭하면 우측 하단에 계정이 추가된다.

 

 

GitLab Access Token 발급

Jenkins와 GitLab을 연동하기 위한 Access Token을 생성한다.

  • 관리자 계정으로 사용 중인 개인 계정으로 Access Token을 생성했다.
  • 가급적 새로 생성한 작업용 계정 사용을 권장한다.

 

상단 우측의 사용자 아이콘을 클릭하고, Edit Profile을 클릭한다.

 

좌측의 Access Tokens를 클릭한다.

 

Access Token 발급에 필요한 정보를 입력한다.

  • Name - 발급한 Access Token 관리를 위한 이름을 지정한다. jenkins로 입력했다.
  • Expires at - 생성한 Access Token 파기 일자를 지정한다. 입력하지 않으면 무기한이다.
  • Scopes - 권한을 지정한다. api, read_api, read_repository, write_repository, sudo에 체크했다.

 

Create personal access token을 클릭하면 Access Token이 발급 된다.

메모장에 잘 복사해 놓는다.

 

 

Jenkins에 GitLab Access Token 등록

이제 생성한 Access Token을 Jenkins에 등록한다.

 

Jenkins 관리를 클릭한다.

 

시스템 설정을 클릭한다.

 

스크롤을 내리면  GitLab 항목을 확인할 수 있다.

  • Connection name - GitLab 연결에 필요한 설정을 나타내는 이름을 입력한다. gitlab으로 입력했다.
  • GitLab host URL - 연결할 GitLab의 주소를 https://GitLab주소:포트 또는 http://GitLab주소:포트 형태로 입력한다.
  • Credentials - GitLab 연결에 필요한 인증 정보를 입력한다. Add - Jenkins 버튼을 클릭한다.

 

GitLab에서 생성한 Access Token을 사용하여 입력하고, Add를 클릭한다.

  • Kind - GitLab API Token을 선택한다.
  • API - token - GitLab에서 생성한 Access Token을 입력한다.
  • ID - 해당 인증 정보를 구분하기 위한 이름을 입력한다. gitlab으로 입력했다.

 

입력이 완료되었으면 Test Connection 버튼을 눌러 연결되는지 확인한다.

정상적으로 연결되면 Success라고 표시된다.

 

 

MSBuild 설정

Visual Studio 빌드를 위해 MSBuild 설정을 진행한다.

 

Jenkins 관리 - Global Tool Configuration을 클릭한다.

 

스크롤을 내리면 MSBuild 항목이 있다. 필요한 정보를 입력한다.

  • Name - 구분하기 위한 이름을 입력한다. MSBuild로 입력했다.
  • Path to MSBuild - 윈도우 빌드 에이전트에 설치한 Visual Studio의 MSBuild.exe 파일의 폴더 경로를 입력한다. 파일명은 제외한다.
  • Default parameters - MSBuild.exe 실행에 필요한 인자를 입력한다.

 

 

Master Node에는 해당 경로가 존재하지 않으므로 노란색 주의 메시지가 출력된다.

우리는 별도의 윈도우 빌드 에이전트를 사용할 것이므로 해당 메시지는 무시한다.

 

윈도우 빌드 에이전트에 Visual Studio 빌드 환경 구성하는 방법은 다음 포스팅을 참고한다.

 

시놀로지 VMM의 가상 윈도우에 빌드환경 구성하기

시놀로지 NAS에 VMM으로 설치한 윈도우 10 가상 컴퓨터에 기본적인 프로그램과 Visual Studio 빌드에 필요한 프로그램들을 설치한다. 시놀로지 NAS에 Virtual Machine Manager를 이용한 윈도우 운영체제 설치

www.bearpooh.com

 

참고로 Default parameters의 각 항목별 의미는 다음과 같다.

  • /t:Rebuild - Visual Studio의 솔루션이나 프로젝트를 재빌드한다.
  • /p:Configuration=Release - Visual Studio에서 배포를 위한 Release 모드로 빌드한다.
  • /p:Platform=x86 - 32비트 exe 파일을 생성한다.

 

 

Nexus3 설정

빌드로 생성 된 실행 파일을 Nexus3에 배포할 것이므로 Nexus 관련 설정을 진행한다.

Jenkins 플러그인 중 Nexus Artifact Uploader가 설치되어 있어야 한다.

 

Jenkins 관리 - 시스템 설정을 클릭한다.

 

스크롤을 내리면 Sonatype Nexus가 있다.

Add Nexus Repository Manager Server를 클릭하고 Nexus Repository Manager 3.x Server를 선택한다.

 

Nexus3에 대한 세부 정보를 입력한다.

  • Display Name - Nexus3 연결 설정을 구분하는 이름을 입력한다. Nexus3으로 입력했다.
  • Server ID - 여러 개의 Nexus3를 연결할 경우 구분할 ID를 지정한다. Nexus3 서버가 하나여서 Nexus3으로 입력했다.
  • Server URL - 연결할 Nexus3의 주소를 https://Nexus3주소:포트 또는 http://Nexus3주소:포트 형태로 입력한다.
  • Credentials - Nexus3 연결에 필요한 인증 정보를 입력한다. Add - Jenkins 버튼을 클릭한다.

 

 

Nexus3에 연결하기 위한 계정 정보를 입력하고 Add를 클릭한다.

  • Kind - Username with password를 선택한다.
  • Username - Nexus3에서 생성한 계정을 입력한다. 초반에 생성한 jenkinsbuild로 입력했다.
  • Password - Nexus3에서 생성한 계정의 비밀번호를 입력한다.

 

이렇게 ID와 Password를 입력해야 하기 때문에 별도의 계정 생성을 권장한 것이다.

가급적 개인 계정 보다는 Jenkins 작업을 위한 별도 계정을 생성하여 사용하기를 권한다.

 

Nexus3 계정 정보 입력을 마치면 Test connection을 클릭하여 정상적으로 연결되는지 확인한다.

연결에 성공하면 성공 메시지가 출력된다.

 

추가로 오픈소스 버전을 사용 중인 경우 아래에 주의 메시지가 출력된다.

유료 버전이 아니기 때문에 일부 기능이 제한되거나 호환되지 않는다는 메시지이다.

산출물 업로드 외에 추가적인 기능은 사용하지 않으므로 무시한다.

 

이제 Visual Studio 빌드 구성을 위한 사전 작업이 마무리되었다.

 

이후 과정인 Jenkins에서 소스코드를 가져와서 빌드하고 배포하는 작업은 다음 포스팅을 참고한다.

 

Jenkins에서 윈도우 에이전트를 이용한 Visual Studio 빌드 구성 (2)

이전 포스팅에서 Jenkins의 빌드 구성을 위한 사전 작업을 진행했다. Jenkins에서 윈도우 에이전트를 이용한 Visual Studio 빌드 구성 (1) 이제 Jenkins에 등록한 윈도우 에이전트를 이용하여 Visual Studio 빌

www.bearpooh.com

 

반응형