fixed contribution.md typo

GHA scripts organized & uses flutter_distributor straight from pub.dev
README updated
This commit is contained in:
Kingkor Roy Tirtho 2022-07-03 17:53:31 +06:00
parent ae714121b8
commit 3b4603fb5d
5 changed files with 146 additions and 113 deletions

View File

@ -1,85 +0,0 @@
name: Flutter Cross Build
on:
push:
branches:
- build
workflow_dispatch:
jobs:
build_ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2.2.0
with:
cache: true
- run: |
sudo apt-get update -y
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- run: flutter config --enable-linux-desktop
- run: flutter pub get
- run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- run: flutter clean
- run: flutter build linux
- run: make deb
- run: make tar
- run: wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool
- run: chmod +x /usr/local/bin/appimagetool
- run: pip3 install appimage-builder
- run: make appimage
- uses: actions/upload-artifact@v2
with:
name: Spotube-Linux-Bundle
path: |
build/Spotube-linux-x86_64.deb
build/Spotube-linux-x86_64.tar.xz
build/Spotube-*-x86_64.AppImage
# Building Android Application
- run: echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
- run: echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
- run: flutter build apk
- run: make apk
- uses: actions/upload-artifact@v2
with:
name: Spotube-Android-Bundle
path: |
build/Spotube-android-all-arch.apk
build_windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2.2.0
with:
cache: true
- run: flutter config --enable-windows-desktop
- run: flutter pub get
- run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- run: flutter build windows
- run: ls build/windows/runner/Release
- run: choco install make -y
- run: make innoinstall
- run: make inno
- uses: actions/upload-artifact@v2
with:
name: Spotube-Windows-Bundle
path: |
build/installer/Spotube-windows-x86_64-setup.exe
build_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2
with:
cache: true
- run: flutter config --enable-macos-desktop
- run: flutter pub get
- run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- run: flutter build macos
- run: du -sh build/macos/Build/Products/Release/spotube.app
- run: npm install -g appdmg
- run: appdmg appdmg.json build/Spotube-macos-x86_64.dmg
- uses: actions/upload-artifact@v2
with:
name: Spotube-Macos-Bundle
path: |
build/Spotube-macos-x86_64.dmg

134
.github/workflows/spotube-nightly.yml vendored Normal file
View File

@ -0,0 +1,134 @@
name: Spotube Nightly
on:
push:
branches:
- build
workflow_dispatch:
jobs:
build_ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
with:
strip_v: true
- uses: subosito/flutter-action@v2
with:
cache: true
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- run: |
sudo apt-get update -y
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
- run: |
wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage
chmod +x appimage-builder-x86_64.AppImage
mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
# replacing & adding new release version with older version
- run: |
sed -i 's|%{{APPDATA_RELEASE}}%|<release version="${{ steps.tag.outputs.tag }}" date="${{ steps.date.outputs.date }}" />|' linux/com.github.KRTirtho.Spotube.appdata.xml
- run: |
flutter config --enable-linux-desktop
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate flutter_distributor
flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean
make tar
- run: |
mv build/Spotube-linux-x86_64.tar.xz dist/
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
- uses: actions/upload-artifact@v3
with:
name: Spotube-Linux-Bundle
path: dist/
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
with:
strip_v: true
- uses: subosito/flutter-action@v2
with:
cache: true
- run: |
sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- run: |
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate flutter_distributor
flutter_distributor package --platform=android --targets=apk --skip-clean
- run: |
mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk
- uses: actions/upload-artifact@v3
with:
name: Spotube-Android-Bundle
path: dist/
build_windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
with:
# Optionally strip `v` prefix
strip_v: true
# Replace Version in files
- run: |
choco install sed make -y
sed -i "s/%{{SPOTUBE_VERSION}}%/${{ steps.tag.outputs.tag }}/" windows/runner/Runner.rc
# Build Windows Executable
- uses: subosito/flutter-action@v2.2.0
with:
cache: true
- run: |
flutter config --enable-windows-desktop
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate flutter_distributor
make innoinstall
flutter_distributor package --platform=windows --targets=exe --skip-clean
# Create Chocolatey Package
# setting the sha256 hash for new bundle
- run: mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup.exe
# Upload artifacts
- uses: actions/upload-artifact@v3
with:
name: Spotube-Windows-Bundle
path: dist/
build_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2
with:
cache: true
- run: flutter config --enable-macos-desktop
- run: flutter pub get
- run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- run: flutter build macos
- run: du -sh build/macos/Build/Products/Release/spotube.app
- run: npm install -g appdmg
- run: appdmg appdmg.json build/Spotube-macos-x86_64.dmg
- uses: actions/upload-artifact@v2
with:
name: Spotube-Macos-Bundle
path: |
build/Spotube-macos-x86_64.dmg

View File

@ -1,4 +1,4 @@
name: Spotube Build & Release
name: Spotube Release
on:
release:
types:
@ -36,9 +36,8 @@ jobs:
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate melos
cd build/flutter_distributor && melos bootstrap && cd ../..
make innoinstall
dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=windows --targets=exe --skip-clean
flutter_distributor package --platform=windows --targets=exe --skip-clean
# Create Chocolatey Package
# setting the sha256 hash for new bundle
@ -93,11 +92,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: KRTirtho/flutter_distributor
ref: deb-implementation
path: build/flutter_distributor
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
@ -111,7 +105,7 @@ jobs:
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- run: |
sudo apt-get update -y
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
- run: |
wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage
chmod +x appimage-builder-x86_64.AppImage
@ -124,9 +118,8 @@ jobs:
flutter config --enable-linux-desktop
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate melos
cd build/flutter_distributor && melos bootstrap && cd ../..
dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=linux --targets=deb,appimage --skip-clean
dart pub global activate flutter_distributor
flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean
make tar
- run: |
mv build/Spotube-linux-x86_64.tar.xz dist/
@ -141,11 +134,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: KRTirtho/flutter_distributor
ref: deb-implementation
path: build/flutter_distributor
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
@ -156,13 +144,12 @@ jobs:
cache: true
- run: |
sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- run: |
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate melos
cd build/flutter_distributor && melos bootstrap && cd ../..
dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=android --targets=apk --skip-clean
dart pub global activate flutter_distributor
flutter_distributor package --platform=android --targets=apk --skip-clean
- run: |
mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk
- uses: actions/upload-artifact@v3

View File

@ -114,13 +114,11 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt
### Your First Code Contribution
<!-- Download -->
audioplayers requirement https://github.com/bluefireteam/audioplayers/blob/main/packages/audioplayers_linux/requirements.md
Do the following:
- Download the latest Flutter SDK (>=2.15.1) & enable desktop support
- Install Development dependencies in linux
- `libwebkit2gtk-4.0-dev`, `libkeybinder-3.0-0` & `libkeybinder-3.0-dev` (for Debian/Ubuntu)
- `webkit2gtk` & `libkeybinder3` (for Arch/Manjaro)
- `libgstreamer1.0-dev` & `libgstreamer-plugins-base1.0-dev` (for Debian/Ubuntu)
- `gstreamer`, `gst-libav`, `gst-plugins-base` & `gst-plugins-good` (for Arch/Manjaro)
- Clone the Repo & Run `flutter pub get` in the Terminal
- Create a `secrets.json` in root of the project. The structure should be similar to the following example:
```jsoc name="secrets.json"
@ -144,7 +142,7 @@ Do the following:
> You can add more clientId/clientSecret/genius-access-token if you want. The credentials used in the example are dummy (fake). You've to use your own secrets
- Finally run these following commands in the root of the project to start the Spotube Locally
```bash
$ dart create-secrets.dart --local
$ dart bin/create-secrets.dart --local
$ flutter run -d <window|macos|linux|(<android-device-id>)>
```

View File

@ -127,8 +127,7 @@ Bu why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sour
- [AUR](https://aur.archlinux.org/) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
- [Flatpak](https://flatpak.org/) - Flatpak is a utility for software deployment and package management for Linux
- [spotify (dart)](https://github.com/rinukkusu/spotify-dart) - A dart library for interfacing with the Spotify API
- [just_audio](https://github.com/ryanheise/just_audio/tree/master/just_audio) - A feature-rich cross-platform audio player for Flutter that supports network audio streams too
- [libwinmedia](https://github.com/harmonoid/libwinmedia) - A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux)
- [audioplayers](https://github.com/bluefireteam/audioplayers) - A Flutter plugin to play multiple audio files simultaneously (Android/iOS)
- [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - YoutubeExplode is a library that provides an interface to query metadata of YouTube videos, playlists and channels, as well as to resolve and download video streams and closed caption tracks
- [infinite_scroll_pagination](https://github.com/EdsonBueno/infinite_scroll_pagination) - Flutter package to help you lazily load and display pages of items as the user scrolls down your screen
- [bitsdojo_window](https://github.com/bitsdojo/bitsdojo_window) - A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux