Skip to content

Commit 6b76788

Browse files
committed
fix: GitHub Release 중복 방지 및 peerDependencies 자동 업데이트 방지
1. GitHub Release 중복 방지: - 릴리즈 생성 전 존재 여부 확인 - 이미 존재하는 릴리즈는 건너뛰기 2. peerDependencies 자동 업데이트 방지: - changeset version 실행 전 package.json 백업 - changeset 후 peerDependencies 복원 - 베타 버전이 peerDependencies에 전파되지 않도록 방지 3. 워크플로우 최적화: - 백업/복원 로직 개선 - 중복 코드 제거
1 parent fe01fb6 commit 6b76788

File tree

1 file changed

+36
-23
lines changed

1 file changed

+36
-23
lines changed

.github/workflows/release-develop.yml

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,15 @@ jobs:
5959
fi
6060
done
6161
62+
# Store package.json files BEFORE changeset to preserve peerDependencies
63+
echo "Backing up peerDependencies before changeset..."
64+
for pkg in packages/*/; do
65+
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
66+
cp "$pkg/package.json" "$pkg/package.json.backup"
67+
echo "✓ Backed up $pkg/package.json"
68+
fi
69+
done
70+
6271
# Apply changesets and consume them
6372
pnpm changeset version
6473
@@ -105,45 +114,41 @@ jobs:
105114
fi
106115
done
107116
108-
# Store package.json files before changeset modifications
109-
for pkg in packages/*/; do
110-
if [ -d "$pkg" ] && [ -f "$pkg/package.json" ]; then
111-
cp "$pkg/package.json" "$pkg/package.json.backup"
112-
fi
113-
done
114-
115-
# Commit all changes
116-
git config user.name "github-actions[bot]"
117-
git config user.email "github-actions[bot]@users.noreply.github.com"
118-
git add -A
119-
git commit -m "chore: prepare beta release
120-
121-
Changed packages: $CHANGED_PACKAGES"
122-
123-
# Restore peerDependencies from backup to prevent beta version pollution
117+
# Restore peerDependencies from backup to prevent auto-update
118+
echo "Restoring peerDependencies from backup..."
124119
for pkg in packages/*/; do
125120
if [ -d "$pkg" ] && [ -f "$pkg/package.json.backup" ]; then
126121
cd "$pkg"
122+
echo "Restoring peerDependencies for $(basename "$pkg")"
127123
# Extract peerDependencies from backup and apply to current
128124
node -e "
129125
const fs = require('fs');
130126
const backup = JSON.parse(fs.readFileSync('./package.json.backup', 'utf8'));
131127
const current = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
132128
if (backup.peerDependencies) {
129+
console.log('Restoring peerDependencies:', backup.peerDependencies);
133130
current.peerDependencies = backup.peerDependencies;
131+
fs.writeFileSync('./package.json', JSON.stringify(current, null, 2) + '\\n');
134132
}
135-
fs.writeFileSync('./package.json', JSON.stringify(current, null, 2) + '\\n');
136133
"
137-
rm -f package.json.backup
138134
cd -
139135
fi
140136
done
141137
142-
# Commit peerDependencies fix if there are changes
143-
if ! git diff --quiet; then
144-
git add -A
145-
git commit -m "fix: restore peerDependencies to prevent beta version pollution"
146-
fi
138+
# Commit all changes
139+
git config user.name "github-actions[bot]"
140+
git config user.email "github-actions[bot]@users.noreply.github.com"
141+
git add -A
142+
git commit -m "chore: prepare beta release
143+
144+
Changed packages: $CHANGED_PACKAGES"
145+
146+
# Clean up backup files
147+
for pkg in packages/*/; do
148+
if [ -d "$pkg" ] && [ -f "$pkg/package.json.backup" ]; then
149+
rm -f "$pkg/package.json.backup"
150+
fi
151+
done
147152
148153
git push origin develop
149154
@@ -181,6 +186,14 @@ jobs:
181186
local PKG_VERSION=$2
182187
local NPM_NAME=$3
183188
189+
echo "Checking if release ${PKG_NAME}@${PKG_VERSION} already exists..."
190+
191+
# Check if release already exists
192+
if gh release view "${PKG_NAME}@${PKG_VERSION}" &>/dev/null; then
193+
echo "⚠️ Release ${PKG_NAME}@${PKG_VERSION} already exists, skipping..."
194+
return 0
195+
fi
196+
184197
echo "Creating release for $PKG_NAME@$PKG_VERSION"
185198
186199
gh release create "${PKG_NAME}@${PKG_VERSION}" \

0 commit comments

Comments
 (0)