mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Move docs and gallery deployment to Cirrus (#19925)
This moves the docs generation and gallery upload to Cirrus CI, which is another step in turning off Travis.
This commit is contained in:
parent
30f1fbd0b4
commit
c36032c65f
48
.cirrus.yml
48
.cirrus.yml
@ -3,26 +3,26 @@ container:
|
||||
|
||||
task:
|
||||
env:
|
||||
OS_NAME: linux
|
||||
# Rename the SDK directory to include a space so that we constantly
|
||||
# test path names with spaces in them.
|
||||
CIRRUS_WORKING_DIR: "/tmp/flutter sdk"
|
||||
PATH: "$CIRRUS_WORKING_DIR/bin:$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin:$PATH"
|
||||
|
||||
git_fetch_script: git fetch origin
|
||||
setup_script: |
|
||||
echo "SDK directory is: $PWD"
|
||||
./bin/flutter --version
|
||||
|
||||
# disable analytics on the bots and download Flutter dependencies
|
||||
./bin/flutter config --no-analytics
|
||||
|
||||
# run pub get in all the repo packages
|
||||
./bin/flutter update-packages
|
||||
|
||||
git fetch origin master
|
||||
setup_script: ./dev/bots/cirrus_setup.sh
|
||||
matrix:
|
||||
- name: docs
|
||||
env:
|
||||
SHARD: docs
|
||||
# For uploading docs to Firebase
|
||||
FIREBASE_TOKEN: ENCRYPTED[a40fcb68452b92254b7f532a460529b5e4ca51d6d338a8fae8db9db832ad3c2a7efb962e257de79686a9345f4a18661a]
|
||||
docs_script: ./dev/bots/docs.sh
|
||||
- name: deploy_gallery
|
||||
env:
|
||||
SHARD: deploy_gallery
|
||||
GOOGLE_DEVELOPER_SERVICE_ACCOUNT_ACTOR_FASTLANE: ENCRYPTED[d9ac1462c3c556fc2f8165c9d5566a16497d8ebc38a50357f7f3abf136b7f83e1d1d76dde36fee356cb0f9ebf7a89346]
|
||||
ANDROID_GALLERY_UPLOAD_KEY: ENCRYPTED[0b3e681b4507aec433ef29c79b715f15f8c75ecd25315ea286b0b2bcb8b28d578634eead5aa2c54086a25e8da1bb219a]
|
||||
test_script: ./dev/bots/deploy_gallery.sh
|
||||
- name: analyze
|
||||
env:
|
||||
SHARD: analyze
|
||||
@ -49,6 +49,7 @@ task:
|
||||
name: tests-windows
|
||||
env:
|
||||
SHARD: tests
|
||||
OS_NAME: windows
|
||||
windows_container:
|
||||
image: cirrusci/windowsservercore:2016
|
||||
os_version: 2016
|
||||
@ -67,6 +68,7 @@ task:
|
||||
name: tool_tests-windows
|
||||
env:
|
||||
SHARD: tool_tests
|
||||
OS_NAME: windows
|
||||
windows_container:
|
||||
image: cirrusci/windowsservercore:2016
|
||||
os_version: 2016
|
||||
@ -81,10 +83,31 @@ task:
|
||||
test_all_script:
|
||||
- bin\cache\dart-sdk\bin\dart.exe -c dev\bots\test.dart
|
||||
|
||||
task:
|
||||
name: deploy_gallery-macos
|
||||
env:
|
||||
SHARD: deploy_gallery
|
||||
OS_NAME: macos
|
||||
# Apple Certificates Match Passphrase
|
||||
MATCH_PASSWORD: ENCRYPTED[db07f252234397090e3ec59152d9ec1831f5ecd0ef97d247b1dca757bbb9ef9b7c832a39bce2caf1949ccdf097e59a73]
|
||||
# Apple Fastlane Password
|
||||
FASTLANE_PASSWORD: ENCRYPTED[0bf9bb0cc2cb32a0ed18470cf2c9df0f587cce5f8b04adbd6cff15ca5bde7a74f721ee580227b132ab6b032f08e52ae0]
|
||||
# Private repo for publishing certificates.
|
||||
PUBLISHING_MATCH_CERTIFICATE_REPO: git@github.com:flutter/private_publishing_certificates.git
|
||||
osx_instance:
|
||||
image: high-sierra-xcode-9.4.1
|
||||
git_fetch_script: git fetch origin
|
||||
setup_script:
|
||||
- bin/flutter config --no-analytics
|
||||
- bin/flutter update-packages
|
||||
test_all_script:
|
||||
- ./dev/bots/deploy_gallery.sh
|
||||
|
||||
task:
|
||||
name: tests-macos
|
||||
env:
|
||||
SHARD: tests
|
||||
OS_NAME: macos
|
||||
osx_instance:
|
||||
image: high-sierra-xcode-9.4.1
|
||||
git_fetch_script: git fetch origin
|
||||
@ -99,6 +122,7 @@ task:
|
||||
name: tool_tests-macos
|
||||
env:
|
||||
SHARD: tool_tests
|
||||
OS_NAME: macos
|
||||
osx_instance:
|
||||
image: high-sierra-xcode-9.4.1
|
||||
git_fetch_script: git fetch origin
|
||||
|
86
dev/bots/cirrus_setup.sh
Executable file
86
dev/bots/cirrus_setup.sh
Executable file
@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# This script is only meant to be run by the Cirrus CI system, not locally.
|
||||
# It must be run from the root of the Flutter repo.
|
||||
|
||||
# Collects log output in a tmpfile, but only prints it if the command fails.
|
||||
function log_on_fail() {
|
||||
local COMMAND="$@"
|
||||
local TMPDIR="$(mktemp -d)"
|
||||
local TMPFILE="$TMPDIR/command.log"
|
||||
local EXIT=0
|
||||
if ("$@" > "$TMPFILE" 2>&1); then
|
||||
echo "'$COMMAND' succeeded."
|
||||
else
|
||||
EXIT=$?
|
||||
cat "$TMPFILE" 1>&2
|
||||
echo "FAIL: '$COMMAND' exited with code $EXIT" 1>&2
|
||||
fi
|
||||
rm -rf "$TMPDIR"
|
||||
return "$EXIT"
|
||||
}
|
||||
|
||||
function run_sdkmanager() {
|
||||
echo "y" | sdkmanager "$@"
|
||||
}
|
||||
|
||||
function setup_android() {
|
||||
echo "Installing Android SDK so the Gallery app can built and/or deployed for $CIRRUS_BRANCH."
|
||||
set -x
|
||||
wget --progress=dot:giga 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/.android" # silence sdkmanager warning
|
||||
# Make sure we don't print our secrets to the logs!
|
||||
set +x
|
||||
if [ -n "$ANDROID_GALLERY_UPLOAD_KEY" ]; then
|
||||
echo "$ANDROID_GALLERY_UPLOAD_KEY" | base64 --decode > "$HOME/.android/debug.keystore"
|
||||
fi
|
||||
echo 'count=0' > "$HOME/.android/repositories.cfg" # silence sdkmanager warning
|
||||
local SDKS=(
|
||||
"tools"
|
||||
"platform-tools"
|
||||
"build-tools;27.0.3"
|
||||
"platforms;android-27"
|
||||
"extras;android;m2repository"
|
||||
"extras;google;m2repository"
|
||||
"patcher;v4"
|
||||
)
|
||||
for SDK in "${SDKS[@]}"; do
|
||||
echo "Installing '$SDK' with sdkmanager"
|
||||
log_on_fail run_sdkmanager "$SDK"
|
||||
done
|
||||
set -x
|
||||
sdkmanager --list
|
||||
wget --progress=dot:giga http://services.gradle.org/distributions/gradle-4.4-bin.zip
|
||||
unzip -qq gradle-4.4-bin.zip
|
||||
export GRADLE_HOME="$PWD/gradle-4.4"
|
||||
export PATH="$GRADLE_HOME/bin:$PATH"
|
||||
gradle -v
|
||||
set +x
|
||||
}
|
||||
|
||||
echo "Flutter SDK directory is: $PWD"
|
||||
|
||||
if [[ -n "$CIRRUS_CI" && "$OS_NAME" == "linux" && "$SHARD" == "deploy_gallery" ]]; then
|
||||
setup_android
|
||||
fi
|
||||
|
||||
# Run flutter to download dependencies and precompile things, and to disable
|
||||
# analytics on the bots.
|
||||
echo "Downloading build dependencies and pre-compiling Flutter snapshot"
|
||||
log_on_fail ./bin/flutter config --no-analytics
|
||||
|
||||
# Run doctor, to print it to the log for debugging purposes.
|
||||
./bin/flutter doctor -v
|
||||
|
||||
# Run pub get in all the repo packages.
|
||||
echo "Updating packages for Flutter."
|
||||
log_on_fail ./bin/flutter update-packages
|
||||
|
||||
# Make sure the master branch has been fetched so we can determine a branch
|
||||
# point for PRs.
|
||||
git fetch origin master
|
77
dev/bots/deploy_gallery.sh
Executable file
77
dev/bots/deploy_gallery.sh
Executable file
@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
function script_location() {
|
||||
local script_location="${BASH_SOURCE[0]}"
|
||||
# Resolve symlinks
|
||||
while [[ -h "$script_location" ]]; do
|
||||
DIR="$(cd -P "$(dirname "$script_location")" >/dev/null && pwd)"
|
||||
script_location="$(readlink "$script_location")"
|
||||
[[ "$script_location" != /* ]] && script_location="$DIR/$script_location"
|
||||
done
|
||||
echo "$(cd -P "$(dirname "$script_location")" >/dev/null && pwd)"
|
||||
}
|
||||
|
||||
# So that users can run this script locally from any directory and it will work as
|
||||
# expected.
|
||||
SCRIPT_LOCATION="$(script_location)"
|
||||
FLUTTER_ROOT="$(dirname "$(dirname "$SCRIPT_LOCATION")")"
|
||||
|
||||
export PATH="$FLUTTER_ROOT/bin:$FLUTTER_ROOT/bin/cache/dart-sdk/bin:$PATH"
|
||||
|
||||
set -x
|
||||
|
||||
cd "$FLUTTER_ROOT"
|
||||
|
||||
if [[ "$SHARD" = "deploy_gallery" ]]; then
|
||||
version="$(<version)"
|
||||
if [[ "$OS_NAME" == "linux" ]]; then
|
||||
echo "Building Flutter Gallery $version for Android..."
|
||||
export ANDROID_HOME="$PWD/android-sdk"
|
||||
(
|
||||
cd examples/flutter_gallery
|
||||
flutter build apk --release -t lib/main_publish.dart
|
||||
)
|
||||
echo "Android Flutter Gallery built"
|
||||
if [[ -z "$CIRRUS_PULL_REQUEST" && "$CIRRUS_BRANCH" == "dev" && "$version" != *"pre"* ]]; then
|
||||
echo "Deploying Flutter Gellery $version to Play Store..."
|
||||
(
|
||||
cd examples/flutter_gallery/android
|
||||
bundle install
|
||||
bundle exec fastlane deploy_play_store
|
||||
)
|
||||
else
|
||||
echo "Not deployed: Flutter Gallery is only deployed to the Play Store on merged and tagged dev branch commits"
|
||||
fi
|
||||
elif [[ "$OS_NAME" == "macos" ]]; then
|
||||
echo "Building Flutter Gallery $version for iOS..."
|
||||
(
|
||||
cd examples/flutter_gallery
|
||||
flutter build ios --release --no-codesign -t lib/main_publish.dart
|
||||
)
|
||||
echo "iOS Flutter Gallery built"
|
||||
if [[ -z "$CIRRUS_PULL_REQUEST" ]]; then
|
||||
if [[ "$CIRRUS_BRANCH" == "dev" && "$version" != *"pre"* ]]; then
|
||||
echo "Archiving with distribution profile and deploying to TestFlight..."
|
||||
(
|
||||
cd examples/flutter_gallery/ios
|
||||
bundle install
|
||||
bundle exec fastlane build_and_deploy_testflight upload:true
|
||||
)
|
||||
else
|
||||
echo "Archiving with distribution profile..."
|
||||
(
|
||||
cd examples/flutter_gallery/ios
|
||||
bundle install
|
||||
bundle exec fastlane build_and_deploy_testflight
|
||||
)
|
||||
echo "Archive is only deployed to TestFlight on tagged dev branch commits"
|
||||
fi
|
||||
else
|
||||
echo "Not deployed: Flutter Gallery is only deployed to TestFlight on merged and tagged dev branch commits"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Doing nothing: not on the 'deploy_gallery' SHARD."
|
||||
fi
|
@ -8,8 +8,6 @@ echo "Running docs.sh"
|
||||
export FLUTTER_ROOT="$PWD"
|
||||
export PATH="$PWD/bin:$PATH"
|
||||
|
||||
# This is called from travis_upload.sh on Travis.
|
||||
|
||||
# Make sure dart is installed
|
||||
bin/flutter --version
|
||||
|
||||
@ -33,13 +31,13 @@ bin/cache/dart-sdk/bin/dart dev/tools/java_and_objc_doc.dart
|
||||
# Ensure google webmaster tools can verify our site.
|
||||
cp dev/docs/google2ed1af765c529f57.html dev/docs/doc
|
||||
|
||||
# Upload new API docs when on Travis
|
||||
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||
echo "This is not a pull request; considering whether to upload docs... (branch=$TRAVIS_BRANCH)"
|
||||
if [ "$TRAVIS_BRANCH" == "master" -o "$TRAVIS_BRANCH" == "beta" ]; then
|
||||
# Upload new API docs when on Cirrus
|
||||
if [[ -n "$CIRRUS_CI" && -z "$CIRRUS_PR" ]]; then
|
||||
echo "This is not a pull request; considering whether to upload docs... (branch=$CIRRUS_BRANCH)"
|
||||
if [[ "$CIRRUS_BRANCH" == "master" || "$CIRRUS_BRANCH" == "beta" ]]; then
|
||||
cd dev/docs
|
||||
|
||||
if [ "$TRAVIS_BRANCH" == "master" ]; then
|
||||
if [[ "$CIRRUS_BRANCH" == "master" ]]; then
|
||||
echo "Updating master docs: https://master-docs-flutter-io.firebaseapp.com/"
|
||||
echo -e "User-agent: *\nDisallow: /" > doc/robots.txt
|
||||
while : ; do
|
||||
@ -49,7 +47,7 @@ if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$TRAVIS_BRANCH" == "beta" ]; then
|
||||
if [[ "$CIRRUS_BRANCH" == "beta" ]]; then
|
||||
echo "Updating beta docs: https://docs.flutter.io/"
|
||||
while : ; do
|
||||
firebase deploy --project docs-flutter-io && break
|
||||
|
Loading…
Reference in New Issue
Block a user