UNPKG

@jin7942/ray

Version:

Lightweight CI/CD deployment tool powered by Docker and Git

166 lines (116 loc) 5.25 kB
# RAY [![npm version](https://img.shields.io/npm/v/@jin7942/ray?color=blue)](https://www.npmjs.com/package/@jin7942/ray) [![npm downloads](https://img.shields.io/npm/dm/@jin7942/ray)](https://www.npmjs.com/package/@jin7942/ray) [![license](https://img.shields.io/npm/l/@jin7942/ray)](./LICENSE) **ver: 1.5.1** ![rayExample](./ray.png) **단순하고 가벼운 자동 배포 도구 RAY** RAY는 GitHub 저장소를 클론하고, 빌드하고, Docker 이미지로 만들어 컨테이너를 무중단으로 교체하는 자동화 배포 도구입니다. 복잡한 설정 없이, 단 하나의 JSON 파일만으로도 전체 배포 파이프라인을 구성할 수 있습니다. [README for english](./README.md) ## 주요 기능 - GitHub 저장소 클론 - Docker 이미지 생성 및 컨테이너 배포 - 기존 컨테이너 무중단 교체 - JSON 기반 설정 파일 - CLI 또는 라이브러리 방식 사용 가능 ## 설치 방법 ```bash npm install -g @jin7942/ray ``` ## 사용법 ```bash ray init # 기본 설정 파일 생성 ray init wizard # 설정 마법사 실행 ray run # 전체 프로젝트 실행 ray run <프로젝트명> # 특정 프로젝트만 실행 ray help # 도움말 출력 ``` ## 설정 파일 예시 (`ray.config.json`) ```jsonc { "projects": [ { "name": "my-app", "repo": "https://github.com/user/my-app.git", "branch": "main", "docker": { //v1.5.0부터 docker-compose 지원 "type": "docker | compose", "image": "my-app-image", "containername": "my-app-container", "path": { "dockerfile": "./Dockerfile", // type==compose 일 경우 경로 필요 "compose": "./docker-compose.yml" }, // type==docker일 때만 사용됨 "network": ["net1", "net2"], // --network 옵션을 지원합니다. "volumes": ["/host/path:/app/path", "/tmp/test:/app/test"] // 도커 컨테이너 볼륨 마운트 지원 추가 }, "internal": { "logdir": "./logs", "maxLogDirSize": 5242880, "logLevel": "info", "envFilePath": "./.env" } } ] } ``` ## 도커 파일 예시 (`Dockerfile`) ```docker FROM node:22-alpine AS builder WORKDIR /app COPY . . RUN apk update && apk upgrade RUN npm install RUN npm run build FROM node:22-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/package.json . COPY --from=builder /app/package-lock.json . RUN apk add --no-cache git RUN npm install --omit=dev EXPOSE 7979 CMD ["node", "dist/server.js"] ``` ### 도커파일 내에 빌드 로직을 반드시 포함하여야 합니다. RAY 1.2.0 버전부터는 더 이상 빌드 커맨드가 작동하지 않습니다. ## 라이브러리로 사용하기 ```ts import { loadProjectConfig, runRayPipeline } from '@jin7942/ray'; const config = await loadProjectConfig('my-app'); await runRayPipeline(config); ``` ## API 명세 API에 대한 문서는 다음 링크를 참고 하십시오. [document](./DOCUMENT.md) ## 시스템 요구 사항 - Node.js 18 이상 - Git 설치 - Docker 설치 및 실행 중 ## 구현 예제 서버에서 사용 예 ### [RAY Auto Deploy Server](https://github.com/jin7942/ray-auto-deploy-server) — webhock 이벤트를 수신하여 자동배포를 수행하는 서버 입니다. --- ## 프로젝트 철학 Ray는 복잡한 설정 없이 누구나 자동배포를 경험할 수 있도록 설계된 경량형 CI/CD 도구입니다. 특히 배포 경험이 부족한 학생이나 초보 개발자도 쉽게 사용할 수 있도록, 설정은 최소화하고 사용성은 극대화했습니다. ## 릴리즈 히스토리 | 버전 | 날짜 | 설명 | | ------ | ---------- | -------------------------------------------------------------- | | v1.0.0 | 2025-04-09 | 첫 정식 릴리즈. 기본 기능 구현 완료 | | v1.1.0 | 2025-04-10 | 환경변수 설정 지원 | | v1.2.0 | 2025-04-11 | 컨테이너 외부 로그 저장 지원, Dockerfile 내 빌드 방식으로 전환 | | v1.3.0 | 2025-04-12 | 이미지 빌드시 네트워크 지정 옵션 지원, Git clone 프로세스 개선 | | v1.4.0 | 2025-04-12 | 도커 컨테이너 볼륨 마운트 지원 추가. | | v1.5.0 | 2025-06-09 | 도커 컴포즈 지원 | ## 라이선스 본 프로젝트는 MIT 라이선스를 따릅니다. ## 기여 본 프로젝트는 오픈소스로 자유롭게 확장/수정이 가능합니다. 기여, 제안, 피드백은 언제든지 환영합니다. - 이슈 등록: [GitHub Issues](https://github.com/jin7942/ray/issues) - 풀 리퀘스트: 자유롭게 생성해주세요 ## 프로젝트 링크 - GitHub 저장소: https://github.com/jin7942/ray - 이슈 트래커: https://github.com/jin7942/ray/issues