Skip to content

hotfix: npm 배포 동기화 문제 해결 #246

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 20, 2025

Conversation

Seungwoo321
Copy link
Member

@Seungwoo321 Seungwoo321 commented Jun 20, 2025

🔧 워크플로우 및 버전 관리 시스템 근본 개선

핵심 문제 해결

develop 브랜치에서 항상 베타 버전을 보장하도록 워크플로우 수정

기존 문제점

# 기존 로직의 문제점
if [ "$ORIGINAL_VERSION" != "$NEW_VERSION" ]; then
  # 버전이 변경된 경우에만 베타 접미사 추가
fi
  • changeset이 없으면 베타 접미사가 추가되지 않음
  • 1.1.5 (정식) 버전이 develop에 남아있게 됨
  • npm 재배포 시도로 인한 E403 에러

개선된 로직

# 새로운 로직
ensure_beta_version() {
  if [[ "$version" == *"-beta."* ]]; then
    echo "$version"  # 이미 베타면 유지
  else
    echo "${version}-beta.${timestamp}"  # 베타 접미사 추가
  fi
}

변경 사항

  1. 워크플로우 수정: .github/workflows/release-develop.yml
    • ensure_beta_version 함수 추가
    • develop 브랜치에서 항상 베타 버전 보장
  2. peerDependencies 수정: ^1.1.5 → ^1.1.4
  3. changeset 추가: 모든 패키지 버전 업데이트

자동 배포 테스트

이 PR 머지 후:

  1. ✅ develop에서 베타 릴리즈 자동 실행
  2. ✅ 모든 패키지가 베타 버전으로 배포
  3. ✅ main으로 PR 자동 생성
  4. ✅ main 머지 시 정식 버전으로 자동 배포

근본 해결

  • 더 이상 develop에 정식 버전이 남지 않음
  • npm 배포 충돌 문제 완전 해결
  • 향후 동일한 문제 재발 방지

- peerDependencies를 npm latest와 일치하도록 수정 (^1.1.4)
- main 브랜치 릴리즈 워크플로우 수동 실행 스크립트 추가
- 버전 불일치로 인한 배포 실패 문제 해결
- develop 브랜치에서 항상 베타 버전 보장하는 로직 추가
- ensure_beta_version 함수로 베타 접미사 자동 추가
- changeset이 없어도 develop에서 베타 버전 유지
- peerDependencies npm latest 버전과 일치 (^1.1.4)
- 버전 불일치로 인한 배포 실패 문제 근본 해결
@Seungwoo321 Seungwoo321 merged commit 9b0077c into develop Jun 20, 2025
0 of 2 checks passed
@Seungwoo321 Seungwoo321 deleted the hotfix/npm-release-sync branch June 20, 2025 06:15
Seungwoo321 added a commit that referenced this pull request Jul 7, 2025
* chore: prepare beta release

- vue-pivottable 버전을 1.1.6-beta로 업데이트
- npm 배포 충돌 문제 해결

* chore: update lockfile

* hotfix: npm 배포 동기화 문제 해결 (#246)

* hotfix: npm 배포 동기화 문제 해결

- peerDependencies를 npm latest와 일치하도록 수정 (^1.1.4)
- main 브랜치 릴리즈 워크플로우 수동 실행 스크립트 추가
- 버전 불일치로 인한 배포 실패 문제 해결

* fix: 워크플로우 및 버전 관리 시스템 근본 개선

- develop 브랜치에서 항상 베타 버전 보장하는 로직 추가
- ensure_beta_version 함수로 베타 접미사 자동 추가
- changeset이 없어도 develop에서 베타 버전 유지
- peerDependencies npm latest 버전과 일치 (^1.1.4)
- 버전 불일치로 인한 배포 실패 문제 근본 해결

* chore: update lockfile after peerDependencies changes

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix: restore peerDependencies to prevent beta version pollution

* test: 단일 패키지 배포 시나리오 테스트

- vue-pivottable만 변경
- main PR #247 존재하는 상태에서 추가 변경사항 테스트
- PR 자동 업데이트 확인

* fix: peerDependencies 자동 업데이트 방지 및 lockfile 제거

- peerDependencies를 ^1.1.4로 되돌림 (자동 업데이트 방지)
- pnpm-lock.yaml을 gitignore에 추가하여 CI 충돌 방지
- changeset이 peerDependencies를 자동 업데이트하는 문제 해결

* chore: prepare beta release

Changed packages: vue-pivottable

* fix: restore peerDependencies to prevent beta version pollution

* fix: GitHub Release 중복 방지 및 peerDependencies 자동 업데이트 방지

1. GitHub Release 중복 방지:
   - 릴리즈 생성 전 존재 여부 확인
   - 이미 존재하는 릴리즈는 건너뛰기

2. peerDependencies 자동 업데이트 방지:
   - changeset version 실행 전 package.json 백업
   - changeset 후 peerDependencies 복원
   - 베타 버전이 peerDependencies에 전파되지 않도록 방지

3. 워크플로우 최적화:
   - 백업/복원 로직 개선
   - 중복 코드 제거

* test: 2개 패키지 배포 시나리오 테스트

- plotly-renderer와 lazy-table-renderer만 변경
- GitHub Release 중복 방지 로직 테스트
- peerDependencies 보호 로직 테스트
- main PR 업데이트 테스트

* chore: prepare beta release

Changed packages:  lazy-table-renderer plotly-renderer

* chore: clean up backup files

* fix: 베타 타임스탬프 교체 로직 개선 및 시나리오 테스트 (#248)

**워크플로우 개선:**
- ensure_beta_version 함수에서 기존 베타 타임스탬프 교체 로직 추가
- 베타 중복 방지 (X.Y.Z-beta.abc-beta.def 형태 방지)
- base_version 추출 후 새로운 타임스탬프 적용

**테스트 시나리오:**
- main PR 승인 전 상태에서 추가 changeset 테스트
- 베타 타임스탬프 교체 동작 확인
- main PR 자동 업데이트 확인

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix: 올바른 베타 버전 관리 로직 구현 (#249)

**문제점 해결:**
1. changeset version 증가를 보존하도록 수정
2. 모든 패키지가 아닌 변경된 패키지만 베타 타임스탬프 적용
3. update_beta_timestamp 함수로 버전 증가 보존

**수정된 로직:**
- changeset version으로 버전 증가 (1.1.6 → 1.1.7)
- 변경된 패키지만 베타 타임스탬프 적용
- sed를 사용하여 타임스탬프만 교체

**테스트 시나리오:**
- vue-pivottable과 plotly-renderer에 changeset
- lazy-table-renderer는 변경 없음

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* test: 수정된 베타 버전 증가 로직 테스트 (#250)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* test: 수정된 베타 버전 증가 로직 테스트

워크플로우가 베타 상태에서 올바르게 버전을 증가시키는지 검증:
- 임시 베타 제거 → changeset version → 베타 재적용
- 1.1.6-beta.xxx → 1.1.7-beta.yyy
- 2.0.7-beta.xxx → 2.0.8-beta.yyy

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: 백업 파일 정리 및 .gitignore 업데이트 (#252)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* chore: 백업 파일 삭제 및 .gitignore 업데이트

- packages/plotly-renderer/package.json.backup 삭제
- packages/lazy-table-renderer/package.json.backup 삭제
- .gitignore에 백업 파일 패턴 추가 (*.backup)

* fix: 베타 버전일 때 타임스탬프만 업데이트하도록 수정 (#251)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* fix: 베타 버전일 때 타임스탬프만 업데이트하도록 수정

이미 베타 버전인 경우:
- 버전 증가 없이 타임스탬프만 업데이트 (1.1.7-beta.xxx → 1.1.7-beta.yyy)
- changeset이 버전을 변경한 경우에만 업데이트
- 불필요한 버전 증가 방지

변경 내용:
- 베타 접미사 임시 제거 로직 삭제
- 타임스탬프만 교체하는 로직으로 변경

* fix: rows/cols가 비어있을 때 Vue2와 동일하게 렌더링되도록 수정 (#254)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* fix: rows/cols가 비어있을 때 Vue2와 동일하게 렌더링되도록 수정

- 디버그용 console.log 코드 제거
- rows/cols가 모두 비어있을 때도 테이블 구조와 총계가 표시되도록 수정
- rowAttrs가 비어있을 때 헤더에 빈 행이 추가되는 문제 해결
- Vue2의 렌더링 동작과 완전히 일치하도록 조건부 렌더링 로직 개선

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix:prevent VDragAndDropCell from disappearing on missing attribute #177 (#253)

* chore: PR #253에 대한 changeset 추가 (#255)

- VDragAndDropCell 속성 누락 시 사라지는 문제 수정에 대한 changeset 추가
- 베타 릴리즈 PR의 CI 체크 통과를 위해 필요

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: stable 릴리즈 준비를 위한 changeset 추가 (#258)

- main 브랜치의 Release 워크플로우가 changeset 부재로 실패하는 문제 해결
- 베타 버전을 stable 버전으로 배포하기 위한 changeset 추가

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: 워크플로우 재실행을 위한 changeset 추가 (#260)

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

---------

Co-authored-by: Seungwoo321 <[email protected]>
Co-authored-by: Seungwoo Lee <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sumin Lee <[email protected]>
Seungwoo321 added a commit that referenced this pull request Jul 7, 2025
* chore: prepare beta release

- vue-pivottable 버전을 1.1.6-beta로 업데이트
- npm 배포 충돌 문제 해결

* chore: update lockfile

* hotfix: npm 배포 동기화 문제 해결 (#246)

* hotfix: npm 배포 동기화 문제 해결

- peerDependencies를 npm latest와 일치하도록 수정 (^1.1.4)
- main 브랜치 릴리즈 워크플로우 수동 실행 스크립트 추가
- 버전 불일치로 인한 배포 실패 문제 해결

* fix: 워크플로우 및 버전 관리 시스템 근본 개선

- develop 브랜치에서 항상 베타 버전 보장하는 로직 추가
- ensure_beta_version 함수로 베타 접미사 자동 추가
- changeset이 없어도 develop에서 베타 버전 유지
- peerDependencies npm latest 버전과 일치 (^1.1.4)
- 버전 불일치로 인한 배포 실패 문제 근본 해결

* chore: update lockfile after peerDependencies changes

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix: restore peerDependencies to prevent beta version pollution

* test: 단일 패키지 배포 시나리오 테스트

- vue-pivottable만 변경
- main PR #247 존재하는 상태에서 추가 변경사항 테스트
- PR 자동 업데이트 확인

* fix: peerDependencies 자동 업데이트 방지 및 lockfile 제거

- peerDependencies를 ^1.1.4로 되돌림 (자동 업데이트 방지)
- pnpm-lock.yaml을 gitignore에 추가하여 CI 충돌 방지
- changeset이 peerDependencies를 자동 업데이트하는 문제 해결

* chore: prepare beta release

Changed packages: vue-pivottable

* fix: restore peerDependencies to prevent beta version pollution

* fix: GitHub Release 중복 방지 및 peerDependencies 자동 업데이트 방지

1. GitHub Release 중복 방지:
   - 릴리즈 생성 전 존재 여부 확인
   - 이미 존재하는 릴리즈는 건너뛰기

2. peerDependencies 자동 업데이트 방지:
   - changeset version 실행 전 package.json 백업
   - changeset 후 peerDependencies 복원
   - 베타 버전이 peerDependencies에 전파되지 않도록 방지

3. 워크플로우 최적화:
   - 백업/복원 로직 개선
   - 중복 코드 제거

* test: 2개 패키지 배포 시나리오 테스트

- plotly-renderer와 lazy-table-renderer만 변경
- GitHub Release 중복 방지 로직 테스트
- peerDependencies 보호 로직 테스트
- main PR 업데이트 테스트

* chore: prepare beta release

Changed packages:  lazy-table-renderer plotly-renderer

* chore: clean up backup files

* fix: 베타 타임스탬프 교체 로직 개선 및 시나리오 테스트 (#248)

**워크플로우 개선:**
- ensure_beta_version 함수에서 기존 베타 타임스탬프 교체 로직 추가
- 베타 중복 방지 (X.Y.Z-beta.abc-beta.def 형태 방지)
- base_version 추출 후 새로운 타임스탬프 적용

**테스트 시나리오:**
- main PR 승인 전 상태에서 추가 changeset 테스트
- 베타 타임스탬프 교체 동작 확인
- main PR 자동 업데이트 확인

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix: 올바른 베타 버전 관리 로직 구현 (#249)

**문제점 해결:**
1. changeset version 증가를 보존하도록 수정
2. 모든 패키지가 아닌 변경된 패키지만 베타 타임스탬프 적용
3. update_beta_timestamp 함수로 버전 증가 보존

**수정된 로직:**
- changeset version으로 버전 증가 (1.1.6 → 1.1.7)
- 변경된 패키지만 베타 타임스탬프 적용
- sed를 사용하여 타임스탬프만 교체

**테스트 시나리오:**
- vue-pivottable과 plotly-renderer에 changeset
- lazy-table-renderer는 변경 없음

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* test: 수정된 베타 버전 증가 로직 테스트 (#250)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* test: 수정된 베타 버전 증가 로직 테스트

워크플로우가 베타 상태에서 올바르게 버전을 증가시키는지 검증:
- 임시 베타 제거 → changeset version → 베타 재적용
- 1.1.6-beta.xxx → 1.1.7-beta.yyy
- 2.0.7-beta.xxx → 2.0.8-beta.yyy

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: 백업 파일 정리 및 .gitignore 업데이트 (#252)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* chore: 백업 파일 삭제 및 .gitignore 업데이트

- packages/plotly-renderer/package.json.backup 삭제
- packages/lazy-table-renderer/package.json.backup 삭제
- .gitignore에 백업 파일 패턴 추가 (*.backup)

* fix: 베타 버전일 때 타임스탬프만 업데이트하도록 수정 (#251)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* fix: 베타 버전일 때 타임스탬프만 업데이트하도록 수정

이미 베타 버전인 경우:
- 버전 증가 없이 타임스탬프만 업데이트 (1.1.7-beta.xxx → 1.1.7-beta.yyy)
- changeset이 버전을 변경한 경우에만 업데이트
- 불필요한 버전 증가 방지

변경 내용:
- 베타 접미사 임시 제거 로직 삭제
- 타임스탬프만 교체하는 로직으로 변경

* fix: rows/cols가 비어있을 때 Vue2와 동일하게 렌더링되도록 수정 (#254)

* fix: 베타 버전 증가 로직 수정

changeset version이 베타 접미사가 있는 버전을 증가시키지 않는 문제 해결:

1. changeset version 실행 전에 베타 접미사 임시 제거
2. changeset version으로 버전 증가 (1.1.6 → 1.1.7)
3. 증가된 버전에 베타 접미사 재적용 (1.1.7-beta.timestamp)

이제 베타 상태에서도 올바른 버전 증가가 가능함

* fix: rows/cols가 비어있을 때 Vue2와 동일하게 렌더링되도록 수정

- 디버그용 console.log 코드 제거
- rows/cols가 모두 비어있을 때도 테이블 구조와 총계가 표시되도록 수정
- rowAttrs가 비어있을 때 헤더에 빈 행이 추가되는 문제 해결
- Vue2의 렌더링 동작과 완전히 일치하도록 조건부 렌더링 로직 개선

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix:prevent VDragAndDropCell from disappearing on missing attribute #177 (#253)

* chore: PR #253에 대한 changeset 추가 (#255)

- VDragAndDropCell 속성 누락 시 사라지는 문제 수정에 대한 changeset 추가
- 베타 릴리즈 PR의 CI 체크 통과를 위해 필요

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: stable 릴리즈 준비를 위한 changeset 추가 (#258)

- main 브랜치의 Release 워크플로우가 changeset 부재로 실패하는 문제 해결
- 베타 버전을 stable 버전으로 배포하기 위한 changeset 추가

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: 워크플로우 재실행을 위한 changeset 추가 (#260)

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* fix: Release 워크플로우에서 develop 동기화 단계 제거 (#262)

- main과 develop 브랜치 간 버전 충돌 문제 해결
- 불필요한 동기화 제거로 워크플로우 단순화

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: add changeset for beta release

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

* chore: add changeset for beta release CI check (#265)

* chore: prepare beta release

Changed packages: vue-pivottable lazy-table-renderer plotly-renderer

---------

Co-authored-by: Seungwoo321 <[email protected]>
Co-authored-by: Seungwoo Lee <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sumin Lee <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant