= 빌드&배포

== Vite Bundling
SDL6 UI는 서비스 하기 위해 Bundling이 필요하다.
각 배포 대상에 따른 설정 파일은 .env.test , .env.development, .env.production 파일을 참고한다.

..env.production 예시
[source, properties]
----
# default env
VITE_NODE_ENV=production
VITE_API_URL=http://sdl.sec.samsung.net/administrator
VITE_DIST_PATH=../src/main/webapp/pp
# CONTEXT_PATH value must be end with '/'
VITE_WEB_CONTEXT_PATH=/
----

package.json 에 정의된 script에 따라 설정 파일이 적용된다.

.package.json
[source, json]
----
  "scripts": {
    "local": "vite --mode test",
    "dev": "vite --mode development",
    "prod": "vite --mode production",
    "build": "vite build --mode production",
    "build-test": "vite build --mode test",
    "build-dev": "vite build --mode development",
    "build-prod": "vite build --mode production",
    "preview": "vite preview --mode production",
    "preview-test": "vite preview --mode test",
    "preview-dev": "vite preview --mode development",
    "preview-prod": "vite preview --mode production",
    "lint": "eslint src/**/*.{vue,js}"
  },
----

*npm run local* 명령어를 실행할 경우 .env.test 파일이 적용되며, vite-dev-server가 실행된다.
vite-dev-server는 front-end 코드가 실시간으로 반영되므로 개발 시 편리하다.

*npm run preview* 명령어를 통해 빌드 된 결과물을 preview 서버를 통해 확인 할 수 있다.
반드시 *VITE_DIST_PATH* 에 Build 결과물이 존재해야 구동된다.

== SonarQube Scanner 를 통한 소스코드 정적 분석

* 먼저 SonarQube Scanner 를 설치한다.

----
npm install sonar-scanner -g
----

* 사용법 (Command Line)

----
cd sdl-base <1>

sonar-scanner -Dsonar.host.url=SonarQube서버URL -Dsonar.projectKey=프로젝트Key -Dsonar.projectName=프로젝트명 -Dsonar.projectVersion=프로젝트버전 -Dsonar.login=아이디 -Dsonar.password=패스워드 -Dsonar.sources=frontend/src <2>
----

<1> 분석하고자 하는 프로젝트로 이동한다.
<2> 설정한 파라미터값으로 실행한다.

.파라미터 설명
[width="100%",options="header"]
|=====
| key | value(예) | 설명 | 비고

| sonar.host.url
| \http://guide.sonarqube.sec.samsung.net
| SonarQube 서버 URL
| 필수

| sonar.projectKey
| my:project
| 분석하고자 하는 프로젝트의 고유한 키 값
| 필수

| sonar.projectName
| "my project for test"
| 프로젝트 이름
| 

| sonar.projectVersion
| 1.0
| 프로젝트 버전
| 

| sonar.login
| user01
| SonarQube 서버 로그인 ID
| 필수

| sonar.password
| passwd01
| SonarQube 서버 로그인 패스워드
| 필수

| sonar.sources
| frontend/src
| 소스파일이 위치한 디렉토리
| 
|=====

NOTE: sonar-scanner 파라미터 관련 자세한 내용은 https://docs.sonarqube.org/latest/analysis/analysis-parameters/[공식문서^]를 참조한다.

== Front-end 빌드

운영시스템에 배포 하기 위해서 cmd창에서 *npm run-script build* 명령어를 실행한다.
빌드 결과는 .env 파일의 *VITE_DIST_PATH* 경로에 생성된다.

image::build_01.png[build_01,800,600]

image::build_02.png[]

== Back-end 빌드

Back-end는 Maven을 이용해 Build 하고 있다. maven 명령어를 이용해 빌드한다.
패키징 시 배포 대상별로 Profile을 적용 할 수 있다.
----
mvn clean package -Pprod
----
-Pprod 옵션을 경우 src/main/resource-prod 아래의 설정파일들이 적용되어 패키징 된다.

image::build_03.png[build_03,800,600]

IMPORTANT: SDL 6.0은 Spring Profile이 적용되어 서버 실행시 -Dspring.profiles.active=local과 같은 옵션을 필요로 한다.



