This commit is contained in:
rang 2025-10-25 15:43:13 +08:00
parent f5e7113239
commit fac5ddda79

View file

@ -9,158 +9,194 @@ on:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
test: # test:
name: Test # name: Test
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v4 # uses: actions/checkout@v4
with: # with:
submodules: recursive # submodules: recursive
- name: Setup Flutter Environment # - name: Setup Flutter Environment
uses: ./.github/actions/flutter-setup # Path to the composite action directory # uses: ./.github/actions/flutter-setup # Path to the composite action directory
# Pass inputs if needed (optional, using defaults here) # # Pass inputs if needed (optional, using defaults here)
# with: # # with:
# flutter-channel: 'stable' # # flutter-channel: 'stable'
# java-version: '17' # # java-version: '17'
# Debug: Echo current directory contents # # Debug: Echo current directory contents
- name: List root directory contents # - name: List root directory contents
run: | # run: |
pwd # pwd
ls -la # ls -la
# Debug: Recursive directory structure # # Debug: Recursive directory structure
- name: Show full directory structure # - name: Show full directory structure
run: | # run: |
echo "Full directory structure:" # echo "Full directory structure:"
tree -L 3 # tree -L 3
# Debug: Submodule status and details # # Debug: Submodule status and details
- name: Check submodule status # - name: Check submodule status
run: | # run: |
echo "Submodule status:" # echo "Submodule status:"
git submodule status # git submodule status
echo "\nSubmodule details:" # echo "\nSubmodule details:"
git submodule foreach 'echo $path: && pwd && ls -la' # git submodule foreach 'echo $path: && pwd && ls -la'
# - name: Run static analysis # # - name: Run static analysis
# run: flutter analyze # # run: flutter analyze
- name: Check formatting # - name: Check formatting
run: | # run: |
dart format -o none --set-exit-if-changed lib/ # dart format -o none --set-exit-if-changed lib/
- name: Run tests # - name: Run tests
run: flutter test # run: flutter test
build_android: # build_android:
name: Build Android APKs # name: Build Android APKs
needs: test # needs: test
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v4 # uses: actions/checkout@v4
with: # with:
submodules: recursive # submodules: recursive
- name: Setup Flutter Environment # - name: Setup Flutter Environment
uses: ./.github/actions/flutter-setup # Path to the composite action directory # uses: ./.github/actions/flutter-setup # Path to the composite action directory
with: # with:
flutter-channel: stable # flutter-channel: stable
java-version: 17 # java-version: 17
- name: Accept Android SDK Licenses # - name: Accept Android SDK Licenses
run: | # run: |
yes | sudo $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses # yes | sudo $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
- name: Decode android/upload.jks # - name: Decode android/upload.jks
run: echo "${{ secrets.UPLOAD_KEYSTORE_JKS }}" | base64 --decode > android/upload.jks # run: echo "${{ secrets.UPLOAD_KEYSTORE_JKS }}" | base64 --decode > android/upload.jks
- name: Decode android/key.properties # - name: Decode android/key.properties
run: echo "${{ secrets.KEY_PROPERTIES }}" | base64 --decode > android/key.properties # run: echo "${{ secrets.KEY_PROPERTIES }}" | base64 --decode > android/key.properties
- name: Build APKs # - name: Build APKs
run: flutter build apk --release --split-per-abi # run: flutter build apk --release --split-per-abi
- name: Build Universal APK # - name: Build Universal APK
run: flutter build apk --release # run: flutter build apk --release
- name: Rename Universal APK # - name: Rename Universal APK
run: mv build/app/outputs/flutter-apk/{app-release,app-universal-release}.apk # run: mv build/app/outputs/flutter-apk/{app-release,app-universal-release}.apk
- name: Build App Bundle # - name: Build App Bundle
run: flutter build appbundle --release # run: flutter build appbundle --release
- name: Upload Android APK Artifact # - name: Upload Android APK Artifact
uses: actions/upload-artifact@v4 # uses: actions/upload-artifact@v4
with: # with:
name: android-release-artifacts # name: android-release-artifacts
path: | # path: |
build/app/outputs/flutter-apk/*-release*.apk # build/app/outputs/flutter-apk/*-release*.apk
build/app/outputs/bundle/release/*.aab # build/app/outputs/bundle/release/*.aab
build_linux: # build_linux:
needs: test # needs: test
runs-on: ubuntu-latest # runs-on: ubuntu-latest
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v4 # uses: actions/checkout@v4
with: # with:
submodules: recursive # submodules: recursive
- name: Setup Flutter Environment # - name: Setup Flutter Environment
uses: ./.github/actions/flutter-setup # Path to the composite action directory # uses: ./.github/actions/flutter-setup # Path to the composite action directory
- name: Install Linux dependencies # - name: Install Linux dependencies
run: | # run: |
sudo apt-get update -y # sudo apt-get update -y
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev locate libfuse2 # sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev locate libfuse2
# Download and install appimagetool # # Download and install appimagetool
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage # wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage # chmod +x appimagetool-x86_64.AppImage
sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool # sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool
shell: bash # shell: bash
- name: setup fastforge # - name: setup fastforge
run: | # run: |
dart pub global activate fastforge # dart pub global activate fastforge
- name: Build Linux AppImage and deb # - name: Build Linux AppImage and deb
run: fastforge package --platform linux --targets deb,appimage # run: fastforge package --platform linux --targets deb,appimage
- name: Rename Linux Artifacts # - name: Rename Linux Artifacts
run: | # run: |
# Find and rename .deb file # # Find and rename .deb file
DEB_FILE=$(find dist/ -name "*.deb" -type f) # DEB_FILE=$(find dist/ -name "*.deb" -type f)
if [ -n "$DEB_FILE" ]; then # if [ -n "$DEB_FILE" ]; then
mv "$DEB_FILE" dist/vaani-linux-amd64.deb # mv "$DEB_FILE" dist/vaani-linux-amd64.deb
echo "Renamed DEB: $DEB_FILE to dist/vaani-linux-amd64.deb" # echo "Renamed DEB: $DEB_FILE to dist/vaani-linux-amd64.deb"
else # else
echo "Error: .deb file not found in dist/" # echo "Error: .deb file not found in dist/"
exit 1 # exit 1
fi # fi
# Find and rename .AppImage file # # Find and rename .AppImage file
APPIMAGE_FILE=$(find dist/ -name "*.AppImage" -type f) # APPIMAGE_FILE=$(find dist/ -name "*.AppImage" -type f)
if [ -n "$APPIMAGE_FILE" ]; then # if [ -n "$APPIMAGE_FILE" ]; then
mv "$APPIMAGE_FILE" dist/vaani-linux-amd64.AppImage # mv "$APPIMAGE_FILE" dist/vaani-linux-amd64.AppImage
echo "Renamed AppImage: $APPIMAGE_FILE to dist/vaani-linux-amd64.AppImage" # echo "Renamed AppImage: $APPIMAGE_FILE to dist/vaani-linux-amd64.AppImage"
else # else
echo "Error: .AppImage file not found in dist/" # echo "Error: .AppImage file not found in dist/"
exit 1 # exit 1
fi # fi
shell: bash # shell: bash
- name: Upload Linux Artifacts # - name: Upload Linux Artifacts
uses: actions/upload-artifact@v4 # uses: actions/upload-artifact@v4
with: # with:
name: linux-release-artifacts # name: linux-release-artifacts
path: | # path: |
dist/vaani-linux-amd64.deb # dist/vaani-linux-amd64.deb
dist/vaani-linux-amd64.AppImage # dist/vaani-linux-amd64.AppImage
build_windows: # build_windows:
needs: test # needs: test
runs-on: windows-latest # runs-on: windows-latest
# permissions:
# contents: write
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# with:
# submodules: recursive
# - name: Setup Flutter
# uses: subosito/flutter-action@v2
# with:
# flutter-version: "3.32.0"
# cache: true
# - name: Restore Packages
# run: |
# flutter pub get
# - name: Install flutter_distributor
# run: dart pub global activate flutter_distributor
# - name: Build Windows
# run: |
# flutter_distributor package --platform windows --targets msix,zip --skip-clean
# - name: Upload Windows Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: windows-release-artifacts
# path: |
# dist/*/*.msix
# dist/*/*.zip
build_macos:
# needs: test
runs-on: macos-latest
permissions: permissions:
contents: write contents: write
steps: steps:
@ -168,34 +204,41 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
submodules: recursive submodules: recursive
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: "3.32.0" flutter-version: "3.32.0"
cache: true cache: true
- name: Restore Packages
- name: Restore packages
run: | run: |
flutter pub get flutter pub get
- name: Install appdmg
run: npm install -g appdmg
- name: Install flutter_distributor - name: Install flutter_distributor
run: dart pub global activate flutter_distributor run: dart pub global activate flutter_distributor
- name: Build Windows - name: Build MacOS
run: | run: |
flutter_distributor package --platform windows --targets msix,zip --skip-clean flutter_distributor package --platform macos --targets dmg,zip --skip-clean
- name: Upload Windows Artifacts - name: Upload MacOS to Artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: windows-release-artifacts name: macos-release-artifacts
path: | path: |
dist/*/*.msix dist/*/*.dmg
dist/*/*.zip dist/*/*.zip
# Job 4: Create GitHub Release (NEW - runs only on tag pushes) # Job 4: Create GitHub Release (NEW - runs only on tag pushes)
create_release: create_release:
name: Create GitHub Release name: Create GitHub Release
needs: [build_android, build_linux, build_windows] # Depends on successful builds # needs: [build_android, build_linux, build_windows, build_macos] # Depends on successful builds
needs: build_macos # Depends on successful builds
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: write # Need write access to create release contents: write # Need write access to create release
@ -220,12 +263,18 @@ jobs:
name: linux-release-artifacts name: linux-release-artifacts
path: ./release-artifacts/linux path: ./release-artifacts/linux
- name: Download Linux Artifacts - name: Download Windows Artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
name: windows-release-artifacts name: windows-release-artifacts
path: ./release-artifacts/windows path: ./release-artifacts/windows
- name: Download Macos Artifacts
uses: actions/download-artifact@v4
with:
name: macos-release-artifacts
path: ./release-artifacts/macos
- name: List downloaded files (for debugging) - name: List downloaded files (for debugging)
run: ls -R ./release-artifacts run: ls -R ./release-artifacts
shell: bash shell: bash