mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-21 18:54:30 +01:00
add timing logic+output to s3_cache.py
This commit is contained in:
parent
4c2626fecb
commit
9c7e86be99
@ -7,11 +7,11 @@ before_install:
|
|||||||
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $(rvm gemdir)) jekyll=$JEKYLL_VERSION" > pseudo_Gemfile.lock; fi
|
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $(rvm gemdir)) jekyll=$JEKYLL_VERSION" > pseudo_Gemfile.lock; fi
|
||||||
install:
|
install:
|
||||||
- time npm install -g grunt-cli
|
- time npm install -g grunt-cli
|
||||||
- time ./test-infra/s3_cache.py download 'npm packages' test-infra/npm-shrinkwrap.canonical.json ./node_modules || time ./test-infra/uncached-npm-install.sh
|
- ./test-infra/s3_cache.py download 'npm packages' test-infra/npm-shrinkwrap.canonical.json ./node_modules || time ./test-infra/uncached-npm-install.sh
|
||||||
- if [ "$TWBS_TEST" = validate-html ]; then time ./test-infra/s3_cache.py download rubygems pseudo_Gemfile.lock $(rvm gemdir) || gem install -N jekyll -v $JEKYLL_VERSION; fi
|
- if [ "$TWBS_TEST" = validate-html ]; then ./test-infra/s3_cache.py download rubygems pseudo_Gemfile.lock $(rvm gemdir) || time gem install -N jekyll -v $JEKYLL_VERSION; fi
|
||||||
after_script:
|
after_script:
|
||||||
- if [ "$TWBS_TEST" = core ]; then time ./test-infra/s3_cache.py upload 'npm packages' test-infra/npm-shrinkwrap.canonical.json ./node_modules; fi
|
- if [ "$TWBS_TEST" = core ]; then ./test-infra/s3_cache.py upload 'npm packages' test-infra/npm-shrinkwrap.canonical.json ./node_modules; fi
|
||||||
- if [ "$TWBS_TEST" = validate-html ]; then time ./test-infra/s3_cache.py upload rubygems pseudo_Gemfile.lock $(rvm gemdir); fi
|
- if [ "$TWBS_TEST" = validate-html ]; then ./test-infra/s3_cache.py upload rubygems pseudo_Gemfile.lock $(rvm gemdir); fi
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- JEKYLL_VERSION: 1.5.0
|
- JEKYLL_VERSION: 1.5.0
|
||||||
|
@ -6,6 +6,8 @@ from os import environ, stat, remove as _delete_file
|
|||||||
from os.path import isfile, dirname, basename, abspath
|
from os.path import isfile, dirname, basename, abspath
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
from subprocess import check_call as run
|
from subprocess import check_call as run
|
||||||
|
from contextlib import contextmanager
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from boto.s3.connection import S3Connection
|
from boto.s3.connection import S3Connection
|
||||||
from boto.s3.key import Key
|
from boto.s3.key import Key
|
||||||
@ -20,6 +22,15 @@ except KeyError:
|
|||||||
raise SystemExit("TWBS_S3_BUCKET environment variable not set!")
|
raise SystemExit("TWBS_S3_BUCKET environment variable not set!")
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def timer():
|
||||||
|
start = datetime.utcnow()
|
||||||
|
yield
|
||||||
|
end = datetime.utcnow()
|
||||||
|
elapsed = end - start
|
||||||
|
print("\tDone. Took", int(elapsed.total_seconds()), "seconds.")
|
||||||
|
|
||||||
|
|
||||||
def _sha256_of_file(filename):
|
def _sha256_of_file(filename):
|
||||||
hasher = sha256()
|
hasher = sha256()
|
||||||
with open(filename, 'rb') as input_file:
|
with open(filename, 'rb') as input_file:
|
||||||
@ -47,11 +58,13 @@ def _tarball_filename_for(directory):
|
|||||||
|
|
||||||
def _create_tarball(directory):
|
def _create_tarball(directory):
|
||||||
print("Creating tarball of {}...".format(directory))
|
print("Creating tarball of {}...".format(directory))
|
||||||
|
with timer():
|
||||||
run(['tar', '-czf', _tarball_filename_for(directory), '-C', dirname(directory), basename(directory)])
|
run(['tar', '-czf', _tarball_filename_for(directory), '-C', dirname(directory), basename(directory)])
|
||||||
|
|
||||||
|
|
||||||
def _extract_tarball(directory):
|
def _extract_tarball(directory):
|
||||||
print("Extracting tarball of {}...".format(directory))
|
print("Extracting tarball of {}...".format(directory))
|
||||||
|
with timer():
|
||||||
run(['tar', '-xzf', _tarball_filename_for(directory), '-C', dirname(directory)])
|
run(['tar', '-xzf', _tarball_filename_for(directory), '-C', dirname(directory)])
|
||||||
|
|
||||||
|
|
||||||
@ -59,6 +72,7 @@ def download(directory):
|
|||||||
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
||||||
try:
|
try:
|
||||||
print("Downloading {} tarball from S3...".format(friendly_name))
|
print("Downloading {} tarball from S3...".format(friendly_name))
|
||||||
|
with timer():
|
||||||
key.get_contents_to_filename(_tarball_filename_for(directory))
|
key.get_contents_to_filename(_tarball_filename_for(directory))
|
||||||
except S3ResponseError as err:
|
except S3ResponseError as err:
|
||||||
open(NEED_TO_UPLOAD_MARKER, 'a').close()
|
open(NEED_TO_UPLOAD_MARKER, 'a').close()
|
||||||
@ -72,6 +86,7 @@ def download(directory):
|
|||||||
def upload(directory):
|
def upload(directory):
|
||||||
_create_tarball(directory)
|
_create_tarball(directory)
|
||||||
print("Uploading {} tarball to S3... ({})".format(friendly_name, _tarball_size(directory)))
|
print("Uploading {} tarball to S3... ({})".format(friendly_name, _tarball_size(directory)))
|
||||||
|
with timer():
|
||||||
key.set_contents_from_filename(_tarball_filename_for(directory))
|
key.set_contents_from_filename(_tarball_filename_for(directory))
|
||||||
print("{} cache successfully updated.".format(friendly_name))
|
print("{} cache successfully updated.".format(friendly_name))
|
||||||
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user