From 8114b7d2acc91c491d274d34055bc80ed1165973 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Thu, 3 Nov 2022 09:24:30 -0400 Subject: [PATCH 1/8] Add support for scrolling the discovery tab to the top/first tab --- Mastodon/Protocol/ScrollViewContainer.swift | 8 +++++++- Mastodon/Scene/Discovery/DiscoveryViewController.swift | 7 +++++++ .../Scene/Search/Search/SearchViewController.swift | 10 ++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Mastodon/Protocol/ScrollViewContainer.swift b/Mastodon/Protocol/ScrollViewContainer.swift index ae79d0e0f..8e3fda06e 100644 --- a/Mastodon/Protocol/ScrollViewContainer.swift +++ b/Mastodon/Protocol/ScrollViewContainer.swift @@ -14,6 +14,12 @@ protocol ScrollViewContainer: UIViewController { extension ScrollViewContainer { func scrollToTop(animated: Bool) { - scrollView.scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) + scrollView.scrollToTop(animated: animated) + } +} + +extension UIScrollView { + func scrollToTop(animated: Bool) { + scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) } } diff --git a/Mastodon/Scene/Discovery/DiscoveryViewController.swift b/Mastodon/Scene/Discovery/DiscoveryViewController.swift index 33bbefaef..969ba5534 100644 --- a/Mastodon/Scene/Discovery/DiscoveryViewController.swift +++ b/Mastodon/Scene/Discovery/DiscoveryViewController.swift @@ -131,6 +131,13 @@ extension DiscoveryViewController: ScrollViewContainer { var scrollView: UIScrollView { return (currentViewController as? ScrollViewContainer)?.scrollView ?? UIScrollView() } + func scrollToTop(animated: Bool) { + if scrollView.contentOffset.y <= 0 { + scrollToPage(.first, animated: animated) + } else { + scrollView.scrollToTop(animated: animated) + } + } } extension DiscoveryViewController { diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index b5259dcc4..7efef2c00 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -190,6 +190,16 @@ extension SearchViewController: UISearchControllerDelegate { } } +// MARK: - ScrollViewContainer +extension SearchViewController: ScrollViewContainer { + var scrollView: UIScrollView { + discoveryViewController?.scrollView ?? UIScrollView() + } + func scrollToTop(animated: Bool) { + discoveryViewController?.scrollToTop(animated: animated) + } +} + // MARK: - UICollectionViewDelegate //extension SearchViewController: UICollectionViewDelegate { // func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { From e2f505fa67016f7c35527d8e39b9db2386464123 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Nov 2022 12:20:27 +0800 Subject: [PATCH 2/8] feat: add TestFlight deploy workflow --- .github/scripts/build-release.sh | 65 +++++++++++++++++++++++++++++ .github/scripts/setup.sh | 2 +- .github/support/ExportOptions.plist | 8 ++++ .github/workflows/develop-build.yml | 56 +++++++++++++++++++++++++ Podfile | 7 ++++ Podfile.lock | 2 +- 6 files changed, 138 insertions(+), 2 deletions(-) create mode 100755 .github/scripts/build-release.sh create mode 100644 .github/support/ExportOptions.plist create mode 100644 .github/workflows/develop-build.yml diff --git a/.github/scripts/build-release.sh b/.github/scripts/build-release.sh new file mode 100755 index 000000000..fc081428f --- /dev/null +++ b/.github/scripts/build-release.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +set -xeu +set -o pipefail + +function finish() { + ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip" + rm -rf "${RESULT_BUNDLE_PATH}" +} + +trap finish EXIT + +SDK="${SDK:-iphoneos}" +WORKSPACE="${WORKSPACE:-Mastodon.xcworkspace}" +SCHEME="${SCHEME:-Mastodon}" +CONFIGURATION=${CONFIGURATION:-Release} + +BUILD_DIR=${BUILD_DIR:-.build} +ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts} +RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" +ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive} +DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData} +CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} +EXPORT_OPTIONS_FILE=".github/support/ExportOptions.plist" + +WORK_DIR=$(pwd) +API_PRIVATE_KEYS_PATH="${WORK_DIR}/${BUILD_DIR}/private_keys" +API_KEY_FILE="${API_PRIVATE_KEYS_PATH}/api_key.p8" + +rm -rf "${RESULT_BUNDLE_PATH}" + +rm -rf "${API_PRIVATE_KEYS_PATH}" +mkdir -p "${API_PRIVATE_KEYS_PATH}" +echo -n "${ENV_API_PRIVATE_KEY}" | base64 --decode > "${API_KEY_FILE}" + +xcrun xcodebuild clean \ + -workspace "${WORKSPACE}" \ + -scheme "${SCHEME}" \ + -configuration "${CONFIGURATION}" + +xcrun xcodebuild archive \ + -workspace "${WORKSPACE}" \ + -scheme "${SCHEME}" \ + -configuration "${CONFIGURATION}" \ + -destination generic/platform=iOS \ + -sdk "${SDK}" \ + -parallelizeTargets \ + -showBuildTimingSummary \ + -derivedDataPath "${DERIVED_DATA_PATH}" \ + -archivePath "${ARCHIVE_PATH}" \ + -resultBundlePath "${RESULT_BUNDLE_PATH}" \ + -allowProvisioningUpdates \ + -authenticationKeyPath "${API_KEY_FILE}" \ + -authenticationKeyID "${ENV_API_KEY_ID}" \ + -authenticationKeyIssuerID "${ENV_ISSUER_ID}" + +xcrun xcodebuild \ + -exportArchive \ + -archivePath "${ARCHIVE_PATH}" \ + -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ + -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" \ + -allowProvisioningUpdates + +# Zip up the Xcode Archive into Artifacts folder. +ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" \ No newline at end of file diff --git a/.github/scripts/setup.sh b/.github/scripts/setup.sh index a630e28cb..69c1dbd54 100755 --- a/.github/scripts/setup.sh +++ b/.github/scripts/setup.sh @@ -1,7 +1,7 @@ #!/bin/bash # workaround https://github.com/CocoaPods/CocoaPods/issues/11355 -sed -i '' $'1s/^/source "https:\\/\\/github.com\\/CocoaPods\\/Specs.git"\\\n\\\n/' Podfile +# sed -i '' $'1s/^/source "https:\\/\\/github.com\\/CocoaPods\\/Specs.git"\\\n\\\n/' Podfile # Install Ruby Bundler gem install bundler:2.3.11 diff --git a/.github/support/ExportOptions.plist b/.github/support/ExportOptions.plist new file mode 100644 index 000000000..50ba270b0 --- /dev/null +++ b/.github/support/ExportOptions.plist @@ -0,0 +1,8 @@ + + + + + method + app-store + + \ No newline at end of file diff --git a/.github/workflows/develop-build.yml b/.github/workflows/develop-build.yml new file mode 100644 index 000000000..0734b00f8 --- /dev/null +++ b/.github/workflows/develop-build.yml @@ -0,0 +1,56 @@ +name: Build for Develop TestFlight + +on: + push: + branches: + - develop + - ci-test + +jobs: + build: + name: Build + runs-on: macOS-12 + steps: + - name: checkout + uses: actions/checkout@v2 + + - name: setup + env: + NotificationEndpointDebug: ${{ secrets.NotificationEndpointDebug }} + NotificationEndpointRelease: ${{ secrets.NotificationEndpointRelease }} + run: exec ./.github/scripts/setup.sh + + - name: Import Code-Signing Certificates + uses: Apple-Actions/import-codesign-certs@v1 # https://github.com/Apple-Actions/import-codesign-certs + with: + keychain: build-p12 + p12-file-base64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} + p12-password: ${{ secrets.P12_PASSWORD }} + + - name: Download Provisioning Profiles + uses: Apple-Actions/download-provisioning-profiles@v1 # https://github.com/Apple-Actions/download-provisioning-profiles + with: + bundle-id: org.joinmastodon.app + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} + + - name: build + env: + ENV_ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }} + ENV_API_KEY_ID: ${{ secrets.APPSTORE_KEY_ID }} + ENV_API_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_KEY_BASE64 }} + run: exec ./.github/scripts/build-release.sh + + - name: Upload TestFlight Build + uses: Apple-Actions/upload-testflight-build@master + with: + app-path: .build/Artifacts/Mastodon.ipa/Mastodon.ipa + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} + + - name: Clean up keychain and provisioning profile + if: ${{ always() }} + run: | + security delete-keychain build-p12.keychain-db diff --git a/Podfile b/Podfile index 3c482446a..28757d528 100644 --- a/Podfile +++ b/Podfile @@ -1,3 +1,4 @@ +source 'https://cdn.cocoapods.org/' platform :ios, '14.0' target 'Mastodon' do @@ -35,5 +36,11 @@ post_install do |installer| target.build_configurations.each do |config| config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' end + # https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693 + if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle" + target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end + end end end diff --git a/Podfile.lock b/Podfile.lock index 0cec6626a..12680db21 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -37,6 +37,6 @@ SPEC CHECKSUMS: "UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3 XLPagerTabStrip: 61c57fd61f611ee5f01ff1495ad6fbee8bf496c5 -PODFILE CHECKSUM: 50ec5b2c4aa189024cc5ab41039f983dc5609040 +PODFILE CHECKSUM: 8b15fb6d4e801b7a7e7761a2e2fe40a89b1da4ff COCOAPODS: 1.11.3 From eb86b5a9d833c82c7c176b891ca85722ed1a9450 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Nov 2022 12:26:38 +0800 Subject: [PATCH 3/8] chore: update to version 1.4.7 --- Mastodon.xcodeproj/project.pbxproj | 46 ------------------- .../xcschemes/xcschememanagement.plist | 4 +- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 8 files changed, 8 insertions(+), 54 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 68aae2d4e..c4291c3d3 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -3874,7 +3874,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3904,7 +3903,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4077,7 +4075,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4144,7 +4141,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4167,7 +4163,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4191,7 +4186,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4215,7 +4209,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4239,7 +4232,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4263,7 +4255,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4287,7 +4278,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4374,7 +4364,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.4.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4426,36 +4415,6 @@ }; name = "Release Snapshot"; }; - DBEB19E527E4658E00B0E80E /* Release Snapshot */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3E08A432F40BA7B9CAA9DB68 /* Pods-AppShared.release snapshot.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 147; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = AppShared/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = "Release Snapshot"; - }; DBEB19E627E4658E00B0E80E /* Release Snapshot */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4470,7 +4429,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4493,7 +4451,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4517,7 +4474,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4542,7 +4498,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4566,7 +4521,6 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index de5069e58..979c8c0e6 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -117,12 +117,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 24 + 18 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 17 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index cfdbb923d..ace07bf2b 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleURLTypes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 3816b660b..c82d6b9a1 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleVersion 147 NSExtension diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 9f09d489c..a1baa064c 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleVersion 147 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 9f09d489c..a1baa064c 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleVersion 147 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 854a8a529..d8e24838e 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleVersion 147 NSExtension diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 4372c5048..73944fe84 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.6 + 1.4.7 CFBundleVersion 147 NSExtension From a7cbbc02396372b69ed76b656a64de893943d24e Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Nov 2022 13:28:09 +0800 Subject: [PATCH 4/8] fix: compile failure issue --- Mastodon/Scene/Report/Report/ReportViewModel.swift | 2 +- .../Sources/MastodonCore/Service/API/APIService+Report.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Mastodon/Scene/Report/Report/ReportViewModel.swift b/Mastodon/Scene/Report/Report/ReportViewModel.swift index c368ce42c..05f1cfef8 100644 --- a/Mastodon/Scene/Report/Report/ReportViewModel.swift +++ b/Mastodon/Scene/Report/Report/ReportViewModel.swift @@ -162,7 +162,7 @@ extension ReportViewModel { #else let _ = try await context.apiService.report( query: query, - authenticationBox: authenticationBox + authenticationBox: authContext.mastodonAuthenticationBox ) #endif isReportSuccess = true diff --git a/MastodonSDK/Sources/MastodonCore/Service/API/APIService+Report.swift b/MastodonSDK/Sources/MastodonCore/Service/API/APIService+Report.swift index aa7393070..81a612120 100644 --- a/MastodonSDK/Sources/MastodonCore/Service/API/APIService+Report.swift +++ b/MastodonSDK/Sources/MastodonCore/Service/API/APIService+Report.swift @@ -11,7 +11,7 @@ import Combine extension APIService { - func report( + public func report( query: Mastodon.API.Reports.FileReportQuery, authenticationBox: MastodonAuthenticationBox ) async throws -> Mastodon.Response.Content { From 99bef412811d31abf8da07ea73820b505212439b Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Nov 2022 13:49:10 +0800 Subject: [PATCH 5/8] fix: connect api key missing for export archive --- .github/scripts/build-release.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/scripts/build-release.sh b/.github/scripts/build-release.sh index fc081428f..63aca3455 100755 --- a/.github/scripts/build-release.sh +++ b/.github/scripts/build-release.sh @@ -59,7 +59,10 @@ xcrun xcodebuild \ -archivePath "${ARCHIVE_PATH}" \ -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" \ - -allowProvisioningUpdates + -allowProvisioningUpdates \ + -authenticationKeyPath "${API_KEY_FILE}" \ + -authenticationKeyID "${ENV_API_KEY_ID}" \ + -authenticationKeyIssuerID "${ENV_ISSUER_ID}" # Zip up the Xcode Archive into Artifacts folder. ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" \ No newline at end of file From 20b54df37cbe0f2325ca2085c0388c9a0c8a4f88 Mon Sep 17 00:00:00 2001 From: Maximilian Szengel Date: Sun, 6 Nov 2022 13:38:11 +0100 Subject: [PATCH 6/8] Improve CONTRIBUTING.md - Fix typos - Try to improve readability --- Documentation/CONTRIBUTING.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Documentation/CONTRIBUTING.md b/Documentation/CONTRIBUTING.md index cc018445d..b07f70520 100644 --- a/Documentation/CONTRIBUTING.md +++ b/Documentation/CONTRIBUTING.md @@ -1,30 +1,30 @@ # Contributing -- File the issue for bug report and feature request +- File an issue to report a bug or feature request - Translate the project in our [Crowdin](https://crowdin.com/project/mastodon-for-ios) project - Make the Pull Request to contribute ## Bug Report -File the issue about the bug. Make sure you are installing the latest version app from TestFlight or App Store. +File an issue about the bug or feature request. Make sure you are installing the latest version of the app from TestFlight or App Store. ## Translation [![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios) -The translation will update regularly. Please request language if not listed via issue. +The translation will update regularly. Please request the language if it is not listed via an issue. ## Pull Request -You can make a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via issue. +You can create a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via an issue. Also, there are lots of existing feature request issues that could be a good-first-issue discussing place. Follow the git-flow pattern to make your pull request. -1. Ensure you are checkout on the `develop` branch. -2. Write your codes and test them on **iPad and iPhone**. -3. Merge the `develop` into your branch then make a Pull Request. Please merge the branch and resolve any conflicts when the `develop` updates. **Do not force push your codes.** -4. Make sure the permission for your folk is open to the reviewer. Code style fix, conflict resolution, and other changes may be committed by the reviewer directly. +1. Ensure you have started a new branch based on the `develop` branch. +2. Write your changes and test them on **iPad and iPhone**. +3. Merge the `develop` branch into your branch then make a Pull Request. Please merge the branch and resolve any conflicts if `develop` updates. **Do not force push your commits.** +4. Make sure the permission for your fork is open to the reviewer. Code style fix, conflict resolution, and other changes may be committed by the reviewer directly. 5. Request a code review and wait for approval. The PR will be merged when it is approved. ## Documentation -The documents for this app is list under the [Documentation](../Documentation/) folder. We are also welcome contributions for documentation. \ No newline at end of file +The documentation for this app is listed under the [Documentation](../Documentation/) folder. We are also welcoming contributions for documentation. From 78ce26b8894601831f1a44dd01270b127253edb9 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Nov 2022 14:17:43 +0800 Subject: [PATCH 7/8] fix: manually bump the version to workaround auto version management not working issue --- .github/scripts/build-release.sh | 7 +++++-- .github/support/ExportOptions.plist | 2 ++ .github/workflows/develop-build.yml | 12 +++++++++++- Mastodon.xcodeproj/project.pbxproj | 24 ++++++++---------------- Mastodon/Info.plist | 4 ++-- MastodonIntent/Info.plist | 4 ++-- MastodonTests/Info.plist | 4 ++-- MastodonUITests/Info.plist | 4 ++-- NotificationService/Info.plist | 4 ++-- ShareActionExtension/Info.plist | 12 ++++++------ 10 files changed, 42 insertions(+), 35 deletions(-) diff --git a/.github/scripts/build-release.sh b/.github/scripts/build-release.sh index 63aca3455..5ca5569f6 100755 --- a/.github/scripts/build-release.sh +++ b/.github/scripts/build-release.sh @@ -20,7 +20,6 @@ ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts} RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive} DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData} -CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} EXPORT_OPTIONS_FILE=".github/support/ExportOptions.plist" WORK_DIR=$(pwd) @@ -31,7 +30,11 @@ rm -rf "${RESULT_BUNDLE_PATH}" rm -rf "${API_PRIVATE_KEYS_PATH}" mkdir -p "${API_PRIVATE_KEYS_PATH}" -echo -n "${ENV_API_PRIVATE_KEY}" | base64 --decode > "${API_KEY_FILE}" +echo -n "${ENV_API_PRIVATE_KEY_BASE64}" | base64 --decode > "${API_KEY_FILE}" + +BUILD_NUMBER=$(app-store-connect get-latest-testflight-build-number $ENV_APP_ID --issuer-id $ENV_ISSUER_ID --key-id $ENV_API_KEY_ID --private-key @file:$API_KEY_FILE) +BUILD_NUMBER=$((BUILD_NUMBER+1)) +CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} xcrun xcodebuild clean \ -workspace "${WORKSPACE}" \ diff --git a/.github/support/ExportOptions.plist b/.github/support/ExportOptions.plist index 50ba270b0..15d77c344 100644 --- a/.github/support/ExportOptions.plist +++ b/.github/support/ExportOptions.plist @@ -4,5 +4,7 @@ method app-store + manageAppVersionAndBuildNumber + \ No newline at end of file diff --git a/.github/workflows/develop-build.yml b/.github/workflows/develop-build.yml index 0734b00f8..c37f00731 100644 --- a/.github/workflows/develop-build.yml +++ b/.github/workflows/develop-build.yml @@ -20,6 +20,14 @@ jobs: NotificationEndpointRelease: ${{ secrets.NotificationEndpointRelease }} run: exec ./.github/scripts/setup.sh + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - run: | + pip3 install codemagic-cli-tools + - run: | + codemagic-cli-tools --version || true + - name: Import Code-Signing Certificates uses: Apple-Actions/import-codesign-certs@v1 # https://github.com/Apple-Actions/import-codesign-certs with: @@ -37,9 +45,11 @@ jobs: - name: build env: + ENV_APP_ID: ${{ secrets.APP_ID }} ENV_ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }} ENV_API_KEY_ID: ${{ secrets.APPSTORE_KEY_ID }} - ENV_API_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_KEY_BASE64 }} + ENV_API_PRIVATE_KEY: ${{ secrets.APPSTORE_PRIVATE_KEY }} + ENV_API_PRIVATE_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_KEY_BASE64 }} run: exec ./.github/scripts/build-release.sh - name: Upload TestFlight Build diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index c4291c3d3..380f21eac 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -3771,6 +3771,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -3834,6 +3835,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -3866,7 +3868,6 @@ CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -3874,6 +3875,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.4.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3895,7 +3897,6 @@ CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -3903,6 +3904,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.4.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4030,6 +4032,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -4067,7 +4070,6 @@ CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4075,6 +4077,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.4.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4133,7 +4136,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4155,7 +4157,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4178,7 +4179,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4201,7 +4201,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4224,7 +4223,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4247,7 +4245,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4270,7 +4267,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4323,6 +4319,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -4356,7 +4353,6 @@ CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4364,6 +4360,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.4.7; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4421,7 +4418,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4443,7 +4439,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4466,7 +4461,6 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4490,7 +4484,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4513,7 +4506,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 147; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index ace07bf2b..df221e66d 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleURLTypes @@ -30,7 +30,7 @@ CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index c82d6b9a1..3c4a6e453 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index a1baa064c..c0701c6d7 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index a1baa064c..c0701c6d7 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index d8e24838e..e28de53ce 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 73944fe84..52924beed 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -17,23 +17,23 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.4.7 + $(MARKETING_VERSION) CFBundleVersion - 147 + $(CURRENT_PROJECT_VERSION) NSExtension NSExtensionAttributes NSExtensionActivationRule - NSExtensionActivationSupportsText - - NSExtensionActivationSupportsWebURLWithMaxCount - 1 NSExtensionActivationSupportsImageWithMaxCount 4 NSExtensionActivationSupportsMovieWithMaxCount 1 + NSExtensionActivationSupportsText + + NSExtensionActivationSupportsWebURLWithMaxCount + 1 NSExtensionMainStoryboard From c317f97dc4612878fc6d6a63f13973eacdc0b9cb Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Nov 2022 14:37:28 +0800 Subject: [PATCH 8/8] fix: CURRENT_PROJECT_VERSION not update issue --- .github/scripts/build-release.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/scripts/build-release.sh b/.github/scripts/build-release.sh index 5ca5569f6..e3efc59df 100755 --- a/.github/scripts/build-release.sh +++ b/.github/scripts/build-release.sh @@ -36,6 +36,8 @@ BUILD_NUMBER=$(app-store-connect get-latest-testflight-build-number $ENV_APP_ID BUILD_NUMBER=$((BUILD_NUMBER+1)) CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} +agvtool new-version -all $CURRENT_PROJECT_VERSION + xcrun xcodebuild clean \ -workspace "${WORKSPACE}" \ -scheme "${SCHEME}" \