Skip to content

Commit

Permalink
Merge pull request #308 from dhermes/speed-up-build-stage-two
Browse files Browse the repository at this point in the history
Uses pre-built wheels when pip installing from tox.
  • Loading branch information
silvolu committed Oct 28, 2014
2 parents 2c9c55e + 065730a commit 85f5371
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 24 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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/
8 changes: 7 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
23 changes: 20 additions & 3 deletions scripts/custom_pip_install.sh
Original file line number Diff line number Diff line change
@@ -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 "$@"
28 changes: 28 additions & 0 deletions scripts/merge.sh
Original file line number Diff line number Diff line change
@@ -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
17 changes: 16 additions & 1 deletion scripts/run_regression.sh
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
33 changes: 14 additions & 19 deletions scripts/update_docs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
53 changes: 53 additions & 0 deletions scripts/update_wheels_project.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 85f5371

Please sign in to comment.