Let Travis build the gallery and push to TestFlight / Play Store (#14408)
* iOS works * Works on Android * Take in commit number in iOS also. Get rid of image upload for Android. It's just a waste of bandwidth * Tweak to fix on Travis
This commit is contained in:
parent
9d302ac46b
commit
5b46e0a4be
@ -2,16 +2,21 @@
|
|||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
|
osx_image: xcode9.2
|
||||||
env:
|
env:
|
||||||
- SHARD=analyze
|
- SHARD=analyze
|
||||||
- SHARD=tests
|
- SHARD=tests
|
||||||
- SHARD=docs
|
- SHARD=docs
|
||||||
|
- SHARD=build_and_deploy_gallery
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
- os: osx
|
- os: osx
|
||||||
env: SHARD=analyze
|
env: SHARD=analyze
|
||||||
- os: osx
|
- os: osx
|
||||||
env: SHARD=docs
|
env: SHARD=docs
|
||||||
|
# TODO(xster): remove this when we know it works on Travis.
|
||||||
|
allow_failures:
|
||||||
|
- env: SHARD=build_and_deploy_gallery
|
||||||
sudo: false
|
sudo: false
|
||||||
filter_secrets: false
|
filter_secrets: false
|
||||||
|
|
||||||
@ -22,6 +27,7 @@ addons:
|
|||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
|
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
|
||||||
packages:
|
packages:
|
||||||
|
- lib32stdc++6
|
||||||
- libstdc++6
|
- libstdc++6
|
||||||
- fonts-droid
|
- fonts-droid
|
||||||
language: node_js
|
language: node_js
|
||||||
@ -31,6 +37,7 @@ git:
|
|||||||
# We rely on git tags for determining the version.
|
# We rely on git tags for determining the version.
|
||||||
depth: false
|
depth: false
|
||||||
cache:
|
cache:
|
||||||
|
bundler: true
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.pub-cache
|
- $HOME/.pub-cache
|
||||||
install:
|
install:
|
||||||
@ -41,4 +48,4 @@ before_script:
|
|||||||
- ./dev/bots/travis_setup.sh
|
- ./dev/bots/travis_setup.sh
|
||||||
script:
|
script:
|
||||||
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
|
- ulimit -S -n 2048 # https://github.com/flutter/flutter/issues/2976
|
||||||
- (./bin/cache/dart-sdk/bin/dart ./dev/bots/test.dart && ./dev/bots/travis_upload.sh)
|
- ./dev/bots/travis_script.sh
|
||||||
|
@ -3,5 +3,6 @@ set -ex
|
|||||||
|
|
||||||
if [ -n "$TRAVIS" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
if [ -n "$TRAVIS" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||||
gem install coveralls-lcov
|
gem install coveralls-lcov
|
||||||
|
gem install bundler
|
||||||
npm install -g firebase-tools@">=3.6.1 <3.7.0"
|
npm install -g firebase-tools@">=3.6.1 <3.7.0"
|
||||||
fi
|
fi
|
||||||
|
38
dev/bots/travis_script.sh
Executable file
38
dev/bots/travis_script.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
export PATH="$PWD/bin:$PWD/bin/cache/dart-sdk/bin:$PATH"
|
||||||
|
|
||||||
|
if [ "$SHARD" = "build_and_deploy_gallery" ]; then
|
||||||
|
echo "Building and deploying Flutter Gallery"
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
|
echo "Building Flutter Gallery for Android..."
|
||||||
|
export ANDROID_HOME=`pwd`/android-sdk
|
||||||
|
(cd examples/flutter_gallery; flutter build apk --release)
|
||||||
|
echo "Android Flutter Gallery built"
|
||||||
|
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then # TODO(xster): add back && [ "$TRAVIS_BRANCH" = "dev" ] after testing
|
||||||
|
echo "Deploying to Play Store..."
|
||||||
|
(cd examples/flutter_gallery/android; bundle exec fastlane deploy_play_store)
|
||||||
|
else
|
||||||
|
echo "Flutter Gallery is only deployed to the Play Store on merged dev branch commits"
|
||||||
|
fi
|
||||||
|
elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||||
|
echo "Building Flutter Gallery for iOS..."
|
||||||
|
(cd examples/flutter_gallery; flutter build ios --release --no-codesign)
|
||||||
|
echo "iOS Flutter Gallery built"
|
||||||
|
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then # TODO(xster): add back && [ "$TRAVIS_BRANCH" = "dev" ] after testing
|
||||||
|
echo "Re-building with distribution profile and deploying to TestFlight..."
|
||||||
|
(cd examples/flutter_gallery/ios; bundle exec fastlane build_and_deploy_testflight)
|
||||||
|
else
|
||||||
|
echo "Flutter Gallery is only deployed to the TestFlight on merged dev branch commits"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [ "$SHARD" = "docs" ]; then
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
|
# Generate the API docs, upload them
|
||||||
|
./dev/bots/docs.sh
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dart ./dev/bots/test.dart
|
||||||
|
fi
|
@ -10,6 +10,34 @@ if [ -n "$TRAVIS" ]; then
|
|||||||
echo "Installing Google Cloud SDK..."
|
echo "Installing Google Cloud SDK..."
|
||||||
curl https://sdk.cloud.google.com | bash > /dev/null
|
curl https://sdk.cloud.google.com | bash > /dev/null
|
||||||
echo "Google Cloud SDK installation completed."
|
echo "Google Cloud SDK installation completed."
|
||||||
|
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$SHARD" = "build_and_deploy_gallery" ]; then
|
||||||
|
# Background for not using Travis's built-in Android tags
|
||||||
|
# https://github.com/flutter/plugins/pull/145
|
||||||
|
# Copied from https://github.com/flutter/plugins/blame/master/.travis.yml
|
||||||
|
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
|
||||||
|
mkdir android-sdk
|
||||||
|
unzip -qq sdk-tools-linux-3859397.zip -d android-sdk
|
||||||
|
export ANDROID_HOME=`pwd`/android-sdk
|
||||||
|
export PATH=`pwd`/android-sdk/tools/bin:$PATH
|
||||||
|
mkdir -p /home/travis/.android # silence sdkmanager warning
|
||||||
|
echo 'count=0' > /home/travis/.android/repositories.cfg # silence sdkmanager warning
|
||||||
|
# suppressing output of sdkmanager to keep log under 4MB (travis limit)
|
||||||
|
echo y | sdkmanager "tools" >/dev/null
|
||||||
|
echo y | sdkmanager "platform-tools" >/dev/null
|
||||||
|
echo y | sdkmanager "build-tools;26.0.3" >/dev/null
|
||||||
|
echo y | sdkmanager "platforms;android-26" >/dev/null
|
||||||
|
echo y | sdkmanager "extras;android;m2repository" >/dev/null
|
||||||
|
echo y | sdkmanager "extras;google;m2repository" >/dev/null
|
||||||
|
echo y | sdkmanager "patcher;v4" >/dev/null
|
||||||
|
sdkmanager --list
|
||||||
|
wget http://services.gradle.org/distributions/gradle-4.1-bin.zip
|
||||||
|
unzip -qq gradle-4.1-bin.zip
|
||||||
|
export GRADLE_HOME=$PWD/gradle-4.1
|
||||||
|
export PATH=$GRADLE_HOME/bin:$PATH
|
||||||
|
gradle -v
|
||||||
|
./bin/flutter doctor
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# disable analytics on the bots and download Flutter dependencies
|
# disable analytics on the bots and download Flutter dependencies
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
export PATH="$PWD/bin:$PWD/bin/cache/dart-sdk/bin:$PATH"
|
|
||||||
|
|
||||||
if [ "$TRAVIS_OS_NAME" = "linux" ] && \
|
|
||||||
[ "$SHARD" = "docs" ]; then
|
|
||||||
# generate the API docs, upload them
|
|
||||||
./dev/bots/docs.sh
|
|
||||||
fi
|
|
@ -11,6 +11,14 @@ if (flutterRoot == null) {
|
|||||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def flutterVersion = file("$flutterRoot/version").text
|
||||||
|
def flutterVersionComponents = flutterVersion.split(/[^0-9]+/)
|
||||||
|
// Let the integer version code of xx.yy.zz-pre.nnn be xxyyzznnn.
|
||||||
|
int flutterVersionCode = Math.min(flutterVersionComponents[0].toInteger(), 20) * 100000000
|
||||||
|
flutterVersionCode += Math.min(flutterVersionComponents[1].toInteger(), 99) * 1000000
|
||||||
|
flutterVersionCode += Math.min(flutterVersionComponents[2].toInteger(), 999) * 1000
|
||||||
|
flutterVersionCode += Math.min(flutterVersionComponents[3]?.toInteger() ?: 0, 999)
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
@ -25,8 +33,9 @@ android {
|
|||||||
applicationId "io.flutter.demo.gallery"
|
applicationId "io.flutter.demo.gallery"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
versionCode 1
|
// The Gallery app's version is defined by the Flutter framework's version.
|
||||||
versionName "0.0.1"
|
versionCode flutterVersionCode
|
||||||
|
versionName "$flutterVersion"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,13 +7,14 @@ default_platform(:android)
|
|||||||
# flutter build apk --release
|
# flutter build apk --release
|
||||||
# to build the app using the Flutter toolchain.
|
# to build the app using the Flutter toolchain.
|
||||||
platform :android do
|
platform :android do
|
||||||
desc 'Push the built release APK to alpha'
|
desc 'Push the built release APK to alpha or beta depending on current branch'
|
||||||
lane :deploy_play_store_alpha do
|
lane :deploy_play_store do
|
||||||
upload_to_play_store(
|
upload_to_play_store(
|
||||||
track: 'alpha',
|
track: ENV['TRAVIS_BRANCH'] == 'beta' ? 'beta' : 'alpha',
|
||||||
apk: '../build/app/outputs/apk/release/app-release.apk',
|
apk: '../build/app/outputs/apk/release/app-release.apk',
|
||||||
json_key_data: ENV['GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE'],
|
json_key_data: ENV['GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE'],
|
||||||
skip_upload_screenshots: true
|
skip_upload_screenshots: true,
|
||||||
|
skip_upload_images: true
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.3 KiB |
@ -10,15 +10,20 @@ default_platform(:ios)
|
|||||||
# 1- Signing using the publishing credentials; and
|
# 1- Signing using the publishing credentials; and
|
||||||
# 2- xcodebuild with archive option
|
# 2- xcodebuild with archive option
|
||||||
platform :ios do
|
platform :ios do
|
||||||
desc "Push a new release to TestFlight"
|
desc 'Push a new release to TestFlight'
|
||||||
lane :build_and_deploy_testflight do
|
lane :build_and_deploy_testflight do
|
||||||
# Doesn't do anything when not on Travis.
|
# Doesn't do anything when not on Travis.
|
||||||
setup_travis
|
setup_travis
|
||||||
|
|
||||||
|
increment_version_number(
|
||||||
|
# Relative to this file. Accept only digits and dots.
|
||||||
|
version_number: File.read('../../../../version').gsub(/[^0-9\.]/, '')
|
||||||
|
)
|
||||||
|
|
||||||
# Retrieves all the necessary certs and provisioning profiles.
|
# Retrieves all the necessary certs and provisioning profiles.
|
||||||
sync_code_signing(
|
sync_code_signing(
|
||||||
git_url: ENV["PUBLISHING_MATCH_CERTIFICATE_REPO"],
|
git_url: ENV['PUBLISHING_MATCH_CERTIFICATE_REPO'],
|
||||||
type: "appstore",
|
type: 'appstore',
|
||||||
readonly: true
|
readonly: true
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -27,19 +32,19 @@ platform :ios do
|
|||||||
# then run session.
|
# then run session.
|
||||||
disable_automatic_code_signing
|
disable_automatic_code_signing
|
||||||
update_project_provisioning(
|
update_project_provisioning(
|
||||||
xcodeproj: "Runner.xcodeproj",
|
xcodeproj: 'Runner.xcodeproj',
|
||||||
target_filter: "Runner",
|
target_filter: 'Runner',
|
||||||
build_configuration: "Release",
|
build_configuration: 'Release',
|
||||||
profile: ENV["sigh_io.flutter.demo.gallery_appstore_profile-path"],
|
profile: ENV['sigh_io.flutter.demo.gallery_appstore_profile-path'],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Build and archive the app again.
|
# Build and archive the app again.
|
||||||
build_ios_app(
|
build_ios_app(
|
||||||
workspace: "Runner.xcworkspace",
|
workspace: 'Runner.xcworkspace',
|
||||||
scheme: "Runner",
|
scheme: 'Runner',
|
||||||
export_method: "app-store",
|
export_method: 'app-store',
|
||||||
# Verify that the right signing identity is used for publishing.
|
# Verify that the right signing identity is used for publishing.
|
||||||
codesigning_identity: "iPhone Distribution: Store Ladd (S8QB4VV633)",
|
codesigning_identity: 'iPhone Distribution: Store Ladd (S8QB4VV633)',
|
||||||
)
|
)
|
||||||
|
|
||||||
upload_to_testflight
|
upload_to_testflight
|
||||||
|
Loading…
x
Reference in New Issue
Block a user