- 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는 제거
249 lines
6.6 KiB
Markdown
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 패키지, 외부 도구의 라이선스
|