«   2024/12   »
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
Tags more
Archives
Today
Total
12-28 16:41
관리 메뉴

+1-1+1-1+1-1+1-1...

Maven 프로젝트 빌드/배포 기본 환경 구성 시나리오 및 설정 본문

Linux/CI & CD

Maven 프로젝트 빌드/배포 기본 환경 구성 시나리오 및 설정

투명인간 2021. 2. 21. 01:43
728x90

소스 빌드 및 배포 구성 시나리오

 

그간 조사한 내용을 바탕으로 Gitlab-jenkins-nexus 간에 이루어 지는 소스 빌드, 패키지 배포 과정을 아래와 같이 구성해 보았다.

빌드 배포 흐름도 - 번호별 상세 설정은 아래 내용 참고

Gitlab -> Jekins

Gitlab Repository -> 젠킨스 연동

 

소스 코드가 존재하는 Git Repoisotry URL 및 접속 계정 등록

ITEM > Configure > Source Code Management TAB 설정 화면

Gitlab Branch Merge 이벤트 발생 -> Build 트리거(유발)

 

Gitlabe에 Sub -> Master로 Push 이벤트 발생시 Web hook -> 젠킨스 Build 자동 실행 설정, 이를 위한 Gitlab 연결 Secret Tocken 생성

ITEM > Configure > Build Triggers TAB 설정 화면
Gitlab > Webhook 설정 > Jenkins 연결 설정 화면

Jenkins <-> Nexus

 Nexus Repository (Maven Central Proxy) -> Jenkins : 빌드에 필요한 Dependency Library 다운로드

 

Jenkins 서버 > Maven > Settings.xml 관련 설정 - 미러사이트를 Nexus 서버로 지정하고, 접근을 위한 계정 정보를 세팅함

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <servers>
    <!-- nexus repository 별 접근 계정 설정 -->
    <!-- nexus dependency library & plugin download repository -->
    <server>
      <id>maven-public</id>
      <username>admin</username>
      <password>********</password>
    </server>
  <!-- repository download mirror server setting to Nexus -->
  <mirrors>
    <mirror>
      <id>maven-public</id>
      <name>maven-public</name>
      <url>http://192.168.60.22:8081/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
</settings>

Jenkin 서버 > Workspaces > Project 별 Pom.xml 파일 관련 설정 - 선택 사항, 프로젝트 별로 Reposistory를 다르게 지정할때 활용 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
......
<!---- dependency and plugin download repository settings ---->
  <repositories>
    <repository>
      <id>maven-group</id>
      <url>http://192.168.60.22:8081/repository/maven-central/</url>
    </repository>
  </repositories>
</project>

Nexus > Repository 목록 화면 (From Maven Central Downloaded)

 Jenkins : Maven 빌드 수행 (Goal : Clean Deploy)

ITEM > Configure > Build TAB 설정 화면

Jenkins 서버 -> Nexsus Hosted Repository에 등록

 

Jenkins 서버 > Maven > Settings.xml 관련 설정 - 패키지 배포를 위핸 접근 계정 정보 세팅

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <servers>
....
    <!-- nexus repository source build upload repository  -->
    <server>
      <id>MavenTest-releases</id>
      <username>admin</username>
      <password>*******</password>
    </server>
    <!-- nexus repository source build upload repository  -->
    <server>
      <id>MavenTest-snapshots</id>
      <username>admin</username>
      <password>*******</password>
    </server>
  </servers>
....
</settings>

Jenkin 서버 > Workspaces > Project 별 Pom.xml 파일 관련 설정 - 배포할 Repository 경로 지정

<project ..>
...
<!---- build package upload(deploy) repository settings ---->
  <distributionManagement>
    <repository>
      <id>MavenTest-releases</id>
      <url>http://192.168.60.22:8081/repository/MavenTest-releases/</url>
    </repository>
    <snapshotRepository>
      <id>MavenTest-snapshots</id>
      <url>http://192.168.60.22:8081/repository/MavenTest-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
</project>

Nexus > Repository 목록 화면 (From MavenTest Snapshots Deployed)

Jenkins -> WAS(Tomcat) 배포

빌드 후 war 파일 생성

⑦ 지정된 Context path에 War 파일 배포

ITEM > Configure > Post-build Actions TAB 설정 화면
Tomcat 서버 배포 결과 화면

참고 사이트

 

https://emptyreset.tistory.com/94?category=843131

 

Nexus 3 - Maven 연동 하기

Using Nexus 3 as Your Repository – Part 1: Maven Artifacts (sonatype.com) Using Nexus 3 as Your Repository – Part 1: Maven Artifacts This article is the first in a three part series by one of our..

emptyreset.tistory.com

copycoding.tistory.com/176

 

maven 설치 및 eclipse 연동

1. 다운로드 maven을 다운로드하기 위해 사이트에 접속 하고 좌측 메뉴에서 Download를 선택합니다. https://maven.apache.org/download.cgi 좀 가까운 곳에서 다운로드 하려면 우측에서 mirror사이트를 선택 하

copycoding.tistory.com

uxgjs.tistory.com/161

 

CentOS7에 gitlab ce 설치하기

리눅스 서버로 많이 사용하는 CentOS 7에 gitlab을 설치하는 방법을 Posting하려고 합니다. 먼저 공식 사이트에서 제공하고 있는 설치방법을 따르는 것을 권장합니다. 저는 그 가이드를 따라 설치하면

ux.stories.pe.kr

https://emptyreset.tistory.com/82?category=843131

 

Jenkins RPM 설치 관련 링크

chhanz.github.io/devops/2020/04/16/install-jenkins/ [Devops] Jenkins 설치(RPM/WAR) 목차 Gitlab-CE 설치 Jenkins 설치 Nexus Repository Manager 설치 Jenkins RPM 설치 RPM 을 이용한 설치 과정입니다. 참고..

emptyreset.tistory.com


https://emptyreset.tistory.com/81?category=843131 

 

젠킨스 오프라인 설치 (젠킨스 플러그인 오프라인 설치)

parkhyeokjin.github.io/devops/2019/10/07/MavenOfflineInstall.html 젠킨스 오프라인 설치 (젠킨스 플러그인 오프라인 설치) 나의 업무 환경은 인터넷망과 업무망이 구분 되어있고 서버의 경우 인아웃바운드의..

emptyreset.tistory.com

Maven 정복 - WikiDocs

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

반응형