--- 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 true embedded true true ``` #### 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 패키지, 외부 도구의 라이선스