Add release hints and changelog script
We're using the same script and release hint docs in icinga2 and should share the same process.
This commit is contained in:
parent
cf2c2c3ee0
commit
fb6de819ed
|
@ -0,0 +1,129 @@
|
|||
## What's New in Version 2.0.0-rc1
|
||||
|
||||
### Changes
|
||||
|
||||
* Improve layout and look and feel in many ways
|
||||
* Add fullscreen mode (?showFullscreen)
|
||||
* User and group management
|
||||
* Comment and Downtime Detail View
|
||||
* Show icon_image in host/service views
|
||||
* Show Icinga program version in monitoring health
|
||||
|
||||
#### Features
|
||||
|
||||
* Feature 4139: Notify monitoring backend availability problems
|
||||
* Feature 4498: Allow to add columns to monitoring views via URL
|
||||
* Feature 6392: Resolve Icinga 2 runtime macros in action and notes URLs
|
||||
* Feature 6729: Fullscreen mode
|
||||
* Feature 7343: Fetch user groups from LDAP
|
||||
* Feature 7595: Remote connection resource configuration
|
||||
* Feature 7614: Right-align icons
|
||||
* Feature 7651: Add module information (module.info) to all core modules
|
||||
* Feature 8054: Host Groups should list number of hosts (as well as services)
|
||||
* Feature 8235: Show host and service notes in the host and service detail view
|
||||
* Feature 8247: Move notifications to the bottom of the page
|
||||
* Feature 8281: Improve layout of comments and downtimes in the host and service detail views
|
||||
* Feature 8310: Improve layout of performance data and check statistics in the host and service detail views
|
||||
* Feature 8565: Improve look and feel of the monitoring multi-select views
|
||||
* Feature 8613: IDO queries related to concrete objects should not depend on collations
|
||||
* Feature 8665: Show icon_image in the host and service detail views
|
||||
* Feature 8781: Automatically deselect rows when closing the detail area
|
||||
* Feature 8826: User and group management
|
||||
* Feature 8849: Show only three (or four) significant digits (e.g. in check execution time)
|
||||
* Feature 8877: Allow module developers to implement new/custom authentication methods
|
||||
* Feature 8886: Require mandatory parameters in controller actions and CLI commands
|
||||
* Feature 8902: Downtime detail view
|
||||
* Feature 8903: Comment detail view
|
||||
* Feature 9009: Apply host and service restrictions to related views as well
|
||||
* Feature 9203: Wizard: Validate that a resource is actually an IDO instance
|
||||
* Feature 9207: Show icinga program version in Monitoring Health
|
||||
* Feature 9223: Show the active ido endpoint in the monitoring health view
|
||||
* Feature 9284: Create a ServiceActionsHook
|
||||
* Feature 9300: Support icon_image_alt
|
||||
* Feature 9361: Refine UI for RC1
|
||||
* Feature 9377: Permission and restriction documentation
|
||||
* Feature 9379: Provide an about.md
|
||||
|
||||
#### Bugfixes
|
||||
|
||||
* Bug 6281: ShowController's hostAction() and serviceAction() do not respond with 400 for invalid/missing parameters and with 404 if the host or service wasn't found
|
||||
* Bug 6778: Duration and history time formatting isn't correct
|
||||
* Bug 6952: Unauthenticated users are provided helpful error messages
|
||||
* Bug 7151: Play nice with form-button-double-clickers
|
||||
* Bug 7165: Invalid host address leads to exception w/ PostgreSQL
|
||||
* Bug 7447: Commands sent over SSH are missing the -i option when using a ssh user aside from the webserver's user
|
||||
* Bug 7491: Switching from MySQL to PostgreSQL and vice versa doesn't change the port in the resource configuration
|
||||
* Bug 7642: Monitoring menu renderers should be moved to the monitoring module
|
||||
* Bug 7658: MenuItemRenderer is not so easy to extend
|
||||
* Bug 7876: Not all views can be added to the dashboard w/o breaking the layout
|
||||
* Bug 7931: Can't acknowledge multiple selected services which are in downtime
|
||||
* Bug 7997: Service-Detail-View tabs are changing their context when clicking the Host-Tab
|
||||
* Bug 7998: Navigating to the Services-Tab in the Service-Detail-View displays only the selected service
|
||||
* Bug 8006: Beautify command transport error exceptions
|
||||
* Bug 8205: List views should not show more than the five worst pies
|
||||
* Bug 8241: Take display_name into account when searching for host and service names
|
||||
* Bug 8334: Perfdata details partially hidden depending on the resolution
|
||||
* Bug 8339: Lib: SimpleQuery::paginate() must not fetch page and limit from request but use them from parameters
|
||||
* Bug 8343: Status summary does not respect restrictions
|
||||
* Bug 8363: Updating dashlets corrupts their URLs
|
||||
* Bug 8453: The filter column "_dev" is not allowed here
|
||||
* Bug 8472: Missing support for command line arguments in the format --arg=<value>
|
||||
* Bug 8474: Improve layout of dictionaries in the host and service detail views
|
||||
* Bug 8624: Delete multiple downtimes and comments at once
|
||||
* Bug 8696: Can't search for Icinga 2 custom variables
|
||||
* Bug 8705: Show all shell commands required to get ready in the setup wizard
|
||||
* Bug 8706: INI files should end with a newline character and should not contain superfluous newlines
|
||||
* Bug 8707: Wizard: setup seems to fail with just one DB user
|
||||
* Bug 8711: JS is logging "ugly" side exceptions
|
||||
* Bug 8731: Apply host restrictions to service views
|
||||
* Bug 8744: Performance data metrics with value 0 are not displayed
|
||||
* Bug 8747: Icinga 2 boolean variables not shown in the host and service detail views
|
||||
* Bug 8777: Server error: Service not found exception when service name begins or ends with whitespaces
|
||||
* Bug 8815: Only the first external command is sent over SSH when submitting commands for multiple selected hosts or services
|
||||
* Bug 8847: Missing indication that nothing was found in the docs when searching
|
||||
* Bug 8860: Host group view calculates states from service states; but states should be calculated from host states instead
|
||||
* Bug 8927: Tactical overview does not respect restrictions
|
||||
* Bug 8928: Host and service groups views do not respect restrictions
|
||||
* Bug 8929: Setup wizard does not validate whether the PostgreSQL user for creating the database owns the CREATE ROLE system privilege
|
||||
* Bug 8930: Error message about refused connection to the PostgreSQL database server displayed twice in the setup wizard
|
||||
* Bug 8934: Status text for ok/up becomes white when hovered
|
||||
* Bug 8941: Long plugin output makes the whole container horizontally scrollable instead of just the row containing the long plugin output
|
||||
* Bug 8950: Improve English for "The last one occured %s ago"
|
||||
* Bug 8953: LDAP encryption settings have no effect
|
||||
* Bug 8956: Can't login when creating the database connection for the preferences store fails
|
||||
* Bug 8957: Fall back on syslog if the logger's type directive is misconfigured
|
||||
* Bug 8958: Switching LDAP encryption to LDAPS doesn't change the port in the resource configuration
|
||||
* Bug 8960: Remove exclamation mark from the notification "Authentication order updated!"
|
||||
* Bug 8966: Show custom variables visually separated in the host and service detail views
|
||||
* Bug 8967: Remove right petrol border from plugin output in the host and service detail views
|
||||
* Bug 8972: Can't view Icinga Web 2's log file
|
||||
* Bug 8994: Uncaught exception on empty session.save_path()
|
||||
* Bug 9000: Only the first line of a stack trace is shown in the applications log view
|
||||
* Bug 9007: Misspelled host and service names in commands are not accepted by icinga
|
||||
* Bug 9008: Notification overview does not respect restrictions
|
||||
* Bug 9022: Browser title does not change in case of an error
|
||||
* Bug 9023: Toggling feature...
|
||||
* Bug 9025: A tooltip of the service grid's x-axe makes it difficult to click the title of the currently hovered column
|
||||
* Bug 9026: Add To Dashboard ... on the dashboard
|
||||
* Bug 9046: Detail View: Downtimes description misses space between duration and comment text
|
||||
* Bug 9056: Filter for host/servicegroup search doesn't work anymore
|
||||
* Bug 9057: contact_notify_host_timeperiod
|
||||
* Bug 9059: Can't initiate an ascending sort by host or service severity
|
||||
* Bug 9198: monitoring/command/feature/object does not grant the correct permissions
|
||||
* Bug 9202: The config\* permission does not permit to navigate to the configuration
|
||||
* Bug 9211: Empty filters are being rendered to SQL which leads to syntax errors
|
||||
* Bug 9214: Detect multitple icinga_instances entries and warn the user
|
||||
* Bug 9220: Centralize submission and apply handling of sort rules
|
||||
* Bug 9224: Allow anonymous LDAP binding
|
||||
* Bug 9281: Problem with Icingaweb 2 after PHP Upgrade 5.6.8 -> 5.6.9
|
||||
* Bug 9317: Web 2's ListController inherits from the monitoring module's base controller
|
||||
* Bug 9319: Downtimes overview does not respect restrictions
|
||||
* Bug 9350: Menu disappears in user group management view
|
||||
* Bug 9351: Timeline links are broken
|
||||
* Bug 9352: User list should be sorted
|
||||
* Bug 9353: Searching for users fails, at least with LDAP backend
|
||||
* Bug 9355: msldap seems not to be a first-class citizen
|
||||
* Bug 9378: Rpm calls usermod w/ invalid option on openSUSE
|
||||
* Bug 9384: Timeline+Role problem
|
||||
* Bug 9392: Command links seem to be broken
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# Quality Assurance
|
||||
|
||||
Review and test the changes and issues for this version.
|
||||
https://dev.icinga.org/projects/icingaweb2/roadmap
|
||||
|
||||
# Release Workflow
|
||||
|
||||
Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
|
||||
|
||||
$ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS
|
||||
|
||||
Update the version number in the [icingaweb2.spec] and [VERSION] files.
|
||||
|
||||
Update the [ChangeLog](ChangeLog) file using
|
||||
the changelog.py script.
|
||||
|
||||
Changelog:
|
||||
|
||||
$ ./changelog.py --version 2.0.0-rc1
|
||||
|
||||
Wordpress:
|
||||
|
||||
$ ./changelog.py --version 2.0.0-rc1 --html --links
|
||||
|
||||
Commit these changes to the "master" branch:
|
||||
|
||||
$ git commit -v -a -m "Release version <VERSION>"
|
||||
|
||||
For minor releases: Cherry-pick this commit into the "support" branch.
|
||||
|
||||
Create a signed tag (tags/v<VERSION>) on the "master" branch (for major
|
||||
releases) or the "support" branch (for minor releases).
|
||||
|
||||
$ git tag -m "Version <VERSION>" v<VERSION>
|
||||
|
||||
Push the tag.
|
||||
|
||||
$ git push --tags
|
||||
|
||||
For major releases: Create a new "support" branch:
|
||||
|
||||
$ git checkout master
|
||||
$ git checkout -b support/2.x
|
||||
$ git push -u origin support/2.x
|
||||
|
||||
# External Dependencies
|
||||
|
||||
## Build Server
|
||||
|
||||
### Linux
|
||||
|
||||
* Build the newly created git tag for Debian/RHEL/SuSE.
|
||||
* Provision the vagrant boxes and test the release packages.
|
||||
|
||||
## Github Release
|
||||
|
||||
Create a new release from the newly created git tag.
|
||||
https://github.com/Icinga/icingaweb2/releases
|
||||
|
||||
## Announcement
|
||||
|
||||
* Create a new blog post on www.icinga.org/blog
|
||||
* Send announcement mail to icinga-announce@lists.icinga.org
|
||||
* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](http://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about)
|
|
@ -0,0 +1,148 @@
|
|||
#!/usr/bin/env python
|
||||
#/******************************************************************************
|
||||
# * Icinga 2 *
|
||||
# * Copyright (C) 2012-2015 Icinga Development Team (http://www.icinga.org) *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or *
|
||||
# * modify it under the terms of the GNU General Public License *
|
||||
# * as published by the Free Software Foundation; either version 2 *
|
||||
# * of the License, or (at your option) any later version. *
|
||||
# * *
|
||||
# * This program is distributed in the hope that it will be useful, *
|
||||
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# * GNU General Public License for more details. *
|
||||
# * *
|
||||
# * You should have received a copy of the GNU General Public License *
|
||||
# * along with this program; if not, write to the Free Software Foundation *
|
||||
# * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
# ******************************************************************************/
|
||||
|
||||
import urllib2, json, sys, string
|
||||
from argparse import ArgumentParser
|
||||
|
||||
DESCRIPTION="update release changes"
|
||||
VERSION="1.0.0"
|
||||
ISSUE_URL= "https://dev.icinga.org/issues/"
|
||||
ISSUE_PROJECT="icingaweb2"
|
||||
|
||||
arg_parser = ArgumentParser(description= "%s (Version: %s)" % (DESCRIPTION, VERSION))
|
||||
arg_parser.add_argument('-V', '--version', type=str, help="define version to query")
|
||||
arg_parser.add_argument('-p', '--project', type=str, help="add urls to issues")
|
||||
arg_parser.add_argument('-l', '--links', action='store_true', help="add urls to issues")
|
||||
arg_parser.add_argument('-H', '--html', action='store_true', help="print html output (defaults to markdown)")
|
||||
|
||||
args = arg_parser.parse_args(sys.argv[1:])
|
||||
|
||||
ftype = "md" if not args.html else "html"
|
||||
|
||||
def format_header(text, lvl, ftype = ftype):
|
||||
if ftype == "html":
|
||||
return "<h%s>%s</h%s>" % (lvl, text, lvl)
|
||||
if ftype == "md":
|
||||
return "#" * lvl + " " + text
|
||||
|
||||
def format_logentry(log_entry, args = args, issue_url = ISSUE_URL):
|
||||
if args.links:
|
||||
if args.html:
|
||||
return "<li> {0} <a href=\"{3}{1}\">{1}</a>: {2}</li>".format(log_entry[0], log_entry[1], log_entry[2], issue_url)
|
||||
else:
|
||||
return "* {0} [{1}]({3}{1} \"{0} {1}\"): {2}".format(log_entry[0], log_entry[1], log_entry[2], issue_url)
|
||||
else:
|
||||
if args.html:
|
||||
return "<li>%s %d: %s</li>" % log_entry
|
||||
else:
|
||||
return "* %s %d: %s" % log_entry
|
||||
|
||||
|
||||
version_name = args.version
|
||||
|
||||
if args.project:
|
||||
ISSUE_PROJECT=args.project
|
||||
|
||||
rsp = urllib2.urlopen("https://dev.icinga.org/projects/%s/versions.json" % (ISSUE_PROJECT))
|
||||
versions_data = json.loads(rsp.read())
|
||||
|
||||
version_id = None
|
||||
|
||||
for version in versions_data["versions"]:
|
||||
if version["name"] == version_name:
|
||||
version_id = version["id"]
|
||||
break
|
||||
|
||||
if version_id == None:
|
||||
print "Version '%s' not found." % (version_name)
|
||||
sys.exit(1)
|
||||
|
||||
changes = ""
|
||||
|
||||
if "custom_fields" in version:
|
||||
for field in version["custom_fields"]:
|
||||
if field["id"] == 14:
|
||||
changes = field["value"]
|
||||
break
|
||||
|
||||
changes = string.join(string.split(changes, "\r\n"), "\n")
|
||||
|
||||
print format_header("What's New in Version %s" % (version_name), 2)
|
||||
print ""
|
||||
|
||||
if changes:
|
||||
print format_header("Changes", 3)
|
||||
print ""
|
||||
print changes
|
||||
print ""
|
||||
|
||||
offset = 0
|
||||
|
||||
log_entries = []
|
||||
|
||||
while True:
|
||||
# We could filter using &cf_13=1, however this doesn't currently work because the custom field isn't set
|
||||
# for some of the older tickets:
|
||||
rsp = urllib2.urlopen("https://dev.icinga.org/projects/%s/issues.json?offset=%d&status_id=closed&fixed_version_id=%d" % (ISSUE_PROJECT, offset, version_id))
|
||||
issues_data = json.loads(rsp.read())
|
||||
issues_count = len(issues_data["issues"])
|
||||
offset = offset + issues_count
|
||||
|
||||
if issues_count == 0:
|
||||
break
|
||||
|
||||
for issue in issues_data["issues"]:
|
||||
ignore_issue = False
|
||||
|
||||
if "custom_fields" in issue:
|
||||
for field in issue["custom_fields"]:
|
||||
if field["id"] == 13 and "value" in field and field["value"] == "0":
|
||||
ignore_issue = True
|
||||
break
|
||||
|
||||
if ignore_issue:
|
||||
continue
|
||||
|
||||
log_entries.append((issue["tracker"]["name"], issue["id"], issue["subject"].strip()))
|
||||
|
||||
for p in range(2):
|
||||
not_empty = False
|
||||
|
||||
for log_entry in log_entries:
|
||||
if (p == 0 and log_entry[0] == "Feature") or (p == 1 and log_entry[0] != "Feature"):
|
||||
not_empty = True
|
||||
|
||||
if not_empty:
|
||||
print format_header("Features", 4) if p == 0 else format_header("Bugfixes", 4)
|
||||
print ""
|
||||
if args.html:
|
||||
print "<ul>"
|
||||
|
||||
for log_entry in sorted(log_entries):
|
||||
if (p == 0 and log_entry[0] == "Feature") or (p == 1 and log_entry[0] != "Feature"):
|
||||
print format_logentry(log_entry)
|
||||
|
||||
if not_empty:
|
||||
if args.html:
|
||||
print "</ul>"
|
||||
|
||||
print ""
|
||||
|
||||
sys.exit(0)
|
Loading…
Reference in New Issue