-
Notifications
You must be signed in to change notification settings - Fork 0
/
codemagic.yaml
188 lines (183 loc) · 5.52 KB
/
codemagic.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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
definitions:
environment:
groups:
- ios
- android
- firebase
scripts:
- &ios_initialize_keychain
name: Set up keychain to be used for codesigning using Codemagic CLI 'keychain' command
script: |
keychain initialize
- &ios_automatic_fetch_adhoc
name: Fetch signing files
script: |
app-store-connect fetch-signing-files $BUNDLE_ID --type IOS_APP_ADHOC --create
- &ios_automatic_fetch
name: Fetch signing files
script: |
app-store-connect fetch-signing-files $BUNDLE_ID --type IOS_APP_STORE --create
- &ios_use_default_keychain
name: Use system default keychain
script: |
keychain add-certificates
- &ios_set_signing_to_xcode
name: Set up code signing settings on Xcode project
script: |
xcode-project use-profiles
- &ios_flutter_build_dev
name: Build ipa for distribution
script: |
cd apps/frontend
flutter build ios --target=lib/main.dart
cd ios
xcode-project build-ipa --workspace "$XCODE_WORKSPACE"
- &android_set_key_properties
name: Set up key properties
script: |
echo $FCI_KEYSTORE | base64 --decode > $FCI_KEYSTORE_PATH
cat >> "$FCI_BUILD_DIR/apps/frontend/android/key.properties" <<EOF
storePassword=$FCI_KEYSTORE_PASSWORD
keyPassword=$FCI_KEY_PASSWORD
keyAlias=$FCI_KEY_ALIAS
storeFile=$FCI_KEYSTORE_PATH
EOF
- &android_set_local_properties
name: Set up local.properties
script: |
echo "flutter.sdk=$HOME/programs/flutter" > "$FCI_BUILD_DIR/apps/frontend/android/local.properties"
- &android_flutter_build_dev
name: Build apk for distribution
script: |
cd apps/frontend
flutter pub get
flutter build apk --release --target=lib/main.dart
publishing:
- &firebase_app_distribution_ios
firebase:
firebase_token: $FIREBASE_TOKEN
ios:
app_id: $FIREBASE_IOS_APP_ID
groups:
- iOS
- &firebase_app_distribution_android
firebase:
firebase_token: $FIREBASE_TOKEN
android:
app_id: $FIREBASE_ANDROID_APP_ID
groups:
- android
artifacts:
- &ipa apps/frontend/ios/build/ios/ipa/*.ipa
- &dsym $HOME/Library/Developer/Xcode/DerivedData/**/Build/**/*.dSYM
- &apk apps/frontend/build/**/outputs/**/*.apk
- &aab apps/frontend/build/**/outputs/**/*.aab
workflows:
ci:
name: CI
# Setting the timeout for a build to 15 minutes.
max_build_duration: 15
environment:
# Using the latest Flutter version.
flutter: stable
when:
changeset:
includes:
# Only run the CI when a file in one of the following directories
# changed.
- "apps/**"
- "packages/**"
- "codemagic.yaml"
excludes:
# Don't run the CI when only .md files changed.
- "**/*.md"
# This workflow should trigger when a new pull request opens or updates.
triggering:
events:
- pull_request
scripts:
- name: Add Dart SDK to PATH
script: |
echo PATH="$PATH":"$FLUTTER_ROOT/.pub-cache/bin" >> $CM_ENV
echo PATH="$PATH":"$FLUTTER_ROOT/bin" >> $CM_ENV
- name: Melos Bootstrap
script: |
dart pub global activate melos
melos bootstrap
- name: Run Analyze
script: melos run analyze
- name: Run Format
script: melos run format
- name: Run Tests
script: |
melos run test
# Upload results of failed golden tests if test command failed.
if [ $? -ne 0 ]; then
# Finds all "failures" folders and copies them to the export
# directory. Therefore, we are able to view the results of the
# failed golden tests.
#
# The command will use the exit code 0 (success) even when there are
# no failures folders.
find * -path '**/failures' -execdir bash -c "cp -r failures $FCI_EXPORT_DIR" \;
# Because we caught the exit code of the test command, we need to
# set manually again.
exit 1
fi
ios-build-firebase:
name: ios-build-firebase
max_build_duration: 60
environment:
groups:
- firebase
- ios
vars:
XCODE_WORKSPACE: "Runner.xcworkspace"
xcode: latest
cocoapods: default
flutter: stable
cocoapods: default
triggering:
events:
- tag
branch_patterns:
- pattern: "main"
include: true
source: true
scripts:
- *ios_initialize_keychain
- *ios_automatic_fetch_adhoc
- *ios_use_default_keychain
- *ios_set_signing_to_xcode
- *ios_flutter_build_dev
artifacts:
- *ipa
- *dsym
#publishing: *firebase_app_distribution_ios
android-build-firebase:
name: android-build-firebase
max_build_duration: 60
environment:
groups:
- firebase
- android
flutter: stable
cache:
cache_paths:
- $FLUTTER_ROOT/.pub-cache
- $HOME/.gradle/caches
triggering:
events:
- tag
branch_patterns:
- pattern: "main"
include: true
source: true
scripts:
- *android_set_key_properties
- *android_set_local_properties
- *android_flutter_build_dev
artifacts:
- *apk
- *aab
#publishing: *firebase_app_distribution_android