From 3a698e2d08032a021c145420e1a90e89f65a36f3 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Wed, 24 Jun 2020 19:07:31 -0700 Subject: [PATCH] feat(docs-infra): update deploy-to-firebase.sh script to support v9 multisite setup (#37721) v9.angular.io was used to pilot the firebase hosting multisites setup for angular.io. The deployments so far have been done manually to control the deployment process. This change, automates the deployment for v9.angular.io so that future deployments can be made from the CI. See https://angular-team.atlassian.net/browse/DEV-125 for more info. In the process of updating the scripts I rediscovered a bug in the deploy-to-firebase.sh script that incorrect compared two numbers as strings. This previously worked correctly because we were comparing single digit numbers. With the release of v10, we now compare 9 > 10 which behaves differently for strings and numbers. The bug was fixed by switching to an arithmetic comparison of the two variables. This bug has been fixed on the master branch but not on the 9.1.x branch. I realized this during the rebase, but found my version to be a bit cleaner, so I kept it. PR Close #37721 --- aio/firebase.json | 1 + aio/scripts/deploy-to-firebase.sh | 17 ++++++++++++++--- aio/scripts/deploy-to-firebase.test.sh | 25 +++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/aio/firebase.json b/aio/firebase.json index 752e81bde2..5a8970eef8 100644 --- a/aio/firebase.json +++ b/aio/firebase.json @@ -1,5 +1,6 @@ { "hosting": { + "target": "aio", "public": "dist", "cleanUrls": true, "redirects": [ diff --git a/aio/scripts/deploy-to-firebase.sh b/aio/scripts/deploy-to-firebase.sh index dd025e2b78..a6d7ca38a3 100755 --- a/aio/scripts/deploy-to-firebase.sh +++ b/aio/scripts/deploy-to-firebase.sh @@ -33,7 +33,7 @@ else readonly majorVersionStable=${CI_STABLE_BRANCH%%.*} # Do not deploy if the major version is not less than the stable branch major version - if [[ !( "$majorVersion" -lt "$majorVersionStable" ) ]]; then + if (( $majorVersion >= $majorVersionStable )); then echo "Skipping deploy of branch \"$CI_BRANCH\" to firebase." echo "We only deploy archive branches with the major version less than the stable branch: \"$CI_STABLE_BRANCH\"" exit 0 @@ -105,9 +105,20 @@ fi # Check payload size yarn payload-size + # Deploy to Firebase - yarn firebase use "$projectId" --token "$firebaseToken" - yarn firebase deploy --message "Commit: $CI_COMMIT" --non-interactive --token "$firebaseToken" + + # Special case v9-angular-io because its piloting the firebase hosting "multisites" setup + # See https://angular-team.atlassian.net/browse/DEV-125 for more info. + if [[ "$projectId" == "v9-angular-io" ]]; then + yarn firebase use aio-staging --token "$firebaseToken" + yarn firebase target:apply hosting aio $projectId --token "$firebaseToken" + yarn firebase deploy --only hosting:aio --message "Commit: $CI_COMMIT" --non-interactive --token "$firebaseToken" + elif + yarn firebase use "$projectId" --token "$firebaseToken" + yarn firebase deploy --message "Commit: $CI_COMMIT" --non-interactive --token "$firebaseToken" + fi + # Run PWA-score tests yarn test-pwa-score "$deployedUrl" "$CI_AIO_MIN_PWA_SCORE" diff --git a/aio/scripts/deploy-to-firebase.test.sh b/aio/scripts/deploy-to-firebase.test.sh index 575cab280d..37b4e3d832 100755 --- a/aio/scripts/deploy-to-firebase.test.sh +++ b/aio/scripts/deploy-to-firebase.test.sh @@ -143,6 +143,31 @@ Deployment URL : https://v2.angular.io/" check "$actual" "$expected" ) +( + echo ===== archive - v9-angular-io multisite special case - deploy success + actual=$( + export BASH_ENV=/dev/null + export CI_REPO_OWNER=angular + export CI_REPO_NAME=angular + export CI_PULL_REQUEST=false + export CI_BRANCH=9.1.x + export CI_STABLE_BRANCH=10.0.x + export CI_COMMIT=$(git ls-remote origin 9.1.x | cut -c1-40) + export CI_SECRET_AIO_DEPLOY_FIREBASE_TOKEN=XXXXX + $deployToFirebaseDryRun + ) + expected="Git branch : 9.1.x +Build/deploy mode : archive +Firebase project : v9-angular-io +Deployment URL : https://v9.angular.io/" + # TODO: This test incorrectly expects the Firebase project to be v9-angular-io. + # v9-angular-io is a "multisites" project currently within the aio-staging project + # This setup is temporary and was created in order to deploy v9.angular.io without + # disruptions. + # See https://angular-team.atlassian.net/browse/DEV-125 for more info. + check "$actual" "$expected" +) + ( echo ===== archive - skip deploy - commit not HEAD actual=$(