Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/align-release-workflows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"vue-pivottable": patch
---

fix: 베타와 프로덕션 릴리스 워크플로우 개선

- 베타와 프로덕션 모두 동일한 release-packages.cjs 스크립트 사용
- changeset이 적용된 패키지만 베타 버전 생성하도록 수정
- 프로덕션 릴리스 시 기존 릴리스 브랜치 삭제 후 재생성
- 프로덕션 배포가 릴리스 브랜치에서 실행되도록 수정
56 changes: 39 additions & 17 deletions .github/workflows/release-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,29 +49,44 @@ jobs:
id: version
if: steps.changesets-check.outputs.has_changesets == 'true'
run: |
# Store original versions before changeset
ORIGINAL_MAIN=$(node -p "require('./package.json').version" | sed 's/-beta\.[0-9]*//g')
declare -A ORIGINAL_VERSIONS
for pkg in packages/*/; do
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
PKG_NAME=$(basename "$pkg")
ORIGINAL_VERSIONS[$PKG_NAME]=$(cd "$pkg" && node -p "require('./package.json').version" | sed 's/-beta\.[0-9]*//g')
fi
done

# Apply changesets and consume them
pnpm changeset version

# Update to beta versions
MAIN_VERSION=$(node -p "require('./package.json').version")
# Check for version changes and update to beta
TIMESTAMP=$(date +%s)
CHANGED_PACKAGES=""

# Remove ALL existing beta suffixes if present and add new one
CLEAN_VERSION=$(echo "$MAIN_VERSION" | sed 's/-beta\.[0-9]*//g')
BETA_VERSION="${CLEAN_VERSION}-beta.${TIMESTAMP}"

# Update main package
npm version $BETA_VERSION --no-git-tag-version
# Check main package
NEW_MAIN=$(node -p "require('./package.json').version")
if [ "$ORIGINAL_MAIN" != "$NEW_MAIN" ]; then
BETA_VERSION="${NEW_MAIN}-beta.${TIMESTAMP}"
npm version $BETA_VERSION --no-git-tag-version
CHANGED_PACKAGES="vue-pivottable"
fi

# Update sub-packages
# Check sub-packages
for pkg in packages/*/; do
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
cd "$pkg"
PKG_VERSION=$(node -p "require('./package.json').version")
# Remove ALL existing beta suffixes if present and add new one
PKG_CLEAN=$(echo "$PKG_VERSION" | sed 's/-beta\.[0-9]*//g')
PKG_BETA="${PKG_CLEAN}-beta.${TIMESTAMP}"
npm version $PKG_BETA --no-git-tag-version
PKG_NAME=$(basename "$pkg")
NEW_VERSION=$(node -p "require('./package.json').version")

# Only add beta if version changed
if [ "${ORIGINAL_VERSIONS[$PKG_NAME]}" != "$NEW_VERSION" ]; then
PKG_BETA="${NEW_VERSION}-beta.${TIMESTAMP}"
npm version $PKG_BETA --no-git-tag-version
CHANGED_PACKAGES="$CHANGED_PACKAGES $PKG_NAME"
fi
cd -
fi
done
Expand All @@ -80,10 +95,17 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
git commit -m "chore: prepare beta release"
git commit -m "chore: prepare beta release

Changed packages: $CHANGED_PACKAGES"
git push origin develop

echo "version=$BETA_VERSION" >> $GITHUB_OUTPUT
# Use main package version for output (if changed) or first changed package
if [ "$ORIGINAL_MAIN" != "$NEW_MAIN" ]; then
echo "version=${NEW_MAIN}-beta.${TIMESTAMP}" >> $GITHUB_OUTPUT
else
echo "version=beta.${TIMESTAMP}" >> $GITHUB_OUTPUT
fi

- name: Run quality checks
if: steps.changesets-check.outputs.has_changesets == 'true'
Expand Down Expand Up @@ -130,7 +152,7 @@ jobs:
if: steps.changesets-check.outputs.has_changesets == 'true' && steps.create-release.outcome == 'success'
run: |
# Publish with beta tag only after GitHub release is created
node scripts/release-packages-beta.js
RELEASE_TAG=beta node scripts/release-packages.cjs
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ jobs:
VERSION=${{ steps.check-versions.outputs.base_version }}
RELEASE_BRANCH="release/v${VERSION}"

# Delete existing release branch if it exists
git push origin --delete $RELEASE_BRANCH 2>/dev/null || echo "No existing branch to delete"

git checkout -b $RELEASE_BRANCH
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
Expand All @@ -101,11 +104,14 @@ jobs:
echo "release_branch=$RELEASE_BRANCH" >> $GITHUB_OUTPUT
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Publish to npm
- name: Checkout release branch and publish
if: steps.check-versions.outputs.has_beta == 'true'
run: |
# Checkout to release branch for publishing
git checkout ${{ steps.create-release.outputs.release_branch }}

# Publish with latest tag (overwrites beta)
node scripts/release-packages.js
node scripts/release-packages.cjs
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Expand Down