From 6bc601bbfca486aaef3b249d1311e483f6345394 Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Thu, 23 Apr 2015 17:13:47 +0100 Subject: [PATCH 1/5] Basic automation for publishing documentation --- .travis.yml | 10 ++++++++++ bin/setup-ci-secrets.enc | Bin 0 -> 1280 bytes bin/setup-ci-secrets.readme | 21 +++++++++++++++++++++ site/Gemfile | 3 +++ site/_config.yml | 6 ++++++ site/build-and-publish.sh | 14 ++++++++++++++ 6 files changed, 54 insertions(+) create mode 100644 bin/setup-ci-secrets.enc create mode 100644 bin/setup-ci-secrets.readme create mode 100644 site/Gemfile create mode 100755 site/build-and-publish.sh diff --git a/.travis.yml b/.travis.yml index 1cc66109..10e1814f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,9 @@ sudo: false go: - 1.4 +env: + - PATH="${PATH}:${HOME}/.local/bin" + addons: apt: packages: @@ -11,6 +14,11 @@ addons: install: - go clean -i net - go install -tags netgo std + - pip install --user --upgrade gcloud gsutil + - openssl aes-256-cbc + -K $encrypted_5ba036e89377_key -iv $encrypted_5ba036e89377_iv + -in bin/setup-ci-secrets.enc -out bin/setup-ci-secrets -d + - chmod +x bin/setup-ci-secrets - make travis script: @@ -20,3 +28,5 @@ script: after_success: - go get github.com/mattn/goveralls - $HOME/gopath/bin/goveralls -coverprofile=profile.cov -service=travis-ci + - bin/setup-ci-secrets + - site/build-and-publish.sh diff --git a/bin/setup-ci-secrets.enc b/bin/setup-ci-secrets.enc new file mode 100644 index 0000000000000000000000000000000000000000..b9d25c2443d253c587601ad524b5b7ec35be0308 GIT binary patch literal 1280 zcmV+b1^@b(<_*l-0Cx-8(6+(ZflOo7U@t_7Ok1^V`rA6_@-EY>1lZ;|hVw_4f3RDMJ<7J4Y!T{tg>K?Iw7T5s(8ih!H8SUc5i zL9I)uamzp?3zfis?oE&yU7|)NJ#5)7#n?KQvdI)pj!=rhKKQxhO7_IOoopl#(wbKcj-mmd~Jeq$ZzKno6JgO`l7 zW9l$TEGMnYUx;^^^ph-=$s9?JuP~9MTH=9P>}(D+@lCGsGE*FximYew1|C@#FktB0 zmEl@tI-i-U;!A<(FWF)LitpTtidU!|m<%Uz<&a{Wb#^}MVeUxM;6nl_L7#f6Ua~U% z4mSLAC^NtEcVrohjM4pesZw2Rwhh5q15z@iRMQ?sRNoG4H$CTI>yz0-(7i&zTR~Kv z(8^z`CCOH_np{u7U{Cbj@){3y^ZM}avsM1Sc$5wI;9gKN5bIYKtLn*p!ScZQpS-E* zfo#!bE{HX`0inAEirR5**3?Y)?5{wIw4$y}9I9x6XFD`Yr0gT!)SRD0hZ`|i{Q4JNz!;)X zlM-9LlE!Ux*Ng%MfQBF}*a|;nOS~wb{JD}^2`>|NRP<%-2}b7Y7zv@=4ykyE_Un$| zem?&CMjmv95ZIiSNDLOT#^WfAyTB`gX~G9MJriIkIev2rxPRG{Q&Yg?;%j@2M|nu3 z3$ieMLePH8dr>>Q*!2+aN2q}~^lXnFt?)uj3G>_2qMU{E3B%<^#`6s0$nBZxQ4m?- zcmEd+5vRkJ^PV(r!iYwSPXSJeZH$ZJGD#_k@|I}4C1~h_U7_Jr5lvoo3cTQOM8!Tm zny=&F&)TQo)&!TFVyXj?h*1_RE7SWKiNd`bXz(D$;(rrW_hg34b?o;yqdwSFcu)3p(8e2 zxZDDS%GBzrATqrlccjwAXjY#~4kw(v0i@A-J_#QkDz1dT^poa*Rut=6SKZArrPrVS z#D`dIx0%6nEjTcHXLz?SRccJBXD!pQaHZ%$)m3>^6=+!FGy;v*X<(cGuG$JOP)p(S z#Msq&SvbNkVU4|`xk>TS?vOOe0#W`YK5;Fl@kQ)d*z#BJ>JomwL3^@Paf@#phww+L zmRNvqA?$N%^Hh%)a@^=!knSR^a2yE@HtOM<9lMg!2t%RaXexBu#FoPH?Y2h21_5}# zS*CZ3zuB^zDm5K+=AN~p6vtRp^xz(8W0~wSW$+L_h /tmp/boto_gsutil_cert.pem << EOF +-----BEGIN PRIVATE KEY----- +<...> +-----END PRIVATE KEY----- +EOF + +cat > ~/.boto << EOF +[Credentials] +gs_service_client_id = <...> +gs_service_key_file = /tmp/boto_gsutil_cert.pem + +[Boto] +https_validate_certificates = True + +[GSUtil] +content_language = en +default_api_version = 2 +default_project_id = <...> +EOF diff --git a/site/Gemfile b/site/Gemfile new file mode 100644 index 00000000..e8a70063 --- /dev/null +++ b/site/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem 'jekyll' diff --git a/site/_config.yml b/site/_config.yml index cfb2b170..1d373602 100644 --- a/site/_config.yml +++ b/site/_config.yml @@ -2,3 +2,9 @@ markdown: redcarpet redcarpet: extensions: ['fenced_code_blocks', 'smart'] + +exclude: + - 'Gemfile' + - 'Gemfile.lock' + - 'params.json' + - 'build-and-publish.sh' diff --git a/site/build-and-publish.sh b/site/build-and-publish.sh new file mode 100755 index 00000000..41961ac1 --- /dev/null +++ b/site/build-and-publish.sh @@ -0,0 +1,14 @@ +#!/bin/sh -ex + +cd $(dirname $0)/ + +## Use GCS until we set up Route53/CloudFront/S3 + +BRANCH=${TRAVIS_BRANCH:-`git rev-parse --abbrev-ref @`} +COMMIT=${TRAVIS_COMMIT:-`git rev-parse @`} + +export BRANCH COMMIT + +bundle install --path=.bundle +bundle exec jekyll build --verbose +gsutil -m cp -z html,css -a public-read -R _site gs://docs.weave.works/weave/${BRANCH}/${COMMIT} From 0b4b8495834c6d63e17180ccee1f3262c488afee Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Fri, 24 Apr 2015 14:43:22 +0100 Subject: [PATCH 2/5] Refactor how sectrets are setup --- .travis.yml | 6 +--- bin/setup-ci-secrets | 57 ++++++++++++++++++++++++++++++++++++ bin/setup-ci-secrets.enc | Bin 1280 -> 0 bytes bin/setup-ci-secrets.readme | 21 ------------- 4 files changed, 58 insertions(+), 26 deletions(-) create mode 100755 bin/setup-ci-secrets delete mode 100644 bin/setup-ci-secrets.enc delete mode 100644 bin/setup-ci-secrets.readme diff --git a/.travis.yml b/.travis.yml index 10e1814f..88dd5093 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,10 +15,7 @@ install: - go clean -i net - go install -tags netgo std - pip install --user --upgrade gcloud gsutil - - openssl aes-256-cbc - -K $encrypted_5ba036e89377_key -iv $encrypted_5ba036e89377_iv - -in bin/setup-ci-secrets.enc -out bin/setup-ci-secrets -d - - chmod +x bin/setup-ci-secrets + - bin/setup-ci-secrets $encrypted_5ba036e89377_key $encrypted_5ba036e89377_iv - make travis script: @@ -28,5 +25,4 @@ script: after_success: - go get github.com/mattn/goveralls - $HOME/gopath/bin/goveralls -coverprofile=profile.cov -service=travis-ci - - bin/setup-ci-secrets - site/build-and-publish.sh diff --git a/bin/setup-ci-secrets b/bin/setup-ci-secrets new file mode 100755 index 00000000..3bd2ae20 --- /dev/null +++ b/bin/setup-ci-secrets @@ -0,0 +1,57 @@ +#!/bin/sh + +## This is the shape of unencrypted `do-setup-ci-secrets` +## +## cat > /tmp/boto_gsutil_cert.pem << EOF +## -----BEGIN PRIVATE KEY----- +## <...> +## -----END PRIVATE KEY----- +## EOF +## +## cat > ~/.boto << EOF +## [Credentials] +## gs_service_client_id = <...> +## gs_service_key_file = /tmp/boto_gsutil_cert.pem +## +## [Boto] +## https_validate_certificates = True +## +## [GSUtil] +## content_language = en +## default_api_version = 2 +## default_project_id = <...> +## EOF + +openssl base64 -d << EOF \ + | openssl aes-256-cbc -d -K $1 -iv $2 \ + -out bin/do-setup-ci-secrets +mOYNzNsAdwva0LbB2YFMY9VgL0SITFu1bPrbOujyLtOrBNjmOYbzR5d/sG+ARMFr +7NZ5OKcvMbItllz0n7TtNkzkCOMztMC870Wcx3nGJzbBephdcYwos4tBlp5bihTU +AXgxLUiDT1broYAFKnbE1aZC/XyNxuLTN+nXJWIWeijaXTgvhkEEm3tab+z7ioCb +tlg71W1BrUuocctAJAuVwH/uTZAaXaJGJj1s2S7F2DrFnG6sFlrp8rnCucPLWKnC +4IwJFC5saR5gxK6wECffwmwbpeXVOoQ58OgzxoZTEyAr9nhVbaBt5UZz3tfHlx8W +Rn5jHehACw5kg5eMtGPqMEksJ63LX4h3mfSTLJXJHEmOrzCRpFrigVrsbA408U2u +8jJTHJmKrGfwBh5ZFzBg6NuV4VplOp+ZquJLgegv2WH/iu/ciopXqB2YDCdx5ZBi +nHV2Puth7kjS4EMCKUGfeqpesjL9Djb8cygzv/J3ZBmLjNH9dqlSXWy2DcFZA1Iy +pFTTHkVU3w5sNz3nYOuT2UPQvULBW0FUndDKX6olyVa0mlxPwGBP9N3yGg918/rw +7rNV/r54lA334F5QMhDrVxar6sl9wfLA+Z+8qemBbNFlLog1uQGhuwWK2nFu1tRM +9uyvQIq0oq5NHKpogWc7NEuk7CPe1JyfRIcbMVj8+ilmKjUPB2HPC43IDmKt9/56 +rY3IXAcxZ/ClGfGpeNHXqop9T/WhfaowponOZFcdGSUddG0OswqkTE4KIv71mgTF +jXooMkTQBOG+gBnCe+8bCRdRCG3anxHX74za4dGD58cOJtl6DYWnjWuR91NWnxdT +1Zr3iUe41txg9hCNY9LHo2QHGLPxe6pmNnSClQ1mcFhuY6NF8RmCX3HAGKJQkxJb +vpLGbXTXjAIFgIYgLNgKP2RLvCif/LmSWgkvE3ZU9GXtCUbm6xgJodwOqXiI9uuO +4H4+/vpGHnSFENiclkgMFrLG4yiMu8ArgmnCBzg9E2AoOX5zCrh/2ZRTU8Dk4mt7 +jUd5SKQLsjB9QtB+y3tRO7zY9RDvR6iBOPRsjx6t8EJMCfPb06KchfMJw+VGxvMM +48jtmepREFnhd/8XDRGnw5bznjRuwohGik8BToltjIviMkkpifKWaLwlaOiDXaHh +VBFNXnUKvOBwRMU+PZqv4+DP2qff1gSXnGKqA5GIURYrK9P7TqHHNTnmjBdfJLzc +0x+W1DTiYhLT2vrLrkEpZ99o6qrg+lwvjat6IsJF8xoQEo4pLD/ZRPJ0WzoDyctT +oWZ5rMsN1TzTvJrBrTAWIJyhIzZcuNwChMrU6qogMr0fd6TSxWhWn0sOJ5y8AaTR +ej4JHx0qroS/9JPmgFYU61pX3c0ypdef/sSHWG23mcFzLTgwe2d4ty9VakypZy3T +sXCl6EHVVXlUFWhY4zQCjdZpYJv/rtoKL1BL4fPE2NV5WTjCL2GNvaO5SfHR7pA0 +yQJR/iU+cS2n8UXsWNjyV+/qEn6+QXuyVHGLbxyH8EeqlliAbyHsc2rzVI8Xctzo +W5DuIqxwHAkNNurhmx27ktIIQ6HhaCp028SWwvLttkbBBgF4v1mmd4u/2bKbKjUd +dOaetaIUx1hU9OAeaePvVkeTDcc3mlFtPARCS9Fqj16hgJQ43onZyC0H1K2WAxmU +GsmzjCHlTNquzFTuuQihYGZKfsWIh9z6HEOkvNJ3VEQ= +EOF + +exec sh bin/do-setup-ci-secrets diff --git a/bin/setup-ci-secrets.enc b/bin/setup-ci-secrets.enc deleted file mode 100644 index b9d25c2443d253c587601ad524b5b7ec35be0308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmV+b1^@b(<_*l-0Cx-8(6+(ZflOo7U@t_7Ok1^V`rA6_@-EY>1lZ;|hVw_4f3RDMJ<7J4Y!T{tg>K?Iw7T5s(8ih!H8SUc5i zL9I)uamzp?3zfis?oE&yU7|)NJ#5)7#n?KQvdI)pj!=rhKKQxhO7_IOoopl#(wbKcj-mmd~Jeq$ZzKno6JgO`l7 zW9l$TEGMnYUx;^^^ph-=$s9?JuP~9MTH=9P>}(D+@lCGsGE*FximYew1|C@#FktB0 zmEl@tI-i-U;!A<(FWF)LitpTtidU!|m<%Uz<&a{Wb#^}MVeUxM;6nl_L7#f6Ua~U% z4mSLAC^NtEcVrohjM4pesZw2Rwhh5q15z@iRMQ?sRNoG4H$CTI>yz0-(7i&zTR~Kv z(8^z`CCOH_np{u7U{Cbj@){3y^ZM}avsM1Sc$5wI;9gKN5bIYKtLn*p!ScZQpS-E* zfo#!bE{HX`0inAEirR5**3?Y)?5{wIw4$y}9I9x6XFD`Yr0gT!)SRD0hZ`|i{Q4JNz!;)X zlM-9LlE!Ux*Ng%MfQBF}*a|;nOS~wb{JD}^2`>|NRP<%-2}b7Y7zv@=4ykyE_Un$| zem?&CMjmv95ZIiSNDLOT#^WfAyTB`gX~G9MJriIkIev2rxPRG{Q&Yg?;%j@2M|nu3 z3$ieMLePH8dr>>Q*!2+aN2q}~^lXnFt?)uj3G>_2qMU{E3B%<^#`6s0$nBZxQ4m?- zcmEd+5vRkJ^PV(r!iYwSPXSJeZH$ZJGD#_k@|I}4C1~h_U7_Jr5lvoo3cTQOM8!Tm zny=&F&)TQo)&!TFVyXj?h*1_RE7SWKiNd`bXz(D$;(rrW_hg34b?o;yqdwSFcu)3p(8e2 zxZDDS%GBzrATqrlccjwAXjY#~4kw(v0i@A-J_#QkDz1dT^poa*Rut=6SKZArrPrVS z#D`dIx0%6nEjTcHXLz?SRccJBXD!pQaHZ%$)m3>^6=+!FGy;v*X<(cGuG$JOP)p(S z#Msq&SvbNkVU4|`xk>TS?vOOe0#W`YK5;Fl@kQ)d*z#BJ>JomwL3^@Paf@#phww+L zmRNvqA?$N%^Hh%)a@^=!knSR^a2yE@HtOM<9lMg!2t%RaXexBu#FoPH?Y2h21_5}# zS*CZ3zuB^zDm5K+=AN~p6vtRp^xz(8W0~wSW$+L_h /tmp/boto_gsutil_cert.pem << EOF ------BEGIN PRIVATE KEY----- -<...> ------END PRIVATE KEY----- -EOF - -cat > ~/.boto << EOF -[Credentials] -gs_service_client_id = <...> -gs_service_key_file = /tmp/boto_gsutil_cert.pem - -[Boto] -https_validate_certificates = True - -[GSUtil] -content_language = en -default_api_version = 2 -default_project_id = <...> -EOF From 83c2bcd41884b22211478e750f24970592285776 Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Mon, 27 Apr 2015 14:29:03 +0100 Subject: [PATCH 3/5] Build and publish docs on push, not on pull-requests --- .travis.yml | 2 +- site/build-and-publish.sh | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 88dd5093..bb7047c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,4 +25,4 @@ script: after_success: - go get github.com/mattn/goveralls - $HOME/gopath/bin/goveralls -coverprofile=profile.cov -service=travis-ci - - site/build-and-publish.sh + - test "${TRAVIS_PULL_REQUEST}" = "false" && site/build-and-publish.sh diff --git a/site/build-and-publish.sh b/site/build-and-publish.sh index 41961ac1..81867e7c 100755 --- a/site/build-and-publish.sh +++ b/site/build-and-publish.sh @@ -6,9 +6,13 @@ cd $(dirname $0)/ BRANCH=${TRAVIS_BRANCH:-`git rev-parse --abbrev-ref @`} COMMIT=${TRAVIS_COMMIT:-`git rev-parse @`} +OUTPUT="weave/${BRANCH}/${COMMIT}" -export BRANCH COMMIT +export BRANCH COMMIT OUTPUT bundle install --path=.bundle bundle exec jekyll build --verbose -gsutil -m cp -z html,css -a public-read -R _site gs://docs.weave.works/weave/${BRANCH}/${COMMIT} + +gsutil -m cp -z html,css -a public-read -R _site "gs://docs.weave.works/${OUTPUT}" + +echo "Published at http://docs.weave.works/${OUTPUT}" From 81ff18565f4f845a5e599fb077f34b547d2c5d00 Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Mon, 27 Apr 2015 14:50:04 +0100 Subject: [PATCH 4/5] Generate pointer to latest revision --- site/build-and-publish.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/site/build-and-publish.sh b/site/build-and-publish.sh index 81867e7c..76ccd2a3 100755 --- a/site/build-and-publish.sh +++ b/site/build-and-publish.sh @@ -16,3 +16,9 @@ bundle exec jekyll build --verbose gsutil -m cp -z html,css -a public-read -R _site "gs://docs.weave.works/${OUTPUT}" echo "Published at http://docs.weave.works/${OUTPUT}" + +echo "" \ + | gsutil \ + -h "Content-Type:text/html" \ + -h "Cache-Control:private, max-age=0, no-transform" \ + cp -a "public-read" - "gs://docs.weave.works/weave/${BRANCH}/index.html" From cfb8e754119a9d371b0329b9ddc87e5a03472d2b Mon Sep 17 00:00:00 2001 From: Ilya Dmitrichenko Date: Mon, 27 Apr 2015 16:18:34 +0100 Subject: [PATCH 5/5] Use shorter URLs for tags --- site/build-and-publish.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/site/build-and-publish.sh b/site/build-and-publish.sh index 76ccd2a3..2f86e9d4 100755 --- a/site/build-and-publish.sh +++ b/site/build-and-publish.sh @@ -8,6 +8,11 @@ BRANCH=${TRAVIS_BRANCH:-`git rev-parse --abbrev-ref @`} COMMIT=${TRAVIS_COMMIT:-`git rev-parse @`} OUTPUT="weave/${BRANCH}/${COMMIT}" +if [ -n "${TRAVIS_TAG}" ]; then + ## Travis will run separate build for commit and tag pushes, + OUTPUT="weave/${TRAVIS_TAG}" +fi + export BRANCH COMMIT OUTPUT bundle install --path=.bundle @@ -17,8 +22,10 @@ gsutil -m cp -z html,css -a public-read -R _site "gs://docs.weave.works/${OUTPUT echo "Published at http://docs.weave.works/${OUTPUT}" -echo "" \ - | gsutil \ - -h "Content-Type:text/html" \ - -h "Cache-Control:private, max-age=0, no-transform" \ - cp -a "public-read" - "gs://docs.weave.works/weave/${BRANCH}/index.html" +if [ -z "${TRAVIS_TAG}" ]; then + echo "" \ + | gsutil \ + -h "Content-Type:text/html" \ + -h "Cache-Control:private, max-age=0, no-transform" \ + cp -a "public-read" - "gs://docs.weave.works/weave/${BRANCH}/index.html" +fi