지난번에 이어 이번에는 git으로 업로드된 파일들을 jenkins에서 가져와 자동으로 빌드해 보도록 하겠다. 아직 설정을 못했다면 이전 포스팅을 참고하자.
2024.08.14 - [DevOps/CI·CD] - [Jenkins] Jenkins .net 자동 빌드/배포 - git 연동하기 [1]
[Jenkins] Jenkins .net 자동 빌드/배포 - git 연동하기 [1]
이전에 Jenkins 서버를 구축하고 설정하는 것에 대해 작성하였다. 이번에는 .net을 수정했을 때 자동으로 빌드해서 서버에 배포하는 과정을 jenkins로 자동화해보도록 하겠다. 먼저 자동 빌드/배포
goddmk.tistory.com
3단계 중에 두 번째인 자동 빌드를 설정해 보도록 하겠다.
1. jenkins와 git 연동하기
2. jenkins에서 업로드 된 git 소스코드 빌드 설정 하기(MSBuild 사용)
3. ssh로 실 서버에 배포하기
1. MSBuild 설치하기
필자의 경우 웹 애플리케이션이기 때문에 웹 게시 기능을 사용해서 빌드를 해줘야 하는데, 여기서 .net을 빌드하기 위해서는 msbuild라는 것이 필요하다. 그러나 jenkins 서버에는 빌드를 위한 도구가 없기 때문에 설치를 해줘야지 빌드를 할 수 있다.
빌드를 위해서는 visual studio를 설치해줘도 되고, buildtolls를 설치해서 빌드 기능만 개별적으로 설치할 수 있다.(라이선스 정책에 주의하자)
아무튼 jenkins 서버에서는 무겁게 visual studio까지 설치할 필요가 없기 때문에 buildtolls만 설치해서 필요한 빌드 도구만 설치해 주도록 한다.
마이크로소프트 공식 홈페이지에서 자신의 visual studio 버전에 맞는 buildtolls를 설치하고(필자의 경우 2017버전으로 다운해 주었다.) jenkins 서버가 설치되어있는 곳에서 실행하면 설치해 줄 목록이 나온다. 여기서 .net 데스크톱 빌드 도구와 웹 개발 빌드 도구를 선택해 주고 설치해 준다.
그러면 이제 jenkins 서버에서도 .net 프로젝트를 빌드할 수 있게 되었다.
2. Msbuild 설정
2-1. 플러그인 설치
jenkins 웹으로 들어가 msbuild 플러그인을 설치해 줄 것이다.
jenkins 관리 -> plugins -> available plugins로 들어가 msbuild를 검색하여 설치해 준다.
2-2. msbuild 경로 설정
그런 다음 jenkins 관리 -> tools에 들어가면 MSBuild installations라는 항목이 보일 것이다. 여기서 Add MSBuild를 눌러 항목을 입력해 준다. install automatically가 체크되어있을건데 체크를 해제하고 이름과 msbuild 경로를 입력해준다. 아까 제일 처음 설치한 msbuild의 경로는 "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\." 여기다.
예전에 사용할 때는 msbuild.exe까지 경로에 붙여 썼는데 지금은 1.34 버전에서는 경로를 설정하는 창이 path to msbuild에서 msbuild_home으로 바뀌고 "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" 이렇게 작성하는 게 그냥 경로만 입력하도록 "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\." 바뀌었다. 아무튼 아래처럼 작성해 준다.
"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\."
2-3. 프로젝트 설정
이제 msbuild 설정은 완료했다. 다음으로 처음에 만들었던 net_build 프로젝트에 들어가 build steps 부분을 설정해 준다. build step을 아래의 msbuild로 추가해 준다.
선택 후 설정은 아래 사진처럼 설정하면 된다.
항목에 대해서 설명을 하자면
첫 번째 MSBuild Version에는 아까 우리가 2-1 항목에서 생성한 버전이 있을 것이다. 해당 항목을 선택해 주고 다음으로 빌드 파일을 선택해 줄 것이다.
두 번째 jenkins가 git에서 끌어오면 자동으로 C:\ProgramData\Jenkins\.jenkins\workspace\[jenkins 프로젝트 이름] 쪽에 .net 파일들이 업로드될 건데 ${WORKSPACE}가 해당 경로이다. 그래서 빌드를 위한 솔루션 파일(*.sln)도 그 경로에 있기 때문에 아래처럼 경로로 지정해 준다.
${WORKSPACE}\WebApplication1.sln
마지막으로 게시를 위한 설정이다. 아래와 같이 설정하면 되고 게시가 아닌 빌드만 하고 싶다면 /p:Configuration=Relase라고 입력한다. 여기서 publishprofile 경로는 두 번째에서 말한 경로처럼 workspace의 net_build 폴더의 프로젝트 폴더에 있다.
/p:DeployOnBuild=true
/p:PublishProfile=C:\ProgramData\Jenkins\.jenkins\workspace\net_build\WebApplication1\Properties\PublishProfiles\FolderProfile.pubxml
추가적으로 게시파일 경로라든지 설정은 프로젝트의 FolderProfile.pubxml 파일을 설정해주어야 하는데 나중에 ssh로 파일을 배포하기 위해서 경로를 jenkins경로로 바꿔줘야 한다.
해당 설정을 위해 visual studio로 .net 프로젝트를 실행하여 FolderProfile.pubxml로 이동한다.
해당 xml 파일을 열어 publishurl 부분에 net_build폴더에 게시라는 폴더를 만들어 그쪽으로 게시하겠다.
<?xml version="1.0" encoding="utf-8"?>
<!--
이 파일은 웹 프로젝트의 게시/패키지 프로세스에서 사용됩니다. 이 MSBuild 파일을 편집하여 이 프로세스의 동작을
사용자 지정할 수 있습니다. 이에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkID=208121을 참조하세요.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>C:\ProgramData\Jenkins\.jenkins\workspace\net_build\게시</publishUrl> <!-- 경로 수정 -->
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
</Project>
2-4. 빌드(게시) 테스트
이제 테스트를 해보자. 설정을 저장하고 왼쪽의 지금 빌드를 누르면 초록색 체크표시가 나오면서 정상적으로 빌드가 된 모습이 보인다. 아까 설정한 게시 폴더에 들어가 보면 빌드된 파일이 있을 것이다.
이제 빌드자동화까지 완료했다. 다음으로 ssh를 통해 실 서버로 배포하는 과정을 작성해 보도록 하겠다.
'DevOps > CI·CD' 카테고리의 다른 글
[Jenkins] Jenkins .net 자동 빌드/배포 - OpenSSH를 통한 윈도우 서버 배포 [3] (10) | 2024.08.22 |
---|---|
[Jenkins] Jenkins .net 자동 빌드/배포 - git 연동하기 [1] (0) | 2024.08.17 |
[Jenkins] Windows에 Jenkins 설치하기 - 설정 마무리 하기 [2] (0) | 2024.08.07 |
[Jenkins] Windows에 Jenkins 설치하기 [1] (0) | 2024.08.06 |