Skip to content

Commit 938f830

Browse files
committed
Add adhoc build for Production env
1 parent 536f1c3 commit 938f830

File tree

2 files changed

+126
-0
lines changed

2 files changed

+126
-0
lines changed
+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Deploy Production to AppCenter
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
workflow_dispatch:
7+
8+
jobs:
9+
build_and_deploy:
10+
name: Build and Deploy Production to AppCenter
11+
runs-on: macos-14
12+
13+
steps:
14+
- name: Setup Xcode to 15.3
15+
uses: maxim-lobanov/setup-xcode@v1
16+
with:
17+
xcode-version: '15.3'
18+
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
21+
22+
- name: Setup Ruby v3
23+
uses: ruby/setup-ruby@v1
24+
with:
25+
ruby-version: 3.0.2
26+
bundler-cache: true
27+
28+
- name: Setup Rust and Cargo
29+
uses: actions-rs/toolchain@v1
30+
with:
31+
toolchain: stable
32+
33+
- name: Install Lipo via Cargo
34+
run: cargo install cargo-lipo
35+
36+
- name: Add iOS targets to Rust
37+
run: rustup target add aarch64-apple-ios x86_64-apple-ios
38+
39+
- name: Run Fastlane (build, upload to AppCenter)
40+
uses: maierj/[email protected]
41+
with:
42+
lane: staging
43+
env:
44+
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120
45+
BUILD_NUMBER: ${{ github.run_number }}
46+
APP_ID: ${{ secrets.APP_ID }}
47+
GIT_AUTHORIZATION: ${{ secrets.GIT_AUTHORIZATION }}
48+
TEMP_KEYCHAIN_USER: ${{ secrets.TEMP_KEYCHAIN_USER }}
49+
TEMP_KEYCHAIN_PASSWORD: ${{ secrets.TEMP_KEYCHAIN_PASSWORD }}
50+
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
51+
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
52+
APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
53+
APP_CENTER_API_TOKEN: ${{ secrets.APP_CENTER_API_TOKEN }}
54+
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
55+
56+
XCCONFIG_PROD_ARBISCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_ARBISCAN_API_KEYS }}
57+
XCCONFIG_PROD_BASESCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_BASESCAN_API_KEYS }}
58+
XCCONFIG_PROD_BSCSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_BSCSCAN_API_KEYS }}
59+
XCCONFIG_PROD_CHAINALYSIS_API_KEY: ${{ secrets.XCCONFIG_PROD_CHAINALYSIS_API_KEY }}
60+
XCCONFIG_PROD_DEFIYIELD_API_KEY: ${{ secrets.XCCONFIG_PROD_DEFIYIELD_API_KEY }}
61+
XCCONFIG_PROD_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_ETHERSCAN_API_KEYS }}
62+
XCCONFIG_PROD_ERA_ZKSYNC_API_KEYS: ${{ secrets.XCCONFIG_PROD_ERA_ZKSYNC_API_KEYS }}
63+
XCCONFIG_PROD_FTMSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_FTMSCAN_API_KEYS }}
64+
XCCONFIG_PROD_GNOSISSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_GNOSISSCAN_API_KEYS }}
65+
XCCONFIG_PROD_HASHDIT_API_KEY: ${{ secrets.XCCONFIG_PROD_HASHDIT_API_KEY }}
66+
XCCONFIG_PROD_HS_PROVIDER_API_KEY: ${{ secrets.XCCONFIG_PROD_HS_PROVIDER_API_KEY }}
67+
XCCONFIG_PROD_ONE_INCH_API_KEY: ${{ secrets.XCCONFIG_PROD_ONE_INCH_API_KEY }}
68+
XCCONFIG_PROD_ONE_INCH_COMMISSION: ${{ secrets.XCCONFIG_PROD_ONE_INCH_COMMISSION }}
69+
XCCONFIG_PROD_ONE_INCH_COMMISSION_ADDRESS: ${{ secrets.XCCONFIG_PROD_ONE_INCH_COMMISSION_ADDRESS }}
70+
XCCONFIG_PROD_OPEN_SEA_API_KEY: ${{ secrets.XCCONFIG_PROD_OPEN_SEA_API_KEY }}
71+
XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEYS }}
72+
XCCONFIG_PROD_POLYGONSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_POLYGONSCAN_API_KEYS }}
73+
XCCONFIG_PROD_REFERRAL_APP_SERVER_URL: ${{ secrets.XCCONFIG_PROD_REFERRAL_APP_SERVER_URL }}
74+
XCCONFIG_PROD_SNOWTRACE_API_KEYS: ${{ secrets.XCCONFIG_PROD_SNOWTRACE_API_KEYS }}
75+
XCCONFIG_PROD_TRONGRID_API_KEY: ${{ secrets.XCCONFIG_PROD_TRONGRID_API_KEY }}
76+
XCCONFIG_PROD_TWITTER_BEARER_TOKEN: ${{ secrets.XCCONFIG_PROD_TWITTER_BEARER_TOKEN }}
77+
XCCONFIG_PROD_UNSTOPPABLE_DOMAINS_API_KEY: ${{ secrets.XCCONFIG_PROD_UNSTOPPABLE_DOMAINS_API_KEY }}
78+
XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY: ${{ secrets.XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY }}

fastlane/Fastfile

+48
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,54 @@ platform :ios do
249249
delete_temp_keychain(keychain_name)
250250
end
251251

252+
lane :staging do
253+
keychain_name = TEMP_KEYCHAIN_USER
254+
keychain_password = TEMP_KEYCHAIN_PASSWORD
255+
ensure_temp_keychain(keychain_name, keychain_password)
256+
257+
api_key = app_store_api_key
258+
259+
prepare_environment(false)
260+
apply_prod_xcconfig('true', 'false')
261+
262+
match(
263+
type: 'adhoc',
264+
app_identifier: ["io.horizontalsystems.bank-wallet", "io.horizontalsystems.bank-wallet.widget", "io.horizontalsystems.bank-wallet.intent"],
265+
git_basic_authorization: Base64.strict_encode64(GIT_AUTHORIZATION),
266+
readonly: true,
267+
keychain_name: keychain_name,
268+
keychain_password: keychain_password,
269+
api_key: api_key
270+
)
271+
272+
gym(
273+
workspace: "UnstoppableWallet/UnstoppableWallet.xcworkspace",
274+
scheme: "Production",
275+
export_method: "ad-hoc",
276+
clean: true,
277+
export_options: {
278+
compileBitcode: false,
279+
provisioningProfiles: {
280+
"io.horizontalsystems.bank-wallet" => "match AdHoc io.horizontalsystems.bank-wallet",
281+
"io.horizontalsystems.bank-wallet.widget" => "match AdHoc io.horizontalsystems.bank-wallet.widget",
282+
"io.horizontalsystems.bank-wallet.intent" => "match AdHoc io.horizontalsystems.bank-wallet.intent"
283+
},
284+
iCloudContainerEnvironment: "Production"
285+
}
286+
)
287+
288+
appcenter_upload(
289+
api_token: APP_CENTER_API_TOKEN,
290+
owner_name: "Horizontal-Systems",
291+
owner_type: "organization",
292+
app_name: "Unstoppable Prod",
293+
notify_testers: true,
294+
release_notes: last_git_commit[:message]
295+
)
296+
297+
delete_temp_keychain(keychain_name)
298+
end
299+
252300
lane :release do
253301
keychain_name = TEMP_KEYCHAIN_USER
254302
keychain_password = TEMP_KEYCHAIN_PASSWORD

0 commit comments

Comments
 (0)