name: Release Voicemeeter Compact on: release: types: [published] push: tags: ['v*.*.*'] workflow_dispatch: jobs: build: runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install Poetry uses: snok/install-poetry@v1 with: version: latest virtualenvs-create: true virtualenvs-in-project: true - name: Install Task uses: go-task/setup-task@v1 with: version: 3.x - name: Download Forest TTK Theme run: | # Clone the Forest theme repository git clone https://github.com/rdbende/Forest-ttk-theme.git temp-forest-theme # Copy the required theme files to theme/forest Copy-Item "temp-forest-theme\forest-dark.tcl" "theme\forest\" Copy-Item "temp-forest-theme\forest-light.tcl" "theme\forest\" Copy-Item "temp-forest-theme\forest-dark" "theme\forest\" -Recurse Copy-Item "temp-forest-theme\forest-light" "theme\forest\" -Recurse # Clean up Remove-Item temp-forest-theme -Recurse -Force shell: pwsh - name: Download Azure TTK Theme run: | # Clone the Azure theme repository git clone https://github.com/rdbende/Azure-ttk-theme.git temp-azure-theme # Copy the required theme files to theme/azure Copy-Item "temp-azure-theme\azure.tcl" "theme\azure\" Copy-Item "temp-azure-theme\theme" "theme\azure\" -Recurse # Clean up Remove-Item temp-azure-theme -Recurse -Force shell: pwsh - name: Cache Poetry dependencies uses: actions/cache@v4 with: path: .venv key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} - name: Install Poetry plugins run: poetry self add poethepoet shell: bash - name: Replace path dependencies with PyPI versions run: | poetry remove voicemeeter-api vban-cmd || true poetry add voicemeeter-api vban-cmd shell: bash - name: Install dependencies run: poetry install --with build shell: bash - name: Build artifacts with dynamic taskfile run: task --taskfile Taskfile.dynamic.yml build-all shell: bash env: POETRY_BIN: /c/Users/runneradmin/.local/bin/poetry - name: Create release archives run: task --taskfile Taskfile.dynamic.yml compress-all shell: bash env: POETRY_BIN: /c/Users/runneradmin/.local/bin/poetry # Sunvalley theme variants - name: Upload build artifacts - Sunvalley Basic uses: actions/upload-artifact@v4 with: name: sunvalley-basic path: dist/sunvalley-basic.zip - name: Upload build artifacts - Sunvalley Banana uses: actions/upload-artifact@v4 with: name: sunvalley-banana path: dist/sunvalley-banana.zip - name: Upload build artifacts - Sunvalley Potato uses: actions/upload-artifact@v4 with: name: sunvalley-potato path: dist/sunvalley-potato.zip # Forest theme variants (dark) - name: Upload build artifacts - Forest Basic Dark uses: actions/upload-artifact@v4 with: name: forest-dark-basic path: dist/forest-dark-basic.zip - name: Upload build artifacts - Forest Banana Dark uses: actions/upload-artifact@v4 with: name: forest-dark-banana path: dist/forest-dark-banana.zip - name: Upload build artifacts - Forest Potato Dark uses: actions/upload-artifact@v4 with: name: forest-dark-potato path: dist/forest-dark-potato.zip # Forest theme variants (light) - name: Upload build artifacts - Forest Basic Light uses: actions/upload-artifact@v4 with: name: forest-light-basic path: dist/forest-light-basic.zip - name: Upload build artifacts - Forest Banana Light uses: actions/upload-artifact@v4 with: name: forest-light-banana path: dist/forest-light-banana.zip - name: Upload build artifacts - Forest Potato Light uses: actions/upload-artifact@v4 with: name: forest-light-potato path: dist/forest-light-potato.zip # Azure theme variants (dark) - name: Upload build artifacts - Azure Basic Dark uses: actions/upload-artifact@v4 with: name: azure-dark-basic path: dist/azure-dark-basic.zip - name: Upload build artifacts - Azure Banana Dark uses: actions/upload-artifact@v4 with: name: azure-dark-banana path: dist/azure-dark-banana.zip - name: Upload build artifacts - Azure Potato Dark uses: actions/upload-artifact@v4 with: name: azure-dark-potato path: dist/azure-dark-potato.zip # Azure theme variants (light) - name: Upload build artifacts - Azure Basic Light uses: actions/upload-artifact@v4 with: name: azure-light-basic path: dist/azure-light-basic.zip - name: Upload build artifacts - Azure Banana Light uses: actions/upload-artifact@v4 with: name: azure-light-banana path: dist/azure-light-banana.zip - name: Upload build artifacts - Azure Potato Light uses: actions/upload-artifact@v4 with: name: azure-light-potato path: dist/azure-light-potato.zip release: if: startsWith(github.ref, 'refs/tags/v') needs: build runs-on: ubuntu-latest permissions: contents: write steps: - name: Download all artifacts uses: actions/download-artifact@v4 - name: Create Release run: | TAG_NAME=${GITHUB_REF#refs/tags/} gh release create $TAG_NAME --title "Release $TAG_NAME" --generate-notes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload release assets run: | TAG_NAME=${GITHUB_REF#refs/tags/} find . -name "*.zip" -exec gh release upload $TAG_NAME {} \; env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}