diff --git a/.gitignore b/.gitignore index 786d217d8120..a5de41ba388c 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,6 @@ regression/local_test_setup # Make sure a generated file isn't accidentally committed. pylintrc_reduced + +# Wheel directory used in Travis builds. +gcloud-python-wheels/ diff --git a/.travis.yml b/.travis.yml index ae36331de133..e1873719e96a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,10 @@ language: python +before_install: + - git clone https://github.com/GoogleCloudPlatform/gcloud-python-wheels + gcloud-python-wheels + - export WHEELHOUSE="$(pwd)/gcloud-python-wheels/wheelhouse/" + install: - scripts/custom_pip_install.sh tox @@ -8,6 +13,7 @@ script: - tox -e py27 - tox -e lint - tox -e regression - - scripts/update_docs.sh + - scripts/merge.sh + after_success: - tox -e coveralls diff --git a/scripts/custom_pip_install.sh b/scripts/custom_pip_install.sh index 078bf3f5131c..0e662b60ae48 100755 --- a/scripts/custom_pip_install.sh +++ b/scripts/custom_pip_install.sh @@ -1,4 +1,21 @@ #!/bin/bash -# Temporarily perform default pip install before initial -# wheelhouse is built. -pip install "$@" + +# Copyright 2014 Google Inc. All rights reserved. +# +# 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. + +if [[ -d ${WHEELHOUSE} ]]; then + pip install --no-index --find-links=${WHEELHOUSE} "$@" +fi +# Update if the locally cached wheels are out-of-date. +pip install --upgrade "$@" diff --git a/scripts/merge.sh b/scripts/merge.sh new file mode 100755 index 000000000000..8036df6f13c1 --- /dev/null +++ b/scripts/merge.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# 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. + +set -ev + +############################################## +# Perform actions if we are updating master. # +############################################## +if [[ "${TRAVIS_BRANCH}" == "master" ]] && \ + [[ "${TRAVIS_PULL_REQUEST}" == "false" ]]; then + scripts/update_docs.sh + scripts/update_wheels_project.sh +else + echo "Not in master on a non-pull request. Doing nothing." +fi diff --git a/scripts/run_regression.sh b/scripts/run_regression.sh index d70cce4c43f5..63a5318688de 100755 --- a/scripts/run_regression.sh +++ b/scripts/run_regression.sh @@ -1,11 +1,26 @@ #!/bin/bash +# Copyright 2014 Google Inc. All rights reserved. +# +# 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. + set -ev # If we're on Travis, we need to set up the environment. if [[ "${TRAVIS}" == "true" ]]; then # If merging to master and not a pull request, run regression test. - if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then + if [[ "${TRAVIS_BRANCH}" == "master" ]] && \ + [[ "${TRAVIS_PULL_REQUEST}" == "false" ]]; then echo "Running in Travis during merge, decrypting stored key file." # Convert encrypted key file into decrypted file to be used. diff --git a/scripts/update_docs.sh b/scripts/update_docs.sh index 6deb9e3dd69c..fe431076d319 100755 --- a/scripts/update_docs.sh +++ b/scripts/update_docs.sh @@ -16,22 +16,17 @@ set -ev -if [[ "${TRAVIS_BRANCH}" == "master" ]] && \ - [[ "${TRAVIS_PULL_REQUEST}" == "false" ]]; then - # Build new docset in docs/_build from master. - tox -e docs - git submodule add -b gh-pages \ - "https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME}" \ - ghpages - cp -R docs/_build/html/* ghpages/ - cd ghpages - git add . - # Commit to gh-pages branch to apply changes. - git config user.name "selfiebot" - git commit -m "Update docs after merge to master." - git push \ - "https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME}" \ - HEAD:gh-pages -else - echo "Not in master on a non-pull request. Doing nothing." -fi +# Build new docset in docs/_build from master. +tox -e docs +git submodule add -b gh-pages \ + "https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME}" \ + ghpages +cp -R docs/_build/html/* ghpages/ +cd ghpages +git add . +# Commit to gh-pages branch to apply changes. +git config user.name "selfiebot" +git commit -m "Update docs after merge to master." +git push \ + "https://${GH_OAUTH_TOKEN}@github.com/${GH_OWNER}/${GH_PROJECT_NAME}" \ + HEAD:gh-pages diff --git a/scripts/update_wheels_project.sh b/scripts/update_wheels_project.sh new file mode 100755 index 000000000000..34783eba946f --- /dev/null +++ b/scripts/update_wheels_project.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# 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. + +set -ev + +######################################### +# Settings for specific wheels project. # +######################################### +WHEELS_PROJECT_NAME="gcloud-python-wheels" +# "gcloud-python-wheels" is already used by .travis.yml +FRESH_REPO_DIR="gcloud-python-wheels-fresh" + +################################### +# Checkout the wheels repository. # +################################### +git config --global user.email "travis@travis-ci.org" +git config --global user.name "travis-ci" +git clone --quiet --branch=master \ + "https://${GH_OAUTH_TOKEN}@github.com//${GH_OWNER}/${WHEELS_PROJECT_NAME}" \ + ${FRESH_REPO_DIR} +# NOTE: Assumes ${GH_OAUTH_TOKEN} and ${GH_OWNER} are set in Travis build +# settings for project. This also assumes the wheels project is owned by +# ${GH_OWNER} and that the token can be used to make commits. + +################################################# +# Add the current commit hash to a static file. # +################################################# +echo "${TRAVIS_COMMIT}" > ${FRESH_REPO_DIR}/LATEST_COMMIT + +############################################## +# Display git status and push LATEST_COMMIT. # +############################################## +cd ${FRESH_REPO_DIR} +git add ${FRESH_REPO_DIR}/LATEST_COMMIT + +git status +# H/T: http://stackoverflow.com/a/13730477/1068170 +git commit -m "Latest wheels build by travis-ci. [ci skip]" +git status +git push origin master