name: Release (Edge) # Baut Playtube Edge (Microsoft-Edge-Engine / WebView2) fuer Windows und veroeffentlicht Setup # und ZIP an einem GitHub Release, sobald ein Tag im Format "vX.Y.Z-edge" gepusht wird. # # WICHTIG: # - Nur Tags mit dem Suffix "-edge" loesen diesen Workflow aus - die normale (Qt-)Playtube # baut aus dem Branch "main" mit Tags "vX.Y.Z" und bleibt davon unberuehrt. # - Das Release wird als VORABVERSION veroeffentlicht und nie als "latest" markiert. Die Qt- # Version fragt "/releases/latest" ab und sieht dieses Release dadurch nie; der Updater der # Edge-Version sucht seinerseits nur nach Tags "...-edge" (siehe playtube/updater.py). on: push: tags: - "v*-edge" workflow_dispatch: {} permissions: contents: write jobs: build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Abhaengigkeiten installieren run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pyinstaller - name: PlaytubeEdge.exe bauen run: pyinstaller packaging\playtube.spec --noconfirm --distpath dist --workpath build - name: Setup-Installer bauen (Inno Setup) shell: pwsh run: | $version = (Select-String -Path playtube\__init__.py -Pattern '__version__\s*=\s*"([^"]+)"').Matches[0].Groups[1].Value $iscc = Join-Path ${env:ProgramFiles(x86)} "Inno Setup 6\ISCC.exe" if (-not (Test-Path $iscc)) { choco install innosetup -y --no-progress } & $iscc "/DAppVersion=$version" packaging\playtube.iss if ($LASTEXITCODE -ne 0) { throw "Inno-Setup-Build fehlgeschlagen." } # Zwei getrennte Artefakte: bei mehreren Pfaden in EINEM Artefakt behielte das Setup seinen # Unterordner (dist/installer/) und wuerde beim Veroeffentlichen nicht gefunden. - uses: actions/upload-artifact@v4 with: name: windows-edge-setup path: dist/installer/PlaytubeEdge-Setup-v*.exe - name: Als .zip packen (portabel) run: Compress-Archive -Path dist\PlaytubeEdge -DestinationPath PlaytubeEdge-${{ github.ref_name }}-win64.zip - uses: actions/upload-artifact@v4 with: name: windows-edge-zip path: PlaytubeEdge-*-win64.zip publish-release: needs: [build-windows] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: path: artifacts merge-multiple: true - name: GitHub Release veroeffentlichen (Vorabversion, nie "latest") # gh statt softprops/action-gh-release: letzteres brach beim erneuten Veroeffentlichen # desselben Tags mit "Too many retries" ab. Ein vorhandenes Release zum selben Tag wird # zuerst entfernt (der Tag bleibt), dann sauber neu angelegt. env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release delete "${{ github.ref_name }}" --repo "${{ github.repository }}" --yes || true gh release create "${{ github.ref_name }}" artifacts/* \ --repo "${{ github.repository }}" \ --title "Playtube Edge ${{ github.ref_name }}" \ --notes-file packaging/release_notes.md \ --prerelease --latest=false --verify-tag