From d8b5559e04bad85299ccb6f828650738b9f818fd Mon Sep 17 00:00:00 2001 From: Ian Smith Date: Thu, 6 Dec 2018 11:41:29 -0800 Subject: [PATCH 1/5] updating for chef 14 compliance and updating some testing environment details --- .delivery/project.toml | 1 + .kitchen.dokken.yml | 65 +++++++++++++++++++ .pre-commit-config.yaml | 32 +++++++++ .rubocop.yml | 44 ------------- .travis.yml | 63 ++++++++++++++---- Berksfile | 2 +- Gemfile | 7 +- libraries/collectd_config.rb | 2 +- libraries/collectd_plugin.rb | 2 +- libraries/collectd_service.rb | 39 ++++++++--- metadata.rb | 21 +++--- .../cookbooks/collectd-test/metadata.rb | 18 +++++ .../default/serverspec/default_spec.rb | 2 +- .../userchange/serverspec/default_spec.rb | 2 +- test/spec/libraries/collectd_config_spec.rb | 46 ++++++------- test/spec/libraries/collectd_plugin_spec.rb | 14 ++-- test/spec/libraries/collectd_service_spec.rb | 12 ++-- test/spec/recipes/default_spec.rb | 4 +- 18 files changed, 256 insertions(+), 120 deletions(-) create mode 100644 .delivery/project.toml create mode 100644 .kitchen.dokken.yml create mode 100644 .pre-commit-config.yaml delete mode 100644 .rubocop.yml create mode 100644 test/fixtures/cookbooks/collectd-test/metadata.rb diff --git a/.delivery/project.toml b/.delivery/project.toml new file mode 100644 index 0000000..6d5e361 --- /dev/null +++ b/.delivery/project.toml @@ -0,0 +1 @@ +remote_file = "https://raw.githubusercontent.com/chef-cookbooks/community_cookbook_tools/master/delivery/project.toml" diff --git a/.kitchen.dokken.yml b/.kitchen.dokken.yml new file mode 100644 index 0000000..d5e3007 --- /dev/null +++ b/.kitchen.dokken.yml @@ -0,0 +1,65 @@ +--- +driver: + name: dokken + chef_version: latest + +transport: + name: dokken + +provisioner: + name: dokken + always_update_cookbooks: true + +platforms: + - name: debian-8 + driver: + image: dokken/debian-8 + privileged: true + pid_one_command: /lib/systemd/systemd + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro # required by systemd + - name: debian-9 + driver: + image: dokken/debian-9 + privileged: true + pid_one_command: /lib/systemd/systemd + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro # required by systemd + - name: ubuntu-14 + driver: + image: dokken/ubuntu-14.04 + privileged: true + - name: ubuntu-16 + driver: + image: dokken/ubuntu-16.04 + privileged: true + pid_one_command: /lib/systemd/systemd + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro # required by systemd + - name: centos-6 + driver: + image: dokken/centos-6 + privileged: true + - name: centos-7 + driver: + image: dokken/centos-7 + privileged: true + pid_one_command: /usr/lib/systemd/systemd + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro # required by systemd + +verifier: + name: inspec + +suites: + - name: default + run_list: + - recipe[collectd::default] + - name: userchange + run_list: + - recipe[collectd::default] + - recipe[collectd::_test_plugin] + attributes: + collectd: + service_user: 'root' + service_group: 'root' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..9f3608c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,32 @@ +--- +repos: +- repo: git://github.com/pre-commit/pre-commit-hooks + rev: v1.4.0-1 + hooks: + - id: trailing-whitespace + - id: check-merge-conflict + - id: end-of-file-fixer + - id: check-added-large-files + - id: check-json + - id: check-vcs-permalinks + - id: mixed-line-ending + - id: pretty-format-json + args: + - --autofix + - --top-keys=id + - id: sort-simple-yaml + files: '.yaml$' + - id: check-symlinks + - id: check-yaml + - id: detect-private-key +- repo: git://github.com/Lucas-C/pre-commit-hooks + rev: v1.1.6 + hooks: + - id: remove-crlf + - id: remove-tabs +- repo: git://github.com/EMSL-MSC/pre-commit-hooks-chef + rev: 8e9ad15ee7430c7a52d5527d6b9cc5d0a158c974 + hooks: + - id: check-cookstyle + - id: check-foodcritic + #- id: check-rspec diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 100644 index 7e1519f..0000000 --- a/.rubocop.yml +++ /dev/null @@ -1,44 +0,0 @@ ---- -AllCops: - Exclude: - - 'Guardfile' - - 'Rakefile' - - 'Vagrantfile' - - 'Policyfile.rb' - - 'Berksfile' - - 'Thorfile' - - 'Gemfile' - - 'metadata.rb' - - 'test/**/*' - - 'bin/**' - - 'vendor/**/*' -AlignParameters: - Enabled: false -ClassLength: - Enabled: false -CyclomaticComplexity: - Enabled: false -Documentation: - Enabled: false -Encoding: - Enabled: false -Style/FileName: - Enabled: false -LineLength: - Enabled: false -MethodLength: - Enabled: false -Metrics/AbcSize: - Enabled: false -PerceivedComplexity: - Enabled: false -Style/SpaceBeforeFirstArg: - Enabled: false -Style/ClassAndModuleChildren: - Enabled: false -Style/FileName: - Enabled: false -Style/GuardClause: - Enabled: false -Style/PercentLiteralDelimiters: - Enabled: false diff --git a/.travis.yml b/.travis.yml index ea742e3..77c3c3f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,51 @@ --- -language: ruby -cache: bundler -sudo: false -notifications: - slack: bloomberg-rnd:BvYmxrV9xj902XWTRNrkLNkR -script: bundle exec rake travis -rvm: - - 2.2 -branches: - only: - - master -matrix: - fast_finish: true +dist: trusty +sudo: required +group: edge +services: docker +addons: + apt: + sources: + - chef-stable-trusty + packages: + - chefdk + +stages: + - lint + - test + +install: echo "skip bundle install" + +before_script: + - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER ) + - eval "$(/opt/chefdk/bin/chef shell-init bash)" + - chef --version + +env: + - T=server-debian-8 + - T=server-debian-9 + - T=server-ubuntu-14 + - T=server-ubuntu-16 + - T=server-centos-6 + - T=server-centos-7 + +script: + - chef gem install kitchen-dokken + - KITCHEN_LOCAL_YAML=.kitchen.dokken.yml kitchen test $T -d always + +jobs: + include: + - stage: lint + env: + services: + sudo: + language: python + python: 3.6 + script: + - cookstyle --version + - foodcritic --version + - rspec --version + - delivery --version + - pip install pre-commit + - pre-commit run -a + - chef exec delivery local all diff --git a/Berksfile b/Berksfile index f63be1c..5ba1d32 100644 --- a/Berksfile +++ b/Berksfile @@ -1,6 +1,6 @@ source 'https://supermarket.chef.io' metadata - +solver :ruby, :required group :test, :integration do cookbook 'apt' cookbook 'yum-epel' diff --git a/Gemfile b/Gemfile index 394cc01..c6fbe5e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' -gem 'poise', '~> 2.2' -gem 'poise-service', '~> 1.0' -gem 'poise-boiler' +gem 'poise', '~> 2.8' +gem 'poise-service', '~> 1.5' +gem 'poise-boiler', '~> 1.18' group :lint do gem 'rubocop' @@ -12,6 +12,7 @@ group :unit, :integration do gem 'berkshelf' gem 'chefspec' gem 'serverspec' + gem 'inspec' end group :development do diff --git a/libraries/collectd_config.rb b/libraries/collectd_config.rb index b6185b3..27b1999 100644 --- a/libraries/collectd_config.rb +++ b/libraries/collectd_config.rb @@ -65,7 +65,7 @@ def write_elements(directives, indent = 0) next if id.nil? [%(#{tabs}<#{key} "#{id}">), write_elements(value, indent.next), - %(#{tabs}) + %(#{tabs}), ].join("\n") elsif value.is_a?(String) %(#{tabs}#{key} "#{value}") diff --git a/libraries/collectd_plugin.rb b/libraries/collectd_plugin.rb index bef1070..1b53c6f 100644 --- a/libraries/collectd_plugin.rb +++ b/libraries/collectd_plugin.rb @@ -63,7 +63,7 @@ def config_filename configuration( 'load_plugin' => new_resource.plugin_name, 'plugin' => { - 'id' => new_resource.plugin_name + 'id' => new_resource.plugin_name, }.merge(new_resource.options) ) end diff --git a/libraries/collectd_service.rb b/libraries/collectd_service.rb index 533ff24..9d472cc 100644 --- a/libraries/collectd_service.rb +++ b/libraries/collectd_service.rb @@ -92,7 +92,7 @@ def action_enable # TODO: (jbellone) Fix the package resource for AIX so that # it is able to install from a URL. package_path = if new_resource.package_source - url = new_resource.package_source % { version: new_resource.package_version } + url = format(new_resource.package_source, version: new_resource.package_version) basename = ::File.basename(url) remote_file ::File.join(Chef::Config[:file_cache_path], basename) do source url @@ -100,15 +100,38 @@ def action_enable end.path end - package new_resource.package_name do - provider Chef::Provider::Package::Solaris if platform?('solaris2') - provider Chef::Provider::Package::Dpkg if platform?('ubuntu') && new_resource.package_source - action :upgrade - version new_resource.package_version - source package_path - notifies :restart, new_resource, :delayed + if platform?('solaris2') + solaris_package new_resource.package_name do + action :upgrade + version new_resource.package_version + source package_path + notifies :restart, new_resource, :delayed + end + elsif platform_family?('debian') + dpkg_package new_resource.package_name do + action :upgrade + version new_resource.package_version + source package_path + notifies :restart, new_resource, :delayed + end + elsif platform_family?('rhel') + yum_package new_resource.package_name do + action :upgrade + version new_resource.package_version + source package_path + notifies :restart, new_resource, :delayed + end end + # package_provider new_resource.package_name do + # # provider Chef::Provider::Package::Solaris if platform?('solaris2') + # # provider Chef::Provider::Package::Dpkg if platform?('ubuntu') && new_resource.package_source + # action :upgrade + # version new_resource.package_version + # source package_path + # notifies :restart, new_resource, :delayed + # end + # Installing package starts collectd service automatically # Disable this so that collectd can be managed through poise-service service new_resource.package_name do diff --git a/metadata.rb b/metadata.rb index 9e23d50..bbcacb0 100644 --- a/metadata.rb +++ b/metadata.rb @@ -1,18 +1,21 @@ name 'collectd' maintainer 'John Bellone' maintainer_email 'jbellone@bloomberg.net' -license 'Apache 2.0' +license 'Apache-2.0' description 'Installs and configures the collectd monitoring daemon.' long_description 'Installs and configures the collectd monitoring daemon.' -version '2.2.4' +version '2.2.5' source_url 'https://github.com/bloomberg/collectd-cookbook' issues_url 'https://github.com/bloomberg/collectd-cookbook/issues' -supports 'ubuntu', '>= 10.04' -supports 'centos', '>= 5.8' -supports 'redhat', '>= 5.8' -supports 'aix' -supports 'solaris2' +chef_version '~> 14' -depends 'poise', '~> 2.2' -depends 'poise-service', '~> 1.0' +supports 'ubuntu', '>= 14.04' +supports 'debian', '>= 8.0' +supports 'centos', '>= 6.8' +# supports 'redhat', '>= 6.0' # need to add actual rhel to testing infra +# supports 'aix' # need to add actual testing for aix +# supports 'solaris2' # need to add actual testing for solaris2 + +depends 'poise', '~> 2.8' +depends 'poise-service', '~> 1.5' diff --git a/test/fixtures/cookbooks/collectd-test/metadata.rb b/test/fixtures/cookbooks/collectd-test/metadata.rb new file mode 100644 index 0000000..9ad1b69 --- /dev/null +++ b/test/fixtures/cookbooks/collectd-test/metadata.rb @@ -0,0 +1,18 @@ +name 'collectd-test' +maintainer 'John Bellone' +maintainer_email 'jbellone@bloomberg.net' +license 'Apache-2.0' +description 'Tests the collectd-cookbook.' +long_description 'This cookbook will consume and test the collectd-cookbook.' +version '2.2.5' +source_url 'https://github.com/bloomberg/collectd-cookbook' +issues_url 'https://github.com/bloomberg/collectd-cookbook/issues' + +chef_version '~> 14' + +supports 'ubuntu', '>= 14.04' +supports 'debian', '>= 8.0' +supports 'centos', '>= 6.8' +# supports 'redhat', '>= 6.0' # need to add actual rhel to testing infra +# supports 'aix' # need to add actual testing for aix +# supports 'solaris2' # need to add actual testing for solaris2 diff --git a/test/integration/default/serverspec/default_spec.rb b/test/integration/default/serverspec/default_spec.rb index 738b64c..c41a91b 100644 --- a/test/integration/default/serverspec/default_spec.rb +++ b/test/integration/default/serverspec/default_spec.rb @@ -27,7 +27,7 @@ describe file('/etc/collectd.conf') do it { should be_file } - it { should be_owned_by 'collectd'} + it { should be_owned_by 'collectd' } it { should be_grouped_into 'collectd' } it { should contain 'Interval 10' } it { should contain 'ReadThreads 5' } diff --git a/test/integration/userchange/serverspec/default_spec.rb b/test/integration/userchange/serverspec/default_spec.rb index ded66fc..102184e 100644 --- a/test/integration/userchange/serverspec/default_spec.rb +++ b/test/integration/userchange/serverspec/default_spec.rb @@ -27,7 +27,7 @@ describe file('/etc/collectd.conf') do it { should be_file } - it { should be_owned_by 'root'} + it { should be_owned_by 'root' } it { should be_grouped_into 'root' } it { should contain 'Interval 10' } it { should contain 'ReadThreads 5' } diff --git a/test/spec/libraries/collectd_config_spec.rb b/test/spec/libraries/collectd_config_spec.rb index 71466e1..7b411f3 100644 --- a/test/spec/libraries/collectd_config_spec.rb +++ b/test/spec/libraries/collectd_config_spec.rb @@ -27,34 +27,34 @@ recipe do collectd_config '/etc/collectd.conf' do configuration('hash' => { - 'id' => 'id', - 'string' => 'string', - 'integer' => 1, - 'true_class' => true, - 'false_class' => false, - 'symbol' => :symbol, - 'array' => %w{1 2 3}, - 'hash' => { - 'id' => 'id', - 'string' => 'string' - } - }) + 'id' => 'id', + 'string' => 'string', + 'integer' => 1, + 'true_class' => true, + 'false_class' => false, + 'symbol' => :symbol, + 'array' => %w(1 2 3), + 'hash' => { + 'id' => 'id', + 'string' => 'string', + }, + }) end end it { expect(chef_run).to render_file('/etc/collectd.conf').with_content(<<-EOH.chomp) } - String "string" - Integer 1 - TrueClass true - FalseClass false - Symbol symbol - Array "1" - Array "2" - Array "3" - - String "string" - + String "string" + Integer 1 + TrueClass true + FalseClass false + Symbol symbol + Array "1" + Array "2" + Array "3" + + String "string" + EOH end diff --git a/test/spec/libraries/collectd_plugin_spec.rb b/test/spec/libraries/collectd_plugin_spec.rb index fa6afc4..fb25a6c 100644 --- a/test/spec/libraries/collectd_plugin_spec.rb +++ b/test/spec/libraries/collectd_plugin_spec.rb @@ -16,13 +16,13 @@ it do expect(chef_run).to create_collectd_config('/etc/collectd.d/syslog.conf') - .with(configuration: { - 'load_plugin' => 'syslog', - 'plugin' => { - 'id' => 'syslog', - 'log_level' => 'info' - } - }) + .with(configuration: { + 'load_plugin' => 'syslog', + 'plugin' => { + 'id' => 'syslog', + 'log_level' => 'info', + }, + }) end end end diff --git a/test/spec/libraries/collectd_service_spec.rb b/test/spec/libraries/collectd_service_spec.rb index 95b462e..1f0533f 100644 --- a/test/spec/libraries/collectd_service_spec.rb +++ b/test/spec/libraries/collectd_service_spec.rb @@ -12,16 +12,16 @@ it do expect(chef_run).to create_directory('/etc/collectd.d') - .with(owner: 'collectd', group: 'collectd', mode: '0755') + .with(owner: 'collectd', group: 'collectd', mode: '0755') end it do expect(chef_run).to create_collectd_config('/etc/collectd.conf') - .with(configuration: { - 'include' => '/etc/collectd.d/*.conf', - 'pid_file' => '/var/lib/collectd/collectd.pid', - 'base_dir' => '/var/lib/collectd' - }) + .with(configuration: { + 'include' => '/etc/collectd.d/*.conf', + 'pid_file' => '/var/lib/collectd/collectd.pid', + 'base_dir' => '/var/lib/collectd', + }) end end end diff --git a/test/spec/recipes/default_spec.rb b/test/spec/recipes/default_spec.rb index 5f8680c..300951a 100644 --- a/test/spec/recipes/default_spec.rb +++ b/test/spec/recipes/default_spec.rb @@ -5,8 +5,8 @@ it { expect(chef_run).to create_poise_service_user('collectd').with(group: 'collectd') } it do expect(chef_run).to enable_collectd_service('collectd') - .with(user: 'collectd') - .with(group: 'collectd') + .with(user: 'collectd') + .with(group: 'collectd') end context 'with default attributes' do From 439b38e251d58e93206bd00642363cc85842fd3e Mon Sep 17 00:00:00 2001 From: Ian Smith Date: Thu, 6 Dec 2018 11:42:52 -0800 Subject: [PATCH 2/5] moving test recipe to test fixture and updating tests --- .kitchen.dokken.yml | 2 +- .kitchen.yml | 3 +-- .../fixtures/cookbooks/collectd-test/recipes}/_test_plugin.rb | 0 3 files changed, 2 insertions(+), 3 deletions(-) rename {recipes => test/fixtures/cookbooks/collectd-test/recipes}/_test_plugin.rb (100%) diff --git a/.kitchen.dokken.yml b/.kitchen.dokken.yml index d5e3007..1a4b8e9 100644 --- a/.kitchen.dokken.yml +++ b/.kitchen.dokken.yml @@ -58,7 +58,7 @@ suites: - name: userchange run_list: - recipe[collectd::default] - - recipe[collectd::_test_plugin] + - recipe[collectd-test::_test_plugin] attributes: collectd: service_user: 'root' diff --git a/.kitchen.yml b/.kitchen.yml index a137349..77fc134 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -32,9 +32,8 @@ suites: - name: userchange run_list: - recipe[collectd::default] - - recipe[collectd::_test_plugin] + - recipe[collectd-test::_test_plugin] attributes: collectd: service_user: 'root' service_group: 'root' - diff --git a/recipes/_test_plugin.rb b/test/fixtures/cookbooks/collectd-test/recipes/_test_plugin.rb similarity index 100% rename from recipes/_test_plugin.rb rename to test/fixtures/cookbooks/collectd-test/recipes/_test_plugin.rb From 458d780f5c7f26eec31977d27e0136e8b375d9c2 Mon Sep 17 00:00:00 2001 From: Ian Smith Date: Thu, 6 Dec 2018 11:45:25 -0800 Subject: [PATCH 3/5] resolving to an n-1 testing strategy --- .kitchen.yml | 14 ++++---------- metadata.rb | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.kitchen.yml b/.kitchen.yml index 77fc134..5566bc1 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -6,22 +6,16 @@ provisioner: name: chef_zero platforms: - - name: ubuntu-14.04 - run_list: - - recipe[apt::default] - - name: ubuntu-12.04 + - name: ubuntu-16.04 run_list: - recipe[apt::default] - - name: ubuntu-10.04 + - name: ubuntu-14.04 run_list: - recipe[apt::default] - - name: centos-7.2 - run_list: - - recipe[yum-epel::default] - - name: centos-6.7 + - name: centos-7.5 run_list: - recipe[yum-epel::default] - - name: centos-5.11 + - name: centos-6.8 run_list: - recipe[yum-epel::default] diff --git a/metadata.rb b/metadata.rb index bbcacb0..eb2c9c2 100644 --- a/metadata.rb +++ b/metadata.rb @@ -11,7 +11,7 @@ chef_version '~> 14' supports 'ubuntu', '>= 14.04' -supports 'debian', '>= 8.0' +# supports 'debian', '>= 8.0' supports 'centos', '>= 6.8' # supports 'redhat', '>= 6.0' # need to add actual rhel to testing infra # supports 'aix' # need to add actual testing for aix From 3012e1a95f1969e17bd2a984d3b7bacb830512bf Mon Sep 17 00:00:00 2001 From: Ian Smith Date: Thu, 6 Dec 2018 12:30:28 -0800 Subject: [PATCH 4/5] putting spec dir in default place --- .rspec | 2 -- {test/spec => spec}/libraries/collectd_config_spec.rb | 0 {test/spec => spec}/libraries/collectd_plugin_spec.rb | 0 {test/spec => spec}/libraries/collectd_service_spec.rb | 0 {test/spec => spec}/recipes/default_spec.rb | 0 {test/spec => spec}/spec_helper.rb | 0 6 files changed, 2 deletions(-) delete mode 100644 .rspec rename {test/spec => spec}/libraries/collectd_config_spec.rb (100%) rename {test/spec => spec}/libraries/collectd_plugin_spec.rb (100%) rename {test/spec => spec}/libraries/collectd_service_spec.rb (100%) rename {test/spec => spec}/recipes/default_spec.rb (100%) rename {test/spec => spec}/spec_helper.rb (100%) diff --git a/.rspec b/.rspec deleted file mode 100644 index b4401c4..0000000 --- a/.rspec +++ /dev/null @@ -1,2 +0,0 @@ ---default-path test/spec ---color diff --git a/test/spec/libraries/collectd_config_spec.rb b/spec/libraries/collectd_config_spec.rb similarity index 100% rename from test/spec/libraries/collectd_config_spec.rb rename to spec/libraries/collectd_config_spec.rb diff --git a/test/spec/libraries/collectd_plugin_spec.rb b/spec/libraries/collectd_plugin_spec.rb similarity index 100% rename from test/spec/libraries/collectd_plugin_spec.rb rename to spec/libraries/collectd_plugin_spec.rb diff --git a/test/spec/libraries/collectd_service_spec.rb b/spec/libraries/collectd_service_spec.rb similarity index 100% rename from test/spec/libraries/collectd_service_spec.rb rename to spec/libraries/collectd_service_spec.rb diff --git a/test/spec/recipes/default_spec.rb b/spec/recipes/default_spec.rb similarity index 100% rename from test/spec/recipes/default_spec.rb rename to spec/recipes/default_spec.rb diff --git a/test/spec/spec_helper.rb b/spec/spec_helper.rb similarity index 100% rename from test/spec/spec_helper.rb rename to spec/spec_helper.rb From a29bc5373c4b577b11a76a319ad4ec0c4987eab0 Mon Sep 17 00:00:00 2001 From: Ian Smith Date: Thu, 6 Dec 2018 12:48:44 -0800 Subject: [PATCH 5/5] updating test env for poise gems --- .travis.yml | 2 +- Gemfile | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 77c3c3f..1b8e197 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ stages: - lint - test -install: echo "skip bundle install" +install: "chef exec bundle install --with deps" before_script: - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER ) diff --git a/Gemfile b/Gemfile index c6fbe5e..69ff7db 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,10 @@ source 'https://rubygems.org' -gem 'poise', '~> 2.8' -gem 'poise-service', '~> 1.5' -gem 'poise-boiler', '~> 1.18' + +group :deps do + gem 'poise', '~> 2.8' + gem 'poise-service', '~> 1.5' + gem 'poise-boiler', '~> 1.18' +end group :lint do gem 'rubocop'