diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2f230918..5f96c82b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,9 +9,6 @@ on: permissions: contents: write -env: - APK_BUILD_DIR: /tmp/build - jobs: get-flutter-version: runs-on: ubuntu-latest @@ -33,6 +30,9 @@ jobs: needs: get-flutter-version + env: + APK_BUILD_DIR: /tmp/build + steps: - uses: actions/checkout@v4 @@ -119,6 +119,11 @@ jobs: needs: get-flutter-version + env: + APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} + APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }} + APP_STORE_CONNECT_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY }} + steps: - uses: actions/checkout@v4 @@ -169,11 +174,9 @@ jobs: - name: Dump AuthKey if: startsWith(github.ref, 'refs/tags/') - uses: timheuer/base64-to-file@v1 - with: - fileName: AuthKey_${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }}.p8 - fileDir: private_keys - encodedString: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY_BASE64 }} + run: | + mkdir private_keys + echo $APP_STORE_CONNECT_PRIVATE_KEY > AuthKey_$APP_STORE_CONNECT_KEY_IDENTIFIER.p8 - name: Create IPA if: startsWith(github.ref, 'refs/tags/') @@ -183,21 +186,9 @@ jobs: -archivePath ios/Runner.xcarchive -exportOptionsPlist ios/ExportOptions.plist -allowProvisioningUpdates - -authenticationKeyIssuerID ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} - -authenticationKeyID ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }} - -authenticationKeyPath $(pwd)/private_keys/AuthKey_${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }}.p8 - - - name: Install codemagic-cli-tools - if: startsWith(github.ref, 'refs/tags/') - run: pip install codemagic-cli-tools - - - name: Publish IPA - if: startsWith(github.ref, 'refs/tags/') - run: > - app-store-connect publish - --testflight - --issuer-id ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} - --key-id ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }} + -authenticationKeyIssuerID $APP_STORE_CONNECT_ISSUER_ID + -authenticationKeyID $APP_STORE_CONNECT_KEY_IDENTIFIER + -authenticationKeyPath $(pwd)/private_keys/AuthKey_$APP_STORE_CONNECT_KEY_IDENTIFIER.p8 build-windows-x64: runs-on: windows-latest @@ -269,9 +260,44 @@ jobs: needs: get-flutter-version + env: + APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} + APP_STORE_CONNECT_KEY_IDENTIFIER: ${{ secrets.APP_STORE_CONNECT_KEY_IDENTIFIER }} + APP_STORE_CONNECT_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_PRIVATE_KEY }} + steps: - uses: actions/checkout@v4 + - name: Dump cert_key + run: echo "${{ secrets.CERT_KEY }}" > cert_key + + - name: Install codemagic-cli-tools + run: pip install codemagic-cli-tools + + - name: Fetch signing files + run: > + app-store-connect fetch-signing-files com.poppingmoon.aria + --platform MAC_OS + --type MAC_APP_STORE + --certificate-key=@file:cert_key + --create + + - name: Fetch certificates + run: > + app-store-connect certificates list + --type MAC_INSTALLER_DISTRIBUTION + --certificate-key=@file:cert_key + --save + + - name: Set up keychain + run: keychain initialize + + - name: Add certificates + run: keychain add-certificates + + - name: Update Xcode project settings + run: xcode-project use-profiles + - name: Install Flutter uses: subosito/flutter-action@v2 with: @@ -311,6 +337,26 @@ jobs: files: aria-${{ github.ref_name }}.dmg draft: true + - name: Create package + run: | + xcrun productbuild \ + --component build/macos/Build/Products/Release/aria.app \ + /Applications/ unsigned.pkg + INSTALLER_CERT_NAME=$(keychain list-certificates \ + | jq '[.[] + | select(.common_name + | contains("Mac Developer Installer")) + | .common_name][0]' \ + | xargs) + xcrun productsign \ + --sign "$INSTALLER_CERT_NAME" \ + unsigned.pkg \ + aria-${{ github.ref_name }}.app.pkg + + - name: Publish package + if: startsWith(github.ref, 'refs/tags/') + run: app-store-connect publish --path aria-${{ github.ref_name }}.app.pkg + build-linux-arm64: runs-on: ubuntu-latest diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 89ec8ac8..97b26fc6 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -112,19 +112,19 @@ SPEC CHECKSUMS: connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db flutter_image_compress_macos: c26c3c13ea0f28ae6dea4e139b3292e7729f99f1 flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d - flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea + flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 gal: 61e868295d28fe67ffa297fae6dacebf56fd53e1 image_editor_common: 1b11f59fad8909bafcdaa0f31cc9373425b58600 just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489 OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 - video_player_avfoundation: 2b4384f3b157206b5e150a0083cdc0c905d260d3 + url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 + video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 PODFILE CHECKSUM: c2e95c8c0fe03c5c57e438583cae4cc732296009 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index ba4d71d9..1e108389 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -567,8 +567,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 7P4C63VUYA; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( @@ -695,8 +697,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 7P4C63VUYA; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( @@ -717,8 +721,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 7P4C63VUYA; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index 3ba6c126..1fbcb4ea 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -10,5 +10,7 @@ com.apple.security.network.server + keychain-access-groups + diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements index 7a2230dc..c312f418 100644 --- a/macos/Runner/Release.entitlements +++ b/macos/Runner/Release.entitlements @@ -8,5 +8,7 @@ com.apple.security.network.server + keychain-access-groups +