From e95e9fed09a4ef19d093ad8c44611da396c61d01 Mon Sep 17 00:00:00 2001
From: Chris Rebert <github@chrisrebert.com>
Date: Mon, 27 Jun 2016 14:19:10 -0700
Subject: [PATCH] Allow PRs to be previewed at http://preview.twbsapps.com
 (#20179)

---
 .travis.yml             |   1 +
 Gruntfile.js            |  16 ++++++++++------
 grunt/gcp-key.json.enc  | Bin 0 -> 2304 bytes
 grunt/upload-preview.sh |  28 ++++++++++++++++++++++++++++
 4 files changed, 39 insertions(+), 6 deletions(-)
 create mode 100644 grunt/gcp-key.json.enc
 create mode 100755 grunt/upload-preview.sh

diff --git a/.travis.yml b/.travis.yml
index 2f5ad1e965..89ed1f7639 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,6 +25,7 @@ cache:
   directories:
     - node_modules
     - vendor/bundle
+    - "$HOME/google-cloud-sdk"
 env:
   global:
     - NPM_CONFIG_PROGRESS="false"
diff --git a/Gruntfile.js b/Gruntfile.js
index 065fea7746..69dfa3873e 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -277,6 +277,9 @@ module.exports = function (grunt) {
       },
       'postcss-docs': {
         command: 'npm run postcss-docs'
+      },
+      'upload-preview': {
+        command: './grunt/upload-preview.sh'
       }
     },
 
@@ -351,12 +354,13 @@ module.exports = function (grunt) {
   // Only run Sauce Labs tests if there's a Sauce access key
   if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
       // Skip Sauce if running a different subset of the test suite
-      runSubset('sauce-js-unit') &&
-      // Skip Sauce on Travis when [skip sauce] is in the commit message
-      isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
-    testSubtasks.push('babel:dev');
-    testSubtasks.push('connect');
-    testSubtasks.push('saucelabs-qunit');
+      runSubset('sauce-js-unit')) {
+    testSubtasks = testSubtasks.concat(['dist', 'docs-css', 'docs-js', 'clean:docs', 'copy:docs', 'exec:upload-preview']);
+    // Skip Sauce on Travis when [skip sauce] is in the commit message
+    if (isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
+      testSubtasks.push('connect');
+      testSubtasks.push('saucelabs-qunit');
+    }
   }
   grunt.registerTask('test', testSubtasks);
 
diff --git a/grunt/gcp-key.json.enc b/grunt/gcp-key.json.enc
new file mode 100644
index 0000000000000000000000000000000000000000..6e1856a2f1c95b55f73101734af73272433bdee8
GIT binary patch
literal 2304
zcmV+b3IFzxZA?8W-J-Q?pGQrAO<8@v<vSao$=l2q5#|s>!_)4Uwd^2~Vd9$Vm|b?(
z?ch-s^2r{NFt&oUa@q~`;8Bc{7WZ0?YsskKYrAU}r6}nO(3U-3phxs|19xldW?s)K
zuAS@-y>6d!ruNVy)3vN0-|bPTN<f+}Objj4$d_-SLfocQ4o;L~kIX2{n>1P2OF!(h
z;jMm^W%LD(l=?sBEV<n{DnvmS#A?Ui!ENJl#uDN2YnGi4%2^U#GN#ScrE#s-R@K%o
zpPe_d#{z$j@~|=9p6Ka(^8q-kOzz&VX4(hRGN26CTQxt&{MX^O?#~fdP&JPXtcuD<
zcRhK<^er{vUJNnn{AUT3B?D{0mWT2!p@q|9wd_^3Q9$Ei(I57%jYrxc_KoRt@rq$V
zZSYrz5}Ov>FoffZ9{9H^j)OBg9{>S&?{eNq^09$q*}G{Ef~sP9@ItrG(l<TTppW44
z#P*gUGwFH(XUSi1ar;GYUA?r7eIae$J9<kJ49NxlK%#azZ%>{weLDQK_yWmrSX3b?
z5QShSj74!18t^~lM_rH0dN6N1f+^Ack~Tc@GmEm6@Ymle+hMp@RU^ZkDBm{jvP{XY
zqOFkL4y{yIfQvvRHdtN<F0%q;geNbF9f4K@imV^CA#lgPtG@#ZeDv7C3cxgw1hHwg
zsF(FRR&qMIz1wnA1n*9%2&d?l38?bXCr><%B?L4yc+A@<e=%2F#+a8>JjVjycTwam
z>Klh29R=c`7(x{$1z=1a3r2?#-y~g|)SJ*hcVER|EsVqXs|+A{l9wlFA|)qYgOG9>
zh=x7e^*;;^^;{Zl-WoGxIh|fbpODaNMh$=lY3f8w;B3q}tAYi)=R$GY$8&r8aBkif
zpL*Tgp9fN;lxt+7DSEp;6np@{#q#bIwpN)SZY_{gI${vG)2f4PXK`uC8y=hQP-^PN
z+Mi}H*Dq1wKXi+69Xzf*zZqti2aoDT$mBq7@gBmeAFb*oi7c1*j%wtuRy?Eg*?XnN
zgl%;JivUHp>f6<CR^YGs11QD*j;e2<PjY<=WGS3qP!#Sp>BKFt(utO6;$@x))jYf#
zh)s|eE3FIr?xBCc>DAq}6OU#EL@OZNDzh{Ic<o&Ve}I!(HhlmUu0&YG#8#;KiXnAB
z4#a4#0qo|cFp7vx;RyWyveMq}#4|`#R%_w$@a-#V`&1h<nVJ8^E8NkNoT=R--y5`c
z>q74+H{^??x`^}0sMv~NpBt)XbYlaI3NPM-TW|5fGgOGst~qLZ*)cFyCqvBmY0x0C
zCX_%4{83Y^-K%T?udNV19j--SkX(Im-2q^g^0p-_h82)OdFUI?`$GRsp7u>8se)L=
z{cYj!#PUIJ@!t_9%&bgcl@4giQ7tdeqBnyF2~u#0AMO$o^@VNXS)Bgz2`u94G;a^g
z3Q_guBkSpSbbzB>in!bf`W<Fs#y$nX0+~@#i~Q9A5RF3u0;u~q%>Ok1r5}FA8a;H_
z_I-?*ja54)`HoIf(D>L*h#J<(!GgIryZ@2<7&Ps@%-#_H@AeppXDY1WkEd>`d7=Xb
zn!$*K=fJtqPRtQ``eZ1x)3>oxG!ui1dPasrCtXD35#~=J$p5tn>}z!-BAlv>vq(-I
zE@};L6}~!J+D~dc<^sv7*7bSljldgO>vtZL?3=EjB11Kpj2%O&tg21M*-s-4bC=?t
zPUP8bZi#&35%eLJY@#=w>hu4qXK$gtb*x!};cgreoU~wcZm1`-9?AnMZ$2>sE_MFs
ztWCdI{mZq|=Bb<>u#Nt{cI=@QV-cjA54hyTVlvP)MfA<eC5!ezu#nhzmbl;e-s|=t
z<5g4qg-8P6#r$y&?OT1FQ_#|Wmt?R4bbZW7u12WJv4FCQW@kMIq6|wWB62&`c15af
z{OZ^CV!eSkkVl*(%k<ny%BmM{g4gof9jy_iMn%r1MUe9556d#4ezq*UdCgH<(+g{W
zNtyBtXYNeupAPyn4et$}5+Cr4jOp6kc#szyHdw;Fm$%H}gYWXR$UupK`&3tijyQno
zNa>~;!2_<dhR}`~`~Ca&f@_QD-gCyuxe<()D$S2?gT$&Z2ELl0Y4=ckkF{;l3@S4c
zKfnJ)aQM02f}r2OM54qqmsx2Uj!^AArx-rgHKw9>Mb0DX-#XW4onySRC9K4*S8TUv
zXMu~#?FG+2F*){5wtx)A$Og22GW$3VOpqzT!j}7m$D}hYeY>SnS~FUk83PJ^Ya4Ki
zeEZ!5osn2x2WBE3gNzP@=f+1#c7mqle~vB=^)MK-MCFKLq#LIS4Va*B9W^<in1N*9
z2Z<4vF~!DHLgZWjp;=|iBl~z}8EORiEG-u!^WJ;F<P4GMlqecN<;t{QTv@=M1$fy^
z_886pV`0P+2?<WvHYO4MCJ&{S9u`ULYADT$N2_Ux1ymE&8S!cs_yu!liqZz>kwABQ
zHvWBD2E-Zr!3In5maYcH?;#YAlRDtLh^b%ajHH3=0~8{f0|k&+1r-LXZqQUp{gfE`
zHIA_gx1|WMaWd09)czghGn)?B3cbNVu=1mL6*cZw=q5uaYrdH)z|~8MwB}XXF1J-n
z>fSK^?eY`d&sU<Qn=0*3lQHR|&P3!OgNM$**0m2WY&4@P2zmUwb1iN{`K`dzr?-tY
zaKW57=!}P~^zDiu#c}_Xf~oh8I?Do>WI#V#sKtT-J`!TtfA8jnI9Dx^Ub<qD{q?r-
z3HWfeMWYoLt9eL2CVQ$>wl;&mBtyhg26otwtr2J{^`!e6L)VRK(oYE+a?4J<C)+h4
z*0{r2X9>Q$bJWxlMJSueQls&x$!&+{;MYc~Hg@P?wx_d769g|DV;Rs0I|zZ4ME!&(
z$?OP}2-A7R(QWyeZ0=cYfJ0@^lZ)A58ulT+Qyo-^1l~bI#>4Jji5C=}fXR5da#ucX
z@mm>iiwwWX5D@j|VtkSu?9HPzJG965Qzt7?^8CoY)VbP>Z@WC}y?JFucRpFa7&Kwe
afGW&K=C^8EUGw4=)np=s6ArQnJEPS0HHaDj

literal 0
HcmV?d00001

diff --git a/grunt/upload-preview.sh b/grunt/upload-preview.sh
new file mode 100755
index 0000000000..905d716abd
--- /dev/null
+++ b/grunt/upload-preview.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Upload built docs to preview.twbsapps.com
+
+if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ]; then exit 0; fi
+
+# Add build metadata to version
+sed -i "/^current_version:/ s/\$/+pr.${TRAVIS_COMMIT}/" _config.yml
+# Fix URLs since the site's root is now a subdirectory
+echo "baseurl: /c/${TRAVIS_COMMIT}" >> _config.yml
+bundle exec jekyll build --destination "$TRAVIS_COMMIT"
+
+# Install gcloud & gsutil
+GSUTIL_VERSION=$(gsutil version | cut -d ' ' -f 3)
+if [ ! -d "${HOME}/google-cloud-sdk" ] || [ "${GSUTIL_VERSION}" != '4.19' ]; then
+  rm -rf "${HOME}/google-cloud-sdk" # Kill Travis' outdated non-updateable preinstalled version
+  echo 'Installing google-cloud-sdk...'
+  export CLOUDSDK_CORE_DISABLE_PROMPTS=1
+  time (curl -S -s https://sdk.cloud.google.com | bash &>/dev/null)
+  echo 'Done.'
+fi
+source "${HOME}/google-cloud-sdk/path.bash.inc"
+
+openssl aes-256-cbc -K $encrypted_2b749c8e6327_key -iv $encrypted_2b749c8e6327_iv -in grunt/gcp-key.json.enc -out grunt/gcp-key.json -d
+gcloud auth activate-service-account "$GCP_SERVICE_ACCOUNT" --key-file grunt/gcp-key.json &> /dev/null || (echo 'GCP login failed!'; exit 1)
+
+echo "Uploading to http://preview.twbsapps.com/c/${TRAVIS_COMMIT} ..."
+time gsutil -q -m cp -z html,css,js,svg -r "./${TRAVIS_COMMIT}" gs://preview.twbsapps.com/c/
+echo 'Done.'
-- 
GitLab