mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-06-28 05:29:29 +00:00
Fix release process: prevent double beta suffix and improve documentation
- Updated release.sh to detect if version already contains suffix - Added critical pre-release checklist to RELEASE.md - Fixed version back to 1.0.0-beta.2 (removed double suffix) - Improved documentation about version handling in release process
This commit is contained in:
parent
72229af0a5
commit
c91c84191a
8 changed files with 185 additions and 11 deletions
24
Derived/InfoPlists/VibeTunnel-Info.plist
Normal file
24
Derived/InfoPlists/VibeTunnel-Info.plist
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
24
Derived/InfoPlists/VibeTunnelTests-Info.plist
Normal file
24
Derived/InfoPlists/VibeTunnelTests-Info.plist
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright ©. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
// VibeTunnel Version Configuration
|
||||
// This file contains the version and build number for the app
|
||||
|
||||
MARKETING_VERSION = 1.0.0-beta.2-beta.2
|
||||
MARKETING_VERSION = 1.0.0-beta.2
|
||||
CURRENT_PROJECT_VERSION = 104
|
||||
|
||||
// Domain and GitHub configuration
|
||||
|
|
|
|||
0
Workspace.xcworkspace/.tuist-generated
Normal file
0
Workspace.xcworkspace/.tuist-generated
Normal file
65
Workspace.xcworkspace/contents.xcworkspacedata
generated
Normal file
65
Workspace.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:VibeTunnel.xcodeproj">
|
||||
</FileRef>
|
||||
<Group
|
||||
location = "container:"
|
||||
name = "Dependencies">
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/async-http-client/async-http-client.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/hummingbird/hummingbird.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-algorithms/swift-algorithms.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-async-algorithms/swift-async-algorithms.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-atomics/swift-atomics.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-collections/swift-collections.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-distributed-tracing/swift-distributed-tracing.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-http-types/swift-http-types.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-log/swift-log.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-metrics/swift-metrics.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-nio-extras/swift-nio-extras.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-nio-http2/swift-nio-http2.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-nio-ssl/swift-nio-ssl.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-nio-transport-services/swift-nio-transport-services.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-nio/swift-nio.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-numerics/swift-numerics.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-service-context/swift-service-context.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:.build/tuist-derived/swift-service-lifecycle/swift-service-lifecycle.xcodeproj">
|
||||
</FileRef>
|
||||
</Group>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -13,13 +13,57 @@ VibeTunnel uses an automated release process that handles all the complexity of:
|
|||
|
||||
## 🚀 Creating a Release
|
||||
|
||||
### 📋 Pre-Release Checklist (MUST DO FIRST!)
|
||||
|
||||
Before running ANY release commands, verify these items:
|
||||
|
||||
- [ ] **Version in version.xcconfig is correct**
|
||||
```bash
|
||||
grep MARKETING_VERSION VibeTunnel/version.xcconfig
|
||||
# For beta.2 should show: MARKETING_VERSION = 1.0.0-beta.2
|
||||
# NOT: MARKETING_VERSION = 1.0.0
|
||||
```
|
||||
|
||||
- [ ] **Build number is incremented**
|
||||
```bash
|
||||
grep CURRENT_PROJECT_VERSION VibeTunnel/version.xcconfig
|
||||
# Must be higher than the last release
|
||||
```
|
||||
|
||||
- [ ] **CHANGELOG.md has entry for this version**
|
||||
```bash
|
||||
grep "## \[1.0.0-beta.2\]" CHANGELOG.md
|
||||
# Must exist with release notes
|
||||
```
|
||||
|
||||
- [ ] **Run Tuist generate if build number was changed**
|
||||
```bash
|
||||
tuist generate
|
||||
git add VibeTunnel.xcodeproj/project.pbxproj
|
||||
git commit -m "Update Xcode project for build XXX"
|
||||
```
|
||||
|
||||
### Step 1: Pre-flight Check
|
||||
```bash
|
||||
./scripts/preflight-check.sh
|
||||
```
|
||||
This validates your environment is ready for release.
|
||||
|
||||
### Step 2: Create/Update CHANGELOG.md
|
||||
### Step 2: CRITICAL Pre-Release Version Check
|
||||
**IMPORTANT**: Before running the release script, ensure your version.xcconfig is set correctly:
|
||||
|
||||
1. For beta releases: The MARKETING_VERSION should already include the suffix (e.g., `1.0.0-beta.2`)
|
||||
2. The release script will NOT add additional suffixes - it uses the version as-is
|
||||
3. Always verify the version before proceeding:
|
||||
```bash
|
||||
grep MARKETING_VERSION VibeTunnel/version.xcconfig
|
||||
# Should show: MARKETING_VERSION = 1.0.0-beta.2
|
||||
```
|
||||
|
||||
**Common Mistake**: If the version is already `1.0.0-beta.2` and you run `./scripts/release.sh beta 2`,
|
||||
it will create `1.0.0-beta.2-beta.2` which is wrong!
|
||||
|
||||
### Step 3: Create/Update CHANGELOG.md
|
||||
Before creating any release, ensure the CHANGELOG.md file exists and contains a proper section for the version being released. If this is your first release, create a CHANGELOG.md file in the project root:
|
||||
|
||||
```markdown
|
||||
|
|
@ -27,7 +71,7 @@ Before creating any release, ensure the CHANGELOG.md file exists and contains a
|
|||
|
||||
All notable changes to VibeTunnel will be documented in this file.
|
||||
|
||||
## [1.1.0] - 2025-06-10
|
||||
## [1.0.0-beta.2] - 2025-06-19
|
||||
|
||||
### 🎨 UI Improvements
|
||||
- **Enhanced feature** - Description of the improvement
|
||||
|
|
@ -36,15 +80,15 @@ All notable changes to VibeTunnel will be documented in this file.
|
|||
|
||||
**CRITICAL**: The appcast generation relies on the local CHANGELOG.md file, NOT the GitHub release description. The changelog must be added to CHANGELOG.md BEFORE running the release script.
|
||||
|
||||
### Step 3: Create the Release
|
||||
### Step 4: Create the Release
|
||||
```bash
|
||||
# For stable releases:
|
||||
./scripts/release.sh stable
|
||||
|
||||
# For pre-releases (beta, alpha, rc):
|
||||
./scripts/release.sh beta 1 # Creates version-beta.1
|
||||
./scripts/release.sh alpha 2 # Creates version-alpha.2
|
||||
./scripts/release.sh rc 1 # Creates version-rc.1
|
||||
# IMPORTANT: The release type parameter is only used for tagging!
|
||||
# The actual version comes from version.xcconfig
|
||||
# Example: If version.xcconfig has "1.0.0-beta.2", then:
|
||||
./scripts/release.sh beta 2 # Creates tag v1.0.0-beta.2 (NOT v1.0.0-beta.2-beta.2!)
|
||||
```
|
||||
|
||||
**IMPORTANT**: The release script does NOT automatically increment build numbers. You must manually update the build number in VibeTunnel.xcodeproj before running the script, or it will fail the pre-flight check.
|
||||
|
|
@ -57,7 +101,7 @@ The script will:
|
|||
5. Update the appcast files with EdDSA signatures
|
||||
6. Commit and push all changes
|
||||
|
||||
### Step 4: Verify Success
|
||||
### Step 5: Verify Success
|
||||
- Check the GitHub releases page
|
||||
- Verify the appcast was updated correctly with proper changelog content
|
||||
- Test updating from a previous version
|
||||
|
|
|
|||
|
|
@ -137,7 +137,15 @@ if [[ "$RELEASE_TYPE" == "stable" ]]; then
|
|||
RELEASE_VERSION="$MARKETING_VERSION"
|
||||
TAG_NAME="v$RELEASE_VERSION"
|
||||
else
|
||||
RELEASE_VERSION="$MARKETING_VERSION-$RELEASE_TYPE.$PRERELEASE_NUMBER"
|
||||
# Check if MARKETING_VERSION already contains the pre-release suffix
|
||||
EXPECTED_SUFFIX="$RELEASE_TYPE.$PRERELEASE_NUMBER"
|
||||
if [[ "$MARKETING_VERSION" == *"-$EXPECTED_SUFFIX" ]]; then
|
||||
# Version already has the correct suffix, use as-is
|
||||
RELEASE_VERSION="$MARKETING_VERSION"
|
||||
else
|
||||
# Add the suffix
|
||||
RELEASE_VERSION="$MARKETING_VERSION-$RELEASE_TYPE.$PRERELEASE_NUMBER"
|
||||
fi
|
||||
TAG_NAME="v$RELEASE_VERSION"
|
||||
fi
|
||||
|
||||
|
|
@ -170,7 +178,8 @@ if [[ "$RELEASE_TYPE" == "stable" ]]; then
|
|||
BASE_VERSION=$(echo "$MARKETING_VERSION" | sed 's/-.*$//')
|
||||
VERSION_TO_SET="$BASE_VERSION"
|
||||
else
|
||||
# For pre-releases, set the full version with suffix
|
||||
# For pre-releases, use the RELEASE_VERSION we calculated above
|
||||
# (which already handles whether to add suffix or not)
|
||||
VERSION_TO_SET="$RELEASE_VERSION"
|
||||
fi
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue