circleci-bundle-update-pr 1.16.0 → 2.0.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 +4 -4
- data/.circleci/config.yml +102 -110
- data/.rubocop.yml +8 -1
- data/.rubocop_todo.yml +1 -1
- data/Gemfile.lock +48 -40
- data/README.md +50 -1
- data/circleci-bundle-update-pr.gemspec +2 -0
- data/lib/circleci/bundle/update/pr.rb +55 -15
- data/lib/circleci/bundle/update/pr/version.rb +1 -1
- data/spec/circleci/bundle/update/pr_spec.rb +61 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ca0f586fe71477f8f9e4e1ea9d7a5459283b63cccfbb51dc38406a48ea0a543a
|
|
4
|
+
data.tar.gz: 324a4619c170a0cfdb495d503eef5a178742c736f4304c8e298ceb20a8456952
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2a7514514afd1cc031b42efb488b5db935e64aa52294c5695dc2aa6f61ed4a56dde6bc3af7fe9cd9b36154954289320ebd60086c513d503eed6c3794ac436c93
|
|
7
|
+
data.tar.gz: 133c87fe7015b10c71acf4b0f53e94ed16ad4b79223f308f4063af4a86e06cdc53ffe190fcab3489ce2a0e73375055282e4d2fe3ace1ed5620c2bbcdf9d13238
|
data/.circleci/config.yml
CHANGED
|
@@ -1,139 +1,131 @@
|
|
|
1
|
-
version: 2
|
|
1
|
+
version: 2.1
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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:beta3
|
|
24
5
|
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
executors:
|
|
7
|
+
default:
|
|
8
|
+
parameters:
|
|
9
|
+
ruby_version:
|
|
10
|
+
type: enum
|
|
11
|
+
enum: ['2.4', '2.5', '2.6', '2.7']
|
|
27
12
|
docker:
|
|
28
|
-
|
|
29
|
-
working_directory:
|
|
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
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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:
|
|
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
|
+
fail_only: true
|
|
24
|
+
only_for_branches: master
|
|
25
|
+
setup_requirements:
|
|
51
26
|
steps:
|
|
52
|
-
- run:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- run: *rubocop
|
|
67
|
-
- run: *rspec
|
|
68
|
-
build_on_ruby2_5:
|
|
69
|
-
docker:
|
|
70
|
-
- image: ruby:2.5-alpine
|
|
71
|
-
working_directory: /work
|
|
27
|
+
- run:
|
|
28
|
+
name: Install System Dependencies
|
|
29
|
+
command: |
|
|
30
|
+
# for cimg/ruby:2.4
|
|
31
|
+
sudo apt update -q
|
|
32
|
+
sudo apt install -q tzdata
|
|
33
|
+
- run:
|
|
34
|
+
name: Set timezone to Asia/Tokyo
|
|
35
|
+
command: sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
|
|
36
|
+
restore_bundle_cache:
|
|
37
|
+
parameters:
|
|
38
|
+
ruby_version:
|
|
39
|
+
type: enum
|
|
40
|
+
enum: ['2.4', '2.5', '2.6', '2.7']
|
|
72
41
|
steps:
|
|
73
|
-
- run: *setup_requirements
|
|
74
|
-
- run: *set_timezone
|
|
75
|
-
- checkout
|
|
76
42
|
- restore_cache:
|
|
77
|
-
name: Restore
|
|
43
|
+
name: Restore bundle cache
|
|
78
44
|
keys:
|
|
79
|
-
- gems-
|
|
80
|
-
- gems-
|
|
81
|
-
|
|
45
|
+
- gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
|
|
46
|
+
- gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-
|
|
47
|
+
save_bundle_cache:
|
|
48
|
+
parameters:
|
|
49
|
+
ruby_version:
|
|
50
|
+
type: enum
|
|
51
|
+
enum: ['2.4', '2.5', '2.6', '2.7']
|
|
52
|
+
steps:
|
|
82
53
|
- save_cache:
|
|
83
|
-
name: Save
|
|
84
|
-
key: gems-
|
|
54
|
+
name: Save bundle cache
|
|
55
|
+
key: gems-ruby<< parameters.ruby_version >>-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
|
|
85
56
|
paths:
|
|
86
|
-
- /
|
|
87
|
-
|
|
88
|
-
- run: *rspec
|
|
89
|
-
build_on_ruby2_6:
|
|
90
|
-
docker: &docker_ruby2_6
|
|
91
|
-
- image: ruby:2.6-alpine
|
|
92
|
-
working_directory: /work
|
|
57
|
+
- ~/repo/vendor/bundle
|
|
58
|
+
install_bundler:
|
|
93
59
|
steps:
|
|
94
|
-
- run:
|
|
95
|
-
|
|
60
|
+
- run:
|
|
61
|
+
name: install bundler
|
|
62
|
+
command: gem install -N bundler:1.17.3 # same version as Gemfile.lock
|
|
63
|
+
|
|
64
|
+
jobs:
|
|
65
|
+
build:
|
|
66
|
+
parameters:
|
|
67
|
+
ruby_version:
|
|
68
|
+
type: enum
|
|
69
|
+
enum: ['2.4', '2.5', '2.6', '2.7']
|
|
70
|
+
executor:
|
|
71
|
+
name: default
|
|
72
|
+
ruby_version: << parameters.ruby_version >>
|
|
73
|
+
steps:
|
|
74
|
+
- setup_requirements
|
|
96
75
|
- checkout
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- run:
|
|
109
|
-
-
|
|
76
|
+
- restore_bundle_cache:
|
|
77
|
+
ruby_version: << parameters.ruby_version >>
|
|
78
|
+
- install_bundler
|
|
79
|
+
- run:
|
|
80
|
+
name: bundle install
|
|
81
|
+
command: |
|
|
82
|
+
bundle check || bundle install --jobs=4 --retry=3 --path=vendor/bundle
|
|
83
|
+
bundle clean
|
|
84
|
+
- save_bundle_cache:
|
|
85
|
+
ruby_version: << parameters.ruby_version >>
|
|
86
|
+
- run: bundle exec rubocop
|
|
87
|
+
- run: bundle exec rspec
|
|
88
|
+
- notify_on_failure_on_default_branch
|
|
110
89
|
continuous_bundle_update:
|
|
111
|
-
|
|
112
|
-
|
|
90
|
+
executor:
|
|
91
|
+
name: default
|
|
92
|
+
ruby_version: '2.7'
|
|
113
93
|
steps:
|
|
114
|
-
-
|
|
115
|
-
- run: *set_timezone
|
|
94
|
+
- setup_requirements
|
|
116
95
|
- checkout
|
|
117
|
-
-
|
|
96
|
+
- restore_bundle_cache:
|
|
97
|
+
ruby_version: '2.7'
|
|
98
|
+
- install_bundler
|
|
118
99
|
- run:
|
|
119
|
-
name:
|
|
120
|
-
command:
|
|
100
|
+
name: Install edge circleci-bundle-update-pr
|
|
101
|
+
command: |
|
|
102
|
+
gem install -N specific_install
|
|
103
|
+
gem specific_install https://github.com/masutaka/circleci-bundle-update-pr.git
|
|
121
104
|
- deploy:
|
|
122
|
-
name:
|
|
105
|
+
name: Run circleci-bundle-update-pr
|
|
123
106
|
command: circleci-bundle-update-pr CircleCI circleci@example.com $CIRCLE_BRANCH
|
|
107
|
+
- notify_on_failure_on_default_branch
|
|
124
108
|
|
|
125
109
|
workflows:
|
|
126
110
|
version: 2
|
|
127
111
|
ordinary:
|
|
128
112
|
jobs:
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
-
|
|
113
|
+
- build:
|
|
114
|
+
name: ruby-2.4
|
|
115
|
+
ruby_version: '2.4'
|
|
116
|
+
- build:
|
|
117
|
+
name: ruby-2.5
|
|
118
|
+
ruby_version: '2.5'
|
|
119
|
+
- build:
|
|
120
|
+
name: ruby-2.6
|
|
121
|
+
ruby_version: '2.6'
|
|
122
|
+
- build:
|
|
123
|
+
name: ruby-2.7
|
|
124
|
+
ruby_version: '2.7'
|
|
133
125
|
nightly:
|
|
134
126
|
triggers:
|
|
135
127
|
- schedule:
|
|
136
|
-
cron: "00 10 * *
|
|
128
|
+
cron: "00 10 * * 2"
|
|
137
129
|
filters:
|
|
138
130
|
branches:
|
|
139
131
|
only: master
|
data/.rubocop.yml
CHANGED
|
@@ -3,7 +3,11 @@ require: rubocop-rspec
|
|
|
3
3
|
|
|
4
4
|
AllCops:
|
|
5
5
|
DisplayCopNames: true
|
|
6
|
-
|
|
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'
|
data/.rubocop_todo.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,68 +1,76 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
circleci-bundle-update-pr (
|
|
4
|
+
circleci-bundle-update-pr (2.0.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.
|
|
12
|
-
public_suffix (>= 2.0.2, <
|
|
13
|
-
ast (2.4.
|
|
14
|
-
compare_linker (1.4.
|
|
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.
|
|
18
|
-
faraday (
|
|
17
|
+
diff-lcs (1.4.4)
|
|
18
|
+
faraday (1.1.0)
|
|
19
19
|
multipart-post (>= 1.2, < 3)
|
|
20
|
+
ruby2_keywords
|
|
20
21
|
httpclient (2.8.3)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
multipart-post (2.1.1)
|
|
23
|
+
octokit (4.19.0)
|
|
24
|
+
faraday (>= 0.9)
|
|
24
25
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
25
|
-
parallel (1.
|
|
26
|
-
parser (2.
|
|
27
|
-
ast (~> 2.4.
|
|
28
|
-
|
|
29
|
-
public_suffix (3.0.3)
|
|
26
|
+
parallel (1.19.2)
|
|
27
|
+
parser (2.7.2.0)
|
|
28
|
+
ast (~> 2.4.1)
|
|
29
|
+
public_suffix (4.0.6)
|
|
30
30
|
rainbow (3.0.0)
|
|
31
|
-
rake (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
rspec-
|
|
36
|
-
|
|
37
|
-
rspec-
|
|
38
|
-
rspec-
|
|
31
|
+
rake (13.0.1)
|
|
32
|
+
regexp_parser (1.8.2)
|
|
33
|
+
rexml (3.2.4)
|
|
34
|
+
rspec (3.9.0)
|
|
35
|
+
rspec-core (~> 3.9.0)
|
|
36
|
+
rspec-expectations (~> 3.9.0)
|
|
37
|
+
rspec-mocks (~> 3.9.0)
|
|
38
|
+
rspec-core (3.9.3)
|
|
39
|
+
rspec-support (~> 3.9.3)
|
|
40
|
+
rspec-expectations (3.9.3)
|
|
39
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
40
|
-
rspec-support (~> 3.
|
|
41
|
-
rspec-mocks (3.
|
|
42
|
+
rspec-support (~> 3.9.0)
|
|
43
|
+
rspec-mocks (3.9.1)
|
|
42
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
43
|
-
rspec-support (~> 3.
|
|
44
|
-
rspec-support (3.
|
|
45
|
-
rubocop (0.
|
|
46
|
-
jaro_winkler (~> 1.5.1)
|
|
45
|
+
rspec-support (~> 3.9.0)
|
|
46
|
+
rspec-support (3.9.4)
|
|
47
|
+
rubocop (0.93.1)
|
|
47
48
|
parallel (~> 1.10)
|
|
48
|
-
parser (>= 2.
|
|
49
|
-
psych (>= 3.1.0)
|
|
49
|
+
parser (>= 2.7.1.5)
|
|
50
50
|
rainbow (>= 2.2.2, < 4.0)
|
|
51
|
+
regexp_parser (>= 1.8)
|
|
52
|
+
rexml
|
|
53
|
+
rubocop-ast (>= 0.6.0)
|
|
51
54
|
ruby-progressbar (~> 1.7)
|
|
52
|
-
unicode-display_width (>= 1.4.0, <
|
|
53
|
-
rubocop-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
56
|
+
rubocop-ast (1.1.0)
|
|
57
|
+
parser (>= 2.7.1.5)
|
|
58
|
+
rubocop-rspec (1.44.1)
|
|
59
|
+
rubocop (~> 0.87)
|
|
60
|
+
rubocop-ast (>= 0.7.1)
|
|
61
|
+
ruby-progressbar (1.10.1)
|
|
62
|
+
ruby2_keywords (0.0.2)
|
|
63
|
+
sawyer (0.8.2)
|
|
64
|
+
addressable (>= 2.3.5)
|
|
65
|
+
faraday (> 0.8, < 2.0)
|
|
66
|
+
unicode-display_width (1.7.0)
|
|
60
67
|
|
|
61
68
|
PLATFORMS
|
|
62
69
|
ruby
|
|
63
70
|
x86_64-darwin-16
|
|
64
71
|
x86_64-darwin-17
|
|
65
72
|
x86_64-darwin-18
|
|
73
|
+
x86_64-darwin-19
|
|
66
74
|
|
|
67
75
|
DEPENDENCIES
|
|
68
76
|
bundler
|
|
@@ -73,4 +81,4 @@ DEPENDENCIES
|
|
|
73
81
|
rubocop-rspec
|
|
74
82
|
|
|
75
83
|
BUNDLED WITH
|
|
76
|
-
1.17.
|
|
84
|
+
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/#
|
|
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,6 +19,8 @@ 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
|
|
|
@@ -38,7 +38,7 @@ module Circleci
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
BRANCH_PREFIX = ENV['BRANCH_PREFIX'] || 'bundle-update-'.freeze
|
|
41
|
-
TITLE_PREFIX = 'bundle update at '.freeze
|
|
41
|
+
TITLE_PREFIX = ENV['TITLE_PREFIX'] || 'bundle update at '.freeze
|
|
42
42
|
|
|
43
43
|
def self.raise_if_env_unvalid!
|
|
44
44
|
raise "$CIRCLE_PROJECT_USERNAME isn't set" unless ENV['CIRCLE_PROJECT_USERNAME']
|
|
@@ -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
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
@@ -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) {}
|
|
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:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Takashi Masuda
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-11-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: compare_linker
|
|
@@ -146,14 +146,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
146
146
|
requirements:
|
|
147
147
|
- - ">="
|
|
148
148
|
- !ruby/object:Gem::Version
|
|
149
|
-
version:
|
|
149
|
+
version: 2.4.0
|
|
150
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
requirements:
|
|
152
152
|
- - ">="
|
|
153
153
|
- !ruby/object:Gem::Version
|
|
154
154
|
version: '0'
|
|
155
155
|
requirements: []
|
|
156
|
-
rubygems_version: 3.
|
|
156
|
+
rubygems_version: 3.1.2
|
|
157
157
|
signing_key:
|
|
158
158
|
specification_version: 4
|
|
159
159
|
summary: Provide continues bundle update using CircleCI
|