feat(build): 更新hotswan库版本 #700
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: Dev Builds | |
| on: | |
| push: | |
| branches: | |
| - develop | |
| - feature/cmp-migrate | |
| workflow_dispatch: | |
| inputs: | |
| name: | |
| description: "Dev-Build" | |
| default: "Generate dev build" | |
| jobs: | |
| android-foss: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Setup Android SDK | |
| uses: android-actions/setup-android@v3 | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Decode Keystore | |
| env: | |
| ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }} | |
| run: | | |
| echo $ENCODED_STRING > keystore-b64.txt | |
| base64 -d keystore-b64.txt > pipixiv.jks | |
| - name: Build Foss Release apk | |
| env: | |
| RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} | |
| RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} | |
| RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: | | |
| sed -i -e '/firebase/d' -e '/google.services/d' {.,app}/build.gradle.kts | |
| sed -i '/foojay/d' settings.gradle.kts | |
| ./gradlew assembleRelease -PapplyFirebasePlugins=false -Pdebug=false --stacktrace | |
| - name: Upload Android Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: android-foss-apk | |
| path: | | |
| app/release/foss/*.apk | |
| android-default: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Setup Android SDK | |
| uses: android-actions/setup-android@v3 | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Decode Keystore | |
| env: | |
| ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }} | |
| run: | | |
| echo $ENCODED_STRING > keystore-b64.txt | |
| base64 -d keystore-b64.txt > pipixiv.jks | |
| - name: Add Google Services | |
| env: | |
| GOOGLE_SERVICE_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }} | |
| run: | | |
| echo $GOOGLE_SERVICE_JSON > app/google-services.json | |
| - name: Add Kotzilla Sdk | |
| env: | |
| KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }} | |
| KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }} | |
| run: | | |
| echo $KOTZILLA_SDK_JSON > common/analytics-default/kotzilla.json | |
| sed -i "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt | |
| - name: Build Default Release apk | |
| env: | |
| RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} | |
| RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} | |
| RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: | | |
| ./gradlew assembleRelease -PapplyFirebasePlugins=true -Pdebug=false --stacktrace | |
| - name: Upload Android Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: android-default-apk | |
| path: | | |
| app/release/default/*.apk | |
| desktop-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Add Kotzilla Sdk | |
| env: | |
| KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }} | |
| KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }} | |
| run: | | |
| echo $KOTZILLA_SDK_JSON > common/analytics-default/kotzilla.json | |
| sed -i "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt | |
| - name: Build Linux Distributions | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: ./gradlew packageReleaseAppImage -Pdebug=false | |
| - name: Package Linux Distribution | |
| run: | | |
| cd composeApp/build/compose/binaries/main-release | |
| tar -czf PiPixiv-linux-x86_64.tar.gz -C app . | |
| - name: Upload Linux Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: linux-artifacts | |
| path: composeApp/build/compose/binaries/main-release/PiPixiv-linux-x86_64.tar.gz | |
| desktop-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Add Kotzilla Sdk | |
| env: | |
| KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }} | |
| KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }} | |
| run: | | |
| $env:KOTZILLA_SDK_JSON | Out-File -FilePath common/analytics-default/kotzilla.json -Encoding utf8 | |
| $path = "common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt" | |
| (Get-Content $path) -replace 'setApiKey.*', "setApiKey(`"$env:KOTZILLA_SDK_API_KEY`")" | Set-Content $path | |
| - name: Build Windows Distribution | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: ./gradlew packageReleaseMsi -Pdebug=false | |
| - name: Upload Windows Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: windows-artifacts | |
| path: composeApp/build/compose/binaries/main-release/msi/*.msi | |
| desktop-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Add Kotzilla Sdk | |
| env: | |
| KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }} | |
| KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }} | |
| run: | | |
| echo "$KOTZILLA_SDK_JSON" > common/analytics-default/kotzilla.json | |
| sed -i '' "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt | |
| - name: Build MacOS Distribution | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: ./gradlew packageReleaseDmg -Pdebug=false | |
| - name: Upload MacOS Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: macos-artifacts | |
| path: composeApp/build/compose/binaries/main-release/dmg/*.dmg | |
| ios: | |
| runs-on: macos-26 | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| cache: 'gradle' | |
| - name: Set up gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Add Kotzilla Sdk | |
| env: | |
| KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }} | |
| KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }} | |
| run: | | |
| echo "$KOTZILLA_SDK_JSON" > common/analytics-default/kotzilla.json | |
| sed -i '' "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt | |
| - name: Setup CocoaPods | |
| uses: maxim-lobanov/setup-cocoapods@v1 | |
| with: | |
| version: 1.16.1 | |
| - name: Link Dependencies | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: | | |
| ./gradlew :composeApp:generateDummyFramework | |
| ./gradlew :composeApp:podspec | |
| - name: Build iOS IPA | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: | | |
| cd iosApp | |
| pod install --repo-update | |
| cd .. | |
| ./gradlew :composeApp:buildReleaseIpa | |
| echo "PiPixiv.ipa path: $(pwd)/PiPixiv.ipa" | |
| - name: Upload iOS Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ios-artifacts | |
| path: composeApp/build/archives/release/PiPixiv.ipa | |
| release: | |
| needs: [ android-foss, android-default, desktop-linux, desktop-windows, desktop-macos, ios ] | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| path: artifacts | |
| - name: Get tag name | |
| run: echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV | |
| - name: Rename release artifacts | |
| run: | | |
| mv artifacts/android-foss-apk/*.apk artifacts/android-foss-apk/PiPixiv-${VERSION_TAG}-android-foss.apk | |
| mv artifacts/android-default-apk/*.apk artifacts/android-default-apk/PiPixiv-${VERSION_TAG}-android-default.apk | |
| mv artifacts/linux-artifacts/PiPixiv-linux-x86_64.tar.gz artifacts/linux-artifacts/PiPixiv-${VERSION_TAG}-linux-x86_64.tar.gz | |
| mv artifacts/windows-artifacts/*.msi artifacts/windows-artifacts/PiPixiv-${VERSION_TAG}-windows-x86_64.msi | |
| mv artifacts/macos-artifacts/*.dmg artifacts/macos-artifacts/PiPixiv-${VERSION_TAG}-macos-arm64.dmg | |
| mv artifacts/ios-artifacts/*.ipa artifacts/ios-artifacts/PiPixiv-${VERSION_TAG}-ios.ipa | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
| with: | |
| tag_name: ${{ env.VERSION_TAG }} | |
| name: PiPixiv ${{ env.VERSION_TAG }} | |
| body: | | |
| Release ${{ env.VERSION_TAG }} | |
| draft: true | |
| prerelease: false | |
| files: | | |
| artifacts/android-foss-apk/**/*.apk | |
| artifacts/android-default-apk/**/*.apk | |
| artifacts/linux-artifacts/**/*.tar.gz | |
| artifacts/windows-artifacts/**/*.msi | |
| artifacts/macos-artifacts/**/*.dmg | |
| artifacts/ios-artifacts/*.ipa |