circleci-bundle-update-pr 1.16.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: