Add manual episode download button and fix analyzer issues #15
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: Build and Release | |
| on: | |
| push: | |
| tags: | |
| - 'v[0-9]+.[0-9]+.[0-9]+' | |
| permissions: | |
| contents: write | |
| jobs: | |
| analyze-and-test: | |
| name: Analyze and Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Mise | |
| uses: jdx/mise-action@v2 | |
| - name: Get Flutter version from Mise | |
| id: flutter-version | |
| run: | | |
| FLUTTER_VERSION=$(mise list flutter --json | jq -r '.[0].version') | |
| echo "version=$FLUTTER_VERSION" >> $GITHUB_OUTPUT | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.flutter-version.outputs.version }} | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Analyze code | |
| run: flutter analyze | |
| - name: Run tests | |
| run: flutter test | |
| build-android: | |
| name: Build Android APK | |
| needs: analyze-and-test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Setup Mise | |
| uses: jdx/mise-action@v2 | |
| - name: Get Flutter version from Mise | |
| id: flutter-version | |
| run: | | |
| FLUTTER_VERSION=$(mise list flutter --json | jq -r '.[0].version') | |
| echo "version=$FLUTTER_VERSION" >> $GITHUB_OUTPUT | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.flutter-version.outputs.version }} | |
| channel: 'stable' | |
| cache: true | |
| - name: Accept Android SDK licenses | |
| run: yes | flutter doctor --android-licenses | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Build APK | |
| run: flutter build apk --release | |
| - name: Upload APK artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-apk | |
| path: build/app/outputs/flutter-apk/app-release.apk | |
| build-macos: | |
| name: Build macOS App | |
| needs: analyze-and-test | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Mise | |
| uses: jdx/mise-action@v2 | |
| - name: Get Flutter version from Mise | |
| id: flutter-version | |
| run: | | |
| FLUTTER_VERSION=$(mise list flutter --json | jq -r '.[0].version') | |
| echo "version=$FLUTTER_VERSION" >> $GITHUB_OUTPUT | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.flutter-version.outputs.version }} | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Build macOS | |
| run: flutter build macos --release | |
| - name: Create DMG | |
| run: | | |
| brew install create-dmg | |
| create-dmg \ | |
| --volname "Bassdrive Radio" \ | |
| --window-pos 200 120 \ | |
| --window-size 800 400 \ | |
| --icon-size 100 \ | |
| --app-drop-link 600 185 \ | |
| "Bassdrive-Radio-macOS.dmg" \ | |
| "build/macos/Build/Products/Release/Bassdrive Radio.app" | |
| - name: Upload macOS artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-macos | |
| path: Bassdrive-Radio-macOS.dmg | |
| build-windows: | |
| name: Build Windows App | |
| needs: analyze-and-test | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Mise | |
| uses: jdx/mise-action@v2 | |
| - name: Get Flutter version from Mise | |
| id: flutter-version | |
| shell: pwsh | |
| run: | | |
| $FLUTTER_VERSION = (mise list flutter --json | ConvertFrom-Json)[0].version | |
| "version=$FLUTTER_VERSION" >> $env:GITHUB_OUTPUT | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.flutter-version.outputs.version }} | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Build Windows | |
| run: flutter build windows --release | |
| - name: Create ZIP archive | |
| run: | | |
| 7z a -tzip Bassdrive-Radio-Windows.zip .\build\windows\x64\runner\Release\* | |
| - name: Upload Windows artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-windows | |
| path: Bassdrive-Radio-Windows.zip | |
| build-linux: | |
| name: Build Linux App | |
| needs: analyze-and-test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Linux dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev | |
| - name: Setup Mise | |
| uses: jdx/mise-action@v2 | |
| - name: Get Flutter version from Mise | |
| id: flutter-version | |
| run: | | |
| FLUTTER_VERSION=$(mise list flutter --json | jq -r '.[0].version') | |
| echo "version=$FLUTTER_VERSION" >> $GITHUB_OUTPUT | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| flutter-version: ${{ steps.flutter-version.outputs.version }} | |
| channel: 'stable' | |
| cache: true | |
| - name: Get dependencies | |
| run: flutter pub get | |
| - name: Build Linux | |
| run: flutter build linux --release | |
| - name: Create tarball | |
| run: | | |
| tar -czf Bassdrive-Radio-Linux.tar.gz -C build/linux/x64/release/bundle . | |
| - name: Upload Linux artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-linux | |
| path: Bassdrive-Radio-Linux.tar.gz | |
| create-release: | |
| name: Create GitHub Release | |
| needs: [build-android, build-macos, build-windows, build-linux] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download Android artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: release-apk | |
| path: ./artifacts/ | |
| - name: Download macOS artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: release-macos | |
| path: ./artifacts/ | |
| - name: Download Windows artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: release-windows | |
| path: ./artifacts/ | |
| - name: Download Linux artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: release-linux | |
| path: ./artifacts/ | |
| - name: List artifacts | |
| run: ls -la ./artifacts/ | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: | | |
| ./artifacts/app-release.apk | |
| ./artifacts/Bassdrive-Radio-macOS.dmg | |
| ./artifacts/Bassdrive-Radio-Windows.zip | |
| ./artifacts/Bassdrive-Radio-Linux.tar.gz | |
| name: Release ${{ github.ref_name }} | |
| draft: false | |
| prerelease: false | |
| generate_release_notes: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |