vibetunnel/.github/workflows/release.yml
2025-06-21 14:39:44 +02:00

140 lines
No EOL
3.9 KiB
YAML

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
version:
description: 'Version to release (e.g., 1.2.3)'
required: true
type: string
permissions:
contents: write
issues: write
pull-requests: write
jobs:
build-mac:
name: Build macOS App
runs-on: macos-15
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Select Xcode 16.3
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.3'
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install web dependencies
working-directory: web
run: npm ci
- name: Resolve Dependencies
working-directory: mac
run: |
xcodebuild -resolvePackageDependencies -workspace VibeTunnel.xcworkspace
- name: Build Release (arm64)
working-directory: mac
run: |
./scripts/build.sh --configuration Release --arch arm64
mv build/Build/Products/Release/VibeTunnel.app build/Build/Products/Release/VibeTunnel-arm64.app
- name: Build Release (x86_64)
working-directory: mac
run: |
# Clean build directory for x86_64 build
rm -rf build/Build/Products/Release/VibeTunnel.app
./scripts/build.sh --configuration Release --arch x86_64
mv build/Build/Products/Release/VibeTunnel.app build/Build/Products/Release/VibeTunnel-x86_64.app
- name: Create DMGs and ZIPs
working-directory: mac
run: |
VERSION="${{ github.event.inputs.version || github.ref_name }}"
VERSION="${VERSION#v}" # Remove 'v' prefix if present
# Create arm64 DMG and ZIP
./scripts/create-dmg.sh "build/Build/Products/Release/VibeTunnel-arm64.app"
./scripts/create-zip.sh "build/Build/Products/Release/VibeTunnel-arm64.app"
# Create Intel DMG and ZIP
./scripts/create-dmg.sh "build/Build/Products/Release/VibeTunnel-x86_64.app"
./scripts/create-zip.sh "build/Build/Products/Release/VibeTunnel-x86_64.app"
# List created files
echo "Created files:"
ls -la build/*.dmg build/*.zip
- name: Upload Release Artifacts
uses: actions/upload-artifact@v4
with:
name: mac-release
path: |
mac/build/*.dmg
mac/build/*.zip
retention-days: 7
- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: |
mac/build/*.dmg
mac/build/*.zip
draft: true
prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
generate_release_notes: true
build-ios:
name: Build iOS App
runs-on: macos-15
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Select Xcode 16.3
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.3'
- name: Resolve Dependencies
working-directory: ios
run: |
xcodebuild -resolvePackageDependencies -project VibeTunnel.xcodeproj
- name: Build iOS Release
working-directory: ios
run: |
xcodebuild build \
-project VibeTunnel.xcodeproj \
-scheme VibeTunnel \
-destination "generic/platform=iOS" \
-configuration Release \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGNING_REQUIRED=NO \
ONLY_ACTIVE_ARCH=NO \
-derivedDataPath build/DerivedData
- name: Upload iOS Artifacts
uses: actions/upload-artifact@v4
with:
name: ios-release
path: ios/build/DerivedData/Build/Products/Release-iphoneos/
retention-days: 7