::: IT인터넷 :::

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

곰탱이푸우 2021. 8. 23. 08:20

이전 포스팅에서 Jenkins의 빌드 구성을 위한 사전 작업을 진행했다.

 

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

이제 Jenkins에 등록한 윈도우 에이전트를 이용하여 Visual Studio 빌드를 구성한다. Jenkins와 Nexus에 추가로 설정할 것들이 있기 때문에 사전 준비와 빌드 설정을 나눠서 포스팅한다. 빌드 구성에 필요

www.bearpooh.com

 

이제 Jenkins에 빌드 작업을 등록하고 실제 빌드가 잘 되는지 확인한다.

 

다음 과정으로 진행한다.

  • 빌드 생성
  • 빌드 수행
  • 빌드와 배포 결과 확인

 

 

빌드 생성

Jenkins에서 새로운 Item을 클릭한다.

 

빌드 이름을 입력하고 Freestyle project를 선택한다.

 

Freestyle project를 선택하면 상단에 General, 소스 코드 관리, 빌드 유발, 빌드 환경, Build, 빌드 후 조치 등 다수의 탭이 생성된다.

이후 과정은 각 탭 별로 구분하여 정리한다.

 

 

General 설정

이 빌드는 매개변수가 있습니다 부분에 체크한다. 이 곳에서 설정한 매개변수는 Jenkins 빌드의 환경 변수로 사용된다.

 

하단에 매개변수 추가 버튼을 클릭하고 Git Parameter를 클릭한다.

  • Name - BRANCH로 입력한다. 빌드할 프로젝트의 브랜치 이름을 저장하는 변수이다.
  • Parameter Type - Branch를 선택한다.
  • Default Value - main을 입력한다. 해당 브랜치가 기본으로 선택된다.

 

GitLab 설정할 때 master 브랜치 이름 변경을 안해서 main이 master 브랜치이다.

 

일단 빌드 산출물의 버전을 입력 받도록 설정한다.

  • 입력한 버전 정보는 Nexus3에 업로드에 필요한 경로 지정에 사용한다.
  • 다음 포스팅에서 산출물의 버전을 자동으로 지정하는 방법을 다룰 예정이다.

 

하단에 매개변수 추가 버튼을 클릭하고 String Parameter를 클릭한다.

  • 매개변수 명 - APP_VERSION을 입력한다.
  • Default Value - 기본으로 출력할 문자열을 입력한다.
  • 설명 - 간단한 설명을 입력한다.
  • Trim the string - 체크한다. 입력 받은 문자열 앞 뒤의 불필요한 공백을 제거한다.

 

Restrict where this project can be run에 체크하고, 기존에 생성한 윈도우 빌드 에이전트의 Label을 입력한다.

  • 실제 빌드 수행은 윈도우 빌드 에이전트에서 수행한다.
  • Label 이름을 입력하면 해당 에이전트가 표시된다.

 

윈도우 빌드 에이전트가 표시되지 않는다면 다음 포스팅을 참고한다.

 

시놀로지 VMM의 윈도우 가상 환경을 Jenkins에 에이전트로 연결하기

Jenkins 자체에 포함 된 빌드 기능을 이용하면 빌드 수행이 가능하다. 그러나 별도의 빌드 에이전트를 Jenkins에 빌드 에이전트로 등록해서 사용할 수 있다. 예전에 개발팀에 있을때 Bamboo에 빌드머

www.bearpooh.com

 

 

소스 코드 관리 설정

빌드를 수행할 GitLab의 대상 프로젝트의 git 파일 경로를 URL 형태로 입력한다.

주소를 입력하면 인증 정보가 없어 접근 거부 메시지가 출력된다.

Credentials의 -none-을 클릭하고 기존에 추가한 buildman 계정을 선택한다.

 

GitLab 계정 정보가 입력되지 않은 경우 Add - Jenkins 버튼을 누르고 계정 정보를 입력한다.

  • Kind - Username and password를 선택한다.
  • Username - GitLab의 ID를 입력한다. GitLab에 buildman 계정을 생성했기 때문에 buildman을 입력한다.
  • Password - Username에 입력한 계정의 비밀번호를 입력한다.

 

계정 정보가 정상적으로 입력되면 인증 실패 메시지는 사라진다.

고급 버튼을 클릭하고 Name에는 해당 프로젝트의 이름을 입력한다.

빌드 에이전트에서 소스코드를 Clone 할 때 해당 이름의 폴더를 생성한다.

 

Branch Speifier에는 General 탭에서 Git Parameter로 설정한 매개변수인 BRANCH를 지정한다.

Jenkins에 환경 변수로 등록되어 있으므로 ${BRANCH} 형태로 입력해야 한다.

 

 

빌드 유발 설정

다양한 조건의 자동 빌드 조건을 지정할 수 있다.

필요할 때에만 빌드를 수행할 것이므로 체크하지 않았다.

 

빌드 환경 설정

Delete workspace before build starts에 체크한다.

윈도우 빌드 에이전트에서 workspace 폴더에 파일이 있을 경우 전부 삭제한다.

다른 항목은 사용하지 않으므로 선택하지 않았다.

 

윈도우 빌드 에이전트의 workspace는 C:\Users\jenkins\Project로 설정되어 있다.

 

윈도우 빌드 에이전트 설정은 다음 포스팅을 참고한다.

 

시놀로지 VMM의 윈도우 가상 환경을 Jenkins에 에이전트로 연결하기

Jenkins 자체에 포함 된 빌드 기능을 이용하면 빌드 수행이 가능하다. 그러나 별도의 빌드 에이전트를 Jenkins에 빌드 에이전트로 등록해서 사용할 수 있다. 예전에 개발팀에 있을때 Bamboo에 빌드머

www.bearpooh.com

 

 

Build 설정

이제 드디어 Build Step을 지정한다. 실제 빌드를 수행하는 부분이다.

 

Add build step을 클릭하고 Build a Visual Studio project or solution using MSBuild를 선택한다.

 

MSBuild에 필요한 정보를 입력한다.

  • MSBuild Version - Jenkins에 설정한 MSBuild 이름을 선택한다. MSBuild 설정 이름을 Visual Studio 2019로 할껄 그랬다.
  • MSBuild Build File - MSBuild로 빌드할 솔루션이나 프로젝트 파일 경로를 지정한다. 확장명까지 모두 입력해야 한다.
  • Comman Line Arguments - 빌드에 필요한 기본 전달 인자는 Jenkins 설정에서 했으므로 비워놓는다.

 

 

Nexus Details 설정

Build 탭에서 Add build step을 클릭하고 Nexus artifact uploader를 선택한다.

빌드 결과로 생성 된 exe 파일을 Nexus3에 배포하기 위한 설정이다.

 

Nexus3에 연결하기 위한 정보를 입력한다.

  • Nexus Version - NEXUS3를 선택한다.
  • Protocol - HTTPS로 설정되어 있으므로 HTTPS를 선택한다.
  • Nexus URL - NEXUS의 주소와 포트를 입력한다. URL:Port만 입력한다. (ex. nexus.test.com:1234)
  • Credentials - Jenkins 환경 설정의 Nexus3 설정에서 입력한 jenkinsbuild를 선택한다.

 

Credentials에 선택 가능한 계정이 없다면 Add - Jenkins 버튼을 누르고 계정 정보를 입력한다.

  • Kind - Username with password 선택
  • Username - Nexus3의 ID를 입력한다. Nexus3에 jenkinsbuild 계정을 생성했기 때문에 jenkinsbuild을 입력한다.
  • Password - Username에 입력한 계정의 비밀번호를 입력한다.

 

Nexus3에 업로드할 경로에 대한 정보를 입력한다.

  • GroupId - 산출물이 저장 될 최상위 경로. 일반적으로 프로젝트명을 입력한다.
  • Version - 산출물의 버전 정보. 일단 String Parameter 로 전달 받은 ${APP_VERSION} 입력한다.
  • Repository - 산출물이 저장 될 저장소 이름. exe-repos 저장소를 사용할 것이므로 exe-repos를 입력한다.

 

 

APP_VERSION은 General 탭에서 String Parameter로 설정했기 때문에 환경 변수 형태로 전달해야 한다.

 

추가 정보를 입력한다.

  • ArtifactId - Nexus3에 저장 될 파일의 이름을 입력한다. 산출물 파일 이름이 아닌 Nexus3에 저장 될 이름이다.
  • Type - 파일의 확장명을 입력한다. exe 파일이므로 exe를 입력한다.
  • Classifier - 플랫폼(x86/x64), 언어 구분(kr/en ) 등 부가 정보를 입력한다. 테스트로 123을 입력했다.
  • File - 업로드 될 파일의 경로를 지정한다.

 

일반적으로 Nexus3에 업로드 되는 경로 구조는 다음과 같다.

  • GroupId\ArtifactId\Version\ArtifactId-Version-Classifier.Type
  • GroupId - 프로젝트 이름
  • ArtifactId - 프로그램 이름
  • Version - 프로그램 버전
  • Classifier - 구분 명칭 추가 (ex. x86/x64 같은 플랫폼 구분이나 kr/en 같은 언어 구분 등)

 

위의 설정대로 업로드하면 exe-repos 저장소에 다음과 같은 경로로 업로드 된다.

MD5Viewer-Win32\MD5Veiwer\1.0.13.0\MD5Viewer-1.0.13.0-123.exe

 

빌드 후 조치 설정

모든 Build Step이 완료되면 수행할 작업을 선택한다.

빌드 후 조치 추가 - Delete workspace when build  is done을 선택한다.

빌드가 완료되면 내려 받은 소스 코드와 빌드 산출물을 모두 지워야 한다.

 

 

빌드 수행

모든 설정이 완료되었으므로 빌드가 정상적으로 진행되는지 확인한다.

 

Jenkins에서 빌드할 프로젝트의 이름을 클릭한다.

 

좌측의 Build with Parameters를 클릭한다.

 

우측에 빌드 생성에서 General 탭에 구성한 Parameter 항목이 표시된다.

APP_VERSION에 빌드할 버전, BRANCH는 빌드할 소스코드가 있는 브랜치를 선택하고 빌드하기 버튼을 클릭한다.

참고로 APP_VERSION은 다음 포스팅에서 자동 입력 되도록 변경할 예정이다.

 

 

빌드가 진행된다. 좌측 하단에 빌드 번호와 진행 상태를 확인할 수 있다.

 

좌측 하단의 #빌드번호를 클릭하면 진행 중인 빌드의 상세 페이지로 이동한다.

 

좌측의 Console Output을 클릭하면 빌드 과정에 대한 로그를 확인할 수 있다.

 

 

빌드와 배포 결과 확인

빌드 로그를 확인해보면 빌드와 업로드가 정상적으로 완료된 것을 확인할 수 있다.

 

Nexus3의 exe-repos에서 확인해보면 정상적으로 업로드 된 것을 확인할 수 있다.

 

가상 머신으로 생성한 윈도우 빌드 에이전트에 접속해서 빌드 완료 후 폴더가 정상적으로 삭제 되었는지 확인한다.

Workspace 경로에 생성 했던 파일들이 모두 삭제 된 것을 확인할 수 있다.

 

현재 2가지 부족한 부분이 있다.

  • 배포할 버전을 직접 입력
  • 개발 중인 버전과 배포용 버전 구분 없이 동일한 저장소에 배포

 

Jenkins 플러그인을 활용하면 생각보다 간단하게 해결할 수 있다.

(물론 해결 방법을 찾고 트러블 슈팅하는 과정은 결코 간단하지 않았다.)

 

해결 방법은 다음 포스팅을 참고한다.

 

Jenkins에서 빌드 산출물을 배포할때 자동으로 버전 지정하기

이전 포스팅에서 Jenkins에서 빌드 설정을 위한 사전 작업과 빌드 구성에 대해 다뤘다. Jenkins에서 빌드 설정을 위한 사전 작업은 다음 포스팅을 참고한다. Jenkins에서 윈도우 에이전트를 이용한 Visu

www.bearpooh.com

 

Jenkins 빌드에서 Git 경로로 릴리즈와 개발중 배포 구분하여 설정하기

이전 포스팅에서 Jenkins에서 빌드 설정을 위한 사전 작업과 빌드 구성에 대해 다뤘다. Jenkins에서 빌드 설정을 위한 사전 작업은 다음 포스팅을 참고한다. Jenkins에서 윈도우 에이전트를 이용한 Visu

www.bearpooh.com