VoiceSwitch v0.5.0-beta: Linux Server Edition (#10) #10
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| runs-on: macos-26 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Validate release source | |
| run: | | |
| zsh -n scripts/*.sh Resources/install_runtime.sh | |
| bash -n server/linux/install.sh scripts/package_server_release.sh | |
| python3 -m py_compile \ | |
| worker/asr_worker.py \ | |
| worker/media_worker.py \ | |
| worker/text_worker.py \ | |
| server/linux/stt/*.py \ | |
| server/linux/video/*.py \ | |
| server/linux/healthcheck.py | |
| python3 -m unittest discover -s tests -v | |
| PYTHONPATH=server/linux/video \ | |
| python3 -m unittest discover -s server/linux/tests -v | |
| node --check server/linux/openclaw-plugin/index.js | |
| node --test \ | |
| server/linux/openclaw-plugin/index.test.js \ | |
| server/linux/openclaw-plugin/source-validation.test.js \ | |
| server/linux/openclaw-plugin/tool-result.test.js \ | |
| server/linux/openclaw-plugin/worker-scope.test.js | |
| bundle_version=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' Resources/Info.plist) | |
| tag_version="${GITHUB_REF_NAME#v}" | |
| test "$bundle_version" = "${tag_version%%-*}" | |
| test "$(tr -d '[:space:]' < server/linux/VERSION)" = "$tag_version" | |
| - name: Validate clean GigaAM dependency install | |
| run: | | |
| VOICESWITCH_SETUP_DEPENDENCIES_ONLY=1 \ | |
| VOICESWITCH_RETRY_DELAY_SECONDS=0 \ | |
| Resources/install_runtime.sh \ | |
| "$RUNNER_TEMP/VoiceSwitch-GigaAM-Dependencies" \ | |
| worker/asr_worker.py \ | |
| worker/text_worker.py \ | |
| gigaam | |
| - name: Build release archive | |
| run: | | |
| chmod +x scripts/*.sh Resources/install_runtime.sh server/linux/install.sh server/linux/healthcheck.py | |
| ./scripts/package_release.sh "${GITHUB_REF_NAME#v}" | |
| ./scripts/package_server_release.sh "${GITHUB_REF_NAME#v}" | |
| test -f "dist/VoiceSwitch-${GITHUB_REF_NAME#v}-macos-arm64/VoiceSwitch.app/Contents/Resources/media_worker.py" | |
| test -f "dist/VoiceSwitch-Server-${GITHUB_REF_NAME#v}-linux-x86_64.tar.gz" | |
| - name: Publish GitHub release | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| notes_file="RELEASE_NOTES_${GITHUB_REF_NAME}.md" | |
| args=( | |
| "$GITHUB_REF_NAME" | |
| dist/VoiceSwitch-*.dmg | |
| dist/VoiceSwitch-*.dmg.sha256 | |
| dist/VoiceSwitch-*.zip | |
| dist/VoiceSwitch-*.zip.sha256 | |
| dist/VoiceSwitch-Server-*.tar.gz | |
| dist/VoiceSwitch-Server-*.tar.gz.sha256 | |
| --title "VoiceSwitch ${GITHUB_REF_NAME} — Linux Server Edition" | |
| ) | |
| if [[ -f "$notes_file" ]]; then | |
| args+=(--notes-file "$notes_file") | |
| else | |
| args+=(--generate-notes) | |
| fi | |
| if [[ "$GITHUB_REF_NAME" == *"-"* ]]; then | |
| args+=(--prerelease) | |
| fi | |
| gh release create "${args[@]}" |