Skip to content

VoiceSwitch v0.5.0-beta: Linux Server Edition (#10) #10

VoiceSwitch v0.5.0-beta: Linux Server Edition (#10)

VoiceSwitch v0.5.0-beta: Linux Server Edition (#10) #10

Workflow file for this run

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[@]}"