travis_bundle_cache 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42adc486f606b44906f28a9dd069aa6d7f045fd4
4
- data.tar.gz: a46faff6b54312e2562ceb916658fe79a3dc8917
3
+ metadata.gz: 7439995a443d4ffd1574a246b62b34f30bd9d506
4
+ data.tar.gz: ee3d3104641f3740629b15d20bf1b6a6afbc6ee0
5
5
  SHA512:
6
- metadata.gz: 330f71e824959f68f5f1f2a466ada6cfe13a6bf532b52145f440f397ab675a1e9e24b4bb5328c17af688f35a25c902b0c593e6018de1ea092c2d0dd0ce94d306
7
- data.tar.gz: 9d60d535cb835e85477659a74e125b3e81c75a1444efcc2bacfe0d2279a03a53b605005fe08f90f7bb6494d97542480138aeec6535ceb1d9899fa6c6b983f6df
6
+ metadata.gz: 5cfbcd7b6d401c8d0451aaa2d1c159b5576555c7e095582639fdfdb37927fc513961ac945f694f8e776db32af83edeada0d541ef63e4d48f028be4b9a7607a89
7
+ data.tar.gz: 1654a9719ecd4967354e0bc855dab6df357796bf5bd9c3923e05d49ea3f28cf72801e3e30730b5164dc295c85022de1f63566acec7e96d04795748cb43d0891d
data/README.md CHANGED
@@ -1,52 +1,64 @@
1
- # TravisBundleCache
2
-
1
+ Travis Bundle Cache
2
+ ===================
3
3
  [![Gem Version](https://badge.fury.io/rb/travis_bundle_cache.png)](http://badge.fury.io/rb/travis_bundle_cache)
4
+ [![Code Climate](https://codeclimate.com/github/collectiveidea/travis_bundle_cache.png)](https://codeclimate.com/github/collectiveidea/travis_bundle_cache)
5
+ [![Dependency Status](https://gemnasium.com/collectiveidea/travis_bundle_cache.png)](https://gemnasium.com/collectiveidea/travis_bundle_cache)
6
+
7
+ The primary purpose of this gem is to make [this](http://randomerrata.com/post/45827813818/travis-s3) easier and slightly more maintainable.
4
8
 
5
- Cache the gem bundle for speedy travis builds
9
+ This gem loads, builds, and saves a cache of your bundled gems on S3 by *ONLY* modifying your project's .travis.yml file.
6
10
 
7
- ## Usage
11
+ What you will need:
12
+ * A project on Travis CI
13
+ * An AWS account
14
+ * A "bundle install" that takes longer than "gem install nokogiri"
15
+
16
+ Usage
17
+ =====
8
18
 
9
19
  1. Set up a bucket on S3 in the US Standard region (us-east-1) (and possibly a new user via IAM)
10
- 2. Install the travis gem
20
+
21
+ 2. Setup your .travis.yml to include the following (NOTE: this must be done before the next steps)
22
+
23
+ ```yaml
24
+ env:
25
+ global:
26
+ - BUNDLE_ARCHIVE="your-bundle-name"
27
+ - AWS_S3_REGION="us-east-1"
28
+ - AWS_S3_BUCKET="your-bucket-name"
29
+
30
+ before_install:
31
+ - 'echo ''gem: --no-ri --no-rdoc'' > ~/.gemrc'
32
+ - gem install travis_bundle_cache
33
+
34
+ install: travis_bundle_install
35
+
36
+ after_script:
37
+ - travis_bundle_cache
38
+ ```
39
+
40
+ 3. Install the travis gem (not the travis_bundle_cache gem)
11
41
 
12
42
  ```bash
13
43
  gem install travis
14
44
  ```
15
45
 
16
- 3. Log into Travis (from inside your project respository directory)
46
+ 4. Log into Travis (from inside your project respository directory)
17
47
 
18
48
  ```bash
19
49
  travis login --auto
20
50
  ```
21
51
 
22
- 4. Encrypt your S3 credentials (be sure to add your actual credentials inside the double quotes)
52
+ 5. Encrypt your S3 credentials (be sure to add your actual credentials inside the double quotes)
23
53
 
24
54
  ```bash
25
55
  travis encrypt AWS_S3_KEY="" AWS_S3_SECRET="" --add
26
56
  ```
27
57
 
28
- 5. Setup your .travis.yml to include the following
29
-
30
- ```yaml
31
- env:
32
- global:
33
- - BUNDLE_ARCHIVE="your-bundle-name"
34
- - AWS_S3_REGION="us-east-1"
35
- - AWS_S3_BUCKET="your-bucket-name"
36
-
37
- before_install:
38
- - "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
39
- - "gem install travis_bundle_cache"
40
-
41
- install: travis_bundle_install
42
-
43
- after_script:
44
- - "travis_bundle_cache"
45
- ```
46
-
47
58
  Enjoy faster builds
48
59
 
49
- ## Contributions
60
+ Contributions
61
+ =============
50
62
 
51
63
  TravisBundleCache is open source and contributions from the community are encouraged! No contribution is too small. Please consider:
52
64
 
@@ -63,6 +75,7 @@ For the best chance of having your changes merged, please:
63
75
  3. Commit your changes and tests (if applicable (they're applicable)).
64
76
  4. Submit a pull request with a thorough explanation and at least one animated GIF.
65
77
 
66
- ## Thanks
78
+ Thanks
79
+ ======
67
80
 
68
81
  Most of the credit for this gem goes to Random Errata and [this](http://randomerrata.com/post/45827813818/travis-s3) blog post
@@ -24,7 +24,11 @@ module TravisBundleCache
24
24
  @bundle_digest = Digest::SHA2.file(@lock_file).hexdigest
25
25
  @old_digest = File.exists?(@old_digest_filename) ? File.read(@old_digest_filename) : ""
26
26
 
27
- if @bundle_digest == @old_digest
27
+ if ENV['TRAVIS_PULL_REQUEST'].to_i > 0
28
+ puts "=> This is a pull request, doing nothing"
29
+ elsif ENV['TRAVIS_BRANCH'] != "master"
30
+ puts "=> This is not the master branch, doing nothing"
31
+ elsif @bundle_digest == @old_digest
28
32
  puts "=> There were no changes, doing nothing"
29
33
  else
30
34
  archive_and_upload_bundle
@@ -38,17 +42,20 @@ module TravisBundleCache
38
42
  puts "=> There were changes, uploading a new version of the archive"
39
43
  puts " => Old checksum: #{@old_digest}"
40
44
  puts " => New checksum: #{@bundle_digest}"
45
+
46
+ puts "=> Cleaning old gem versions from the bundle"
47
+ run_command "bundle clean"
41
48
  end
42
49
 
43
50
  puts "=> Preparing bundle archive"
44
51
  `cd ~ && tar -cjf "#{@file_name}" .bundle && split -b 5m -a 3 "#{@file_name}" "#{@file_name}."`
45
52
 
46
53
  parts_pattern = File.expand_path(File.join("~", "#{@file_name}.*"))
47
- parts = Dir.glob(parts_pattern).sort
54
+ parts = Dir.glob(parts_pattern).sort
48
55
 
49
56
  puts "=> Uploading the bundle"
50
57
  puts " => Beginning multipart upload"
51
- response = storage.initiate_multipart_upload @bucket_name, @file_name, { "x-amz-acl" => "public-read" }
58
+ response = storage.initiate_multipart_upload(@bucket_name, @file_name, { "x-amz-acl" => "public-read" })
52
59
  upload_id = response.body['UploadId']
53
60
  puts " => Upload ID: #{upload_id}"
54
61
 
@@ -58,15 +65,15 @@ module TravisBundleCache
58
65
  parts.each_with_index do |part, index|
59
66
  part_number = (index + 1).to_s
60
67
  puts " => Uploading #{part}"
61
- File.open part do |part_file|
62
- response = storage.upload_part @bucket_name, @file_name, upload_id, part_number, part_file
68
+ File.open(part) do |part_file|
69
+ response = storage.upload_part(@bucket_name, @file_name, upload_id, part_number, part_file)
63
70
  part_ids << response.headers['ETag']
64
71
  puts " => Uploaded"
65
72
  end
66
73
  end
67
74
 
68
75
  puts " => Completing multipart upload"
69
- storage.complete_multipart_upload @bucket_name, @file_name, upload_id, part_ids
76
+ storage.complete_multipart_upload(@bucket_name, @file_name, upload_id, part_ids)
70
77
 
71
78
  puts "=> Uploading the digest file"
72
79
  bucket = storage.directories.new(key: @bucket_name)
@@ -1,3 +1,3 @@
1
1
  module TravisBundleCache
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travis_bundle_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Genord II