BuildCLI
BuildCLI는 Java 프로젝트 개발에서 흔히 발생하는 작업을 관리하고 자동화하는 명령줄 인터페이스 (CLI) 도구입니다. 이 도구를 사용하면 터미널에서 직접 Java 프로젝트를 생성, 컴파일, 의존성(dependencies) 관리 및 실행할 수 있어 개발 과정을 간소화합니다.
목차
기능 (Features)
-
프로젝트 초기화 (Initialize Project): Java 프로젝트의 기본 디렉토리 및 파일 구조를 생성합니다.
-
프로젝트 컴파일 (Compile Project): Maven을 사용하여 프로젝트 소스 코드를 컴파일합니다.
-
의존성 추가 (Add Dependency): pom.xml에 새로운 의존성을 추가합니다.
-
의존성 제거 (Remove Dependency): pom.xml에서 의존성을 제거합니다.
-
코드 문서화 (Document Code): [Beta] AI를 사용하여 Java 파일에 대한 문서를 생성합니다.
-
설정 프로필 관리 (Manage Configuration Profiles): 프로필을 위한 특정 설정 파일(예: application-dev.properties, application-test.properties 등)을 생성합니다.
-
프로젝트 실행 (Run Project): Spring Boot을 사용하여 CLI에서 직접 프로젝트를 시작합니다.
-
프로젝트 Docker화 (Dockerize Project): 프로젝트용 Dockerfile을 생성하여 쉬운 컨테이너화를 가능하게 합니다.
-
Docker 컨테이너 빌드 및 실행 (Build and Run Docker Container): 생성된 Dockerfile을 사용하여 Docker 컨테이너를 빌드하고 실행합니다.
-
CI/CD 통합 (CI/CD Integration): CI/CD 도구(예: Jenkins, GitHub Actions)에 필요한 설정 파일을 자동으로 생성하고 프로젝트 변경 사항을 기반으로 파이프라인을 트리거합니다.
-
Changelog 생성: Git 커밋 히스토리를 분석하여 구조화된 변경 로그(changelog)를 자동으로 생성함으로써, 릴리스 간의 변화 이해를 용이하게 합니다.
-
오케스트레이션 명령어: BuildCLI는 이제 Docker Compose 설정 생성을 자동화하고 컨테이너 수명 주기를 관리하는 오케스트레이션 명령어를 포함합니다.
설치 (Installation)
<details>
<summary>스크립트를 통한 설치</summary>
[!TIP]
이 설치 방법은 시스템에 git과 maven이 설치되어 있어야 합니다.
-
스크립트 설치:
install.sh 또는 install.bat 파일을 다운로드하여 실행합니다.
- Unix 계열 시스템(Linux, macOS)의 경우,
install.sh에 실행 권한을 부여하고 다음 명령어를 실행합니다:
sudo chmod +x install.sh
./install.sh
- Windows의 경우:
install.bat 파일을 더블클릭하거나 명령 프롬프트(cmd)에서 다음 명령어를 실행하여 실행합니다:
이제 BuildCLI를 사용할 준비가 되었습니다. 터미널에서 buildcli 명령을 테스트해 보세요.
</details>
<details>
<summary>릴리스를 통한 설치</summary>
[!TIP]
maven으로 프로젝트를 빌드하고 래퍼 스크립트를 실행하여 CLI를 시작할 수 있습니다. 이렇게 하면 java -jar buildcli.jar 명령어 없이도 CLI를 사용할 수 있습니다.
Windows
- BuildCLI의 최신 버전을 다운로드합니다.
buildcli.jar와 buildcli.bat 두 파일을 Windows 디렉토리(일반적으로 C://Windows)로 이동시킵니다.
- 만약
C://Windows에 접근할 수 없다면, 두 파일을 원하는 곳에 배치한 후 해당 디렉토리를 환경 변수 시스템 PATH 변수에 추가할 수 있습니다.
- 명령 프롬프트를 통해
buildcli를 실행해 보세요.
Linux
- BuildCLI의 최신 버전을 다운로드합니다.
buildcli.jar와 buildcli 두 파일을 /usr/local/bin으로 이동시킵니다. (root 권한 필요)
- 두 파일 모두 실행 가능하도록 설정해야 합니다. (
chmod +x)
- CLI를 통해
buildcli를 실행해 보세요.
Mac
- BuildCLI의 최신 버전을 다운로드합니다.
buildcli.jar와 buildcli를 모두 /usr/local/bin으로 이동시킵니다. (root 권한 필요)
- 두 파일 모두 실행 가능하도록 설정합니다. (
chmod +x)
- CLI를 통해
buildcli를 실행해 봅니다.
사용법 (Usage)
저희는 BuildCLI 아키텍처에 대한 대규모 리팩토링을 진행했습니다. 사용 가능한 모든 옵션을 보려면 buildcli help 명령어를 사용해 주세요. 또한, 더 자세한 내용은 issue #89와 pull request #79를 참고해 주세요.
예시 (Examples)
1. 새 프로젝트 초기화 (Initialize a New Project)
src/main/java, pom.xml, README.md를 포함하는 기본적인 Java 프로젝트 구조를 생성합니다. 프로젝트 이름을 지정하여 패키지 구조와 프로젝트 아티팩트를 동적으로 설정할 수 있습니다.
예시 명령어 (Example Commands)
buildcli project init MyProject
이 명령은 MyProject를 기본 패키지 이름으로 사용하여 프로젝트 구조를 생성하며, 그 결과 디렉터리는 src/main/java/org/myproject와 같은 형태가 됩니다.
이 명령은 buildcli를 기본 패키지 이름으로 사용하여 프로젝트 구조를 생성하며, 그 결과 디렉터리는 src/main/java/org/buildcli와 같은 형태가 됩니다.
2. 프로젝트 컴파일 (Compile the Project)
Maven을 사용하여 Java 프로젝트를 컴파일합니다:
buildcli project build --compile
3. pom.xml에 의존성 추가 (Add a Dependency to pom.xml)
groupId:artifactId 형식으로 프로젝트에 의존성을 추가합니다. 또한, groupId:artifactId:version 형식을 사용하여 버전을 지정할 수도 있습니다. 버전이 지정되지 않으면 사용 가능한 최신 버전으로 기본 설정됩니다.
예시 명령어 (Example Commands)
buildcli project add dependency org.springframework:spring-core
buildcli p a d org.springframework:spring-core:5.3.21
이 명령어들을 실행하면 해당 의존성이 <dependencies> 섹션 아래의 pom.xml 파일에 추가됩니다.
4. 구성 프로필 생성 (Create a Configuration Profile)
지정된 프로필로 구성 파일을 생성합니다. 예를 들어, application-dev.properties가 있습니다:
buildcli project add profile dev
5. 프로젝트 실행 (Run the Project)
Spring Boot을 사용하여 Java 프로젝트를 실행합니다:
6. Java 코드 문서화 생성 (Generate Documentation for Java Code)
AI를 사용하여 Java 파일에 대한 인라인 문서를 자동으로 생성합니다:
buildcli ai code document File.java
이 명령어는 지정된 Java 파일을 로컬 Ollama 서버로 전송하여, 문서와 주석을 코드 내부에 직접 생성합니다. 문서화가 적용된 수정된 파일은 원래 위치에 저장됩니다.
7. 활성 환경 프로필 설정 (Set Active Environment Profile)
활성 환경 프로필을 설정하고 이를 environment.config 파일에 저장합니다. 이 프로필은 프로젝트 실행 중에 참조되어 올바른 구성이 로드되도록 보장합니다.
이 명령어를 실행한 후, 활성 프로필은 dev로 설정되고 environment.config 파일도 이에 맞춰 업데이트됩니다.
프로젝트 실행 중 활성 프로필 표시 (Active Profile Display During Project Execution)
--set-environment 기능을 사용하면 활성 환경 프로필을 설정할 수 있습니다. buildcli --run으로 프로젝트를 실행할 때, 활성 프로필은 터미널에 표시됩니다.
8. Dockerize 명령어 (Dockerize Command)
이 명령어는 Java 프로젝트용 Dockerfile을 생성하여 애플리케이션의 컨테이너화(containerize)를 더 쉽게 만듭니다:
buildcli p add dockerfile
9. Docker 빌드 명령어 (Docker Build Command)
이 명령어는 자동으로 Docker 컨테이너를 빌드하고 실행합니다. 명령어를 실행한 후, Docker 이미지가 생성되고 프로젝트가 컨테이너 내부에서 실행됩니다:
buildcli project run docker
10. CI/CD 통합 설정 (Set Up CI/CD Integration)
CI/CD 도구용 설정 파일을 생성하고 프로젝트를 자동화된 파이프라인에 준비합니다.
Jenkins, Gitlab, GitHub Actions을 지원합니다.
buildcli project add pipeline github
buildcli project add pipeline gitlab
buildcli project add pipeline jenkins
11. Changelog 생성
BuildCLI는 이제 Git 커밋 기록을 분석하여 구조화된 변경 로그(changelog)를 생성하는 자동 기능이 포함되었습니다.
이는 개발자와 최종 사용자가 릴리스 간의 변경 사항을 쉽게 추적할 수 있도록 돕습니다.
사용 방법
변경 로그를 생성하려면 다음 명령어를 실행합니다:
buildcli changelog [OPTIONS]
또는 별칭(alias)을 사용합니다:
옵션:
-
--version, -v <버전>:
변경 로그에 사용할 릴리스 버전을 지정합니다. 생략할 경우 BuildCLI는 최신 Git 태그를 감지하려고 시도합니다. 태그가 발견되지 않으면 기본값으로 "Unreleased"를 사용합니다.
-
--format, -f <형식>:
출력 형식을 지정합니다. 지원되는 형식:
-
--output, -o <파일>:
출력 파일 이름을 지정합니다. 제공되지 않으면 CHANGELOG.<확장자>의 기본값을 사용합니다.
-
--include, -i <커밋 유형>:
포함할 커밋 유형을 쉼표로 구분된 목록으로 제공합니다 (예: feat, fix, docs, refactor).
예제 명령어
buildcli changelog --version v1.0.0 --format markdown --include feat,fix --output CHANGELOG.md
또는
buildcli changelog -v v1.0.0 -f markdown -i feat,fix -o CHANGELOG.md
12. 오케스트레이션 명령어
BuildCLI는 이제 Docker compose 설정 파일 생성을 자동화하고 컨테이너 라이프사이클을 관리하기 위한 오케스트레이션 명령어를 포함합니다.
아래에서 새로운 기능에 대한 빠른 시작 가이드와 사용 예시를 확인할 수 있습니다.
빠른 시작 가이드
1. 프로젝트용 Docker Compose 파일 생성:
buildcli project add dockerCompose
또는
이 명령어는 향상된 Dockerfile에서 빌드한 이미지를 사용하여 자바 애플리케이션의 기본 서비스를 포함하는 docker-compose.yml 파일을 생성합니다.
2. 필수 매개변수 사용자 정의:
CLI 플래그를 사용하여 포트, 볼륨 및 리소스 제한(CPU 및 메모리)을 사용자 정의할 수 있습니다. 예를 들면 다음과 같습니다:
옵션:
-
--port, -p <ports>:
컨테이너에 노출할 포트를 지정합니다. 형식: <호스트_포트>:<컨테이너_포트>.
-
--volume, -v <volume>:
컨테이너에 마운트할 볼륨을 지정합니다. 형식: <호스트_경로>:<컨테이너_경로>.
-
--cpu, -c <cpu_limit>:
컨테이너의 CPU 제한을 지정합니다.
-
--memory, -m <memory_limit>:
컨테이너의 메모리 제한을 지정합니다. 형식: <값><단위> (예: 512m).
-
--dockerfile, -d <dockerfile_path>:
컨테이너용 Dockerfile의 경로를 지정합니다.
예시 명령어
buildcli project add docker-compose --ports 8080:8080 --volumes /data:/app/data --cpu 2 --memory 512m --dockerfile /path/to/Dockerfile
또는
buildcli p add dc -p 8080:8080 -v /data:/app/data -c 2 -m 512m -d /path/to/Dockerfile
3. 컨테이너 시작:
다음 명령어를 사용하여 컨테이너를 시작합니다:
buildcli run orchestration up
또는
이미지를 강제로 다시 빌드하려면 --build 플래그를 추가합니다:
buildcli run orchestration up --build
또는
4. 컨테이너 중지:
컨테이너를 중지하려면 다음 명령어를 사용합니다:
buildcli run orchestration down
또는
5. 특정 컨테이너 중지:
특정 컨테이너를 중지하려면 다음 명령어를 사용합니다:
buildcli orchestration down --name <container_name>
또는
buildcli oc down -n <container_name>
전제 조건 (Prerequisites)
로컬 Ollama API
docs 기능은 로컬 API를 통해 접근 가능한 AI 모델에 의존하므로, Ollama 서버가 로컬에서 실행 중인지 확인하십시오.
다음 명령어를 실행하여 Ollama 서버를 시작할 수 있습니다:
CI/CD 통합을 위한 필수 준비 사항
- Jenkins: Jenkins가 설치되어 있고 환경에서 접근 가능한지 확인하십시오.
- GitHub Actions: 저장소가 GitHub에 호스팅되어 있고 Actions가 활성화되었는지 확인하십시오.
기여 (Contribution)
기여를 환영합니다! 언제든지 Issues를 열고 Pull Requests를 제출해 주세요.
자세한 내용은 CONTRIBUTING.md 파일을 참조하십시오.
기여를 위한 간단한 단계:
-
프로젝트를 포크(Fork)합니다.
-
변경 사항을 위한 브랜치를 생성합니다:
git checkout -b feature/my-feature
3. 변경 사항을 커밋합니다:
```bash
git commit -m