Skip to content

Commit 829266b

Browse files
authored
Merge pull request #206 from vue-pivottable/fix/release-tag-conflict
fix: GitHub Release 생성 시 중복 태그 오류 해결
2 parents 9ca363c + 4b1c173 commit 829266b

File tree

9 files changed

+358
-32
lines changed

9 files changed

+358
-32
lines changed

.changeset/lazy-release-test.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@vue-pivottable/lazy-table-renderer": patch
3+
---
4+
5+
test: 릴리즈 워크플로우 테스트

.changeset/lazy-test-again.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@vue-pivottable/lazy-table-renderer": patch
3+
---
4+
5+
test: main 워크플로우 수정 확인
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Create Release PR
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
create-release-pr:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
pull-requests: write
14+
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
ref: release
19+
20+
- name: Reset main branch
21+
run: |
22+
git fetch origin main:main
23+
git reset --hard main
24+
25+
- name: Create Pull Request
26+
uses: peter-evans/create-pull-request@v7
27+
with:
28+
branch: main-to-release
29+
commit-message: 'chore: sync main to release [skip ci]'
30+
title: 'chore: sync main to release'
31+
body: |
32+
이 PR은 main 브랜치의 변경사항을 release 브랜치로 동기화합니다.
33+
34+
이 PR이 머지되면 release 워크플로우가 자동으로 트리거됩니다.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# name: Release lazy-table-renderer
2+
3+
# on:
4+
# push:
5+
# branches:
6+
# - release
7+
# paths:
8+
# - 'packages/lazy-table-renderer/**'
9+
10+
# jobs:
11+
# release:
12+
# name: Release
13+
# runs-on: ubuntu-latest
14+
# permissions:
15+
# contents: write
16+
# issues: write
17+
# pull-requests: write
18+
# id-token: write
19+
# steps:
20+
# - name: Checkout
21+
# uses: actions/checkout@v4
22+
# with:
23+
# fetch-depth: 0
24+
25+
# - name: Setup Node.js
26+
# uses: actions/setup-node@v3
27+
# with:
28+
# node-version: '22.10.0'
29+
# registry-url: 'https://registry.npmjs.org/'
30+
31+
# - name: Setup pnpm
32+
# uses: pnpm/action-setup@v2
33+
# with:
34+
# version: latest
35+
36+
# - name: Install dependencies
37+
# run: pnpm install
38+
39+
# - name: Build
40+
# run: pnpm -F @vue-pivottable/lazy-table-renderer build
41+
# - name: Generate GitHub App Token
42+
# id: generate-token
43+
# uses: tibdex/github-app-token@v1
44+
# with:
45+
# app_id: ${{ secrets.APP_ID }}
46+
# private_key: ${{ secrets.APP_PRIVATE_KEY }}
47+
# installation_id: ${{ secrets.APP_INSTALLATION_ID }}
48+
# - name: Release
49+
# env:
50+
# GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
51+
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
52+
# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
53+
# run: |
54+
# cd packages/lazy-table-renderer
55+
# pnpm dlx semantic-release
56+
57+
# - uses: actions/checkout@v4
58+
# with:
59+
# ref: main
60+
# - name: Reset release branch
61+
# run: |
62+
# git fetch origin release:release
63+
# git reset --hard release
64+
# - name: Create Pull Request
65+
# if: success()
66+
# uses: peter-evans/create-pull-request@v5
67+
# with:
68+
# branch: release-to-main
69+
# commit-message: 'chore: update version to latest release [skip ci]'
70+
# title: 'chore: update version to latest release [skip ci]'
71+
# body: |
72+
# 이 PR은 release 브랜치의 최신 버전 정보로 main 브랜치를 업데이트합니다.
73+
74+
# - package.json 버전 업데이트
75+
# - CHANGELOG.md 업데이트
76+
77+
# 이 PR은 release 워크플로우에 의해 자동으로 생성되었습니다.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# name: Release plotly-renderer
2+
3+
# on:
4+
# push:
5+
# branches:
6+
# - main
7+
# paths:
8+
# - 'packages/plotly-renderer/**'
9+
10+
# jobs:
11+
# release:
12+
# name: Release
13+
# runs-on: ubuntu-latest
14+
# permissions:
15+
# contents: write
16+
# issues: write
17+
# pull-requests: write
18+
# id-token: write
19+
# steps:
20+
# - name: Checkout
21+
# uses: actions/checkout@v3
22+
# with:
23+
# fetch-depth: 0
24+
25+
# - name: Setup Node.js
26+
# uses: actions/setup-node@v3
27+
# with:
28+
# node-version: '22.10.0'
29+
# registry-url: 'https://registry.npmjs.org/'
30+
31+
# - name: Setup pnpm
32+
# uses: pnpm/action-setup@v2
33+
# with:
34+
# version: latest
35+
36+
# - name: Install dependencies
37+
# run: pnpm install
38+
39+
# - name: Build
40+
# run: pnpm -F @vue-pivottable/plotly-renderer build
41+
42+
# - name: Release
43+
# env:
44+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45+
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_SUMIN }}
46+
# NPM_TOKEN: ${{ secrets.NPM_TOKEN_SUMIN }}
47+
# run: |
48+
# cd packages/plotly-renderer
49+
# pnpm dlx semantic-release
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Release vue-pivottable
2+
3+
on:
4+
push:
5+
branches:
6+
- release
7+
jobs:
8+
release:
9+
name: Release
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
issues: write
14+
pull-requests: write
15+
id-token: write
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Setup Node.js
23+
uses: actions/setup-node@v3
24+
with:
25+
node-version: '22.10.0'
26+
registry-url: 'https://registry.npmjs.org/'
27+
28+
- name: Setup pnpm
29+
uses: pnpm/action-setup@v2
30+
with:
31+
version: latest
32+
33+
- name: Install dependencies
34+
run: pnpm install
35+
36+
- name: Build
37+
run: pnpm build
38+
- name: Generate GitHub App Token
39+
id: generate-token
40+
uses: tibdex/github-app-token@v1
41+
with:
42+
app_id: ${{ secrets.APP_ID }}
43+
private_key: ${{ secrets.APP_PRIVATE_KEY }}
44+
installation_id: ${{ secrets.APP_INSTALLATION_ID }}
45+
- name: Release
46+
env:
47+
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
48+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
49+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
50+
run: |
51+
pnpm dlx semantic-release
52+
53+
- uses: actions/checkout@v4
54+
with:
55+
ref: main
56+
57+
- name: Reset release branch
58+
run: |
59+
git fetch origin release:release
60+
git reset --hard release
61+
- name: Create Pull Request
62+
uses: peter-evans/create-pull-request@v5
63+
with:
64+
branch: release-to-main
65+
commit-message: 'chore: update version to latest release [skip ci]'
66+
title: 'chore: update version to latest release [skip ci]'
67+
body: |
68+
이 PR은 release 브랜치의 최신 버전 정보로 main 브랜치를 업데이트합니다.
69+
70+
- package.json 버전 업데이트
71+
- CHANGELOG.md 업데이트
72+
73+
이 PR은 release 워크플로우에 의해 자동으로 생성되었습니다.

.github/workflows/release-develop.yml

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -125,28 +125,51 @@ jobs:
125125
echo "Building sub-packages..."
126126
pnpm -r --filter './packages/*' build # Build sub-packages after main
127127
128-
- name: Create GitHub Pre-release
128+
- name: Create GitHub Pre-releases
129129
if: steps.changesets-check.outputs.has_changesets == 'true'
130-
id: create-release
131-
uses: actions/create-release@v1
132-
env:
133-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134-
with:
135-
tag_name: vue-pivottable@${{ steps.version.outputs.version }}
136-
release_name: vue-pivottable@${{ steps.version.outputs.version }}
137-
draft: false
138-
prerelease: true
139-
body: |
140-
## 🚧 Pre-release (Beta)
141-
142-
This is a pre-release version. It may contain bugs and breaking changes.
130+
run: |
131+
# Create release for each package with beta version
132+
create_release() {
133+
local PKG_NAME=$1
134+
local PKG_VERSION=$2
135+
local NPM_NAME=$3
143136
144-
Install with: `npm install vue-pivottable@beta`
137+
echo "Creating release for $PKG_NAME@$PKG_VERSION"
145138
146-
### Version: ${{ steps.version.outputs.version }}
139+
gh release create "${PKG_NAME}@${PKG_VERSION}" \
140+
--title "${PKG_NAME}@${PKG_VERSION}" \
141+
--notes "## 🚧 Pre-release (Beta)
142+
143+
This is a pre-release version. It may contain bugs and breaking changes.
144+
145+
Install with: \`npm install ${NPM_NAME}@beta\`
146+
147+
### Version: ${PKG_VERSION}" \
148+
--prerelease \
149+
--target ${{ github.sha }}
150+
}
151+
152+
# Check main package
153+
MAIN_VERSION=$(node -p "require('./package.json').version")
154+
if [[ $MAIN_VERSION == *"-beta"* ]]; then
155+
create_release "vue-pivottable" "$MAIN_VERSION" "vue-pivottable"
156+
fi
157+
158+
# Check sub-packages
159+
for pkg in packages/*/; do
160+
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
161+
PKG_NAME=$(cd "$pkg" && node -p "require('./package.json').name")
162+
PKG_VERSION=$(cd "$pkg" && node -p "require('./package.json').version")
163+
if [[ $PKG_VERSION == *"-beta"* ]]; then
164+
create_release "$PKG_NAME" "$PKG_VERSION" "$PKG_NAME"
165+
fi
166+
fi
167+
done
168+
env:
169+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
147170

148171
- name: Publish pre-release to npm
149-
if: steps.changesets-check.outputs.has_changesets == 'true' && steps.create-release.outcome == 'success'
172+
if: steps.changesets-check.outputs.has_changesets == 'true'
150173
run: |
151174
# Publish with beta tag only after GitHub release is created
152175
RELEASE_TAG=beta node scripts/release-packages.cjs

.github/workflows/release.yml

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,11 @@ jobs:
9595
- name: Update versions to stable
9696
if: steps.check-versions.outputs.has_beta == 'true'
9797
run: |
98-
# Update main package
99-
npm version ${{ steps.check-versions.outputs.base_version }} --no-git-tag-version
98+
# Update main package only if it has beta
99+
MAIN_VERSION=$(node -p "require('./package.json').version")
100+
if [[ $MAIN_VERSION == *"-beta"* ]]; then
101+
npm version ${{ steps.check-versions.outputs.base_version }} --no-git-tag-version
102+
fi
100103
101104
# Update sub-packages
102105
for pkg in packages/*/; do
@@ -144,22 +147,49 @@ jobs:
144147
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
145148
NPM_TOKEN_SUMIN: ${{ secrets.NPM_TOKEN_SUMIN }}
146149

147-
- name: Create GitHub Release
150+
- name: Create GitHub Releases
148151
if: steps.check-versions.outputs.has_beta == 'true'
149-
uses: actions/create-release@v1
150-
env:
151-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
152-
with:
153-
tag_name: v${{ steps.create-release.outputs.version }}
154-
release_name: Release v${{ steps.create-release.outputs.version }}
155-
draft: false
156-
prerelease: false
157-
body: |
158-
## 🚀 Stable Release
152+
run: |
153+
# Create release for each package with stable version
154+
create_release() {
155+
local PKG_NAME=$1
156+
local PKG_VERSION=$2
157+
local NPM_NAME=$3
158+
159+
echo "Creating release for $PKG_NAME@$PKG_VERSION"
159160
160-
This release promotes the beta version to stable.
161+
# Delete existing release if it exists (likely a beta version)
162+
gh release delete "${PKG_NAME}@${PKG_VERSION}" --yes 2>/dev/null || true
161163
162-
Install with: `npm install vue-pivottable@latest`
164+
gh release create "${PKG_NAME}@${PKG_VERSION}" \
165+
--title "${PKG_NAME}@${PKG_VERSION}" \
166+
--notes "## 🚀 Stable Release
167+
168+
This release promotes the beta version to stable.
169+
170+
Install with: \`npm install ${NPM_NAME}@latest\`
171+
172+
### Version: ${PKG_VERSION}" \
173+
--target ${{ github.sha }}
174+
}
175+
176+
# Check main package
177+
MAIN_VERSION=$(node -p "require('./package.json').version")
178+
create_release "vue-pivottable" "$MAIN_VERSION" "vue-pivottable"
179+
180+
# Check sub-packages
181+
for pkg in packages/*/; do
182+
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
183+
PKG_NAME=$(cd "$pkg" && node -p "require('./package.json').name")
184+
PKG_VERSION=$(cd "$pkg" && node -p "require('./package.json').version")
185+
# Create release for all packages that were released
186+
if [ "$PKG_NAME" != "" ] && [ "$PKG_VERSION" != "" ]; then
187+
create_release "$PKG_NAME" "$PKG_VERSION" "$PKG_NAME"
188+
fi
189+
fi
190+
done
191+
env:
192+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
163193

164194
- name: Create PR to update main
165195
if: steps.check-versions.outputs.has_beta == 'true'

0 commit comments

Comments
 (0)