diff options
author | Tom Duffield <tom@chef.io> | 2016-11-21 08:01:32 -0600 |
---|---|---|
committer | Tom Duffield <tom@chef.io> | 2016-11-21 08:05:01 -0600 |
commit | 072e1f317549fa4df78ef9b7a72db090a164bcb7 (patch) | |
tree | 700016de4fa08f0665431630e8e744a92045bbb7 /tasks | |
parent | c2dc84fd617a842676c4c2c684551741ade3a757 (diff) | |
download | chef-072e1f317549fa4df78ef9b7a72db090a164bcb7.tar.gz |
Add rake task for generator release annoucnements
To ensure consistency, and to let users get the information they
want/need at a glance, we're introducing release announcement
templates. The Chef release team will use these tasks to generate the
release announcements before posting them to Discourse.
Signed-off-by: Tom Duffield <tom@chef.io>
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/announce.rb | 57 | ||||
-rw-r--r-- | tasks/templates/prerelease.md.erb | 35 | ||||
-rw-r--r-- | tasks/templates/release.md.erb | 34 |
3 files changed, 126 insertions, 0 deletions
diff --git a/tasks/announce.rb b/tasks/announce.rb new file mode 100644 index 0000000000..854c53a21b --- /dev/null +++ b/tasks/announce.rb @@ -0,0 +1,57 @@ +# +# 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, :date, :release_notes + + def initialize(version, date, type) + @version = version + @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 12.17:\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..f308b55bab --- /dev/null +++ b/tasks/templates/prerelease.md.erb @@ -0,0 +1,35 @@ +Ohai Chefs! + +We have selected <%= @version %> as our Chef v<%= @version.split(".")[0..1].join(".") %> 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 `milib-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..7095bbb8c4 --- /dev/null +++ b/tasks/templates/release.md.erb @@ -0,0 +1,34 @@ +Ohai Chefs! + +We're happy to announce the release of Chef v<%= @version.split(".")[0..1].join(".") %>! + +# 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 `milib-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 %> +``` |