NohDoyeon241104 3fc3789bfa 추가된 파일:
- docs/project-overview.md — 프로젝트
  개요
  - docs/solution-structure.md — 솔루션
  구조
  - docs/ptop-architecture.md — PTOP
  아키텍처
  - docs/aurora-devices.md — Aurora
  디바이스 목록
  - docs/build-output.md — 빌드 출력 경로
  - docs/harness-ptop.md — PTOP 하네스
  구성

  수정된 파일:
  → CLAUDE.md — 기존 내용을 6개 문서로
  분리, @import 방식으로 변경
  → .gitignore — .claude/ 추가

  삭제된 파일:
  - _기존md파일/ 디렉토리 (원본)

  제안 커밋 메시지:
  docs: CLAUDE.md를 주제별 문서로 분리 및
  @import 방식으로 재구성

  - 프로젝트 개요, 솔루션 구조, PTOP
  아키텍처, 디바이스 목록, 빌드 경로,
  하네스 구성을 별도 문서로 분리
  - 각 문서는 200줄 이하로 규칙 5번 준수
  - CLAUDE.md에서 @import로 참조하는
  라이브러리 형태로 변경 (규칙 6번 준수)
  형태로 변경 (규칙 6번 준수)
  - .gitignore에 .claude/ 추가, .ubisam_agent는
  제거
2026-06-16 17:28:03 +09:00

249 lines
6.6 KiB
Markdown

---
name: optimize-ptop-build
description: ILSOS_PrismaticRD_PTOP의 빌드 최적화 및 CI/CD 자동화. 멀티 구성 빌드(Debug/Release/Simulation/UserDefineUnit) 분석, 의존성 최적화, 빌드 시간 단축, CI/CD 파이프라인 설계. "빌드 최적화", "PTOP 빌드 성능", "CI/CD 자동화 설계", "배포 파이프라인" 요청 시 사용.
---
# Optimize PTOP Build Skill
## 목표
ILSOS_PrismaticRD_PTOP의 **빌드 성능 및 자동화**를 최적화한다.
## 분석 영역
### 1단계: 현재 빌드 상태 분석
**수집 대상:**
- 솔루션 내 프로젝트 목록 (ILSOS_All.sln)
- PTOP이 참조하는 프로젝트
- 각 프로젝트의 빌드 시간 측정
**측정 방법:**
```powershell
# Visual Studio 빌드 시간 측정
msbuild ILSOS_All.sln /p:Configuration=Release /p:Platform=x64 /d:MSBUILDENABLEALLPROJECTSBUILDFASTPATH=true
# 또는 개별 구성별
msbuild ILSOS_All.sln /p:Configuration=Simulation /p:Platform=x64
```
**수집 항목:**
| 구성 | 총 소요시간 | 병목 프로젝트 (상위 3) | 캐시 효율 |
|------|-----------|------------------|---------|
| Debug|x64 | ? | ? | ? |
| Release|x64 | ? | ? | ? |
| Simulation|x64 | ? | ? | ? |
| UserDefineUnit|x64 | ? | ? | ? |
### 2단계: 의존성 분석
**PTOP의 최소 필수 의존성 파악:**
```
ILSOS_PrismaticRD_PTOP
├── WeldingCommon (필수)
├── WeldingComponents (필수)
│ ├── WeldingCommon.dll
│ ├── LASAGUI (용접 GUI)
│ └── ...
├── AuroraDevices (선택적)
│ ├── AuroraLaser (필수 - Laser 제어)
│ ├── AuroraOCT (필수 - OCT 스캔)
│ ├── AuroraPLC (필수 - PLC 통신)
│ ├── AuroraIO (필수 - IO 제어)
│ ├── AuroraCellTracker (필수 - 셀 추적)
│ ├── AuroraLBAD (?)
│ └── ... (기타 22개 중 필요 없는 것?)
├── AuroraComponents (필수)
├── AuroraVision (필요하나?)
└── NuGet 패키지 (Reactive, Json.NET, etc.)
```
**분석:**
- 각 AuroraDevices 프로젝트의 실제 사용 여부
- 제거 가능한 의존성
- 조건부 컴파일 가능성 (#if DEBUG 등)
**산출물:** `_workspace/04a_dependency_analysis.csv`
### 3단계: 빌드 구성별 최적화
#### Debug|x64 최적화
- 기호 생성 필요 (유지)
- 최적화 비활성화 (유지)
- 증분 빌드 활용
#### Release|x64 최적화
```xml
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Optimize>true</Optimize> <!-- 최적화 활성화 -->
<DebugType>embedded</DebugType> <!-- 기호 축소 -->
<TieredCompilation>true</TieredCompilation> <!-- .NET 4.8.1 지원하나? -->
<PublishTrimmed>true</PublishTrimmed> <!-- 불필요 어셈블리 제거 -->
</PropertyGroup>
```
#### Simulation|x64 최적화
```csharp
#if SIMULATION
// 하드웨어 통신 불필요 - 모의 구현 사용
public class MockPLC : IPLC { ... }
#endif
```
#### UserDefineUnit|x64 최적화
- 용도 파악 필요 (단위 테스트? 커스텀 하드웨어?)
- 필요한 기능만 포함
### 4단계: CI/CD 파이프라인 설계
**목표:**
- 자동 빌드 (commit, PR)
- 자동 테스트 (Simulation 구성)
- 자동 배포 (수동 승인)
**추천 플랫폼:**
- GitHub Actions (GitHub 저장소 사용 중 가정)
- Azure Pipelines (Microsoft 클라우드)
- Jenkins (온프레미스)
**파이프라인 구조:**
```yaml
# .github/workflows/ptop-build.yml
name: PTOP Build & Deploy
on:
push:
branches: [main, develop]
paths: ['Machines/ILSOS_PrismaticRD_PTOP/**']
pull_request:
branches: [main]
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
config: [Debug, Release, Simulation]
steps:
- uses: actions/checkout@v3
- name: Setup .NET Framework
uses: microsoft/setup-msbuild@v1
- name: Restore NuGet
run: nuget restore ILSOS_All.sln
- name: Build (${{ matrix.config }})
run: msbuild ILSOS_All.sln /p:Configuration=${{ matrix.config }} /p:Platform=x64
- name: Run Tests (Simulation only)
if: matrix.config == 'Simulation'
run: # 테스트 실행 명령
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: ptop-${{ matrix.config }}
path: Machines/_out_prismatic_rd_ptop/x64-${{ matrix.config }}/
deploy:
needs: build
runs-on: windows-latest
if: github.ref == 'refs/heads/main'
environment: production # 수동 승인 필수
steps:
- name: Download Release Artifact
- name: Create Release Package
run: # 패키징 스크립트
- name: Deploy to Server
run: # 배포 스크립트
```
### 5단계: 배포 패키징
**산출물:**
- 실행 가능 파일 (Aurora.exe)
- 필수 DLL (AuroraDevices, WeldingComponents, etc.)
- 설정 파일 (app.config)
- 리소스 파일 (이미지, 데이터)
- 배포 설명서
**패키징 형식:**
- ZIP 아카이브 (간단)
- NSIS 설치 프로그램 (사용자 친화적)
- Chocolatey 패키지 (자동 업데이트)
## 통합 산출물
### 최종 보고서: `_workspace/04_ptop_build_optimization.md`
```markdown
# PTOP 빌드 최적화 보고서
## 1. 현재 빌드 성능
| 구성 | 시간 | 병목 | 개선 가능성 |
|------|------|------|----------|
| Debug|x64 | 45s | ? | 개선 중심 |
| Release|x64 | 60s | ? | 최적화 중심 |
| Simulation|x64 | 50s | ? | 테스트 환경 |
| UserDefineUnit|x64 | 55s | ? | 커스텀 |
## 2. 의존성 최적화
### 필수 의존성
- AuroraLaser, AuroraOCT, AuroraPLC, etc.
### 제거 가능 의존성
- ...
## 3. 빌드 구성별 최적화 전략
### Debug
- 현황: [상태]
- 개선안: [목표]
- 예상 효과: [시간 단축]
### Release
- ...
### Simulation
- ...
## 4. CI/CD 파이프라인
[YAML 파일 포함]
## 5. 배포 패키징
[패키징 스크립트]
## 6. 예상 효과
- 빌드 시간: XX% 단축
- 배포 시간: XX% 단축
- 자동화: 수동 작업 제거
```
## 입력 조건
사용자 요청 시:
- "PTOP 빌드 최적화"
- "빌드 시간 단축"
- "CI/CD 파이프라인 설계"
- "배포 자동화"
- "Release 빌드 성능"
## 출력 결과
- 빌드 성능 분석 보고서
- 의존성 맵핑 CSV
- CI/CD 파이프라인 (YAML/JSON)
- 빌드 최적화 설정 (PropertyGroup)
- 배포 패키징 스크립트
- 최종 보고서
## 주의사항
1. **.NET Framework 4.8.1 호환성** — 최신 .NET 기능 사용 불가
2. **Visual Studio 2022 기준** — MSBuild 경로 확인
3. **Windows 플랫폼 전용** — x64 아키텍처 명시
4. **빌드 머신 사양** — CI 환경의 OS/RAM 확인
5. **라이선스 확인** — NuGet 패키지, 외부 도구의 라이선스