개요
git commit 시 자동으로 빌드하고, 이 페이지에서 아티팩트를 다운로드할 수 있는 로컬 CI/CD 서버입니다. Android, iOS, Flutter 등 어떤 빌드 시스템이든 등록 가능합니다.
새 프로젝트 등록
프로젝트 루트에 .tiny_ci.json을 만들고 register.sh를 한 번 실행하면 됩니다. 이후 git commit 마다 자동 빌드됩니다.
# 1. 프로젝트 루트에 .tiny_ci.json 추가 (아래 설정 항목 참고)
# 2. 등록 (git hook 자동 설치)
cd /path/to/my-app
/path/to/tiny_ci/scripts/register.sh
.tiny_ci.json 설정 항목
| 필드 | 설명 |
| id | 프로젝트 식별자 (영문 소문자·하이픈). URL과 디렉토리명에 사용됨 |
| name | UI에 표시될 프로젝트 이름 |
| buildCommand | 빌드 명령어. 쉘에서 그대로 실행됨 (예: ./gradlew assembleDebug) |
| buildWorkingDir | 빌드를 실행할 디렉토리. 프로젝트 루트 기준 상대경로 가능 |
| artifactPath | 빌드 결과물 경로. 프로젝트 루트 기준 상대경로 가능 |
| artifactName | 서빙될 파일명 (예: MyApp.apk, MyApp.ipa) |
| watchArtifacts | 로컬 빌드 감지 대상 목록 (선택, 아래 참고) |
{
"id": "my-app",
"name": "My App",
"buildCommand": "./gradlew assembleDebug",
"buildWorkingDir": ".",
"artifactPath": "app/build/outputs/apk/debug/app-debug.apk",
"artifactName": "MyApp-debug.apk",
"watchArtifacts": [
{ "label": "Debug", "path": "app/build/outputs/apk/debug/app-debug.apk", "file": "MyApp-debug.apk" },
{ "label": "Release", "path": "app/build/outputs/apk/release/app-release.apk","file": "MyApp-release.apk" }
]
}
다운로드 버튼 종류
프로젝트 상세 화면에서 두 종류의 다운로드 버튼이 표시될 수 있습니다.
Stable
— tiny_ci이 git commit 기준으로 빌드한 공식 빌드. 빌드 상태가 ready일 때 항상 표시.
Latest
— 저장소에서 직접 빌드한 최신 로컬 빌드. watchArtifacts 설정 시 자동 감지.
watchArtifacts에 등록된 파일 중 artifactName과 다른 파일(예: Release)은 파일이 존재하면 항상 표시되고, 같은 파일(예: Debug)은 로컬 빌드가 Stable보다 최신일 때만 추가로 표시됩니다.
수동 빌드
프로젝트 상세 우측 상단의 ▶ Build 버튼을 클릭하면 git commit 없이도 즉시 빌드를 시작할 수 있습니다. 빌드 중에는 버튼이 비활성화되고 실시간 로그가 열립니다.
CLI에서 직접 실행하려면:
/path/to/tiny_ci/scripts/build.sh <project-id>
새 맥에 설치
# 1. tiny_ci 클론 (경로 고정 필수)
git clone <repo-url> /path/to/tiny_ci
# 2. 초기 설정 (LaunchAgent 등록 → 로그인 시 자동 시작)
/path/to/tiny_ci/install.sh
# 3. 프로젝트 클론 + 등록
cd /path/to/my-app && /path/to/tiny_ci/scripts/register.sh
서버 관리
# 서버 재시작
launchctl kickstart -k gui/$(id -u)/com.tiny_ci
# 서버 중지
launchctl bootout gui/$(id -u)/com.tiny_ci
# 빌드 로그 CLI로 확인
tail -f /path/to/tiny_ci/serve/<id>/build.log