Skip to content

Create Release

Create Release #31

Workflow file for this run

name: Create Release
permissions: write-all
on:
release:
types: [published, prereleased]
workflow_dispatch:
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: "stable"
cache: true
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: gradle
- run: flutter --version
- name: Install dependencies
run: flutter pub get
- name: Perform Code Generation
run: flutter pub run build_runner build --delete-conflicting-outputs
- name: Generate SplashScreen
run: flutter pub run flutter_native_splash:create
- name: Generate Launcher Icons
run: flutter pub run flutter_launcher_icons -f flutter_launcher_icons.yaml
- name: Decode Release Key
run: |
echo "$TUBESYNC_JKS" > tubesync.b64
base64 --decode tubesync.b64 > tubesync.jks
env:
TUBESYNC_JKS: ${{ secrets.TUBESYNC_JKS }}
- name: Build Android Release
run: flutter build apk --release && flutter build apk --release --split-per-abi
env:
TUBESYNC_KEY_PASSWORD: ${{ secrets.TUBESYNC_KEY_PASSWORD }}
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: build/app/outputs/flutter-apk/app-*.apk
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: tubesync_android_release
path: build/app/outputs/flutter-apk/app-*.apk
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: "stable"
cache: true
- run: flutter --version
- name: Install dependencies
run: |
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev
flutter pub get
- name: Perform Code Generation
run: flutter pub run build_runner build --delete-conflicting-outputs
- name: Build Linux Release
run: flutter build linux --release
- name: Zip everything in output
run: |
cd build/linux/x64/release/bundle
zip -r tubesync_linux.zip .
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: build/linux/x64/release/bundle/tubesync_linux.zip
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: tubesync_linux_release
path: |
build/linux/x64/release/bundle/
!build/linux/x64/release/bundle/tubesync_linux.zip
build-linux-flatpak:
runs-on: ubuntu-latest
needs: build-linux
container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-24.08
options: --privileged
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: tubesync_linux_release
path: linux/flatpak/tubesync
- name: Prepare source
run: |
sudo dnf -y install zip
cd ./linux/flatpak/tubesync/
zip -r ../tubesync.zip ./
rm -rf ../tubesync
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
with:
manifest-path: linux/flatpak/io.github.khaled_0.TubeSync.yml
bundle: io.github.khaled_0.tubesync.flatpak
upload-artifact: false
# - name: Build Flatpak
# run: flatpak run org.flatpak.Builder --force-clean --ccache --sandbox --repo=build/flatpak-repo build/flatpak linux/flatpak/io.github.khaled_0.TubeSync.yml
# - name: Package as local flatpak
# run: flatpak build-bundle build/flatpak-repo io.github.khaled_0.tubesync.flatpak io.github.khaled_0.TubeSync
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: io.github.khaled_0.tubesync.flatpak
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: tubesync_linux_flatpak
path: io.github.khaled_0.tubesync.flatpak