This commit is contained in:
Gergely Hegedus 2023-09-05 12:24:55 +03:00
parent cc2b65c3ae
commit 78c780b3b6
8 changed files with 249 additions and 27 deletions

View file

@ -1,3 +1,6 @@
source "https://rubygems.org"
gem "fastlane"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

View file

@ -105,6 +105,8 @@ GEM
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-firebase_app_distribution (0.7.2)
google-apis-firebaseappdistribution_v1 (~> 0.3.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.49.0)
google-apis-core (>= 0.11.0, < 2.a)
@ -117,6 +119,8 @@ GEM
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-firebaseappdistribution_v1 (0.3.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
@ -213,6 +217,7 @@ PLATFORMS
DEPENDENCIES
fastlane
fastlane-plugin-firebase_app_distribution
BUNDLED WITH
2.4.10

View file

@ -433,6 +433,7 @@
baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-InitProject-InitProjectTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEVELOPMENT_TEAM = Y6P2NYW2G8;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
@ -461,6 +462,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = Y6P2NYW2G8;
INFOPLIST_FILE = InitProjectTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.4;
LD_RUNPATH_SEARCH_PATHS = (
@ -475,6 +477,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "6f52a894-60c1-4aff-9863-e6f5c719c29e";
PROVISIONING_PROFILE_SPECIFIER = "CI Test Draft App Profile";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/InitProject.app/InitProject";
};
name = Release;
@ -485,7 +489,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = Y6P2NYW2G8;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = Y6P2NYW2G8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = InitProject/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -498,8 +505,10 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_BUNDLE_IDENTIFIER = test;
PRODUCT_NAME = InitProject;
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Gergely Hegedus Development Profile";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@ -512,7 +521,12 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = Y6P2NYW2G8;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = Y6P2NYW2G8;
INFOPLIST_FILE = InitProject/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@ -524,8 +538,11 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_BUNDLE_IDENTIFIER = test;
PRODUCT_NAME = InitProject;
PROVISIONING_PROFILE = "6f52a894-60c1-4aff-9863-e6f5c719c29e";
PROVISIONING_PROFILE_SPECIFIER = "CI Test Draft App Profile";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "CI Test Draft App Profile";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};

View file

@ -1,6 +1,6 @@
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple Developer Portal username
team_id("Y6P2NYW2G8")
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile

View file

@ -16,8 +16,87 @@
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
before_all do
FIREBASE_APP_DISTRIBUTION_APP_STAGING = "1:64659984801:ios:a9c4640d2a1960a5f43be0"
FIREBASE_APP_DISTRIBUTION_GROUPS_QA = "ios-qa"
FIREBASE_SERVICE_ACCOUNT_FILE = ENV['CI_EVALUATION_FIREBASE_SERVICE_ACCOUNT_FILE']
KEYCHAIN_NAME = "temp_keychain"
PROVISIONING_PROFILE_FILE = ENV['CI_EVALUATION_PROVISIONING_PROFILE_FILE']
CERTIFICATE_PASSWORD = ENV['CI_EVALUATION_CERTIFICATE_PASSWORD'].strip
PROVISIONING_PROFILE_FILE = "#{ENV['HOME']}/Library/MobileDevice/Provisioning Profiles/profile.mobileprovision"
IOS_CERT_FILE = ENV['CI_EVALUATION_IOS_CERT_FILE']
APP_IDENTIFIER = ENV['CI_EVALUATION_APP_IDENTIFIER']
end
end
lane :setupCodeSigning do
password = (0...50).map { ('a'..'z').to_a[rand(26)] }.join
cleanupKeyChain()
create_keychain(
name: KEYCHAIN_NAME,
default_keychain: false,
unlock: true,
timeout: 360000,
lock_when_sleeps: false,
add_to_search_list: true,
password: password
)
import_certificate(
certificate_path: IOS_CERT_FILE,
keychain_name: KEYCHAIN_NAME,
keychain_password: password,
certificate_password: CERTIFICATE_PASSWORD,
log_output: true
)
update_app_identifier(
plist_path: "InitProject/Info.plist",
app_identifier: APP_IDENTIFIER
)
update_project_provisioning(
xcodeproj: "InitProject.xcodeproj",
target_filter: "InitProject",
profile: PROVISIONING_PROFILE_FILE,
build_configuration: "Release"
)
update_project_team( # Set the right team on your project
teamid: CredentialsManager::AppfileConfig.try_fetch_value(:team_id)
)
unlock_keychain(
path: KEYCHAIN_NAME,
password: password
)
end
desc "Description of what the lane does"
lane :deployInternalFirebase do
setupCodeSigning()
ipa_name = "Internal.ipa"
build_app(
scheme: "InitProject",
export_method: "ad-hoc",
output_directory: "./builds",
output_name: ipa_name
)
firebase_app_distribution(
service_credentials_file: FIREBASE_SERVICE_ACCOUNT_FILE,
app: FIREBASE_APP_DISTRIBUTION_APP_STAGING,
groups: FIREBASE_APP_DISTRIBUTION_GROUPS_QA,
ipa_path: "builds/#{ipa_name}",
)
cleanupKeyChain()
end
lane :cleanupKeyChain do
begin
delete_keychain(name: KEYCHAIN_NAME) if File.exist? File.expand_path("/Users/runner/Library/Keychains/#{KEYCHAIN_NAME}-db")
rescue => ex
UI.important('Could not delete keychain!')
end
end
after_all do
cleanupKeyChain()
end
end

5
ios/fastlane/Pluginfile Normal file
View file

@ -0,0 +1,5 @@
# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!
gem 'fastlane-plugin-firebase_app_distribution'

48
ios/fastlane/README.md Normal file
View file

@ -0,0 +1,48 @@
fastlane documentation
----
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```sh
xcode-select --install
```
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
# Available Actions
## iOS
### ios setupCodeSigning
```sh
[bundle exec] fastlane ios setupCodeSigning
```
### ios deployInternalFirebase
```sh
[bundle exec] fastlane ios deployInternalFirebase
```
Description of what the lane does
### ios cleanupKeyChain
```sh
[bundle exec] fastlane ios cleanupKeyChain
```
----
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).