Skip to content

Commit 372f305

Browse files
authored
Merge pull request #45 from truemail-rb/develop
truemail-client v0.5.0
2 parents 5c3ae1b + aac43d2 commit 372f305

26 files changed

+522
-534
lines changed

.circleci/config.yml

Lines changed: 102 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
---
2+
13
version: 2.1
24

35
defaults: &defaults
@@ -6,26 +8,26 @@ defaults: &defaults
68
- image: cimg/ruby:<< parameters.ruby-version >>
79

810
orbs:
9-
ruby: circleci/ruby@1.4.0
11+
ruby: circleci/ruby@2.0.0
1012

1113
references:
12-
restore_bundle_cache: &restore_bundle_cache
13-
restore_cache:
14-
keys:
15-
- truemail-ruby-client-{{ checksum "truemail-client.gemspec" }}
16-
1714
bundle_install: &bundle_install
1815
run:
1916
name: Installing gems
2017
command: |
21-
bundle config set --local path 'vendor/bundle'
18+
bundle config set --local path '~/vendor/bundle'
2219
bundle install
2320
24-
save_bundle_cache: &save_bundle_cache
25-
save_cache:
26-
key: truemail-ruby-client-{{ checksum "truemail-client.gemspec" }}
27-
paths:
28-
- vendor/bundle
21+
install_linters: &install_linters
22+
run:
23+
name: Installing bunch of linters
24+
command: |
25+
curl -1sLf 'https://dl.cloudsmith.io/public/evilmartians/lefthook/setup.deb.sh' | sudo -E bash
26+
sudo apt-get update -y
27+
sudo apt-get install -y lefthook shellcheck yamllint
28+
npm install --prefix='~/.local' --global --save-dev git+https://github.com/streetsidesoftware/cspell-cli markdownlint-cli
29+
cp .circleci/linter_configs/.fasterer.yml .fasterer.yml
30+
cp .circleci/linter_configs/.lefthook.yml lefthook.yml
2931
3032
install_codeclimate_reporter: &install_codeclimate_reporter
3133
run:
@@ -34,17 +36,20 @@ references:
3436
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
3537
chmod +x ./cc-test-reporter
3638
39+
use_latest_bundler: &use_latest_bundler
40+
run:
41+
name: Using latest bundler
42+
command: gem install bundler
43+
3744
use_latest_gemspec: &use_latest_gemspec
3845
run:
3946
name: Using latest gemspec
40-
command: |
41-
cp .circleci/gemspec_latest truemail-client.gemspec
47+
command: cp .circleci/gemspecs/latest truemail-client.gemspec
4248

4349
use_compatible_gemspec: &use_compatible_gemspec
4450
run:
4551
name: Using compatible gemspec
46-
command: |
47-
cp .circleci/gemspec_compatible truemail-client.gemspec
52+
command: cp .circleci/gemspecs/compatible truemail-client.gemspec
4853

4954
jobs:
5055
linters-ruby:
@@ -57,16 +62,30 @@ jobs:
5762
steps:
5863
- checkout
5964

65+
- <<: *use_latest_bundler
6066
- <<: *use_latest_gemspec
61-
- <<: *restore_bundle_cache
6267
- <<: *bundle_install
63-
- <<: *save_bundle_cache
68+
- <<: *install_linters
6469

6570
- run:
66-
name: Running Overcommit
67-
command: |
68-
bundle exec overcommit -s
69-
SKIP=AuthorEmail,AuthorName bundle exec overcommit -r
71+
name: Running code style linters
72+
command: lefthook run code-style-linters
73+
74+
- run:
75+
name: Running code performance linters
76+
command: lefthook run code-performance-linters
77+
78+
- run:
79+
name: Running code vulnerability linters
80+
command: lefthook run code-vulnerability-linters
81+
82+
- run:
83+
name: Running code documentation linters
84+
command: lefthook run code-documentation-linters
85+
86+
- run:
87+
name: Running release linters
88+
command: lefthook run release-linters
7089

7190
tests-ruby:
7291
parameters:
@@ -78,10 +97,9 @@ jobs:
7897
steps:
7998
- checkout
8099

100+
- <<: *use_latest_bundler
81101
- <<: *use_latest_gemspec
82-
- <<: *restore_bundle_cache
83102
- <<: *bundle_install
84-
- <<: *save_bundle_cache
85103
- <<: *install_codeclimate_reporter
86104

87105
- run:
@@ -109,31 +127,83 @@ jobs:
109127
parameters:
110128
ruby-version:
111129
type: string
112-
docker:
113-
- image: cimg/ruby:<< parameters.ruby-version >>
130+
131+
<<: *defaults
132+
114133
steps:
115134
- checkout
135+
116136
- <<: *use_compatible_gemspec
137+
117138
- ruby/install-deps:
118-
bundler-version: "2.3.9"
139+
bundler-version: "2.3.26"
119140
with-cache: false
120-
path: './vendor/custom_bundle'
141+
path: '~/vendor/custom_bundle'
142+
121143
- run:
122144
name: Running compatibility tests
123145
command: bundle exec rspec
124146

147+
rubygems-deps-ruby:
148+
parameters:
149+
ruby-version:
150+
type: string
151+
152+
<<: *defaults
153+
154+
steps:
155+
- checkout
156+
157+
- run:
158+
name: Building rubygems dependencies from default gemspec on minimal Ruby version
159+
command: bundle install
160+
161+
releasing-gem-ruby:
162+
parameters:
163+
ruby-version:
164+
type: string
165+
166+
<<: *defaults
167+
168+
steps:
169+
- checkout
170+
171+
- add_ssh_keys:
172+
fingerprints:
173+
- "5a:cb:84:35:44:17:1c:ef:77:41:a0:bc:29:20:77:35"
174+
175+
- run:
176+
name: Publishing new release
177+
command: ./.circleci/scripts/release.sh
178+
125179
workflows:
126-
build_and_test:
180+
build_test_deploy:
127181
jobs:
128182
- linters-ruby:
129183
matrix:
130184
parameters:
131-
ruby-version: ["3.1"]
185+
ruby-version: ["3.2-node"]
132186
- tests-ruby:
133187
matrix:
134188
parameters:
135-
ruby-version: ["3.1"]
189+
ruby-version: ["3.2"]
136190
- compatibility-ruby:
137191
matrix:
138192
parameters:
139-
ruby-version: ["2.5", "2.6", "2.7", "3.0"]
193+
ruby-version: ["2.5", "2.6", "2.7", "3.0", "3.1"]
194+
- rubygems-deps-ruby:
195+
matrix:
196+
parameters:
197+
ruby-version: ["2.5"]
198+
- releasing-gem-ruby:
199+
requires:
200+
- linters-ruby
201+
- tests-ruby
202+
- compatibility-ruby
203+
- rubygems-deps-ruby
204+
matrix:
205+
parameters:
206+
ruby-version: ["2.5"]
207+
filters:
208+
branches:
209+
only: master

.circleci/gemspec_compatible renamed to .circleci/gemspecs/compatible

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,12 @@ Gem::Specification.new do |spec|
2323
}
2424

2525
spec.required_ruby_version = '>= 2.5.0'
26-
27-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28-
spec.bindir = 'exe'
29-
spec.executables = spec.files.grep(%r{^exe/}) { |f| ::File.basename(f) }
30-
spec.require_paths = ['lib']
31-
32-
spec.add_development_dependency 'ffaker', '~> 2.20'
33-
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
34-
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
35-
spec.add_development_dependency 'rspec', '~> 3.11'
36-
spec.add_development_dependency 'webmock', '~> 3.14'
26+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27+
spec.require_paths = %w[lib]
28+
29+
spec.add_development_dependency 'ffaker'
30+
spec.add_development_dependency 'json_matchers'
31+
spec.add_development_dependency 'rake'
32+
spec.add_development_dependency 'rspec'
33+
spec.add_development_dependency 'webmock'
3734
end

.circleci/gemspec_latest renamed to .circleci/gemspecs/latest

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,20 @@ Gem::Specification.new do |spec|
2323
}
2424

2525
spec.required_ruby_version = '>= 2.5.0'
26+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27+
spec.require_paths = %w[lib]
2628

27-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28-
spec.bindir = 'exe'
29-
spec.executables = spec.files.grep(%r{^exe/}) { |f| ::File.basename(f) }
30-
spec.require_paths = ['lib']
31-
32-
spec.add_development_dependency 'bundler-audit', '~> 0.9.0.1'
33-
spec.add_development_dependency 'fasterer', '~> 0.9.0'
34-
spec.add_development_dependency 'ffaker', '~> 2.20'
29+
spec.add_development_dependency 'bundler-audit', '~> 0.9.1'
30+
spec.add_development_dependency 'fasterer', '~> 0.10.0'
31+
spec.add_development_dependency 'ffaker', '~> 2.21'
3532
spec.add_development_dependency 'json_matchers', '~> 0.11.1'
36-
spec.add_development_dependency 'overcommit', '~> 0.58.0'
37-
spec.add_development_dependency 'pry-byebug', '~> 3.9'
33+
spec.add_development_dependency 'pry-byebug', '~> 3.10', '>= 3.10.1'
3834
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
39-
spec.add_development_dependency 'reek', '~> 6.1'
40-
spec.add_development_dependency 'rspec', '~> 3.11'
41-
spec.add_development_dependency 'rubocop', '~> 1.26', '>= 1.26.1'
42-
spec.add_development_dependency 'rubocop-performance', '~> 1.13', '>= 1.13.3'
43-
spec.add_development_dependency 'rubocop-rspec', '~> 2.9'
44-
spec.add_development_dependency 'simplecov', '~> 0.21.2'
45-
spec.add_development_dependency 'webmock', '~> 3.14'
35+
spec.add_development_dependency 'reek', '~> 6.1', '>= 6.1.4'
36+
spec.add_development_dependency 'rspec', '~> 3.12'
37+
spec.add_development_dependency 'rubocop', '~> 1.45', '>= 1.45.1'
38+
spec.add_development_dependency 'rubocop-performance', '~> 1.16'
39+
spec.add_development_dependency 'rubocop-rspec', '~> 2.18', '>= 2.18.1'
40+
spec.add_development_dependency 'simplecov', '~> 0.22.0'
41+
spec.add_development_dependency 'webmock', '~> 3.18', '>= 3.18.1'
4642
end
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
3+
ignore:
4+
- EXA-MPLE-XXXX

.circleci/linter_configs/.cspell.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
3+
enableGlobDot: true
4+
5+
patterns:
6+
- name: GithubUser
7+
pattern: /\[@.+\]/gmx
8+
- name: MarkdownCode
9+
pattern: /`{1,3}.+`{1,3}/gmx
10+
- name: MarkdownCodeBlock
11+
pattern: /^\s*```[\s\S]*?^\s*```/gmx
12+
13+
languageSettings:
14+
- languageId: markdown
15+
ignoreRegExpList:
16+
- Email
17+
- GithubUser
18+
- MarkdownCode
19+
- MarkdownCodeBlock
20+
21+
words:
22+
- Commiting
23+
- Gitter
24+
- Multihomed
25+
- Trotsenko
26+
- Truemail
27+
- Vladislav
28+
- bestwebua
29+
- codebases
30+
- dockerized
31+
- gemspecs
32+
- healthcheck
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
3+
exclude_paths:
4+
- '.circleci/**/*.rb'
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
3+
no_tty: true
4+
skip_output:
5+
- meta
6+
7+
code-style-linters:
8+
commands:
9+
reek:
10+
run: bundle exec reek
11+
rubocop:
12+
run: bundle exec rubocop -c '.circleci/linter_configs/.rubocop.yml'
13+
shellcheck:
14+
glob: '*.{sh}'
15+
run: shellcheck --norc {all_files}
16+
yamllint:
17+
run: yamllint -c '.circleci/linter_configs/.yamllint.yml' .
18+
19+
code-performance-linters:
20+
commands:
21+
fasterer:
22+
run: bundle exec fasterer
23+
24+
code-vulnerability-linters:
25+
commands:
26+
bundle-audit:
27+
run: bundle exec bundle-audit check -c '.circleci/linter_configs/.bundler-audit.yml' --update
28+
29+
code-documentation-linters:
30+
commands:
31+
cspell:
32+
run: cspell-cli lint -c '.circleci/linter_configs/.cspell.yml' '**/*.{txt,md}'
33+
markdownlint:
34+
run: markdownlint -c '.circleci/linter_configs/.markdownlint.yml' '**/*.md'
35+
36+
release-linters:
37+
commands:
38+
changeloglint:
39+
run: .circleci/scripts/changeloglint.sh
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
3+
default: true
4+
5+
MD013:
6+
line_length: 500
7+
8+
MD024:
9+
siblings_only: true

0 commit comments

Comments
 (0)