circleci-bundle-update-pr 1.16.1 → 2.1.0

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
  SHA256:
3
- metadata.gz: 75f3b64983d10d74e5d008d72b9e4980cbaa0f0be28fbb609c94e2ee5f3834ae
4
- data.tar.gz: f1070ba274c890e2799e397e1f2dac799c921677a2a853e5d3c28a642ff9d1d3
3
+ metadata.gz: 4064052a0e9c870a53a20a780e08b6029a425ae39412427e3e2131caca05769f
4
+ data.tar.gz: 67c9498808dd3310240116f173b365e76e4336540458f334f4609d9e5a1373e4
5
5
  SHA512:
6
- metadata.gz: a25612558d02e70a45f5c7c96e0d43b116cd5d064d8e1711a88543ac0e7f863561a3629d0984954b6cadda6d4c686bafc23a43d3dee44659036a4767bc6a7774
7
- data.tar.gz: da28bc0185302f30ae7506cad0e8199c0d1d5eb425b1ecf9b01dfe70bec86fcd92807443ed3c0cb8a115543216cf054b12525d17606a4fb0d949544c37fdd5cc
6
+ metadata.gz: 4d69e9d58356f09fa2609030b13182475f9b92d438064983244253895cb56af5b8c7dee2a25b6e2fc438fbba38ca34ead4b297b5d65315859ef714e77de1dbda
7
+ data.tar.gz: 46e99f5fab63cd2c3a6d3e7a3965341e060aead0e971b7d4ae10950e91b6e8a8f7e28f85ddbbb18ae5cc8868570e6b3566dd84e9cb964fcf1ff3571634878582
@@ -1,139 +1,133 @@
1
- version: 2
1
+ version: 2.1
2
2
 
3
- references:
4
- - &setup_requirements
5
- name: Install System Dependencies
6
- command: |
7
- # See also https://circleci.com/docs/2.0/custom-images/#adding-required-and-custom-tools-or-files
8
- apk add --update --no-cache --no-progress git openssh-client tar gzip ca-certificates \
9
- build-base tzdata
10
- - &set_timezone
11
- name: Set timezone to Asia/Tokyo
12
- command: cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
13
- - &bundle_install
14
- name: Install Ruby Dependencies
15
- command: |
16
- bundle check || bundle install --jobs=4 --retry=3
17
- bundle clean
18
- - &rubocop
19
- name: Run RuboCop
20
- command: rubocop
21
- - &rspec
22
- name: Run RSpec
23
- command: rspec
3
+ orbs:
4
+ pushover: masutaka/pushover@dev:beta5
24
5
 
25
- jobs:
26
- build_on_ruby2_3:
6
+ executors:
7
+ default:
8
+ parameters:
9
+ ruby_version:
10
+ type: enum
11
+ enum: ['2.4', '2.5', '2.6', '2.7', '3.0']
27
12
  docker:
28
- - image: ruby:2.3-alpine
29
- working_directory: /work
13
+ - image: cimg/ruby:<< parameters.ruby_version >>
14
+ working_directory: ~/repo
15
+
16
+ commands:
17
+ notify_on_failure_on_default_branch:
30
18
  steps:
31
- - run: *setup_requirements
32
- - run: *set_timezone
33
- - checkout
34
- - restore_cache:
35
- name: Restore bundler cache
36
- keys:
37
- - gems-ruby2.3-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
38
- - gems-ruby2.3-{{ .Environment.COMMON_CACHE_KEY }}-
39
- - run: *bundle_install
40
- - save_cache:
41
- name: Save bundler cache
42
- key: gems-ruby2.3-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
43
- paths:
44
- - /usr/local/bundle
45
- - run: *rubocop
46
- - run: *rspec
47
- build_on_ruby2_4:
48
- docker:
49
- - image: ruby:2.4-alpine
50
- working_directory: /work
19
+ - pushover/notify-on-failure:
20
+ title: "Failed: ${CIRCLE_PROJECT_REPONAME}'s job (${CIRCLE_JOB})"
21
+ message: "failed ${CIRCLE_USERNAME:Bot}'s build (#${CIRCLE_BUILD_NUM}) in ${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME} (${CIRCLE_BRANCH})"
22
+ priority: 1 # high
23
+ only_for_branches: master
24
+ setup_requirements:
51
25
  steps:
52
- - run: *setup_requirements
53
- - run: *set_timezone
54
- - checkout
55
- - restore_cache:
56
- name: Restore bundler cache
57
- keys:
58
- - gems-ruby2.4-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
59
- - gems-ruby2.4-{{ .Environment.COMMON_CACHE_KEY }}-
60
- - run: *bundle_install
61
- - save_cache:
62
- name: Save bundler cache
63
- key: gems-ruby2.4-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
64
- paths:
65
- - /usr/local/bundle
66
- - run: *rubocop
67
- - run: *rspec
68
- build_on_ruby2_5:
69
- docker:
70
- - image: ruby:2.5-alpine
71
- working_directory: /work
26
+ - run:
27
+ name: Install System Dependencies
28
+ command: |
29
+ # for cimg/ruby:2.4
30
+ sudo apt update -q
31
+ sudo apt install -q tzdata
32
+ - run:
33
+ name: Set timezone to Asia/Tokyo
34
+ command: sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
35
+ restore_bundle_cache:
36
+ parameters:
37
+ ruby_version:
38
+ type: enum
39
+ enum: ['2.4', '2.5', '2.6', '2.7', '3.0']
72
40
  steps:
73
- - run: *setup_requirements
74
- - run: *set_timezone
75
- - checkout
76
41
  - restore_cache:
77
- name: Restore bundler cache
42
+ name: Restore bundle cache
78
43
  keys:
79
- - gems-ruby2.5-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
80
- - gems-ruby2.5-{{ .Environment.COMMON_CACHE_KEY }}-
81
- - run: *bundle_install
44
+ - gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
45
+ - gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-
46
+ save_bundle_cache:
47
+ parameters:
48
+ ruby_version:
49
+ type: enum
50
+ enum: ['2.4', '2.5', '2.6', '2.7', '3.0']
51
+ steps:
82
52
  - save_cache:
83
- name: Save bundler cache
84
- key: gems-ruby2.5-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
53
+ name: Save bundle cache
54
+ key: gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
85
55
  paths:
86
- - /usr/local/bundle
87
- - run: *rubocop
88
- - run: *rspec
89
- build_on_ruby2_6:
90
- docker: &docker_ruby2_6
91
- - image: ruby:2.6-alpine
92
- working_directory: /work
56
+ - ~/repo/vendor/bundle
57
+ install_bundler:
93
58
  steps:
94
- - run: *setup_requirements
95
- - run: *set_timezone
59
+ - run:
60
+ name: install bundler
61
+ command: gem install -N bundler:1.17.3 # same version as Gemfile.lock
62
+
63
+ jobs:
64
+ build:
65
+ parameters:
66
+ ruby_version:
67
+ type: enum
68
+ enum: ['2.4', '2.5', '2.6', '2.7', '3.0']
69
+ executor:
70
+ name: default
71
+ ruby_version: << parameters.ruby_version >>
72
+ steps:
73
+ - setup_requirements
96
74
  - checkout
97
- - restore_cache: &restore_cache_ruby2_6
98
- name: Restore bundler cache
99
- keys:
100
- - gems-ruby2.6-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
101
- - gems-ruby2.6-{{ .Environment.COMMON_CACHE_KEY }}-
102
- - run: *bundle_install
103
- - save_cache:
104
- name: Save bundler cache
105
- key: gems-ruby2.6-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
106
- paths:
107
- - /usr/local/bundle
108
- - run: *rubocop
109
- - run: *rspec
75
+ - restore_bundle_cache:
76
+ ruby_version: << parameters.ruby_version >>
77
+ - install_bundler
78
+ - run:
79
+ name: bundle install
80
+ command: |
81
+ bundle check || bundle install --jobs=4 --retry=3 --path=vendor/bundle
82
+ bundle clean
83
+ - save_bundle_cache:
84
+ ruby_version: << parameters.ruby_version >>
85
+ - run: bundle exec rubocop
86
+ - run: bundle exec rspec
87
+ - notify_on_failure_on_default_branch
110
88
  continuous_bundle_update:
111
- docker: *docker_ruby2_6
112
- working_directory: /work
89
+ executor:
90
+ name: default
91
+ ruby_version: '3.0'
113
92
  steps:
114
- - run: *setup_requirements
115
- - run: *set_timezone
93
+ - setup_requirements
116
94
  - checkout
117
- - restore_cache: *restore_cache_ruby2_6
95
+ - restore_bundle_cache:
96
+ ruby_version: '3.0'
97
+ - install_bundler
118
98
  - run:
119
- name: Setup requirements for continuous bundle update
120
- command: gem install -N circleci-bundle-update-pr
99
+ name: Install edge circleci-bundle-update-pr
100
+ command: |
101
+ gem install -N specific_install
102
+ gem specific_install https://github.com/masutaka/circleci-bundle-update-pr.git
121
103
  - deploy:
122
- name: Continuous bundle update
104
+ name: Run circleci-bundle-update-pr
123
105
  command: circleci-bundle-update-pr CircleCI circleci@example.com $CIRCLE_BRANCH
106
+ - notify_on_failure_on_default_branch
124
107
 
125
108
  workflows:
126
109
  version: 2
127
110
  ordinary:
128
111
  jobs:
129
- - build_on_ruby2_3
130
- - build_on_ruby2_4
131
- - build_on_ruby2_5
132
- - build_on_ruby2_6
112
+ - build:
113
+ name: ruby-2.4
114
+ ruby_version: '2.4'
115
+ - build:
116
+ name: ruby-2.5
117
+ ruby_version: '2.5'
118
+ - build:
119
+ name: ruby-2.6
120
+ ruby_version: '2.6'
121
+ - build:
122
+ name: ruby-2.7
123
+ ruby_version: '2.7'
124
+ - build:
125
+ name: ruby-3.0
126
+ ruby_version: '3.0'
133
127
  nightly:
134
128
  triggers:
135
129
  - schedule:
136
- cron: "00 10 * * 5"
130
+ cron: "00 10 * * 2"
137
131
  filters:
138
132
  branches:
139
133
  only: master
@@ -3,7 +3,11 @@ require: rubocop-rspec
3
3
 
4
4
  AllCops:
5
5
  DisplayCopNames: true
6
- TargetRubyVersion: 2.3
6
+ NewCops: enable
7
+ TargetRubyVersion: 2.4
8
+
9
+ Layout/LineLength:
10
+ Enabled: false
7
11
 
8
12
  Metrics:
9
13
  Enabled: false
@@ -11,6 +15,9 @@ Metrics:
11
15
  RSpec/DescribedClass:
12
16
  Enabled: false
13
17
 
18
+ RSpec/NamedSubject:
19
+ Enabled: false
20
+
14
21
  Style/BlockComments:
15
22
  Exclude:
16
23
  - 'spec/spec_helper.rb'
@@ -1,4 +1,4 @@
1
- Layout/IndentHeredoc:
1
+ Layout/HeredocIndentation:
2
2
  Exclude:
3
3
  - 'lib/circleci/bundle/update/pr.rb'
4
4
 
@@ -1,76 +1,87 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- circleci-bundle-update-pr (1.16.1)
4
+ circleci-bundle-update-pr (2.1.0)
5
5
  compare_linker (>= 1.4.0)
6
6
  octokit
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.5.2)
12
- public_suffix (>= 2.0.2, < 4.0)
13
- ast (2.4.0)
14
- compare_linker (1.4.3)
11
+ addressable (2.7.0)
12
+ public_suffix (>= 2.0.2, < 5.0)
13
+ ast (2.4.1)
14
+ compare_linker (1.4.4)
15
15
  httpclient
16
16
  octokit
17
- diff-lcs (1.3)
18
- faraday (0.15.4)
17
+ diff-lcs (1.4.4)
18
+ faraday (1.3.0)
19
+ faraday-net_http (~> 1.0)
19
20
  multipart-post (>= 1.2, < 3)
21
+ ruby2_keywords
22
+ faraday-net_http (1.0.0)
20
23
  httpclient (2.8.3)
21
- jaro_winkler (1.5.2)
22
- multipart-post (2.0.0)
23
- octokit (4.14.0)
24
+ multipart-post (2.1.1)
25
+ octokit (4.20.0)
26
+ faraday (>= 0.9)
24
27
  sawyer (~> 0.8.0, >= 0.5.3)
25
- parallel (1.17.0)
26
- parser (2.6.2.1)
27
- ast (~> 2.4.0)
28
- psych (3.1.0)
29
- public_suffix (3.0.3)
28
+ parallel (1.19.2)
29
+ parser (3.0.0.0)
30
+ ast (~> 2.4.1)
31
+ public_suffix (4.0.6)
30
32
  rainbow (3.0.0)
31
- rake (12.3.2)
32
- rspec (3.8.0)
33
- rspec-core (~> 3.8.0)
34
- rspec-expectations (~> 3.8.0)
35
- rspec-mocks (~> 3.8.0)
36
- rspec-core (3.8.0)
37
- rspec-support (~> 3.8.0)
38
- rspec-expectations (3.8.2)
33
+ rake (13.0.3)
34
+ regexp_parser (2.0.3)
35
+ rexml (3.2.4)
36
+ rspec (3.10.0)
37
+ rspec-core (~> 3.10.0)
38
+ rspec-expectations (~> 3.10.0)
39
+ rspec-mocks (~> 3.10.0)
40
+ rspec-core (3.10.1)
41
+ rspec-support (~> 3.10.0)
42
+ rspec-expectations (3.10.1)
39
43
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.8.0)
41
- rspec-mocks (3.8.0)
44
+ rspec-support (~> 3.10.0)
45
+ rspec-mocks (3.10.1)
42
46
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.8.0)
44
- rspec-support (3.8.0)
45
- rubocop (0.67.2)
46
- jaro_winkler (~> 1.5.1)
47
+ rspec-support (~> 3.10.0)
48
+ rspec-support (3.10.1)
49
+ rubocop (1.8.1)
47
50
  parallel (~> 1.10)
48
- parser (>= 2.5, != 2.5.1.1)
49
- psych (>= 3.1.0)
51
+ parser (>= 3.0.0.0)
50
52
  rainbow (>= 2.2.2, < 4.0)
53
+ regexp_parser (>= 1.8, < 3.0)
54
+ rexml
55
+ rubocop-ast (>= 1.2.0, < 2.0)
51
56
  ruby-progressbar (~> 1.7)
52
- unicode-display_width (>= 1.4.0, < 1.6)
53
- rubocop-rspec (1.32.0)
54
- rubocop (>= 0.60.0)
55
- ruby-progressbar (1.10.0)
56
- sawyer (0.8.1)
57
- addressable (>= 2.3.5, < 2.6)
58
- faraday (~> 0.8, < 1.0)
59
- unicode-display_width (1.5.0)
57
+ unicode-display_width (>= 1.4.0, < 3.0)
58
+ rubocop-ast (1.4.0)
59
+ parser (>= 2.7.1.5)
60
+ rubocop-rspec (2.1.0)
61
+ rubocop (~> 1.0)
62
+ rubocop-ast (>= 1.1.0)
63
+ ruby-progressbar (1.11.0)
64
+ ruby2_keywords (0.0.2)
65
+ sawyer (0.8.2)
66
+ addressable (>= 2.3.5)
67
+ faraday (> 0.8, < 2.0)
68
+ unicode-display_width (2.0.0)
60
69
 
61
70
  PLATFORMS
62
71
  ruby
63
72
  x86_64-darwin-16
64
73
  x86_64-darwin-17
65
74
  x86_64-darwin-18
75
+ x86_64-darwin-19
66
76
 
67
77
  DEPENDENCIES
68
78
  bundler
69
79
  circleci-bundle-update-pr!
80
+ parallel (< 1.20.0)
70
81
  rake
71
- rspec (~> 3.7)
82
+ rspec
72
83
  rubocop
73
84
  rubocop-rspec
74
85
 
75
86
  BUNDLED WITH
76
- 1.17.2
87
+ 1.17.3
data/README.md CHANGED
@@ -52,7 +52,7 @@ jobs:
52
52
  - run:
53
53
  name: Install System Dependencies
54
54
  command: |
55
- # See also https://circleci.com/docs/2.0/custom-images/#adding-required-and-custom-tools-or-files
55
+ # See also https://circleci.com/docs/2.0/custom-images/#required-tools-for-primary-containers
56
56
  apk add --update --no-cache git openssh-client tar gzip ca-certificates \
57
57
  tzdata
58
58
  gem install -N bundler
@@ -153,6 +153,55 @@ Powered by [circleci-bundle-update-pr](https://rubygems.org/gems/circleci-bundle
153
153
 
154
154
  `.circleci/BUNDLE_UPDATE_NOTE.md` or `CIRCLECI_BUNDLE_UPDATE_NOTE.md`, either one is OK. It gives priority `.circleci/BUNDLE_UPDATE_NOTE.md` over `CIRCLECI_BUNDLE_UPDATE_NOTE.md`.
155
155
 
156
+ ### Run on GitHub Actions
157
+ Configure your `.github/workflows/bundle-update-pr.yml` to run circleci-bundle-update-pr, for example:
158
+
159
+ ```yaml
160
+ name: bundle-update-pr
161
+
162
+ on:
163
+ schedule:
164
+ - cron: "00 10 * * 5" # JST 19:00 (Fri)
165
+
166
+ jobs:
167
+ build:
168
+ runs-on: ubuntu-latest
169
+
170
+ steps:
171
+ - uses: actions/checkout@v1
172
+
173
+ - name: Set up Ruby
174
+ uses: actions/setup-ruby@v1
175
+ with:
176
+ ruby-version: v2.6.x
177
+
178
+ - name: Install dependencies
179
+ run: |
180
+ set -x
181
+ gem install -N bundler circleci-bundle-update-pr
182
+
183
+ - name: Set timezone to Asia/Tokyo
184
+ run: |
185
+ set -x
186
+ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
187
+
188
+ - name: run circleci-bundle-update-pr
189
+ run: |
190
+ set -x
191
+
192
+ export CIRCLE_BRANCH=$(echo $GITHUB_REF | sed -e 's!refs/heads/!!g')
193
+ export CIRCLE_PROJECT_USERNAME=$(echo $GITHUB_REPOSITORY | cut -d "/" -f 1)
194
+ export CIRCLE_PROJECT_REPONAME=$(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)
195
+
196
+ git checkout -b $CIRCLE_BRANCH
197
+
198
+ circleci-bundle-update-pr "${GIT_USER_NAME}" "${GIT_USER_EMAIL}"
199
+ env:
200
+ GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
201
+ GIT_USER_NAME: "your name"
202
+ GIT_USER_EMAIL: "ci@example.com"
203
+ ```
204
+
156
205
  ## Contributing
157
206
 
158
207
  1. Fork it ( https://github.com/masutaka/circleci-bundle-update-pr/fork )
@@ -19,12 +19,15 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
+ spec.required_ruby_version = '>= 2.4.0'
23
+
22
24
  spec.add_dependency 'compare_linker', '>= 1.4.0'
23
25
  spec.add_dependency 'octokit'
24
26
 
25
27
  spec.add_development_dependency 'bundler'
28
+ spec.add_development_dependency 'parallel', '< 1.20.0' # parallel-1.20.0 requires ruby version >= 2.5, which used by rubocop
26
29
  spec.add_development_dependency 'rake'
27
- spec.add_development_dependency 'rspec', '~> 3.7'
30
+ spec.add_development_dependency 'rspec'
28
31
  spec.add_development_dependency 'rubocop'
29
32
  spec.add_development_dependency 'rubocop-rspec'
30
33
  end
@@ -88,11 +88,15 @@ module Circleci
88
88
  #
89
89
  # @return [Boolean]
90
90
  def self.need_to_commit?
91
+ old_lockfile = File.read('Gemfile.lock')
92
+
91
93
  unless system('bundle update && bundle update --ruby')
92
94
  raise 'Unable to execute `bundle update && bundle update --ruby`'
93
95
  end
94
96
 
95
- `git status -sb 2> /dev/null`.include?('Gemfile.lock')
97
+ new_lockfile = File.read('Gemfile.lock')
98
+
99
+ old_lockfile != new_lockfile
96
100
  end
97
101
  private_class_method :need_to_commit?
98
102
 
@@ -101,14 +105,42 @@ module Circleci
101
105
  # @return [String] remote branch name. e.g. bundle-update-20180929154455
102
106
  def self.create_branch(git_username, git_email)
103
107
  branch = "#{BRANCH_PREFIX}#{now.strftime('%Y%m%d%H%M%S')}"
104
- remote = "https://#{github_access_token}@#{github_host}/#{repo_full_name}"
105
- system("git remote add github-url-with-token #{remote}")
106
- system("git config user.name '#{git_username}'")
107
- system("git config user.email #{git_email}")
108
- system('git add Gemfile.lock')
109
- system("git commit -m '$ bundle update && bundle update --ruby'")
110
- system("git branch -M #{branch}")
111
- system("git push -q github-url-with-token #{branch}")
108
+
109
+ current_ref = client.ref(repo_full_name, "heads/#{ENV['CIRCLE_BRANCH']}")
110
+ branch_ref = client.create_ref(repo_full_name, "heads/#{branch}", current_ref.object.sha)
111
+
112
+ branch_commit = client.commit(repo_full_name, branch_ref.object.sha)
113
+
114
+ lockfile = File.read('Gemfile.lock')
115
+ lockfile_blob_sha = client.create_blob(repo_full_name, lockfile)
116
+ tree = client.create_tree(
117
+ repo_full_name,
118
+ [
119
+ {
120
+ path: lockfile_path,
121
+ mode: '100644',
122
+ type: 'blob',
123
+ sha: lockfile_blob_sha
124
+ }
125
+ ],
126
+ base_tree: branch_commit.commit.tree.sha
127
+ )
128
+
129
+ commit = client.create_commit(
130
+ repo_full_name,
131
+ '$ bundle update && bundle update --ruby',
132
+ tree.sha,
133
+ branch_ref.object.sha,
134
+ author: {
135
+ name: git_username,
136
+ email: git_email
137
+ }
138
+ )
139
+
140
+ client.update_ref(repo_full_name, "heads/#{branch}", commit.sha)
141
+
142
+ puts "#{branch} is created"
143
+
112
144
  branch
113
145
  end
114
146
  private_class_method :create_branch
@@ -179,11 +211,6 @@ Powered by [circleci-bundle-update-pr](https://rubygems.org/gems/circleci-bundle
179
211
  end
180
212
  private_class_method :enterprise?
181
213
 
182
- def self.github_access_token
183
- enterprise? ? ENV['ENTERPRISE_OCTOKIT_ACCESS_TOKEN'] : ENV['GITHUB_ACCESS_TOKEN']
184
- end
185
- private_class_method :github_access_token
186
-
187
214
  # Get repository full name
188
215
  #
189
216
  # @return [String] e.g. 'masutaka/circleci-bundle-update-pr'
@@ -209,6 +236,19 @@ Powered by [circleci-bundle-update-pr](https://rubygems.org/gems/circleci-bundle
209
236
  @now ||= Time.now
210
237
  end
211
238
  private_class_method :now
239
+
240
+ # Get Gemfile.lock path relative to workdir
241
+ #
242
+ # @return [String]
243
+ def self.lockfile_path
244
+ workdir_env = ENV['CIRCLE_WORKING_DIRECTORY']
245
+ return 'Gemfile.lock' unless workdir_env
246
+
247
+ workdir = Pathname.new(workdir_env).expand_path
248
+ gemfile_lock = Pathname.new(File.expand_path('Gemfile.lock'))
249
+ gemfile_lock.relative_path_from(workdir).to_s
250
+ end
251
+ private_class_method :lockfile_path
212
252
  end
213
253
  end
214
254
  end
@@ -4,7 +4,7 @@ module Circleci
4
4
  module Bundle
5
5
  module Update
6
6
  module Pr
7
- VERSION = '1.16.1'
7
+ VERSION = '2.1.0'
8
8
  end
9
9
  end
10
10
  end
@@ -52,4 +52,65 @@ describe Circleci::Bundle::Update::Pr do
52
52
  it { is_expected.to be_falsy }
53
53
  end
54
54
  end
55
+
56
+ describe '.lockfile_path' do
57
+ subject { Circleci::Bundle::Update::Pr.send(:lockfile_path) }
58
+
59
+ let(:workdir_env) { Dir.getwd }
60
+
61
+ around do |e|
62
+ ENV['CIRCLE_WORKING_DIRECTORY'] = workdir_env
63
+ e.run
64
+ ENV['CIRCLE_WORKING_DIRECTORY'] = nil
65
+ end
66
+
67
+ context 'when Gemfile.lock is in the working dir' do
68
+ it { is_expected.to eq 'Gemfile.lock' }
69
+ end
70
+
71
+ context "when ENV['CIRCLE_WORKING_DIRECTORY'] is not set" do
72
+ let(:workdir_env) { nil }
73
+
74
+ it { is_expected.to eq 'Gemfile.lock' }
75
+ end
76
+
77
+ context "when ENV['CIRCLE_WORKING_DIRECTORY'] is relative path" do
78
+ let(:workdir_env) do
79
+ project_dir = Pathname.getwd.to_s
80
+ home_dir = Pathname.new(ENV['HOME']).to_s
81
+ project_dir.sub(home_dir, '~')
82
+ end
83
+ let(:src_dir) { 'spec/tmp' }
84
+
85
+ around do |e|
86
+ FileUtils.mkdir_p(src_dir)
87
+ FileUtils.touch("#{src_dir}/Gemfile.lock")
88
+ e.run
89
+ FileUtils.rm_rf(src_dir)
90
+ end
91
+
92
+ it 'is "spec/tmp/Gemfile.lock"' do
93
+ Dir.chdir(src_dir) do
94
+ expect(subject).to eq 'spec/tmp/Gemfile.lock'
95
+ end
96
+ end
97
+ end
98
+
99
+ context 'when Gemfile.lock is in a nested dir' do
100
+ let(:src_dir) { 'spec/tmp' }
101
+
102
+ around do |e|
103
+ FileUtils.mkdir_p(src_dir)
104
+ FileUtils.touch("#{src_dir}/Gemfile.lock")
105
+ e.run
106
+ FileUtils.rm_rf(src_dir)
107
+ end
108
+
109
+ it 'is "spec/tmp/Gemfile.lock"' do
110
+ Dir.chdir(src_dir) do
111
+ expect(subject).to eq 'spec/tmp/Gemfile.lock'
112
+ end
113
+ end
114
+ end
115
+ end
55
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: circleci-bundle-update-pr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Masuda
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-17 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: compare_linker
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: parallel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.20.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "<"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.20.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +84,16 @@ dependencies:
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '3.7'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '3.7'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rubocop
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +152,7 @@ homepage: https://github.com/masutaka/circleci-bundle-update-pr
138
152
  licenses:
139
153
  - MIT
140
154
  metadata: {}
141
- post_install_message:
155
+ post_install_message:
142
156
  rdoc_options: []
143
157
  require_paths:
144
158
  - lib
@@ -146,15 +160,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
160
  requirements:
147
161
  - - ">="
148
162
  - !ruby/object:Gem::Version
149
- version: '0'
163
+ version: 2.4.0
150
164
  required_rubygems_version: !ruby/object:Gem::Requirement
151
165
  requirements:
152
166
  - - ">="
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
155
169
  requirements: []
156
- rubygems_version: 3.0.3
157
- signing_key:
170
+ rubygems_version: 3.2.3
171
+ signing_key:
158
172
  specification_version: 4
159
173
  summary: Provide continues bundle update using CircleCI
160
174
  test_files: