+1-1+1-1+1-1+1-1...
Maven 프로젝트 빌드/배포 기본 환경 구성 시나리오 및 설정 본문
소스 빌드 및 배포 구성 시나리오
그간 조사한 내용을 바탕으로 Gitlab-jenkins-nexus 간에 이루어 지는 소스 빌드, 패키지 배포 과정을 아래와 같이 구성해 보았다.
Gitlab -> Jekins
① Gitlab Repository -> 젠킨스 연동
소스 코드가 존재하는 Git Repoisotry URL 및 접속 계정 등록
② Gitlab Branch Merge 이벤트 발생 -> Build 트리거(유발)
Gitlabe에 Sub -> Master로 Push 이벤트 발생시 Web hook -> 젠킨스 Build 자동 실행 설정, 이를 위한 Gitlab 연결 Secret Tocken 생성
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>
④ Jenkins : Maven 빌드 수행 (Goal : Clean Deploy)
⑤ 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>
Jenkins -> WAS(Tomcat) 배포
⑥ 빌드 후 war 파일 생성
⑦ 지정된 Context path에 War 파일 배포
참고 사이트
https://emptyreset.tistory.com/94?category=843131
https://emptyreset.tistory.com/82?category=843131
https://emptyreset.tistory.com/81?category=843131
'Linux > CI & CD' 카테고리의 다른 글
Gradle, Github, Eclipse 연동, 간단 프로젝트 생성/빌드 (0) | 2021.02.19 |
---|---|
Centos 7 Sonatype Nexus Repository 설치하기 (0) | 2021.02.17 |
Jenkins Setting(2) > New Item (프로젝트) 생성 하기 (0) | 2021.02.15 |
Jenkins Setting(1) > Global Tool Configuration (0) | 2021.02.15 |
Jenkins 삭제 하기 (0) | 2021.02.15 |