yml update #4
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release # 워크플로우 이름 | |
| on: # 트리거 설정 | |
| push: # push 이벤트 중 | |
| tags: # 태그에만 반응 | |
| - 'v*.*.*' # v1.0.0, v2.3.4 같은 태그 푸시 시 실행 | |
| permissions: | |
| contents: write # 릴리스 업로드 권한 (GH Release에 파일 올리려면 필요) | |
| jobs: | |
| build-win: # 윈도우용 빌드 잡 | |
| runs-on: windows-latest # 윈도우 러너에서 실행 (윈도우 설치파일은 윈도우에서만 빌드 가능) | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # electron-builder가 릴리스 업로드에 쓰는 토큰 이름 (필수) | |
| steps: | |
| - name: Checkout # 저장소 체크아웃 | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # 태그/버전 정보까지 필요하니 얕은 체크아웃 금지 | |
| - name: Show repo structure # 디렉터리 구조 확인 로그 (문제 생기면 디버그에 도움) | |
| run: | | |
| echo "::group::Repo root" | |
| dir | |
| echo "::endgroup::" | |
| - name: Setup Node.js # Node 세팅 | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 # LTS 권장 (22는 전이슈 리스크) | |
| cache: npm # npm 캐시 활성화 | |
| cache-dependency-path: package-lock.json # 캐시 키 기준 파일 | |
| - name: Install dependencies # 의존성 설치 | |
| run: npm ci # CI에 맞는 고정 설치 | |
| - name: Build web (Vite) # 프론트 빌드: dist/ 생성 | |
| run: npm run build # vite build 실행 (vite.config.js 기준) | |
| - name: Build desktop (electron-builder) # Electron 앱 패키징 | |
| run: npx electron-builder --win nsis portable | |
| # --win: 윈도우 타깃 | |
| # nsis: 설치형(.exe 인스톨러) | |
| # portable: 포터블(.exe 단일 실행파일)도 함께 빌드 | |
| # 결과물은 기본적으로 release/ 폴더에 생성 (package.json build.directories.output에 따라 다름) | |
| - name: Upload artifacts # 빌드 산출물 아티팩트 업로드 (CI에서 다운로드용) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-artifacts # 아티팩트 표시 이름 | |
| path: release/** # 릴리스 결과물 경로(기본값이 release/인 경우) | |
| - name: Create GitHub Release # GitHub Release 생성 및 파일 첨부 | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: true # 초안으로 만들어 수동 공개 가능 | |
| files: | | |
| release/** # release 폴더의 exe, zip 전부 첨부 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 액션 자체 제공 토큰 매핑 |