114 lines
6 KiB
Markdown
114 lines
6 KiB
Markdown
---
|
|
domain: sample
|
|
last_rule_review_commit: 810532a097c1309cd28d7130d8a33bcc779c96e4
|
|
last_rule_updated_at: 2026-06-24
|
|
---
|
|
|
|
# sample
|
|
|
|
## 목적 / 책임
|
|
|
|
YAML 작성 요청 시 코드 분석 없이 빠르게 참조할 수 있는 샘플 파일 모음을 담당한다.
|
|
샘플만 읽으면 파라미터 이름·태그 문법·파이프라인 패턴을 바로 파악할 수 있어 토큰을 절약한다.
|
|
AI가 파이프라인 YAML을 작성하거나 검토할 때 가장 먼저 읽는 도메인이다.
|
|
|
|
## 포함 경로
|
|
|
|
- `apps/runner/assets/yaml/sample/` — 카테고리별 샘플 YAML 파일
|
|
|
|
## 레거시 / 비사용 경로
|
|
|
|
- `apps/runner/assets/yaml/example/` — 현재 tracked 샘플 파일은 없으며 샘플 작성 기준으로 사용하지 않는다
|
|
- `apps/runner/assets/templates/` — 현재 tracked 템플릿 파일은 없으며 샘플 작성 기준으로 사용하지 않는다
|
|
- 루트/`apps/runner/assets/` 하위의 구형 테스트 YAML/XML (`build_*.yaml`, `slack_test.yaml`, `pipeline-test*.yaml`, `scheduler*.yaml`, `assets/config.xml`, `assets/example.yaml`)은 현재 형상과 맞지 않아 제거됨
|
|
|
|
## 제외 경로
|
|
|
|
- `apps/runner/lib/oto/data/` — 실제 파라미터 모델은 command 도메인
|
|
|
|
## 주요 구성 요소
|
|
|
|
| 파일 | 다루는 커맨드 / 패턴 |
|
|
|------|-------------------|
|
|
| `01_basic.yaml` | property, SetValue, Print — 기본 구조 |
|
|
| `02_pipeline_if.yaml` | if (string/int/version 타입 조건 분기) |
|
|
| `03_pipeline_foreach.yaml` | foreach (List·Map 순회, 중첩) |
|
|
| `04_pipeline_exe_handle.yaml` | exe-handle (on-success / on-fail) |
|
|
| `05_pipeline_while_switch.yaml` | while, switch, wait-until |
|
|
| `06_git.yaml` | Git, GitPull, GitCheckout, GitCommit, GitPush, GitRev, GitCount, GitBranch, GitStashPush, GitStashApply, GitReset |
|
|
| `07_file.yaml` | Copy, Delete, FileRead, FileWrite, Zip, FileInfo |
|
|
| `07_file_utils.yaml` | DirectoryCreate, Files, Rename 등 파일 보조 커맨드 |
|
|
| `08_notification.yaml` | Slack, SlackBuild, Mattermost, MattermostBuild |
|
|
| `09_network.yaml` | WebRequest, WebFile, Upload(FTP), Download(FTP), GitHub, GitHubPullRequestCreate, GitHubPullRequestList, GitHubPullRequestClose |
|
|
| `10_build_ios.yaml` | BuildiOS, ArchiveiOS, ExportiOS, TestflightUpload, TestflightStatusCheck, TestflightDistribute, CodeSign, ProductBuild, Notarize |
|
|
| `10_build_tools.yaml` | XcodeprojAddFile, BuildDotNet, BuildMSBuild, PublishiOS 등 빌드 보조 도구 |
|
|
| `11_build_flutter.yaml` | BuildFlutter (멀티플랫폼) |
|
|
| `11_utils.yaml` | URLInfo, Delay |
|
|
| `12_scheduler.yaml` | scheduler 섹션 (cron / interval) |
|
|
| `13_string_json.yaml` | StringSub, StringReplace, StringReplacePattern, StringIndex, JsonReader, JsonReaderFile, JsonWriterFile |
|
|
| `14_shell_process.yaml` | Shell, ShellFile, ProcessRun, ProcessKill, ProcessPortUse |
|
|
| `15_smb_auth.yaml` | SMBAuth |
|
|
| `16_docker.yaml` | Docker |
|
|
| `17_gradle.yaml` | Gradle |
|
|
| `18_protobuf.yaml` | Protobuf |
|
|
| `19_awscli.yaml` | AwsCli |
|
|
| `20_jenkins.yaml` | JenkinsParameterModify |
|
|
| `21_jira.yaml` | Jira |
|
|
| `22_file_diff.yaml` | FileDiffCheck |
|
|
| `23_slack_file.yaml` | SlackFile |
|
|
|
|
## YAML 작성 요청 시 참조 가이드
|
|
|
|
요청 내용에 따라 아래 샘플만 읽으면 충분하다. 코드를 읽지 않는다.
|
|
|
|
| 요청 키워드 | 읽을 샘플 |
|
|
|------------|---------|
|
|
| iOS 빌드, Archive, TestFlight | `10_build_ios.yaml` |
|
|
| Flutter 빌드 | `11_build_flutter.yaml` |
|
|
| Git, 커밋, 푸시, 브랜치 | `06_git.yaml` |
|
|
| 파일 복사, 압축, 삭제 | `07_file.yaml` |
|
|
| 디렉터리 생성, 파일 이름 변경 | `07_file_utils.yaml` |
|
|
| Slack, Mattermost 알림 | `08_notification.yaml` |
|
|
| Slack 파일 업로드 | `23_slack_file.yaml` |
|
|
| HTTP, FTP, 네트워크 | `09_network.yaml` |
|
|
| SMB 인증 | `15_smb_auth.yaml` |
|
|
| Docker | `16_docker.yaml` |
|
|
| Gradle | `17_gradle.yaml` |
|
|
| Protobuf | `18_protobuf.yaml` |
|
|
| AWS CLI | `19_awscli.yaml` |
|
|
| Jenkins 파라미터 수정 | `20_jenkins.yaml` |
|
|
| Jira | `21_jira.yaml` |
|
|
| 파일 변경 감지 | `22_file_diff.yaml` |
|
|
| if 분기 | `02_pipeline_if.yaml` |
|
|
| foreach, 반복 | `03_pipeline_foreach.yaml` |
|
|
| 성공/실패 분기 | `04_pipeline_exe_handle.yaml` |
|
|
| while, switch | `05_pipeline_while_switch.yaml` |
|
|
| 스케줄러 | `12_scheduler.yaml` |
|
|
| 문자열, JSON | `13_string_json.yaml` |
|
|
| URL 파싱, 지연 | `11_utils.yaml` |
|
|
| 셸, 프로세스 | `14_shell_process.yaml` |
|
|
| .NET/MSBuild/코드서명/패키징 | `10_build_tools.yaml` |
|
|
| 처음 만드는 파이프라인, 기본 구조 | `01_basic.yaml` |
|
|
|
|
## 유지할 패턴
|
|
|
|
- 파일명은 `NN_카테고리.yaml` 형식 (번호 + 언더스코어 + 카테고리)
|
|
- 각 파일은 YAML document marker `---`로 시작하고, 바로 아래 `# [샘플] 제목` 주석으로 목적을 명시한다
|
|
- 실제 작동 가능한 파라미터 구조를 유지한다 (추측 값 사용 금지)
|
|
- 새 커맨드가 추가되면 관련 샘플 파일도 함께 갱신한다
|
|
- 샘플은 placeholder 값을 사용하고 실제 토큰·비밀번호·API 키를 넣지 않는다
|
|
- YAML 작성 요청에서는 먼저 이 rule의 키워드 표로 읽을 샘플을 고르고, 필요한 샘플만 읽는다
|
|
- 샘플 변경 후 `dart analyze` 영향은 보통 없지만, 가능하면 해당 YAML이 `Application.getMapFromYamlA()`와 `DataBuild.fromJson()`으로 파싱 가능한지 확인한다
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **command**: 커맨드 파라미터가 변경되면 샘플도 동기화 필요. 샘플은 command 도메인을 참조하지 않는다
|
|
- **core**: 태그 문법(`<!...>` / `<@...>`)이 변경되면 모든 샘플 파일 업데이트 필요
|
|
- **pipeline**: workflow 문법이 변경되면 pipeline 샘플(`02`~`05`)을 함께 갱신한다
|
|
- **scheduler**: scheduler YAML 구조는 `12_scheduler.yaml`에서 관리한다
|
|
|
|
## 금지 사항
|
|
|
|
- 실제 코드(Dart 파일)를 읽어 파라미터를 추론하지 않는다 — 샘플에서 직접 읽는다
|
|
- 샘플에 실제 토큰·비밀번호·API 키를 기재하지 않는다 (placeholder 사용)
|
|
- 존재하지 않는 커맨드나 파라미터를 샘플에 넣지 않는다
|