구조도
젠킨슨을 이용한 도커이미지 빌드 도구 중에 kaniko 도커라이즈툴과 주로 호환되는 maven project 로 형식을 바꿔서 파이프라인을 구성하기로 하였다.
- pom.xml 이란 maven 프로젝트의 종속성, 설정을 구성하는 파일이다.
-kaniko : 도커 데몬 없이 도커파일만을 참조하여 도커이미지를 생성하는 툴이다. eks 에서 생성한 젠킨슨은 도커데몬을 구동하기 어려워 매우 jib 와 더불어 유용한 툴.
-빌드과정 : Maven을 사용하여 Java 어플리케이션을 빌드하고 JAR 파일을 생성 (maven clean install) -> Kaniko를 사용하여 Maven이 생성한 JAR 파일을 Docker 이미지로 패키징 -> ecr 에 푸쉬
-application.properties -rds 완 연결
&allowPublicKeyRetrieval=true&useSSL=false
데이터source url 뒷 부분에 추가 : mysql 8.x 버전 이후로 발생 -> 보안문제때문
pom.xml - jdbc.driver의 의존성 추가- 라이브러리 역할
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mvn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mvn</name>
<description>mvn</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-graphql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-docker-compose</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.graphql</groupId>
<artifactId>spring-graphql-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.github.deweyjose</groupId>
<artifactId>graphqlcodegen-maven-plugin</artifactId>
<version>1.50</version>
<executions>
<execution>
<id>dgs-codegen</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaPaths>
<param>src/main/resources/graphql-client</param>
</schemaPaths>
<packageName>com.example.mvn.codegen</packageName>
<addGeneratedAnnotation>true</addGeneratedAnnotation>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-dgs-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
</dependencies>
-수정한 부분 -> application.properties 과 mysql 와의 연결을 위해 의존성을 추가 jdbc-driver
mysql-connector-j 라고 처음에 입력하다 -mysql-connector-java 라고 입력해야 오류가 안난다.
호환되는 버전 - https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.33
<configuration>
<schemaPaths>
<param>src/main/resources/graphql-client</param>
</schemaPaths>
<packageName>com.example.mvn.codegen</packageName>
<addGeneratedAnnotation>true</addGeneratedAnnotation>
</configuration>
</execution>
</executions>
</plugin>
빌드가 되면 intellij 에서는 빈 폴더인 resource/graphql-client/ 가 github 에 안올라가므로 편의상
경로를
<configuration>
<schemaPaths>
<param>src/main/resources/</param>
</schemaPaths>
<packageName>com.example.mvn.codegen</packageName>
<addGeneratedAnnotation>true</addGeneratedAnnotation>
</configuration>
로 수정한다.
-test
로컬에서 제대로 빌드가 되어 jar 파일이 생성되는지 확인한다.
mvn clean install
web-was 구축해보기 (nginx-proxy) -(1) (0) | 2024.04.06 |
---|---|
maven 프로젝트를 젠킨슨에서 도커 이미지 빌드 (CI) -kaniko (0) | 2024.03.10 |
eks 웹어플리케이션 배포 영상 (CI/CD) (0) | 2024.03.08 |
CI/CD 라인 구성 - EKS 웹어플리케이션기반 인프라 구축 - (3) (0) | 2024.03.08 |
CI/CD 라인 구성 - EKS 웹어플리케이션기반 인프라 구축 - (2) (2) | 2024.03.08 |