-
Notifications
You must be signed in to change notification settings - Fork 4
146 lines (122 loc) · 6.16 KB
/
release_to_dev.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: Release to Dev
on:
push:
branches:
- release_to_dev
jobs:
build:
runs-on: macOS-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Read Flutter SDK version
run: echo "FLUTTER_VERSION=$(jq -r '.flutterSdkVersion' .fvm/fvm_config.json)" >> $GITHUB_ENV
shell: bash
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
- name: flutter pub get (dart_flutter_common)
run: cd packages/dart_flutter_common && flutter pub get
- name: flutter pub get (firebase_common)
run: cd packages/firebase_common && flutter pub get
- name: flutter pub get (mottai_flutter_app)
run: cd packages/mottai_flutter_app && flutter pub get
- name: Create dev-dart-define.json from GitHub secret
run: |
cd packages/mottai_flutter_app
echo '${{ secrets.DEV_DART_DEFINE_JSON_STRING }}' > dev-dart-define.json
# ビルド前に証明書の取得をするため、事前に dart-define から Xcode に伝えるべき設定内容
# を反映させる必要がある。
- name: Prepare Xcode build settings
run: |
# dev-dart-define.json から各値を読み込む
cd packages/mottai_flutter_app
FLAVOR=$(jq -r '.flavor' dev-dart-define.json)
APP_NAME=$(jq -r '.appName' dev-dart-define.json)
APP_ID_SUFFIX=$(jq -r '.appIdSuffix' dev-dart-define.json)
# DartDefines.xcconfig ファイルに書き込む
echo "flavor = dev" > DartDefines.xcconfig
echo "appName = mottai_dev" >> DartDefines.xcconfig
echo "appIdSuffix = .dev" >> DartDefines.xcconfig
# このファイルを Xcode が参照できるように ios ディレクトリに移動する
mv DartDefines.xcconfig ios/
- name: Decode and install provisioning profile
run: |
echo ${{ secrets.DEV_APPLE_DISTRIBUTION_PROVISIONING_PROFILE_BASE64_STRING }} | base64 --decode > profile.mobileprovision
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp profile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/
- name: Run import-codesign-certs
uses: Apple-Actions/import-codesign-certs@v2
with:
p12-file-base64: ${{ secrets.DEV_APPLE_DISTRIBUTION_CERTIFICATE_P12_BASE64_STRING }}
p12-password: ${{ secrets.DEV_APPLE_DISTRIBUTION_CERTIFICATE_P12_PASSWORD }}
- name: Prepare Xcode build settings for Distribution
run: |
# 適切なプロビジョニングプロファイルの名前を指定する
echo "PROVISIONING_PROFILE_SPECIFIER = Mottai Flutter App Dev" >> DartDefines.xcconfig
# 手動署名を選択する
# echo "CODE_SIGN_STYLE = Manual" >> DartDefines.xcconfig
- name: Save AuthKey_***.p8 file
run: |
mkdir -p packages/mottai_flutter_app/private_keys
echo "${{ secrets.DEV_IOS_AUTH_KEY }}" > packages/mottai_flutter_app/private_keys/AuthKey_X6578RX35S.p8
- name: Create Environment.swift
run: |
echo "import Foundation" > packages/mottai_flutter_app/ios/Runner/Environment.swift
echo "struct Env {" >> packages/mottai_flutter_app/ios/Runner/Environment.swift
echo " static let googleMapApiKey = \"${{ secrets.DEV_GOOGLE_MAP_API_KEY }}\"" >> packages/mottai_flutter_app/ios/Runner/Environment.swift
echo "}" >> packages/mottai_flutter_app/ios/Runner/Environment.swift
# - name: flutter build ipa
# run: |
# cd packages/mottai_flutter_app
# flutter build ipa --release \
# --dart-define-from-file="dev-dart-define.json" \
# -t "lib/main.dart" \
# --build-name=$(grep 'version:' pubspec.yaml | cut -d ' ' -f 2 | cut -d '+' -f 1) \
# --build-number=$GITHUB_RUN_NUMBER \
# --export-options-plist="ios/ExportOptions.plist"
- name: flutter build ios
run: |
cd packages/mottai_flutter_app
flutter build ios --release \
--dart-define-from-file="dev-dart-define.json" \
-t "lib/main.dart" \
--build-name=$(grep 'version:' pubspec.yaml | cut -d ' ' -f 2 | cut -d '+' -f 1) \
--build-number=$GITHUB_RUN_NUMBER \
--no-codesign
--export-options-plist="ios/ExportOptions.plist"
- name: Archive by xcodebuild
env:
APPLE_API_ISSUER_ID: ${{ secrets.DEV_IOS_API_ISSUER }}
run: |
cd packages/mottai_flutter_app
xcodebuild archive CODE_SIGNING_ALLOWED=NO -workspace ./ios/Runner.xcworkspace -scheme Runner -configuration Release -archivePath ./build/ios/Runner.xcarchive
- name: Export by xcodebuild
env:
APPLE_API_ISSUER_ID: ${{ secrets.DEV_IOS_API_ISSUER }}
run: |
cd packages/mottai_flutter_app
xcodebuild -exportArchive -archivePath ./build/ios/Runner.xcarchive -exportPath ./build/ios/ipa -exportOptionsPlist ./ios/ExportOptions.plist -allowProvisioningUpdates -authenticationKeyIssuerID $APPLE_API_ISSUER_ID -authenticationKeyID X6578RX35S -authenticationKeyPath ./private_keys/AuthKey_X6578RX35S.p8
- name: Detect path for ipa file
run: |
cd packages/mottai_flutter_app
echo "IPA_PATH=$(find build/ios/ipa -type f -name '*.ipa')" >> $GITHUB_ENV
- name: Validate ipa
run: |
cd packages/mottai_flutter_app
xcrun altool --validate-app \
-f "./build/ios/ipa/mottai_dev.ipa" \
-t ios \
--apiKey ${{ secrets.DEV_IOS_API_KEY }} \
--apiIssuer ${{ secrets.DEV_IOS_API_ISSUER }} \
--private-key "./private_keys/AuthKey_X6578RX35S.p8"
- name: Upload ipa to TestFlight
run: |
cd packages/mottai_flutter_app
xcrun altool --upload-app \
-f "./build/ios/ipa/mottai_dev.ipa" \
-t ios \
--apiKey ${{ secrets.DEV_IOS_API_KEY }} \
--apiIssuer ${{ secrets.DEV_IOS_API_ISSUER }} \
--private-key "./private_keys/AuthKey_X6578RX35S.p8"