Release and publish apps #44
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: Release and publish apps | |
| on: | |
| workflow_dispatch: | |
| jobs: | |
| # build-android: | |
| # name: Build for Android | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # - name: Install Ninja | |
| # run: sudo apt-get install -y ninja-build | |
| # - uses: actions/setup-java@v5 | |
| # with: | |
| # distribution: 'temurin' | |
| # java-version: '21' | |
| # - uses: subosito/flutter-action@v2 | |
| # with: | |
| # channel: 'stable' | |
| # - run: flutter pub get | |
| # - run: dart run pdfrx:remove_wasm_modules | |
| # - name: Patch pdfrx | |
| # run: | | |
| # PDFRX_PATH=$(find $HOME/.pub-cache -type d -name "pdfrx-*" | head -n 1) | |
| # CMAKE_FILE="$PDFRX_PATH/android/CMakeLists.txt" | |
| # if [ -f "$CMAKE_FILE" ]; then | |
| # sed -i '2i add_link_options("LINKER:--build-id=none")' "$CMAKE_FILE" | |
| # echo "Patched CMakeLists.txt in $CMAKE_FILE" | |
| # else | |
| # echo "CMakeLists.txt not found in expected location" | |
| # exit 1 | |
| # fi | |
| # - name: Decode Keystore | |
| # run: | | |
| # echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks | |
| # - name: Create key.properties | |
| # run: | | |
| # echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties | |
| # echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties | |
| # echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties | |
| # echo "storeFile=keystore.jks" >> android/key.properties | |
| # - name: Build APK | |
| # run: flutter build apk --release | |
| # - name: Build appBundle | |
| # run: flutter build appbundle | |
| # - name: Upload Artifacts | |
| # uses: actions/upload-artifact@v6 | |
| # with: | |
| # name: Releases | |
| # path: | | |
| # build/app/outputs/flutter-apk/app-release.apk | |
| # build/app/outputs/bundle/release/app-release.aab | |
| # - name: Create google_service_account.json | |
| # run: | | |
| # echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json | |
| # - name: Setup ruby | |
| # uses: ruby/setup-ruby@v1 | |
| # with: | |
| # ruby-version: '3.4.7' | |
| # bundler-cache: true | |
| # working-directory: 'android' | |
| # - name: Deploy to Play Store | |
| # uses: maierj/fastlane-action@v3.1.0 | |
| # with: | |
| # lane: deploy | |
| # subdirectory: android | |
| # build-macos: | |
| # name: Build for macOS | |
| # runs-on: macos-15 | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # - uses: maxim-lobanov/setup-xcode@v1 | |
| # with: | |
| # xcode-version: latest-stable | |
| # - uses: subosito/flutter-action@v2 | |
| # with: | |
| # channel: 'stable' | |
| # - run: flutter pub get | |
| # - run: flutter build macos --release | |
| # - name: Codesign executable | |
| # env: | |
| # MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} | |
| # MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} | |
| # KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} | |
| # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} | |
| # run: | | |
| # echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 | |
| # security create-keychain -p $KEYCHAIN_PASSWORD build.keychain | |
| # security default-keychain -s build.keychain | |
| # security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain | |
| # security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign | |
| # security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain | |
| # security find-identity | |
| # /usr/bin/codesign --force --deep --options runtime -s "$MACOS_SIGN_IDENTITY" build/macos/Build/Products/Release/Wispar.app | |
| # /usr/bin/codesign --verify --deep --strict --verbose=2 build/macos/Build/Products/Release/Wispar.app | |
| # - name: Notarize app | |
| # env: | |
| # APPLE_ID: ${{ secrets.APPLE_ID }} | |
| # APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
| # uses: lando/notarize-action@v2 | |
| # with: | |
| # product-path: "build/macos/Build/Products/Release/Wispar.app" | |
| # appstore-connect-username: ${{ secrets.APPLE_ID }} | |
| # appstore-connect-password: ${{ secrets.APPLE_PASSWORD }} | |
| # appstore-connect-team-id: ${{ secrets.APPLE_TEAM_ID }} | |
| # - name: Staple notarization | |
| # run: | | |
| # xcrun stapler staple build/macos/Build/Products/Release/Wispar.app | |
| # - name: Create dmg | |
| # env: | |
| # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} | |
| # run: | | |
| # brew install create-dmg | |
| # create-dmg \ | |
| # --volname "Wispar" \ | |
| # --window-size 800 529 \ | |
| # --icon-size 130 \ | |
| # --app-drop-link 540 250 \ | |
| # "Wispar.dmg" \ | |
| # build/macos/Build/Products/Release/Wispar.app | |
| # /usr/bin/codesign --force -s "$MACOS_SIGN_IDENTITY" Wispar.dmg | |
| # - uses: actions/upload-artifact@v6 | |
| # with: | |
| # name: wispar-macos-dmg | |
| # path: Wispar.dmg | |
| build-windows: | |
| name: Build for Windows | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup Flutter | |
| uses: subosito/flutter-action@v2 | |
| with: | |
| channel: 'stable' | |
| - name: Flutter pub get | |
| run: flutter pub get | |
| - name: Build Windows release | |
| run: flutter build windows --release | |
| - name: Copy required DLLs | |
| shell: powershell | |
| run: | | |
| Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\x64\runner\Release\" | |
| Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\x64\runner\Release\" | |
| Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\x64\runner\Release\" | |
| Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\x64\runner\Release\" | |
| Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\x64\runner\Release\" | |
| - name: Install Inno Setup | |
| shell: powershell | |
| run: | | |
| choco install innosetup -y | |
| refreshenv | |
| - name: Create Windows installer | |
| shell: powershell | |
| run: | | |
| $issPath = ".\windows\wispar_setup.iss" | |
| & "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" $issPath | |
| - name: Upload Windows installer | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: windows-artifacts | |
| path: windows\output\wispar_setup.exe | |
| create-release: | |
| name: Create GitHub Release | |
| runs-on: ubuntu-latest | |
| #needs: [build-android, build-macos, build-windows] | |
| needs: [build-windows] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Download Android artifacts | |
| uses: actions/download-artifact@v6 | |
| with: | |
| name: Releases | |
| path: android-artifacts | |
| - name: Download macOS artifact | |
| uses: actions/download-artifact@v6 | |
| with: | |
| name: wispar-macos-dmg | |
| path: macos-artifacts | |
| - name: Download Windows artifact | |
| uses: actions/download-artifact@v6 | |
| with: | |
| name: windows-artifacts | |
| path: windows-artifacts | |
| - name: Extract version from pubspec.yaml | |
| id: extract_version | |
| run: | | |
| version=$(grep '^version: ' pubspec.yaml | cut -d ' ' -f 2 | tr -d '\r') | |
| echo "VERSION=$version" >> $GITHUB_ENV | |
| - name: Create GitHub Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| artifacts: | | |
| android-artifacts/app-release.apk, | |
| android-artifacts/app-release.aab, | |
| macos-artifacts/Wispar.dmg, | |
| windows-artifacts/wispar_setup.exe | |
| tag: v${{ env.VERSION }} | |
| token: ${{ secrets.TOKEN }} | |
| draft: true | |
| generateReleaseNotes: true |