summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Duffield <tom@chef.io>2016-11-21 12:08:04 -0600
committerGitHub <noreply@github.com>2016-11-21 12:08:04 -0600
commit819a669717e4125ff63bdc077557118da0367d8f (patch)
tree28aa9260a05ee74cf0a48239efd80c45ecf05479
parentc2dc84fd617a842676c4c2c684551741ade3a757 (diff)
parent57304149a7083661a6c3fb7529e470e332b0f375 (diff)
downloadchef-819a669717e4125ff63bdc077557118da0367d8f.tar.gz
Merge pull request #5567 from chef/tduffield/add-announcement-generator
Add rake task for generator release announcements
-rw-r--r--Rakefile1
-rw-r--r--tasks/announce.rb58
-rw-r--r--tasks/templates/prerelease.md.erb35
-rw-r--r--tasks/templates/release.md.erb34
4 files changed, 128 insertions, 0 deletions
diff --git a/Rakefile b/Rakefile
index 5a6b224128..a72da319c9 100644
--- a/Rakefile
+++ b/Rakefile
@@ -28,6 +28,7 @@ require_relative "tasks/maintainers"
require_relative "tasks/cbgb"
require_relative "tasks/dependencies"
require_relative "tasks/changelog"
+require_relative "tasks/announce"
ChefConfig::PackageTask.new(File.expand_path("..", __FILE__), "Chef", "chef") do |package|
package.component_paths = ["chef-config"]
diff --git a/tasks/announce.rb b/tasks/announce.rb
new file mode 100644
index 0000000000..0399137eb0
--- /dev/null
+++ b/tasks/announce.rb
@@ -0,0 +1,58 @@
+#
+# Copyright:: Copyright (c) 2016 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 "date"
+require "erb"
+
+class ReleaseAnnouncement
+ include ERB::Util
+ attr_accessor :type, :version, :maj_minor, :date, :release_notes
+
+ def initialize(version, date, type)
+ @version = version
+ @maj_minor = version.split(".")[0..1].join(".")
+ @date = Date.parse(date) unless date.nil?
+ @release_notes = release_notes_from_file
+ @type = type
+ end
+
+ def render
+ puts "-" * 30
+ puts ERB.new(template_for(@type)).result(binding)
+ puts "-" * 30
+ end
+
+ def template_for(type)
+ File.read("tasks/templates/#{type}.md.erb")
+ end
+
+ def release_notes_from_file
+ File.read("RELEASE_NOTES.md").match(/^# Chef Client Release Notes #{@maj_minor}:\n\n(.*)/m)[1]
+ end
+end
+
+namespace :announce do
+ desc "Generate the Prerelease Announcement (version: X.Y.Z, release_date: YYYY-MM-DD)"
+ task :prerelease, :version, :release_date do |t, args|
+ ReleaseAnnouncement.new(args[:version], args[:release_date], "prerelease").render
+ end
+
+ desc "Generate the Release Announcement (version: X.Y.Z)"
+ task :release, :version do |t, args|
+ ReleaseAnnouncement.new(args[:version], nil, "release").render
+ end
+end
diff --git a/tasks/templates/prerelease.md.erb b/tasks/templates/prerelease.md.erb
new file mode 100644
index 0000000000..da339ea590
--- /dev/null
+++ b/tasks/templates/prerelease.md.erb
@@ -0,0 +1,35 @@
+Ohai Chefs!
+
+We have selected <%= @version %> as our Chef v<%= @maj_minor %> release candidate which is scheduled for release on <%= @date.strftime('%A %B %-d, %Y') %>.
+
+# Release Highlights
+
+<%= @release_notes %>
+
+Please see the [CHANGELOG](https://github.com/chef/chef/blob/master/CHANGELOG.md) for the complete list of changes.
+
+# Get the Build
+As always, you can download binaries directly from [downloads.chef.io](https://downloads.chef.io/chef-client) or by using the new `mixlib-install` command line utility available in ChefDK 0.19.6 or greater.
+
+```shell
+$ mixlib-install download chef -v <%= @version %> -c current
+```
+
+Alternatively, you can install Chef using one of the following command options:
+
+```shell
+# In Shell
+$ curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef -v <%= @version %> -c current
+
+# In Windows Powershell
+. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -project chef -version <%= @version %> -channel current
+```
+
+If you want to give this version a spin in Test Kitchen, create or add the following to a `.kitchen.local.yml` file:
+
+```yaml
+provisioner:
+ product_name: chef
+ channel: current
+ product_version: <%= @version %>
+```
diff --git a/tasks/templates/release.md.erb b/tasks/templates/release.md.erb
new file mode 100644
index 0000000000..c4400ece59
--- /dev/null
+++ b/tasks/templates/release.md.erb
@@ -0,0 +1,34 @@
+Ohai Chefs!
+
+We're happy to announce the release of Chef v<%= @maj_minor %>!
+
+# Release Highlights
+
+<%= @release_notes %>
+
+Please see the [CHANGELOG](https://github.com/chef/chef/blob/master/CHANGELOG.md) for the complete list of changes.
+
+# Get the Build
+As always, you can download binaries directly from [downloads.chef.io](https://downloads.chef.io/chef-client) or by using the new `mixlib-install` command line utility available in ChefDK 0.19.6 or greater.
+
+```shell
+$ mixlib-install download chef -v <%= @version %>
+```
+
+Alternatively, you can install Chef using one of the following command options:
+
+```shell
+# In Shell
+$ curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef -v <%= @version %>
+
+# In Windows Powershell
+. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -project chef -version <%= @version %>
+```
+
+If you want to give this version a spin in Test Kitchen, create or add the following to a `.kitchen.local.yml` file:
+
+```yaml
+provisioner:
+ product_name: chef
+ product_version: <%= @version %>
+```