release_testing_setup.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Copyright 2020 Google LLC
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # This script will `git clone` the SDK repo to local and look for the latest
  15. # release branch
  16. set -xe
  17. TESTINGMODE=${1-}
  18. if [ -f "${HOME}/.cocoapods/repos" ]; then
  19. find "${HOME}/.cocoapods/repos" -type d -maxdepth 1 -exec sh -c 'pod repo remove $(basename {})' \;
  20. fi
  21. mkdir -p "${local_sdk_repo_dir}"
  22. echo "git clone ${podspec_repo_branch} from github.com/firebase/firebase-ios-sdk.git to ${local_sdk_repo_dir}"
  23. set +x
  24. # Using token here to update tags later.
  25. git clone -q https://"${BOT_TOKEN}"@github.com/firebase/firebase-ios-sdk.git "${local_sdk_repo_dir}"
  26. set -x
  27. cd "${local_sdk_repo_dir}"
  28. # The chunk below is to determine the latest version by searching
  29. # Get the latest origin/release-X.Y.Z branch in the remote repo for release branch testing.
  30. release_branch=$(git branch -l -r --sort=-version:refname origin/release-* | head -n 1 )
  31. # Get the latest released tag Cocoapods-X.Y.Z for prerelease testing, beta version will be excluded.
  32. test_version=$(git tag -l --sort=-version:refname CocoaPods-*[0-9] | head -n 1)
  33. if [ -z $podspec_repo_branch ];then
  34. # Get release branch, origin/release-X.Y.Z.
  35. podspec_repo_branch=$(echo $release_branch | sed -n 's/\s*//p')
  36. fi
  37. git config --global user.email "google-oss-bot@example.com"
  38. git config --global user.name "google-oss-bot"
  39. git checkout "${podspec_repo_branch}"
  40. if [ "$TESTINGMODE" = "release_testing" ]; then
  41. # Latest release branch with prefix CocoaPods, e.g. CocoaPods-7.11
  42. latest_branch_version=$(git branch -l -r --sort=-v:refname origin/release-* | head -n 1 | sed -n 's/^[ \t]*origin\/release/CocoaPods/p' )
  43. # Latest tag of release branch on the repo, e.g. Cocoapods-7.9.0
  44. latest_release_branch_tag=$(git tag -l --sort=-version:refname "$latest_branch_version"*[0-9] | head -n 1)
  45. echo "Podspecs tags of Nightly release testing will be updated to ${latest_release_branch_tag}."
  46. # Update source and tag, e.g. ":tag => 'CocoaPods-' + s.version.to_s" to
  47. # ":tag => 'CocoaPods-7.9.0'"
  48. sed -i "" "s/\s*:tag.*/:tag => '${latest_release_branch_tag}'/" *.podspec
  49. elif [ "$TESTINGMODE" = "prerelease_testing" ]; then
  50. tag_version="${test_version}.nightly"
  51. echo "A new tag, ${tag_version},for prerelease testing will be created."
  52. set +e
  53. # If tag_version is new to the remote, remote cannot delete a non-existent
  54. # tag, so error is allowed here.
  55. git push origin --delete "${tag_version}"
  56. set -e
  57. git tag -f -a "${tag_version}" -m "release testing"
  58. git push origin "${tag_version}"
  59. # Update source and tag, e.g. ":tag => 'CocoaPods-' + s.version.to_s" to
  60. # ":tag => ${test_version}.nightly"
  61. sed -i "" "s/\s*:tag.*/:tag => '${tag_version}'/" *.podspec
  62. fi