puppetlabs / facter

Collect and display system facts
https://puppet.com/open-source/#osp
Apache License 2.0
616 stars 494 forks source link

(PA-6427) Add rake tasks for building nightly gem #2726

Closed joshcooper closed 1 month ago

joshcooper commented 1 month ago

The nightly gem's version (aka extended_dot_version) is generated from git describe as the last tag, plus some number of commits and abbreviated git ref:

4.7.0-36-g2ab655b

Additionally, if there are changes in the worktree, then we add 'dirty' to the version.

4.7.0-36-g2ab655b-dirty

The "extended_dot_version" is added to a temporary gemspec that's used to build the gem. That version determines the resulting filename, e.g.

facter-4.7.0-36-g2ab655b.gem

Neither the packaging repo nor this commit update the version in version.rb, so running facter --version may return the "version to be released in the future".

joshcooper commented 1 month ago
$ bundle exec rake pl_ci:nightly_gem_build 
Gem::Specification.new do |s|
  s.name = "facter"
  s.version = Gem::Version.new("4.7.0.37.gb956cd2")
  s.installed_by_version = Gem::Version.new("0")
  s.authors = ["Puppet"]
  s.date = Time.utc(2024, 5, 24)
  s.dependencies = [Gem::Dependency.new("ffi",
    Gem::Requirement.new([">= 1.15.5",
      "< 1.17.0",
      "!= 1.16.0",
      "!= 1.16.1",
      "!= 1.16.2"]),
    :development),
   Gem::Dependency.new("rake",
    Gem::Requirement.new(["~> 13.0", ">= 13.0.6"]),
    :development),
   Gem::Dependency.new("rspec",
    Gem::Requirement.new(["~> 3.0"]),
    :development),
   Gem::Dependency.new("rubocop",
    Gem::Requirement.new(["~> 1.28"]),
    :development),
   Gem::Dependency.new("rubocop-performance",
    Gem::Requirement.new(["~> 1.5.2"]),
    :development),
   Gem::Dependency.new("rubocop-rspec",
    Gem::Requirement.new(["~> 2.10"]),
    :development),
   Gem::Dependency.new("simplecov",
    Gem::Requirement.new(["~> 0.17.1"]),
    :development),
   Gem::Dependency.new("sys-filesystem",
    Gem::Requirement.new(["~> 1.4"]),
    :development),
   Gem::Dependency.new("webmock",
    Gem::Requirement.new(["~> 3.12"]),
    :development),
   Gem::Dependency.new("yard", Gem::Requirement.new(["~> 0.9"]), :development),
   Gem::Dependency.new("hocon", Gem::Requirement.new(["~> 1.3"]), :runtime),
   Gem::Dependency.new("thor",
    Gem::Requirement.new([">= 1.0.1", "< 1.3"]),
    :runtime)]
  s.description = "You can prove anything with facts!"
  s.email = ["team-nw@puppet.com"]
  s.executables = ["facter"]
  s.files = ["LICENSE",
   "bin/facter",
   "lib/docs/generate.rb",
   "lib/docs/generate_cli.rb",
   "lib/docs/template.erb",
   "lib/facter.rb",
   "lib/facter/config.rb",
   "lib/facter/custom_facts/core/aggregate.rb",
   "lib/facter/custom_facts/core/directed_graph.rb",
   "lib/facter/custom_facts/core/execution.rb",
   "lib/facter/custom_facts/core/execution/base.rb",
   "lib/facter/custom_facts/core/execution/popen3.rb",
...
SNIP
...
   "lib/facter/util/utils.rb",
   "lib/facter/util/windows/win32ole.rb",
   "lib/facter/version.rb"]
  s.homepage = "https://github.com/puppetlabs/facter"
  s.licenses = ["Apache-2.0"]
  s.require_paths = ["lib"]
  s.required_ruby_version = Gem::Requirement.new([">= 2.5", "< 4.0"])
  s.required_rubygems_version = Gem::Requirement.new(["> 1.3.1"])
  s.rubygems_version = "3.4.10"
  s.specification_version = 4
  s.summary = "Facter, a system inventory tool"
  end
  Successfully built RubyGem
  Name: facter
  Version: 4.7.0.37.gb956cd2
  File: facter-4.7.0.37.gb956cd2.gem