-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
378 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/bin/sh | ||
|
||
# --batch to prevent interactive command | ||
# --yes to assume "yes" for questions | ||
gpg --quiet --batch --yes --decrypt --passphrase="$KEYS_SECRET_PASSPHRASE" \ | ||
--output ios/Runner/ios_keys.zip ios/Runner/ios_keys.zip.gpg && cd ios/Runner && jar xvf ios_keys.zip && cd - |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -42,6 +42,73 @@ jobs: | |
lane: 'beta' | ||
subdirectory: 'android' | ||
|
||
deploy_ios: | ||
name: iOS Deploy TestFlight | ||
runs-on: macOS-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v2 | ||
with: | ||
ref: ${{ github.ref }} | ||
- name: Decrypt iOS keys | ||
run: sh ./.github/scripts/decrypt_ios_keys.sh | ||
env: | ||
KEYS_SECRET_PASSPHRASE: ${{ secrets.KEYS_SECRET_PASSPHRASE }} | ||
- name: Run Flutter tasks | ||
uses: subosito/flutter-action@v1 | ||
with: | ||
flutter-version: '1.26.x' # you can use 1.12 | ||
channel: 'beta' | ||
- run: flutter pub get | ||
- run: flutter build ios --release --no-codesign | ||
- uses: actions/setup-ruby@v1 | ||
with: | ||
ruby-version: '2.7.2' | ||
- name: Bundle update | ||
run: bundle update --bundler | ||
working-directory: ./ios | ||
- name: Deploy iOS Beta to TestFlight via Fastlane | ||
uses: maierj/[email protected] | ||
with: | ||
lane: 'closed_beta' | ||
subdirectory: 'ios' | ||
env: | ||
APP_STORE_CONNECT_TEAM_ID: '${{ secrets.APP_STORE_CONNECT_TEAM_ID }}' | ||
APP_STORE_CONNECT_APPLE_ID: '${{ secrets.APP_STORE_CONNECT_APPLE_ID }}' | ||
APP_STORE_CONNECT_BUNDLE_IDENTIFIER: '${{ secrets.APP_STORE_CONNECT_BUNDLE_IDENTIFIER }}' | ||
DEVELOPER_PORTAL_TEAM_ID: '${{ secrets.DEVELOPER_PORTAL_TEAM_ID }}' | ||
FASTLANE_APPLE_ID: '${{ secrets.FASTLANE_APPLE_ID }}' | ||
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: '${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}' | ||
MATCH_PASSWORD: '${{ secrets.MATCH_PASSWORD }}' | ||
GIT_AUTHORIZATION: '${{ secrets.GIT_AUTHORIZATION }}' | ||
PROVISIONING_PROFILE_SPECIFIER: '${{ secrets.PROVISIONING_PROFILE_SPECIFIER }}' | ||
TEMP_KEYCHAIN_PASSWORD: '${{ secrets.TEMP_KEYCHAIN_PASSWORD }}' | ||
TEMP_KEYCHAIN_USER: '${{ secrets.TEMP_KEYCHAIN_USER }}' | ||
|
||
deploy_web: | ||
name: Web Firebase Hosting | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: subosito/flutter-action@v1 | ||
with: | ||
flutter-version: '1.26.x' | ||
channel: 'beta' | ||
- name: Upgrades flutter | ||
run: flutter upgrade | ||
- name: Enable Web | ||
run: flutter config --enable-web | ||
- run: flutter pub get | ||
- name: Build Web | ||
run: flutter build web | ||
- name: Deploy to Firebase | ||
uses: w9jds/firebase-action@master | ||
with: | ||
args: deploy --only hosting | ||
env: | ||
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} | ||
PROJECT_ID: nkust-ap-flutter | ||
|
||
deploy_windows: | ||
name: Windows App | ||
runs-on: windows-latest | ||
|
@@ -70,7 +137,7 @@ jobs: | |
|
||
github_release: | ||
name: Create GitHub Release | ||
needs: [deploy_android, deploy_windows] | ||
needs: [deploy_android, deploy_ios, deploy_web, deploy_windows] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
source "https://rubygems.org" | ||
|
||
gem "fastlane" | ||
|
||
gem "fastlane-plugin-flutter_version", git: "https://github.com/tianhaoz95/fastlane-plugin-flutter-version" | ||
plugins_path = File.join(File.dirname(__FILE__), '.', 'Pluginfile') | ||
eval_gemfile(plugins_path) if File.exist?(plugins_path) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
GIT | ||
remote: https://github.com/tianhaoz95/fastlane-plugin-flutter-version | ||
revision: 123930a61878c48ca8bbbf39ac5440c621cf1a4e | ||
specs: | ||
fastlane-plugin-flutter_version (1.0.1) | ||
|
||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
CFPropertyList (3.0.3) | ||
addressable (2.7.0) | ||
public_suffix (>= 2.0.2, < 5.0) | ||
artifactory (3.0.15) | ||
atomos (0.1.3) | ||
aws-eventstream (1.1.0) | ||
aws-partitions (1.430.0) | ||
aws-sdk-core (3.112.0) | ||
aws-eventstream (~> 1, >= 1.0.2) | ||
aws-partitions (~> 1, >= 1.239.0) | ||
aws-sigv4 (~> 1.1) | ||
jmespath (~> 1.0) | ||
aws-sdk-kms (1.42.0) | ||
aws-sdk-core (~> 3, >= 3.112.0) | ||
aws-sigv4 (~> 1.1) | ||
aws-sdk-s3 (1.89.0) | ||
aws-sdk-core (~> 3, >= 3.112.0) | ||
aws-sdk-kms (~> 1) | ||
aws-sigv4 (~> 1.1) | ||
aws-sigv4 (1.2.2) | ||
aws-eventstream (~> 1, >= 1.0.2) | ||
babosa (1.0.4) | ||
claide (1.0.3) | ||
colored (1.2) | ||
colored2 (3.1.2) | ||
commander-fastlane (4.4.6) | ||
highline (~> 1.7.2) | ||
declarative (0.0.20) | ||
declarative-option (0.1.0) | ||
digest-crc (0.6.3) | ||
rake (>= 12.0.0, < 14.0.0) | ||
domain_name (0.5.20190701) | ||
unf (>= 0.0.5, < 1.0.0) | ||
dotenv (2.7.6) | ||
emoji_regex (3.2.2) | ||
excon (0.79.0) | ||
faraday (1.3.0) | ||
faraday-net_http (~> 1.0) | ||
multipart-post (>= 1.2, < 3) | ||
ruby2_keywords | ||
faraday-cookie_jar (0.0.7) | ||
faraday (>= 0.8.0) | ||
http-cookie (~> 1.0.0) | ||
faraday-net_http (1.0.1) | ||
faraday_middleware (1.0.0) | ||
faraday (~> 1.0) | ||
fastimage (2.2.3) | ||
fastlane (2.176.0) | ||
CFPropertyList (>= 2.3, < 4.0.0) | ||
addressable (>= 2.3, < 3.0.0) | ||
artifactory (~> 3.0) | ||
aws-sdk-s3 (~> 1.0) | ||
babosa (>= 1.0.3, < 2.0.0) | ||
bundler (>= 1.12.0, < 3.0.0) | ||
colored | ||
commander-fastlane (>= 4.4.6, < 5.0.0) | ||
dotenv (>= 2.1.1, < 3.0.0) | ||
emoji_regex (>= 0.1, < 4.0) | ||
excon (>= 0.71.0, < 1.0.0) | ||
faraday (~> 1.0) | ||
faraday-cookie_jar (~> 0.0.6) | ||
faraday_middleware (~> 1.0) | ||
fastimage (>= 2.1.0, < 3.0.0) | ||
gh_inspector (>= 1.1.2, < 2.0.0) | ||
google-api-client (>= 0.37.0, < 0.39.0) | ||
google-cloud-storage (>= 1.15.0, < 2.0.0) | ||
highline (>= 1.7.2, < 2.0.0) | ||
json (< 3.0.0) | ||
jwt (>= 2.1.0, < 3) | ||
mini_magick (>= 4.9.4, < 5.0.0) | ||
multipart-post (~> 2.0.0) | ||
naturally (~> 2.2) | ||
plist (>= 3.1.0, < 4.0.0) | ||
rubyzip (>= 2.0.0, < 3.0.0) | ||
security (= 0.1.3) | ||
simctl (~> 1.6.3) | ||
slack-notifier (>= 2.0.0, < 3.0.0) | ||
terminal-notifier (>= 2.0.0, < 3.0.0) | ||
terminal-table (>= 1.4.5, < 2.0.0) | ||
tty-screen (>= 0.6.3, < 1.0.0) | ||
tty-spinner (>= 0.8.0, < 1.0.0) | ||
word_wrap (~> 1.0.0) | ||
xcodeproj (>= 1.13.0, < 2.0.0) | ||
xcpretty (~> 0.3.0) | ||
xcpretty-travis-formatter (>= 0.0.3) | ||
gh_inspector (1.1.3) | ||
google-api-client (0.38.0) | ||
addressable (~> 2.5, >= 2.5.1) | ||
googleauth (~> 0.9) | ||
httpclient (>= 2.8.1, < 3.0) | ||
mini_mime (~> 1.0) | ||
representable (~> 3.0) | ||
retriable (>= 2.0, < 4.0) | ||
signet (~> 0.12) | ||
google-apis-core (0.2.1) | ||
addressable (~> 2.5, >= 2.5.1) | ||
googleauth (~> 0.14) | ||
httpclient (>= 2.8.1, < 3.0) | ||
mini_mime (~> 1.0) | ||
representable (~> 3.0) | ||
retriable (>= 2.0, < 4.0) | ||
rexml | ||
signet (~> 0.14) | ||
webrick | ||
google-apis-iamcredentials_v1 (0.1.0) | ||
google-apis-core (~> 0.1) | ||
google-apis-storage_v1 (0.2.0) | ||
google-apis-core (~> 0.1) | ||
google-cloud-core (1.5.0) | ||
google-cloud-env (~> 1.0) | ||
google-cloud-errors (~> 1.0) | ||
google-cloud-env (1.4.0) | ||
faraday (>= 0.17.3, < 2.0) | ||
google-cloud-errors (1.0.1) | ||
google-cloud-storage (1.30.0) | ||
addressable (~> 2.5) | ||
digest-crc (~> 0.4) | ||
google-apis-iamcredentials_v1 (~> 0.1) | ||
google-apis-storage_v1 (~> 0.1) | ||
google-cloud-core (~> 1.2) | ||
googleauth (~> 0.9) | ||
mini_mime (~> 1.0) | ||
googleauth (0.15.1) | ||
faraday (>= 0.17.3, < 2.0) | ||
jwt (>= 1.4, < 3.0) | ||
memoist (~> 0.16) | ||
multi_json (~> 1.11) | ||
os (>= 0.9, < 2.0) | ||
signet (~> 0.14) | ||
highline (1.7.10) | ||
http-cookie (1.0.3) | ||
domain_name (~> 0.5) | ||
httpclient (2.8.3) | ||
jmespath (1.4.0) | ||
json (2.5.1) | ||
jwt (2.2.2) | ||
memoist (0.16.2) | ||
mini_magick (4.11.0) | ||
mini_mime (1.0.2) | ||
multi_json (1.15.0) | ||
multipart-post (2.0.0) | ||
nanaimo (0.3.0) | ||
naturally (2.2.1) | ||
os (1.1.1) | ||
plist (3.6.0) | ||
public_suffix (4.0.6) | ||
rake (13.0.3) | ||
representable (3.0.4) | ||
declarative (< 0.1.0) | ||
declarative-option (< 0.2.0) | ||
uber (< 0.2.0) | ||
retriable (3.1.2) | ||
rexml (3.2.4) | ||
rouge (2.0.7) | ||
ruby2_keywords (0.0.4) | ||
rubyzip (2.3.0) | ||
security (0.1.3) | ||
signet (0.14.1) | ||
addressable (~> 2.3) | ||
faraday (>= 0.17.3, < 2.0) | ||
jwt (>= 1.5, < 3.0) | ||
multi_json (~> 1.10) | ||
simctl (1.6.8) | ||
CFPropertyList | ||
naturally | ||
slack-notifier (2.3.2) | ||
terminal-notifier (2.0.0) | ||
terminal-table (1.8.0) | ||
unicode-display_width (~> 1.1, >= 1.1.1) | ||
tty-cursor (0.7.1) | ||
tty-screen (0.8.1) | ||
tty-spinner (0.9.3) | ||
tty-cursor (~> 0.7) | ||
uber (0.1.0) | ||
unf (0.1.4) | ||
unf_ext | ||
unf_ext (0.0.7.7) | ||
unicode-display_width (1.7.0) | ||
webrick (1.7.0) | ||
word_wrap (1.0.0) | ||
xcodeproj (1.19.0) | ||
CFPropertyList (>= 2.3.3, < 4.0) | ||
atomos (~> 0.1.3) | ||
claide (>= 1.0.2, < 2.0) | ||
colored2 (~> 3.1) | ||
nanaimo (~> 0.3.0) | ||
xcpretty (0.3.0) | ||
rouge (~> 2.0.7) | ||
xcpretty-travis-formatter (1.0.1) | ||
xcpretty (~> 0.2, >= 0.0.7) | ||
|
||
PLATFORMS | ||
ruby | ||
|
||
DEPENDENCIES | ||
fastlane | ||
fastlane-plugin-flutter_version! | ||
|
||
BUNDLED WITH | ||
1.17.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
app_identifier(ENV["APP_STORE_CONNECT_BUNDLE_IDENTIFIER"]) | ||
apple_id(ENV["FASTLANE_APPLE_ID"]) | ||
|
||
itc_team_id(ENV["APP_STORE_CONNECT_TEAM_ID"]) | ||
team_id(ENV["DEVELOPER_PORTAL_TEAM_ID"]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
default_platform(:ios) | ||
|
||
APP_STORE_CONNECT_APPLE_ID = ENV["APP_STORE_CONNECT_APPLE_ID"] | ||
APP_STORE_CONNECT_BUNDLE_IDENTIFIER = ENV["APP_STORE_CONNECT_BUNDLE_IDENTIFIER"] | ||
PROVISIONING_PROFILE_SPECIFIER = ENV["PROVISIONING_PROFILE_SPECIFIER"] | ||
TEMP_KEYCHAIN_USER = ENV["TEMP_KEYCHAIN_USER"] | ||
TEMP_KEYCHAIN_PASSWORD = ENV["TEMP_KEYCHAIN_PASSWORD"] | ||
|
||
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: false | ||
) | ||
end | ||
|
||
def ensure_temp_keychain(name, password) | ||
delete_temp_keychain(name) | ||
create_temp_keychain(name, password) | ||
end | ||
|
||
platform :ios do | ||
lane :closed_beta do | ||
keychain_name = TEMP_KEYCHAIN_USER | ||
keychain_password = TEMP_KEYCHAIN_PASSWORD | ||
ensure_temp_keychain(keychain_name, keychain_password) | ||
|
||
match( | ||
type: 'appstore', | ||
app_identifier: ["#{APP_STORE_CONNECT_BUNDLE_IDENTIFIER}", "#{APP_STORE_CONNECT_BUNDLE_IDENTIFIER}.CourseAppWidget"], | ||
git_basic_authorization: Base64.strict_encode64(ENV["GIT_AUTHORIZATION"]), | ||
readonly: true, | ||
keychain_name: keychain_name, | ||
keychain_password: keychain_password | ||
) | ||
|
||
gym( | ||
configuration: "Release", | ||
workspace: "Runner.xcworkspace", | ||
scheme: "Runner", | ||
export_method: "app-store", | ||
export_options: { | ||
provisioningProfiles: { | ||
APP_STORE_CONNECT_APPLE_ID => PROVISIONING_PROFILE_SPECIFIER | ||
} | ||
} | ||
) | ||
|
||
pilot( | ||
apple_id: "#{APP_STORE_CONNECT_APPLE_ID}", | ||
app_identifier: "#{APP_STORE_CONNECT_BUNDLE_IDENTIFIER}", | ||
skip_waiting_for_build_processing: true, | ||
skip_submission: true, | ||
distribute_external: false, | ||
notify_external_testers: false, | ||
ipa: "./Runner.ipa" | ||
) | ||
|
||
delete_temp_keychain(keychain_name) | ||
end | ||
end |
Oops, something went wrong.