mirror of
https://github.com/luxwallet/ios.git
synced 2026-10-30 20:33:27 +00:00
297 lines
11 KiB
Ruby
297 lines
11 KiB
Ruby
default_platform(:ios)
|
|
|
|
APP_ID = ENV["APP_ID"]
|
|
APP_IDENTIFIER_DEV = ENV["APP_IDENTIFIER_DEV"]
|
|
APP_IDENTIFIER_RELEASE = ENV["APP_IDENTIFIER_RELEASE"]
|
|
PROVISIONING_PROFILE_SPECIFIER_DEV = ENV["PROVISIONING_PROFILE_SPECIFIER_DEV"]
|
|
PROVISIONING_PROFILE_SPECIFIER_APPSTORE = ENV["PROVISIONING_PROFILE_SPECIFIER_APPSTORE"]
|
|
TEMP_KEYCHAIN_USER = ENV["TEMP_KEYCHAIN_USER"]
|
|
TEMP_KEYCHAIN_PASSWORD = ENV["TEMP_KEYCHAIN_PASSWORD"]
|
|
APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"]
|
|
APPLE_KEY_ID = ENV["APPLE_KEY_ID"]
|
|
APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"]
|
|
GIT_AUTHORIZATION = ENV["GIT_AUTHORIZATION"]
|
|
APP_CENTER_API_TOKEN = ENV["APP_CENTER_API_TOKEN"]
|
|
|
|
XCCONFIG_DEV_INFURA_PROJECT_ID = ENV["XCCONFIG_DEV_INFURA_PROJECT_ID"]
|
|
XCCONFIG_DEV_INFURA_PROJECT_SECRET = ENV["XCCONFIG_DEV_INFURA_PROJECT_SECRET"]
|
|
XCCONFIG_DEV_ETHERSCAN_API_KEY = ENV["XCCONFIG_DEV_ETHERSCAN_API_KEY"]
|
|
XCCONFIG_DEV_ARBISCAN_API_KEY = ENV["XCCONFIG_DEV_ARBISCAN_API_KEY"]
|
|
XCCONFIG_DEV_OPTIMISM_ETHERSCAN_API_KEY = ENV["XCCONFIG_DEV_OPTIMISM_ETHERSCAN_API_KEY"]
|
|
XCCONFIG_DEV_BSCSCAN_API_KEY = ENV["XCCONFIG_DEV_BSCSCAN_API_KEY"]
|
|
XCCONFIG_DEV_POLYGONSCAN_API_KEY = ENV["XCCONFIG_DEV_POLYGONSCAN_API_KEY"]
|
|
XCCONFIG_DEV_SNOWTRACE_API_KEY = ENV["XCCONFIG_DEV_SNOWTRACE_API_KEY"]
|
|
XCCONFIG_DEV_GNOSISSCAN_API_KEY = ENV["XCCONFIG_DEV_GNOSISSCAN_API_KEY"]
|
|
XCCONFIG_DEV_FTMSCAN_API_KEY = ENV["XCCONFIG_DEV_FTMSCAN_API_KEY"]
|
|
XCCONFIG_DEV_DEFIYIELD_API_KEY = ENV["XCCONFIG_DEV_DEFIYIELD_API_KEY"]
|
|
XCCONFIG_DEV_TWITTER_BEARER_TOKEN = ENV["XCCONFIG_DEV_TWITTER_BEARER_TOKEN"]
|
|
XCCONFIG_DEV_HS_PROVIDER_API_KEY = ENV["XCCONFIG_DEV_HS_PROVIDER_API_KEY"]
|
|
XCCONFIG_DEV_WALLET_CONNECT_V2_PROJECT_KEY = ENV["XCCONFIG_DEV_WALLET_CONNECT_V2_PROJECT_KEY"]
|
|
XCCONFIG_DEV_OPEN_SEA_API_KEY = ENV["XCCONFIG_DEV_OPEN_SEA_API_KEY"]
|
|
XCCONFIG_DEV_TRONGRID_API_KEY = ENV["XCCONFIG_DEV_TRONGRID_API_KEY"]
|
|
|
|
XCCONFIG_PROD_INFURA_PROJECT_ID = ENV["XCCONFIG_PROD_INFURA_PROJECT_ID"]
|
|
XCCONFIG_PROD_INFURA_PROJECT_SECRET = ENV["XCCONFIG_PROD_INFURA_PROJECT_SECRET"]
|
|
XCCONFIG_PROD_ETHERSCAN_API_KEY = ENV["XCCONFIG_PROD_ETHERSCAN_API_KEY"]
|
|
XCCONFIG_PROD_ARBISCAN_API_KEY = ENV["XCCONFIG_PROD_ARBISCAN_API_KEY"]
|
|
XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEY = ENV["XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEY"]
|
|
XCCONFIG_PROD_BSCSCAN_API_KEY = ENV["XCCONFIG_PROD_BSCSCAN_API_KEY"]
|
|
XCCONFIG_PROD_POLYGONSCAN_API_KEY = ENV["XCCONFIG_PROD_POLYGONSCAN_API_KEY"]
|
|
XCCONFIG_PROD_SNOWTRACE_API_KEY = ENV["XCCONFIG_PROD_SNOWTRACE_API_KEY"]
|
|
XCCONFIG_PROD_GNOSISSCAN_API_KEY = ENV["XCCONFIG_PROD_GNOSISSCAN_API_KEY"]
|
|
XCCONFIG_PROD_FTMSCAN_API_KEY = ENV["XCCONFIG_PROD_FTMSCAN_API_KEY"]
|
|
XCCONFIG_PROD_DEFIYIELD_API_KEY = ENV["XCCONFIG_PROD_DEFIYIELD_API_KEY"]
|
|
XCCONFIG_PROD_TWITTER_BEARER_TOKEN = ENV["XCCONFIG_PROD_TWITTER_BEARER_TOKEN"]
|
|
XCCONFIG_PROD_HS_PROVIDER_API_KEY = ENV["XCCONFIG_PROD_HS_PROVIDER_API_KEY"]
|
|
XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY = ENV["XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY"]
|
|
XCCONFIG_PROD_OPEN_SEA_API_KEY = ENV["XCCONFIG_PROD_OPEN_SEA_API_KEY"]
|
|
XCCONFIG_PROD_TRONGRID_API_KEY = ENV["XCCONFIG_PROD_TRONGRID_API_KEY"]
|
|
|
|
def delete_temp_keychain(name)
|
|
delete_keychain(
|
|
name: name
|
|
) if File.exist? File.expand_path("~/Library/Keychains/#{name}-db")
|
|
end
|
|
|
|
def create_temp_keychain(name, password)
|
|
create_keychain(
|
|
name: name,
|
|
password: password,
|
|
unlock: false,
|
|
timeout: 0
|
|
)
|
|
end
|
|
|
|
def ensure_temp_keychain(name, password)
|
|
delete_temp_keychain(name)
|
|
create_temp_keychain(name, password)
|
|
end
|
|
|
|
def app_store_api_key
|
|
app_store_connect_api_key(
|
|
key_id: APPLE_KEY_ID,
|
|
issuer_id: APPLE_ISSUER_ID,
|
|
key_content: APPLE_KEY_CONTENT,
|
|
duration: 1200,
|
|
in_house: false
|
|
)
|
|
end
|
|
|
|
def update_dev_xcconfig(name, new_value)
|
|
update_xcconfig_value(
|
|
path: './UnstoppableWallet/UnstoppableWallet/Configuration/Development.xcconfig',
|
|
name: name,
|
|
value: new_value
|
|
)
|
|
end
|
|
|
|
def update_prod_xcconfig(name, new_value)
|
|
update_xcconfig_value(
|
|
path: './UnstoppableWallet/UnstoppableWallet/Configuration/Production.xcconfig',
|
|
name: name,
|
|
value: new_value
|
|
)
|
|
end
|
|
|
|
def prepare_environment
|
|
sh("cp ../UnstoppableWallet/UnstoppableWallet/Configuration/Development.template.xcconfig ../UnstoppableWallet/UnstoppableWallet/Configuration/Development.xcconfig")
|
|
sh("cp ../UnstoppableWallet/UnstoppableWallet/Configuration/Production.template.xcconfig ../UnstoppableWallet/UnstoppableWallet/Configuration/Production.xcconfig")
|
|
|
|
increment_build_number(
|
|
build_number: ENV['BUILD_NUMBER'],
|
|
xcodeproj: "./UnstoppableWallet/UnstoppableWallet.xcodeproj"
|
|
)
|
|
end
|
|
|
|
def apply_dev_xcconfig
|
|
update_dev_xcconfig('infura_project_id', XCCONFIG_DEV_INFURA_PROJECT_ID)
|
|
update_dev_xcconfig('infura_project_secret', XCCONFIG_DEV_INFURA_PROJECT_SECRET)
|
|
update_dev_xcconfig('etherscan_api_key', XCCONFIG_DEV_ETHERSCAN_API_KEY)
|
|
update_dev_xcconfig('optimism_etherscan_api_key', XCCONFIG_DEV_OPTIMISM_ETHERSCAN_API_KEY)
|
|
update_dev_xcconfig('arbiscan_api_key', XCCONFIG_DEV_ARBISCAN_API_KEY)
|
|
update_dev_xcconfig('bscscan_api_key', XCCONFIG_DEV_BSCSCAN_API_KEY)
|
|
update_dev_xcconfig('polygonscan_api_key', XCCONFIG_DEV_POLYGONSCAN_API_KEY)
|
|
update_dev_xcconfig('snowtrace_api_key', XCCONFIG_DEV_SNOWTRACE_API_KEY)
|
|
update_dev_xcconfig('gnosisscan_api_key', XCCONFIG_DEV_GNOSISSCAN_API_KEY)
|
|
update_dev_xcconfig('ftmscan_api_key', XCCONFIG_DEV_FTMSCAN_API_KEY)
|
|
update_dev_xcconfig('defiyield_api_key', XCCONFIG_DEV_DEFIYIELD_API_KEY)
|
|
update_dev_xcconfig('twitter_bearer_token', XCCONFIG_DEV_TWITTER_BEARER_TOKEN)
|
|
update_dev_xcconfig('hs_provider_api_key', XCCONFIG_DEV_HS_PROVIDER_API_KEY)
|
|
update_dev_xcconfig('wallet_connect_v2_project_key', XCCONFIG_DEV_WALLET_CONNECT_V2_PROJECT_KEY)
|
|
update_dev_xcconfig('open_sea_api_key', XCCONFIG_DEV_OPEN_SEA_API_KEY)
|
|
update_dev_xcconfig('trongrid_api_key', XCCONFIG_DEV_TRONGRID_API_KEY)
|
|
end
|
|
|
|
def apply_prod_xcconfig
|
|
update_prod_xcconfig('infura_project_id', XCCONFIG_PROD_INFURA_PROJECT_ID)
|
|
update_prod_xcconfig('infura_project_secret', XCCONFIG_PROD_INFURA_PROJECT_SECRET)
|
|
update_prod_xcconfig('etherscan_api_key', XCCONFIG_PROD_ETHERSCAN_API_KEY)
|
|
update_prod_xcconfig('arbiscan_api_key', XCCONFIG_PROD_ARBISCAN_API_KEY)
|
|
update_prod_xcconfig('optimism_etherscan_api_key', XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEY)
|
|
update_prod_xcconfig('bscscan_api_key', XCCONFIG_PROD_BSCSCAN_API_KEY)
|
|
update_prod_xcconfig('polygonscan_api_key', XCCONFIG_PROD_POLYGONSCAN_API_KEY)
|
|
update_prod_xcconfig('snowtrace_api_key', XCCONFIG_PROD_SNOWTRACE_API_KEY)
|
|
update_prod_xcconfig('gnosisscan_api_key', XCCONFIG_PROD_GNOSISSCAN_API_KEY)
|
|
update_prod_xcconfig('ftmscan_api_key', XCCONFIG_PROD_FTMSCAN_API_KEY)
|
|
update_prod_xcconfig('defiyield_api_key', XCCONFIG_PROD_DEFIYIELD_API_KEY)
|
|
update_prod_xcconfig('twitter_bearer_token', XCCONFIG_PROD_TWITTER_BEARER_TOKEN)
|
|
update_prod_xcconfig('hs_provider_api_key', XCCONFIG_PROD_HS_PROVIDER_API_KEY)
|
|
update_prod_xcconfig('wallet_connect_v2_project_key', XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY)
|
|
update_prod_xcconfig('open_sea_api_key', XCCONFIG_PROD_OPEN_SEA_API_KEY)
|
|
update_prod_xcconfig('trongrid_api_key', XCCONFIG_PROD_TRONGRID_API_KEY)
|
|
end
|
|
|
|
def force_update_devices(type, username)
|
|
match(
|
|
type: type,
|
|
username: username,
|
|
team_id: "HC4MCAXJ66",
|
|
app_identifier: "io.horizontalsystems.bank-wallet,io.horizontalsystems.bank-wallet.dev",
|
|
force_for_new_devices: true
|
|
)
|
|
end
|
|
|
|
platform :ios do
|
|
|
|
lane :dev do
|
|
keychain_name = TEMP_KEYCHAIN_USER
|
|
keychain_password = TEMP_KEYCHAIN_PASSWORD
|
|
ensure_temp_keychain(keychain_name, keychain_password)
|
|
|
|
api_key = app_store_api_key
|
|
|
|
prepare_environment
|
|
apply_dev_xcconfig
|
|
|
|
match(
|
|
type: 'adhoc',
|
|
app_identifier: "#{APP_IDENTIFIER_DEV}",
|
|
git_basic_authorization: Base64.strict_encode64(GIT_AUTHORIZATION),
|
|
readonly: true,
|
|
keychain_name: keychain_name,
|
|
keychain_password: keychain_password,
|
|
api_key: api_key
|
|
)
|
|
|
|
gym(
|
|
workspace: "UnstoppableWallet/UnstoppableWallet.xcworkspace",
|
|
scheme: "Development",
|
|
export_method: "ad-hoc",
|
|
clean: true,
|
|
export_options: {
|
|
compileBitcode: false,
|
|
provisioningProfiles: {
|
|
APP_ID => PROVISIONING_PROFILE_SPECIFIER_DEV
|
|
},
|
|
iCloudContainerEnvironment: "Development"
|
|
}
|
|
)
|
|
|
|
appcenter_upload(
|
|
api_token: APP_CENTER_API_TOKEN,
|
|
owner_name: "Horizontal-Systems",
|
|
owner_type: "organization",
|
|
app_name: "Unstoppable",
|
|
notify_testers: true,
|
|
release_notes: last_git_commit[:message]
|
|
)
|
|
|
|
delete_temp_keychain(keychain_name)
|
|
end
|
|
|
|
lane :release do
|
|
keychain_name = TEMP_KEYCHAIN_USER
|
|
keychain_password = TEMP_KEYCHAIN_PASSWORD
|
|
ensure_temp_keychain(keychain_name, keychain_password)
|
|
|
|
api_key = app_store_api_key
|
|
|
|
prepare_environment
|
|
apply_prod_xcconfig
|
|
|
|
match(
|
|
type: 'appstore',
|
|
app_identifier: "#{APP_IDENTIFIER_RELEASE}",
|
|
git_basic_authorization: Base64.strict_encode64(GIT_AUTHORIZATION),
|
|
readonly: true,
|
|
keychain_name: keychain_name,
|
|
keychain_password: keychain_password,
|
|
api_key: api_key
|
|
)
|
|
|
|
gym(
|
|
workspace: "UnstoppableWallet/UnstoppableWallet.xcworkspace",
|
|
scheme: "Production",
|
|
export_method: "app-store",
|
|
clean: true,
|
|
export_options: {
|
|
compileBitcode: false,
|
|
provisioningProfiles: {
|
|
APP_ID => PROVISIONING_PROFILE_SPECIFIER_APPSTORE
|
|
},
|
|
iCloudContainerEnvironment: "Production"
|
|
}
|
|
)
|
|
|
|
pilot(
|
|
apple_id: "#{APP_ID}",
|
|
app_identifier: "#{APP_IDENTIFIER_RELEASE}",
|
|
skip_waiting_for_build_processing: true,
|
|
skip_submission: true,
|
|
distribute_external: false,
|
|
notify_external_testers: false
|
|
)
|
|
|
|
delete_temp_keychain(keychain_name)
|
|
end
|
|
|
|
lane :new_device do |options|
|
|
force_update_devices("development", options[:username])
|
|
force_update_devices("adhoc", options[:username])
|
|
end
|
|
|
|
lane :match_readonly do
|
|
match(
|
|
type: "development",
|
|
readonly: true,
|
|
app_identifier: ["io.horizontalsystems.bank-wallet", "io.horizontalsystems.bank-wallet.dev"]
|
|
)
|
|
|
|
match(
|
|
type: "adhoc",
|
|
readonly: true,
|
|
app_identifier: ["io.horizontalsystems.bank-wallet", "io.horizontalsystems.bank-wallet.dev"]
|
|
)
|
|
|
|
match(
|
|
type: "appstore",
|
|
readonly: true,
|
|
app_identifier: ["io.horizontalsystems.bank-wallet"]
|
|
)
|
|
end
|
|
|
|
lane :match_generate do |options|
|
|
match(
|
|
type: "development",
|
|
username: options[:username],
|
|
team_id: "HC4MCAXJ66",
|
|
app_identifier: ["io.horizontalsystems.bank-wallet", "io.horizontalsystems.bank-wallet.dev"]
|
|
)
|
|
|
|
match(
|
|
type: "adhoc",
|
|
username: options[:username],
|
|
team_id: "HC4MCAXJ66",
|
|
app_identifier: ["io.horizontalsystems.bank-wallet", "io.horizontalsystems.bank-wallet.dev"]
|
|
)
|
|
|
|
match(
|
|
type: "appstore",
|
|
username: options[:username],
|
|
team_id: "HC4MCAXJ66",
|
|
app_identifier: ["io.horizontalsystems.bank-wallet"]
|
|
)
|
|
end
|
|
|
|
end
|