| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- # Copyright 2018 Google
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # Within Travis, runs the given command if the current project has changes
- # worth building.
- #
- # Examines the following Travis-supplied environment variables:
- # - TRAVIS_PULL_REQUEST - the PR number or false for full build
- # - TRAVIS_COMMIT_RANGE - the range of commits under test; empty on a new
- # branch
- #
- # Also examines the following configured environment variables that should be
- # specified in an env: block
- # - PROJECT - Firebase or Firestore
- # - METHOD - xcodebuild or cmake
- function check_changes() {
- if git diff --name-only "$TRAVIS_COMMIT_RANGE" | grep -Eq "$1"; then
- run=true
- fi
- }
- run=false
- # To force Travis to do a full run, change the "false" to "{PR number}" like
- # if [[ "$TRAVIS_PULL_REQUEST" == "904" ]]; then
- if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then
- # Full builds should run everything
- run=true
- elif [[ -z "$TRAVIS_COMMIT_RANGE" ]]; then
- # First builds on a branch should also run everything
- run=true
- else
- case "$PROJECT-$METHOD" in
- Firebase-pod-lib-lint) # Combines Firebase-* and InAppMessaging*
- check_changes '^(Firebase/Auth|Firebase/Database|Firebase/DynamicLinks|'\
- 'Firebase/Messaging|Firebase/Storage|GoogleUtilities|Interop|Example|'\
- 'FirebaseAnalyticsIntop.podspec|FirebaseAuth.podspec|FirebaseAuthInterop.podspec|'\
- 'FirebaseCoreDiagnostics.podspec|FirebaseCoreDiagnosticsInterop.podspec|'\
- 'FirebaseDatabase.podspec|FirebaseDynamicLinks.podspec|FirebaseMessaging.podspec|'\
- 'FirebaseStorage.podspec|FirebaseStorage.podspec|Firebase/InAppMessagingDisplay|'\
- 'InAppMessagingDisplay|InAppMessaging|Firebase/InAppMessaging|'\
- 'FirebaseInAppMessaging.podspec|FirebaseInAppMessagingDisplay.podspec|'\
- 'Firebase/InstanceID|FirebaseInstanceID.podspec)'
- ;;
- Firebase-*)
- check_changes '^(Firebase/Auth|Firebase/Core|Firebase/Database|Firebase/DynamicLinks|'\
- 'Firebase/Messaging|Firebase/Storage|GoogleUtilities|Interop|Example|'\
- 'FirebaseAnalyticsIntop.podspec|FirebaseAuth.podspec|FirebaseAuthInterop.podspec|'\
- 'FirebaseCore.podspec|FirebaseCoreDiagnostics.podspec|FirebaseCoreDiagnosticsInterop.podspec|'\
- 'FirebaseDatabase.podspec|FirebaseDynamicLinks.podspec|FirebaseMessaging.podspec|'\
- 'FirebaseStorage.podspec|FirebaseStorage.podspec|Firebase/InstanceID|FirebaseInstanceID.podspec)'
- ;;
- Core-*)
- check_changes '^(Firebase/Core|Example/Core/Tests|GoogleUtilities|FirebaseCore.podspec)'
- ;;
- ABTesting-*)
- check_changes '^(Firebase/Core|FirebaseABTesting)'
- ;;
- Auth-*)
- check_changes '^(Firebase/Core|Firebase/Auth|Example/Auth|GoogleUtilities|FirebaseAuth.podspec)'
- ;;
- CoreDiagnostics-*)
- check_changes '^(Firebase/CoreDiagnostics|Example/CoreDiagnostics/Tests|FirebaseCoreDiagnostics.podspec|'\
- 'FirebaseCoreDiagnosticsInterop|FirebaseCoreDiagnosticsInterop.podspec)'
- ;;
- Database-*)
- check_changes '^(Firebase/Core|Firebase/Database|Example/Database|GoogleUtilities|FirebaseDatabase.podspec)'
- ;;
- DynamicLinks-*)
- check_changes '^(Firebase/Core|Firebase/DynamicLinks|Example/DynamicLinks|GoogleUtilities|FirebaseDynamicLinks.podspec)'
- ;;
- Functions-*)
- check_changes '^(Firebase/Core|Functions|GoogleUtilities|FirebaseFunctions.podspec)'
- ;;
- GoogleUtilities-*)
- check_changes '^(GoogleUtilities|GoogleUtilities.podspec)'
- ;;
- InAppMessaging-*)
- check_changes '^(Firebase/InAppMessagingDisplay|InAppMessagingDisplay|InAppMessaging|'\
- 'Firebase/InAppMessaging)'
- ;;
- InstanceID-*)
- check_changes '^(Firebase/InstanceID|Example/InstanceID|Firebase/Core|GoogleUtilities|'\
- 'FirebaseInstanceID.podspec)'
- ;;
- Firestore-xcodebuild|Firestore-pod-lib-lint)
- check_changes '^(Firestore|FirebaseFirestore.podspec|FirebaseFirestoreSwift.podspec|'\
- 'GoogleUtilities)'
- ;;
- Firestore-cmake)
- check_changes '^(Firestore/(core|third_party)|cmake|GoogleUtilities)'
- ;;
- GoogleDataTransport-*)
- check_changes '^(GoogleDataTransport|GoogleDataTransport.podspec)'
- ;;
- GoogleDataTransportIntegrationTest-*)
- check_changes '^(GoogleDataTransport|GoogleDataTransport.podspec)'
- ;;
- GoogleDataTransportCCTSupport-*)
- check_changes '^(GoogleDataTransportCCTSupport|GoogleDataTransportCCTSupport.podspec|GoogleDataTransport|GoogleDataTransport.podspec)'
- ;;
- Messaging-*)
- check_changes '^(Firebase/Core|Firebase/Messaging|Example/Messaging|GoogleUtilities|FirebaseMessaging.podspec|Firebase/InstanceID)'
- ;;
- RemoteConfig-*)
- check_changes '^(Firebase/Core|FirebaseRemoteConfig)'
- ;;
- Storage-*)
- check_changes '^(Firebase/Core|Firebase/Storage|Example/Storage|GoogleUtilities|FirebaseStorage.podspec)'
- ;;
- Installations-*)
- check_changes '^(Firebase/Core|GoogleUtilities|FirebaseInstallations|FirebaseInstallations.podspec)'
- ;;
- *)
- echo "Unknown project-method combo" 1>&2
- echo " PROJECT=$PROJECT" 1>&2
- echo " METHOD=$METHOD" 1>&2
- exit 1
- ;;
- esac
- fi
- # Always rebuild if Travis configuration and/or build scripts changed.
- check_changes '^.travis.yml'
- check_changes '^Gemfile.lock'
- check_changes '^scripts/(build|if_changed|install_prereqs|pod_lib_lint).(rb|sh)'
- if [[ "$run" == true ]]; then
- "$@"
- else
- echo "skipped $*"
- fi
|