Build ALL #38
Workflow file for this run
This file contains 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 ALL | |
run-name: Build ALL | |
on: | |
workflow_dispatch: {} | |
release: | |
types: [published] | |
jobs: | |
Build_MacOS: | |
runs-on: macos-15 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: "stable" | |
flutter-version-file: pubspec.yaml | |
architecture: x64 | |
- run: sudo xcode-select --switch /Applications/Xcode_16.0.app | |
- run: flutter pub get | |
# Step 1: Decode and install the certificate | |
- name: Decode and install certificate | |
env: | |
CERTIFICATE: ${{ secrets.CERTIFICATE }} | |
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }} | |
run: | | |
echo "$CERTIFICATE" | base64 --decode > signing_certificate.p12 | |
security import signing_certificate.p12 -k ~/Library/Keychains/login.keychain -P "$CERTIFICATE_PASSWORD" -T /usr/bin/codesign | |
# Step 2: Build the Flutter macOS app | |
- name: Build Flutter macOS App | |
run: flutter build macos --release | |
# Step 3: Create the DMG file | |
- name: Create DMG | |
run: | | |
mkdir -p dist | |
mkdir -p dist/dmg_contents | |
cp -R build/macos/Build/Products/Release/venera.app dist/dmg_contents/ | |
ln -s /Applications dist/dmg_contents/Applications | |
hdiutil create -volname "venera" -srcfolder dist/dmg_contents -ov -format UDZO "dist/venera.dmg" | |
# Step 4: Attach and upload artifacts (optional) | |
- name: Upload DMG | |
uses: actions/upload-artifact@v4 | |
with: | |
name: venera.dmg | |
path: dist/venera.dmg | |
Build_IOS: | |
runs-on: macos-15 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: "stable" | |
flutter-version-file: pubspec.yaml | |
architecture: x64 | |
- run: sudo xcode-select --switch /Applications/Xcode_16.0.app | |
- run: flutter pub get | |
- run: flutter build ios --release --no-codesign | |
- run: | | |
mkdir -p /Users/runner/work/venera/venera/build/ios/iphoneos/Payload | |
mv /Users/runner/work/venera/venera/build/ios/iphoneos/Runner.app /Users/runner/work/venera/venera/build/ios/iphoneos/Payload | |
cd /Users/runner/work/venera/venera/build/ios/iphoneos/ | |
zip -r venera-ios.ipa Payload | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: app-ios.ipa | |
path: /Users/runner/work/venera/venera/build/ios/iphoneos/venera-ios.ipa | |
Build_Android: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: "stable" | |
flutter-version-file: pubspec.yaml | |
architecture: x64 | |
- name: Decode and install certificate | |
env: | |
STORE_FILE: ${{ secrets.ANDROID_KEYSTORE }} | |
PROPERTY_FILE: ${{ secrets.ANDROID_KEY_PROPERTIES }} | |
run: | | |
echo "$STORE_FILE" | base64 --decode > android/keystore.jks | |
echo "$PROPERTY_FILE" > android/key.properties | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'oracle' | |
java-version: '17' | |
- run: flutter pub get | |
- run: flutter build apk --release | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: apks | |
path: build/app/outputs/apk/release | |
Build_Windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install dependencies | |
run: | | |
choco install yq -y | |
pip install httpx | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: "stable" | |
flutter-version-file: pubspec.yaml | |
architecture: x64 | |
- name: build | |
run: | | |
flutter pub get | |
python windows/build.py | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: windows_build | |
path: build/windows/Venera-* | |
Build_Linux: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: 'stable' | |
flutter-version-file: pubspec.yaml | |
architecture: x64 | |
- run: | | |
sudo apt-get update -y | |
sudo apt-get install -y ninja-build libgtk-3-dev webkit2gtk-4.1 | |
dart pub global activate flutter_to_debian | |
- run: python3 debian/build.py | |
- run: dart run flutter_to_arch | |
- run: | | |
sudo rm -rf build/linux/arch/app.tar.gz | |
sudo rm -rf build/linux/arch/pkg | |
sudo rm -rf build/linux/arch/src | |
sudo rm -rf build/linux/arch/PKGBUILD | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: deb_build | |
path: build/linux/x64/release/debian | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: arch_build | |
path: build/linux/arch/ | |
Release: | |
runs-on: ubuntu-latest | |
needs: [Build_MacOS, Build_IOS, Build_Android, Build_Windows, Build_Linux] | |
if: github.event_name == 'release' # 仅在 push 事件时执行 | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: venera.dmg | |
path: outputs | |
- uses: actions/download-artifact@v4 | |
with: | |
name: app-ios.ipa | |
path: outputs | |
- uses: actions/download-artifact@v4 | |
with: | |
name: apks | |
path: outputs | |
- uses: actions/download-artifact@v4 | |
with: | |
name: windows_build | |
path: outputs | |
- uses: actions/download-artifact@v4 | |
with: | |
name: deb_build | |
path: outputs | |
- uses: actions/download-artifact@v4 | |
with: | |
name: arch_build | |
path: outputs | |
- uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ github.ref_name }} | |
files: | | |
outputs/*.ipa | |
outputs/*.dmg | |
outputs/*.apk | |
outputs/*.zip | |
outputs/*.exe | |
outputs/*.deb | |
outputs/*.zst | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |