diff options
-rw-r--r-- | README.md | 199 | ||||
-rw-r--r-- | omnibus_overrides.rb | 4 | ||||
-rw-r--r-- | tasks/bundle.rb | 73 | ||||
-rw-r--r-- | tasks/dependencies.rb | 43 | ||||
-rw-r--r-- | version_policy.rb | 122 |
5 files changed, 70 insertions, 371 deletions
@@ -24,51 +24,55 @@ If you just want to use Chef, check out these resources: - [Installer Downloads](https://downloads.chef.io/chef/): Install Chef as a complete package - [chef/chef](https://hub.docker.com/r/chef/chef): Docker image for use with [kitchen-dokken](https://github.com/someara/kitchen-dokken) +## Reporting Issues + +Issues can be reported by using [GitHub Issues](https://github.com/chef/chef/issues). + +Full details on how to report issues can be found in the [CONTRIBUTING](https://github.com/chef/chef/blob/master/CONTRIBUTING.md#-chef-issue-tracking) doc. + +Note that this repository is primarily for reporting chef-client issues. +For reporting issues against other Chef projects, please look up the appropriate repository +to report issues against in the Chef docs in the +[community contributions section](https://docs.chef.io/community_contributions.html#issues-and-bug-reports). +If you can't determine the appropriate place to report an issue, then please open it +against the repository you think best fits and it will be directed to the appropriate project. + ## Installing From Git -**NOTE:** Unless you have a specific reason to install from source (to -try a new feature, contribute a patch, or run chef on an OS for which no -package is available), you should head to the [downloads page](https://downloads.chef.io/chef/) -to get a prebuilt package. +**NOTE:** As a Chef user, please download the omnibus package of [Chef](https://downloads.chef.io/chef) or [Chef-DK](https://downloads.chef.io/chef) + +We do not recommend installing from gems, or building from source. The following instructions apply only to those doing software development on Chef. ### Prerequisites -Install these via your platform's preferred method (`apt`, `yum`, `ports`, -`emerge`, etc.): +Install: * git -* C compiler, header files, etc. On Ubuntu/Debian, use the - `build-essential` package. +* C compiler, header files, etc. * ruby 2.3.3 or later * rubygems * bundler gem +We support too many platforms, and there are too many different ways to manage ruby installs, so +it is assumed the user understands how to accomplish this for their platform and needs (see previous +note about downloading the pre-built omnibus install if you do not understand how to accomplish this). + ### Chef Installation Then get the source and install it: ```bash -# Clone this repo git clone https://github.com/chef/chef.git - -# cd into the source tree cd chef - -# Install dependencies with bundler bundle install - -# Build a gem bundle exec rake gem - -# Install the gem you just built -gem install pkg/chef-VERSION.gem +budnle exec rake install ``` ## Contributing/Development -Before working on the code, if you plan to contribute your changes, you need to -read the -[Chef Contributions document](https://docs.chef.io/community_contributions.html). +Please read our [Community Contributions Guidelines](https://docs.chef.io/community_contributions.html), and +ensure you are signing all your commits with DCO sign-off. The general development process is: @@ -82,59 +86,61 @@ RSpec for test driven development, so you'll need to get a development environment running. Follow the above procedure ("Installing from Git") to get your local copy of the source running. -## Reporting Issues - -Issues can be reported by using [GitHub Issues](https://github.com/chef/chef/issues). - -Full details on how to report issues can be found in the [CONTRIBUTING](https://github.com/chef/chef/blob/master/CONTRIBUTING.md#-chef-issue-tracking) doc. - -Note that this repository is primarily for reporting chef-client issues. -For reporting issues against other Chef projects, please look up the appropriate repository -to report issues against in the Chef docs in the -[community contributions section](https://docs.chef.io/community_contributions.html#issues-and-bug-reports). -If you can't determine the appropriate place to report an issue, then please open it -against the repository you think best fits and it will be directed to the appropriate project. - ## Testing -We use RSpec for unit/spec tests. It is not necessary to start the development -environment to run the specs--they are completely standalone. +This repository only uses rspec for testing. ```bash -# Run All the Tests -bundle exec rake spec +# all tests +bundle exec rspec -# Run a Single Test File +# single test bundle exec rspec spec/PATH/TO/FILE_spec.rb -# Run a Subset of Tests +# all tests under a subdir bundle exec rspec spec/PATH/TO/DIR ``` -When you submit a pull request, we will automatically run the functional and unit -tests in spec/functional/ and spec/unit/ respectively. These will be run on Ubuntu -through Travis CI, and on Windows through AppVeyor. The status of these runs will -be displayed with your pull request. +When you submit a PR rspec tests will run automatically on travis and appveyor. ## Building the Full Package -To build chef as a standalone package (with ruby and all dependent libraries included in a .deb, .rpm, .pkg or .msi), we use the omnibus system. Go to the [omnibus README](omnibus/README.md) to find out how to build! +To build chef as a standalone package, we use the [omnibus](omnibus/README.md) system. + +To build: + +```bash +git clone https://github.com/chef/chef.git +cd chef/omnibus +bundle install +bundle exec omnibus build chef +``` + +The prerequisites necessary to run omnibus itself are not documented here. The automation we use is +the [opscode-ci cookbook](https://github.com/chef-cookbooks/opscode-ci) cookbook, which serves as the most +current documentation. ## Updating Dependencies If you want to change our constraints (change which packages and versions we accept in the chef), there are several places to do so: -* To add or remove a gem from chef, or update a gem version, edit [Gemfile](Gemfile). -* To change the version of binary packages, edit [version_policy.rb](version_policy.rb). -* To add new packages to chef, edit [omnibus/config/projects/chef.rb](omnibus/config/projects/chef.rb). +* [Gemfile](Gemfile) and [Gemfile.lock](Gemfile.lock): All gem version constraints (update with `bundle update`) +* [omnibus_overrides.rb](omnibus_overrides_rb): Pinned versions of omnibus packages. +* [omnibus/Gemfile](omnibus/Gemfile) and [omnibus/Gemfile.lock](omnibus/Gemfile.lock): Gems for the omnibus build system itself. + +In addition there are several places versions are pinned for CI tasks: -Once you've made any changes you want, you have to update the lockfiles that actually drive the build: -* To update chef's gem dependencies to the very latest versions available, run `rake bundle:update`. -* To update chef's gem dependencies *conservatively* (changing as little as possible), run `rake bundle:install`. -* To update specific gems only, run `rake bundle:update[gem1 gem2 ...]` -* **`bundle update` and `bundle install` will *not* work, on purpose:** the rake task handles both the windows and non-windows lockfiles and updates them in sync. +* [acceptance/Gemfile](acceptance/Gemfile) and [acceptance/Gemfile.lock](acceptance/Gemfile.lock): Acceptance tests (internal jenkins) +* [kitchen-tests/Gemfile](kitchen-tests/Gemfile) and [kitchen-tests/Gemfile.lock](kitchen-tests/Gemfile.lock): Gems for test-kitchen tests (travis) +* [kitchen-tests/Berksfile](kitchen-tests/Berksfile) and [kitchen-tests/Berksfile.lock](kitchen-tests/Berksfile.lock): Cookbooks for test-kitchen tests (travis) -To perform a full update of all dependencies in chef (including binary packages, tests and build system dependencies), run `rake dependencies`. This will update the `Gemfile.lock`, `omnibus/Gemfile.lock`, `acceptance/Gemfile.lock`, `omnibus/Berksfile.lock`, and `omnibus_overrides.rb`. It will also show you any outdated dependencies due to conflicting constraints. Some outdated dependencies are to be expected; it will inform you if any new ones appear that we don't know about, and tell you how to proceed. +In order to update everything run `rake dependencies`. Note that the [Gemfile.lock](Gemfile.lock) pins windows platforms and to fully regenerate the lockfile +you must use the following commands or run `rake dependencies:update_gemfile_lock`: + +```bash +bundle lock --update --add-platform ruby +bundle lock --update --add-platform x64-mingw32 +bundle lock --update --add-platform x86-mingw32 # How Chef Builds and Versions @@ -188,35 +194,23 @@ Sometimes, regressions split through the cracks. Since new functionality is alwa Chef has two sorts of component: ruby components like `berkshelf` and `test-kitchen`, and binary components like `openssl` and even `ruby` itself. -In general, you can find all chef desired versions in the [Gemfile](Gemfile) and [version_policy.rb](version_policy.rb) files. The [Gemfile.lock](Gemfile.lock) is the locked version of the Gemfile, and [omnibus_overrides](omnibus_overrides.rb) is the locked version of omnibus. [build](omnibus/Gemfile) and [test](acceptance/Gemfile) Gemfiles and [Berksfile](omnibus/Berksfile) version the toolset we use to build and test. +In general, you can find all chef desired versions in the [Gemfile](Gemfile) and [omnibus_overrides.rb](omnibus_overrides.rb) files. The [Gemfile.lock](Gemfile.lock) is the locked version of the Gemfile. ### Binary Components -The versions of binary components (as well as rubygems and bundler, which can't be versioned in a Gemfile) are stored in [version_policy.rb](version_policy.rb) (the `OMNIBUS_OVERRIDES` constant) and locked in [omnibus_overrides](omnibus_overrides.rb). `rake dependencies` will update the `bundler` version, and the rest are be updated manually by Chef every so often. +The versions of binary components (as well as rubygems and bundler, which can't be versioned in a Gemfile) are stored in [omnibus_overrides.rb](omnibus_overrides.rb). These have software definitions either in [omnibus/config/software](omnibus/config/software) or, more often, in the [omnibus-software](https://github.com/chef/omnibus-software/tree/master/config/software) project. ### Rubygems Components -Most of the actual front-facing software in chef is composed of ruby projects. berkshelf, test-kitchen and even chef itself are made of ruby gems. Chef uses the typical ruby way of controlling rubygems versions, the `Gemfile`. Specifically, the `Gemfile` at the top of chef repository governs the version of every single gem we install into chef package. It's a one-stop shop. - -Our rubygems component versions are locked down with `Gemfile.lock`, and can be updated with `rake dependencies`. - -There are three gems versioned outside the `Gemfile`: `rubygems`, `bundler` and `chef`. `rubygems` and `bundler` are in the `RUBYGEMS_AT_LATEST_VERSION` constant in [version_policy.rb](version-policy.rb) and locked in [omnibus_overrides](omnibus_overrides.rb). They are kept up to date by `rake dependencies`. - -**Windows**: [Gemfile.lock](Gemfile.lock) is generated platform-agnostic, and then generated again for Windows. The one file has the solution for both Linux and Windows. - -The tool we use to generate Windows-specific lockfiles on non-Windows machines is [tasks/bin/bundle-platform](bundle-platform), which takes the first argument and sets `Gem.platforms`, and then calls `bundle` with the remaining arguments. +Our rubygems component versions are locked down with `Gemfile.lock`, and can be updated with `bundle update` or `rake dependencies:update_gemfile_lock`. ### Build Tooling Versions -Of special mention is the software we use to build omnibus itself. There are two distinct bits of code that control the versions of compilers, make, git, and other tools we use to build. - -First, the Jenkins machines that run the build are configured entirely by the [opscode-ci cookbook](https://github.com/chef-cookbooks/opscode-ci) cookbook. They install most of the tools we use via `build-essentials`, and standardize the build environment so we can tear down and bring up builders at will. These machines are kept alive long-running, are periodically updated by Chef to the latest opscode-ci, omnibus and build-essentials cookbooks. - -Second, the version of omnibus we use to build chef is governed by `omnibus/Gemfile`. When software definitions or the omnibus framework is updated, this is the file that drives whether we pick it up. - -The omnibus tooling versions are locked down with `omnibus/Gemfile.lock`, and can be updated by running `rake dependencies`. +The external environment necessary to build omnibus (compilers, make, git, etc) is configured by the [opscode-ci cookbook](https://github.com/chef-cookbooks/opscode-ci) cookbook. In order to reliably create omnibus builds that cookbook should be used to install the prerequisites. It may be possible to install the latest version +of utilities on a suitably recent distribution and be able to build an omnibus package, but the necessary prerequisites will not be documented here. In most +cases a recent MacOS with Xcode and a few homebrew packages or a recent Ubuntu distribution with packages like `build-essentials` should suffice. ### Test Versions @@ -224,67 +218,6 @@ chef is tested by the [chef-acceptance framework](https://github.com/chef/chef-a The test tooling versions are locked down with `acceptance/Gemfile.lock`, which can be updated by running `rake dependencies`. -## The Build Process - -The actual Chef build process is done with Omnibus, and has several general steps: - -1. `bundle install` from `chef/Gemfile.lock` -2. Reinstall any gems that came from git or path using `rake install` -3. appbundle chef, chef, test-kitchen and berkshelf -4. Put miscellaneous powershell scripts and cleanup - -### Kicking Off The Build - -The build is kicked off in Jenkins by running this on the machine (which is already the correct OS and already has the correct dependencies, loaded by the `omnibus` cookbook): - -``` -load-omnibus-toolchain.bat -cd chef/omnibus -bundle install -bundle exec omnibus build chef -``` - -This causes the [chef project definition](omnibus/config/projects/chef.rb) to load, which runs the [chef-complete](omnibus/config/software/chef-complete.rb) software definition, the primary software definition driving the whole build process. The reason we embed it all in a software definition instead of the project is to take advantage of omnibus caching: omnibus will invalidate the entire project (and recompile ruby, openssl, and everything else) if you change anything at all in the project file. Not so with a software definition. - -### Installing the Gems - -The primary build definition that installs the many Chef rubygems is [`software/chef.rb`](omnibus/software/chef.rb). This has dependencies on any binary libraries, ruby, rubygems and bundler. It has a lot of steps, so it uses a [library](omnibus/files/chef/build-chef.rb) to help reuse code and make it manageable to look at. - -What it does: - -1. Depends on software defs for pre-cached gems (see "Gems and Caching" below). -2. Installs all gems from the bundle: - - Sets up a `.bundle/config` ([code](omnibus/files/chef/build-chef.rb#L17-L39)) with --retries=4, --jobs=1, --without=development,no_<platform>, and `build.config.nokogiri` to pass. - - Sets up a common environment, standardizing the compilers and flags we use, in [`env`](omnibus/files/chef-gem/build-chef-gem.rb#L32-L54). - - [Runs](omnibus/config/software/chef.rb#L68) `bundle install --verbose` -3. Reinstalls any gems that were installed via path: - - [Runs](omnibus/files/chef/build-chef.rb#L80) `bundle list --paths` to get the installed directories of all gems. - - For each gem not installed in the main gem dir, [runs](omnibus/files/chef/build-chef.rb#L89) `rake install` from the installed gem directory. - - [Deletes](omnibus/files/chef/build-chef.rb#L139-L143) the bundler git cache and path- and git-installed gems from the build. -4. [Creates](omnibus/files/chef/build-chef.rb#L102-L152) `/opt/chef/Gemfile` and `/opt/chef/Gemfile.lock` with the gems that were installed in the build. - -#### Gems and Caching - -Some gems take a super long time to install (particularly native-compiled ones such as nokogiri and dep-selector-libgecode) and do not change version very often. In order to avoid doing this work every time, we take advantage of omnibus caching by separating out these gems into their own software definitions. [chef-gem-dep-selector-libgecode](omnibus/config/software/chef-gem-dep-selector-libgecode.rb) for example. - -Each of these gems uses the `config/files/chef-gem/build-chef-gem` library to define itself. The name of the software definition itself indicates the . - -We only create software definitions for long-running gems. Everything else is just installed in the [chef](omnibus/config/software/chef.rb) software definition in a big `bundle install` catchall. - -Most gems we just install in the single `chef` software definition. - -The first thing - -### Appbundling - -After the gems are installed, we *appbundle* them in [chef-appbundle](omnibus/config/software/chef-appbundle.rb). This creates binstubs that use the bundle to pin the software . - -During the process of appbundling, we update the gem's `Gemfile` to include the locks in the top level `/opt/chef/Gemfile.lock`, so we can guarantee they will never pick up things outside the build. We then run `bundle lock` to update the gem's `Gemfile.lock`, and `bundle check` to ensure all the gems are actually installed. The appbundler then uses these pins. - -### Other Cleanup - -Finally, chef does several more steps including installing powershell scripts and shortcuts, and removing extra documentation to keep the build slim. - # License Chef - A configuration management system diff --git a/omnibus_overrides.rb b/omnibus_overrides.rb index 69617a4eac..0a935ba362 100644 --- a/omnibus_overrides.rb +++ b/omnibus_overrides.rb @@ -1,4 +1,6 @@ -# DO NOT EDIT. Generated by "rake dependencies". Edit version_policy.rb instead. +# THIS IS NOW HAND MANAGED, JUST EDIT THE THING +# .travis.yml and appveyor.yml consume this, +# try to keep it machine-parsable. override :rubygems, version: "2.6.11" override :bundler, version: "1.14.6" override "libffi", version: "3.2.1" diff --git a/tasks/bundle.rb b/tasks/bundle.rb deleted file mode 100644 index db1bbde4b2..0000000000 --- a/tasks/bundle.rb +++ /dev/null @@ -1,73 +0,0 @@ -# -# Copyright:: Copyright (c) 2016-2017, Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -require_relative "../version_policy" -require "fileutils" - -desc "Tasks to work with the main Gemfile and Gemfile.<platform>" -namespace :bundle do - desc "Update Gemfile.lock and all Gemfile.<platform>.locks (or one or more gems via bundle:update gem1 gem2 ...)." - task :update, [:args] do |t, rake_args| - args = rake_args[:args] || "" - Bundler.with_clean_env do - sh "bundle update #{args}" - end - end - - desc "Conservatively update Gemfile.lock and all Gemfile.<platform>.locks" - task :install, [:args] do |t, rake_args| - args = rake_args[:args] || "" - args = rake_args[:args] || "" - Bundler.with_clean_env do - sh "bundle install #{args}" - end - end - - def parse_bundle_outdated(bundle_outdated_output) - result = [] - bundle_outdated_output.each_line do |line| - if line =~ /^\s*\* (.+) \(newest ([^,]+), installed ([^,)])*/ - gem_name, newest_version, installed_version = $1, $2, $3 - result << [ line, gem_name ] - end - end - result - end - - # Find out if we're using the latest gems we can (so we don't regress versions) - desc "Check for gems that are not at the latest released version, and report if anything not in ACCEPTABLE_OUTDATED_GEMS (version_policy.rb) is out of date." - task :outdated do - bundle_outdated = "" - Bundler.with_clean_env do - bundle_outdated = `bundle outdated` - puts bundle_outdated - end - outdated_gems = parse_bundle_outdated(bundle_outdated).map { |line, gem_name| gem_name } - outdated_gems = outdated_gems.reject { |gem_name| ACCEPTABLE_OUTDATED_GEMS.include?(gem_name) } - unless outdated_gems.empty? - raise "ERROR: outdated gems: #{outdated_gems.join(", ")}. Either fix them or add them to ACCEPTABLE_OUTDATED_GEMS in #{__FILE__}." - end - end -end - -desc "Run bundle with arbitrary args" -task :bundle, [:args] do |t, rake_args| - args = rake_args[:args] || "" - Bundler.with_clean_env do - sh "bundle #{args}" - end -end diff --git a/tasks/dependencies.rb b/tasks/dependencies.rb index 62c62149de..c94e8b2ab2 100644 --- a/tasks/dependencies.rb +++ b/tasks/dependencies.rb @@ -15,9 +15,6 @@ # limitations under the License. # -require_relative "bundle" -require_relative "../version_policy" - desc "Tasks to update and check dependencies" namespace :dependencies do @@ -93,47 +90,9 @@ namespace :dependencies do berks_update_task :update_kitchen_tests_berksfile_lock, "kitchen-tests" berks_update_task :update_audit_tests_berksfile_lock, "kitchen-tests/cookbooks/audit_test" - desc "Update omnibus overrides, including versions in version_policy.rb and latest version of gems: #{OMNIBUS_RUBYGEMS_AT_LATEST_VERSION.keys}." - task :update_omnibus_overrides do |t, rake_args| - puts "" - puts "-------------------------------------------------------------------" - puts "Updating omnibus_overrides.rb ..." - puts "-------------------------------------------------------------------" - - # Generate the new overrides file - overrides = "# DO NOT EDIT. Generated by \"rake dependencies\". Edit version_policy.rb instead.\n" - - # Replace the bundler and rubygems versions - OMNIBUS_RUBYGEMS_AT_LATEST_VERSION.each do |override_name, gem_name| - # Get the latest bundler version - puts "Running gem list -r #{gem_name} ..." - gem_list = `gem list -r #{gem_name}` - unless gem_list =~ /^#{gem_name}\s*\(([^)]*)\)$/ - raise "gem list -r #{gem_name} failed with output:\n#{gem_list}" - end - - # Emit it - puts "Latest version of #{gem_name} is #{$1}" - overrides << "override #{override_name.inspect}, version: #{$1.inspect}\n" - end - - # Add explicit overrides - OMNIBUS_OVERRIDES.each do |override_name, version| - overrides << "override #{override_name.inspect}, version: #{version.inspect}\n" - end - - # Write the file out (if changed) - overrides_path = File.expand_path("../../omnibus_overrides.rb", __FILE__) - if overrides != IO.read(overrides_path) - puts "Overrides changed!" - puts `git diff #{overrides_path}` - puts "Writing modified #{overrides_path} ..." - IO.write(overrides_path, overrides) - end - end end desc "Update all dependencies and check for outdated gems." -task :dependencies_ci => [ "dependencies:update_ci", "bundle:outdated" ] +task :dependencies_ci => [ "dependencies:update_ci" ] task :dependencies => [ "dependencies:update" ] task :update => [ "dependencies:update" ] diff --git a/version_policy.rb b/version_policy.rb deleted file mode 100644 index 6552d51305..0000000000 --- a/version_policy.rb +++ /dev/null @@ -1,122 +0,0 @@ -# -# Copyright:: Copyright (c) 2016-2017, Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# Explicit omnibus overrides. -OMNIBUS_OVERRIDES = { - # Lower level library pins - ## according to comment in omnibus-sw, latest versions don't work on solaris - # https://github.com/chef/omnibus-software/blob/aefb7e79d29ca746c3f843673ef5e317fa3cba54/config/software/libtool.rb#L23 - :bundler => "1.14.6", - "libffi" => "3.2.1", - "libiconv" => "1.14", - "liblzma" => "5.2.2", - ## according to comment in omnibus-sw, the very latest versions don't work on solaris - # https://github.com/chef/omnibus-software/blob/aefb7e79d29ca746c3f843673ef5e317fa3cba54/config/software/libtool.rb#L23 - "libtool" => "2.4.2", - "libxml2" => "2.9.4", - "libxslt" => "1.1.29", - "libyaml" => "0.1.6", - "makedepend" => "1.0.5", - "ncurses" => "5.9", - "pkg-config-lite" => "0.28-1", - "ruby" => "2.4.1", - # Leave dev-kit pinned to 4.5 on 32-bit, because 4.7 is 20MB larger and we don't want - # to unnecessarily make the client any fatter. (Since it's different between - # 32 and 64, we have to do it in the project file still.) - # "ruby-windows-devkit" => "4.5.2-20111229-1559", - "ruby-windows-devkit-bash" => "3.1.23-4-msys-1.0.18", - "util-macros" => "1.19.0", - "xproto" => "7.0.28", - "zlib" => "1.2.8", - - ## These can float as they are frequently updated in a way that works for us - #override "cacerts" =>"???", - "openssl" => "1.0.2j", -} - -# -# rake dependencies:update_omnibus_overrides (tasks/dependencies.rb) reads this -# and modifies omnibus_overrides.rb -# -# The left side is the software definition name, and the right side is the -# name of the rubygem (gem list -re <rubygem name> gets us the latest version). -# -OMNIBUS_RUBYGEMS_AT_LATEST_VERSION = { - rubygems: "rubygems-update", - # bundler: "bundler", # until we get working with 1.13.0 -} - -# -# rake dependencies:check (tasks/dependencies.rb) uses this as a list of gems -# that are allowed to be outdated according to `bundle updated` -# -# Once you decide that the list of outdated gems is OK, you can just -# add gems to the output of bundle outdated here and we'll parse it to get the -# list of outdated gems. -# -# gherkin - expected to update with new cucumber (and foodcritic?) release -# jwt - expected to update with new oauth2 release -# mini_portile2 - should go away *entirely* with new nokogiri release (not a dep anymore) -# slop - expected to disappear with new pry release -# stove - halite pins to ~> 3.2 in 1.2.1 -# rubocop - chef-style pins to 0.39.0 in 0.3.1 -# -ACCEPTABLE_OUTDATED_GEMS = [ - "json", # aws-sdk-v1 pins this because Ruby 2.0; chef-provisioning fix to abandon v1 TBD - "rubocop", # chefstyle pins this, will often be somewhat behind - "slop", # expected to disappear with pry 0.11 - "typhoeus", # Until the travis gem updates to 1.0. - "cucumber-core", # Until cucumber 2.0 - "addressable", # gh (via travis) wants this ~> 2.4.0 - "rake", # poise limits this to < 12 - "github_changelog_generator", # we manage this independent of the rubygem - "cheffish", # 5.0.0 breaks chef-provisioning - "net-ssh-gateway", # chef-provisiong and test-kitchen have ~> 1.2 constraint - "mixlib-install", # dunno why - "thor", # berks -] - -# -# Some gems are part of our bundle (must be installed) but not important -# enough to lock. We allow `bundle install` in test-kitchen, berks, etc. -# to use their own versions of these. -# -# This mainly tells you which gems `chef verify` allows you to install and -# run. -# -GEMS_ALLOWED_TO_FLOAT = [ -] - -# -# The list of groups we install without: this drives both the `bundle install` -# we do in chef-dk, and the `bundle check` we do to ensure installed gems don't -# have extra deps hiding in their Gemfiles. -# -# NOTE: we DO install test, because there aren't many gems there, and it makes -# our test phase a lot easier. -# -INSTALL_WITHOUT_GROUPS = %w{ - ci - development - docgen - guard - integration - maintenance - tools - travis - style -} |