Wiki source code of New Release Plan for version $request.version
Last modified by Manuel Leduc on 2024/03/21 10:22
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | {{velocity}} | ||
2 | #set ($object = $doc.getObject("ReleasePlans.ReleasePlanClass")) | ||
3 | #set ($version = $object.getProperty("version").getValue()) | ||
4 | #set ($versionPrefix = $stringtool.substringBefore($version, '-')) | ||
5 | #set ($versionParts = $stringtool.split($versionPrefix, '.')) | ||
6 | #set ($major = $numbertool.toNumber($versionParts[0])) | ||
7 | #set ($minor = $numbertool.toNumber($versionParts[1])) | ||
8 | #if ($versionParts.size() == 3) | ||
9 | #set ($bugfix = $numbertool.toNumber($versionParts[2])) | ||
10 | ## Starting with 16.x cycle we include a bugfix version in our release numbers (e.g. 16.0.0, 16.1.0 etc) | ||
11 | #if ($bugfix == 0) | ||
12 | #set ($isBugfix = false) | ||
13 | #else | ||
14 | #set ($isBugfix = true) | ||
15 | #end | ||
16 | #else | ||
17 | #set ($isBugfix = false) | ||
18 | #set ($bugfix = $NULL) | ||
19 | #end | ||
20 | #set ($shortVersion = $stringtool.replace($version, '.', '\.')) | ||
21 | #set ($shortVersion = $stringtool.replaceChars($shortVersion, '-', '')) | ||
22 | #set ($shortVersion = $stringtool.upperCase($shortVersion)) | ||
23 | #set ($isRC = $version.contains('rc')) | ||
24 | #set ($isMilestone = $version.contains('MILESTONE')) | ||
25 | #set ($shortVersion = $shortVersion.replace('MILESTONE', 'M')) | ||
26 | #set ($releaseNotesWikiLink = "xwiki:ReleaseNotes.Data.XWiki.${shortVersion}") | ||
27 | #set ($isFinal = !$isRC && !$isMilestone) | ||
28 | #set ($isFirstFinal = $versionParts.size() == 2 && $isFinal) | ||
29 | ## First LTS used a scheme XX.10.2 we started to use that after 9.x cycle (we had 9.11.x back then). | ||
30 | #set ($isFirstLTS = $isBugfix && $major > 9 && $minor == 10 && $bugfix == 2) | ||
31 | #macro (findPreviousReleaseDate $major $minor $bugfix $resultVariableName) | ||
32 | #set ($xwql = "select rp.releaseDate from Document doc, doc.object(ReleasePlans.ReleasePlanClass) as rp where doc.name <> '${doc.name}' and rp.version like :versionPattern and rp.releaseDate is not null order by rp.releaseDate desc") | ||
33 | #if ($bugfix && $bugfix > 1) | ||
34 | #set ($query = $services.query.xwql($xwql).bindValue('versionPattern', "${major}.${minor}.%")) | ||
35 | #elseif ($bugfix && $bugfix == 1 && $major < 16) | ||
36 | #set ($query = $services.query.xwql($xwql).bindValue('versionPattern', "${major}.${minor}")) | ||
37 | #elseif ($bugfix && $bugfix == 1 && $major >= 16) | ||
38 | #set ($query = $services.query.xwql($xwql).bindValue('versionPattern', "${major}.${minor}.0")) | ||
39 | #elseif ($isRC) | ||
40 | #set ($query = $services.query.xwql($xwql).bindValue('versionPattern', "${major}.%")) | ||
41 | #else | ||
42 | #set ($query = $services.query.xwql($xwql).bindValue('versionPattern', "${major}.%-rc-%")) | ||
43 | #end | ||
44 | #set ($results = $query.execute()) | ||
45 | #if ($results.size() > 0) | ||
46 | #setVariable($resultVariableName $results[0]) | ||
47 | #else | ||
48 | #if (!$bugfix || $bugfix == 0) | ||
49 | ## No previous RC version or first release of a cycle, find data for the last RC of the previous cycle (major) | ||
50 | #findPreviousReleaseDate($mathtool.sub($major, 1), $minor, $isBugfix, $resultVariableName) | ||
51 | #end | ||
52 | #end | ||
53 | #end | ||
54 | #findPreviousReleaseDate($major, $minor, $bugfix, "previousReleaseDate") | ||
55 | {{/velocity}} | ||
56 | |||
57 | {{info}} | ||
58 | Use these icons to mark the release progress: (x) not done, (/) done, (!) not done for a good reason (explain reason) | ||
59 | {{/info}} | ||
60 | |||
61 | {{velocity}} | ||
62 | * (x) Verify that no tests are failing [[on the CI Server>>http://ci.xwiki.org]] (or that failures are understood, see [[known flickering tests>>https://jira.xwiki.org/issues/?filter=14240]]). | ||
63 | * (x) [[Verify>>ReleasePlans.ReleasePlanHelp||anchor="HInitialBackwardCompatibilityCheck"]] that the {{scm project="xwiki-commons" path="pom.xml"}}${escapetool.H}${escapetool.H}xwiki-commons${escapetool.H}${escapetool.H}'s top level POM{{/scm}} has a ${escapetool.H}${escapetool.H}xwiki.compatibility.previous.version${escapetool.H}${escapetool.H} property correctly pointing to the latest stable (non-milestone) release and if not, change it. | ||
64 | * (x) [[Verify>>ReleasePlans.ReleasePlanHelp||anchor="HVerifyissueswithcommits"]] that there are no [[JIRA issues that are still open, even if they have commits>>https://jira.xwiki.org/issues/?jql=category%20%3D%2010000%20and%20(labels%20is%20empty%20or%20labels%20not%20in%20(%22flickering%22))%20and%20resolution%20%3D%20Unresolved%20and%20issue.property%5Bdevelopment%5D.commits%20%3E%200%20and%20updated%20%3E%20%22$datetool.format('yyyy-MM-dd', $previousReleaseDate)%22]]. | ||
65 | * Make sure next version exists on [[jira>>https://jira.xwiki.org]] projects (JIRA releases are done automatically in the build): | ||
66 | ** (x) [[Commons JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XCOMMONS/versions]] | ||
67 | ** (x) [[Rendering JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XRENDERING/versions]] | ||
68 | ** (x) [[Platform JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XWIKI/versions]] | ||
69 | * (x) [[Verify>>ReleasePlanHelp||anchor="HVerifyJIRAissue"]] that there are no [[open issues on JIRA for version $version>>https://jira.xwiki.org/secure/IssueNavigator.jspa?reset=true&jqlQuery=Project+in+%28%22XWiki+Commons%22%2C+%22XWiki+Rendering%22%2C+%22XWiki+Platform%22%29+and+fixVersion+in+%28%22$version%22%29+and+resolution+in+%28%22Unresolved%22%29]] and that there are [[no open Blockers>>https://jira.xwiki.org/issues/?jql=priority%20%3D%20Blocker%20and%20resolution%20%3D%20Unresolved%20and%20category%20%3D%2010000]]. | ||
70 | * (x) [[Log on the release machine>>ReleasePlans.ReleasePlanHelp||anchor="HLogonReleasemachine"]], [[set up your identity>>ReleasePlans.ReleasePlanHelp||anchor="HSetupyouridentity"]], [[update the release scripts>>ReleasePlans.ReleasePlanHelp||anchor="HUpdateReleasescripts"]] | ||
71 | #if (!$isRC) | ||
72 | * (x) [[Update translations>>ReleasePlans.ReleasePlanHelp||anchor="HUpdateTranslations"]] | ||
73 | #end | ||
74 | * (x) Make sure [[s01.oss.sonatype.org>>https://status.maven.org]] (our Maven Central upload server) is up and running | ||
75 | * (x) [[Build the release>>ReleasePlans.ReleasePlanHelp||anchor="HBuildtherelease"]] | ||
76 | * (x) Publish [[computed list of updated languages>>ReleasePlans.ReleasePlanHelp||anchor="HComputelistofupdatedlanguages"]] in the [[Release Notes for version $version>>${releaseNotesWikiLink}||anchor="HTranslations"]] | ||
77 | * (x) Publish [[contributors list>>ReleasePlans.ReleasePlanHelp||anchor="HGenerateCodeContributorslist"]] in the [[Release Notes for version $version>>${releaseNotesWikiLink}||anchor="HCredits"]] | ||
78 | * (x) Publish [[backward compatibility reports>>ReleasePlans.ReleasePlanHelp||anchor="HUpdateBackwardCompatibilityinthereleasenote"]] in the [[Release Notes for version $version>>${releaseNotesWikiLink}]] | ||
79 | #if ($isFinal) | ||
80 | * (x) [[Update backward compatibility setup in the build>>ReleasePlans.ReleasePlanHelp||anchor="HUpdatethebackwardcompatibilitysetupinthebuild"]] | ||
81 | #end | ||
82 | * (x) [[Clean up your identity>>ReleasePlans.ReleasePlanHelp||anchor="HCleanupidentity"]] | ||
83 | * (x) Verify that there are no [[missing documentation for closed JIRA issues for version $version>>https://jira.xwiki.org/issues/?jql=Project%20in%20%28%22XWiki%20Commons%22%2C%20%22XWiki%20Rendering%22%2C%20%22XWiki%20Platform%22%29%20and%20fixVersion%20in%20%28%22$version%22%29%20and%20resolution%20in%20%28%22Fixed%22%29%20and%20%28%28Documentation%20is%20EMPTY%29%20or%20%28%22Documentation%20in%20Release%20Notes%22%20is%20EMPTY%29%29]] | ||
84 | * (x) Ensure that the [[Release Notes are complete and nice-looking for version $version>>${releaseNotesWikiLink}]] | ||
85 | * (x) Set the Release date + Release flag in the [[Release Notes for version $version>>${releaseNotesWikiLink}]] by editing with the object editor. | ||
86 | * (x) Force [[rebuild of the Debian repository index>>ReleasePlans.ReleasePlanHelp||anchor="HRebuildDebianDistribution"]] | ||
87 | * (x) Update the [[Download page>>https://www.xwiki.org/xwiki/bin/edit/Download/]] (Use bullets points for the major features to make it easy to read; Update/Bump the LTS if doing a final major version release, i.e. new cycle) | ||
88 | #if ($isFinal) | ||
89 | * (x) [[Force extensions update>>ReleasePlans.ReleasePlanHelp||anchor="HForceExtensionsUpdate"]] | ||
90 | #end | ||
91 | * (x) [[Create blog post on xwiki.org>>ReleasePlans.ReleasePlanHelp||anchor="HBlogpostonxwiki.org"]] | ||
92 | * (x) [[Update the API doc>>xwiki:Documentation.DevGuide.API]], including [[Rendering>>rendering:Main.JavaDoc]] | ||
93 | #if ($isFinal) | ||
94 | * (x) Update [[Wikipedia (en)>>https://en.wikipedia.org/wiki/Template:XWiki version]], [[Wikipedia (fr)>>ReleasePlans.ReleasePlanHelp||anchor="HUpdatefr.wikipedia.org"]] only if this version is bigger than the existing one. | ||
95 | * (x) Update [[Wikimatrix>>http://www.wikimatrix.org/edit/XWiki]], with your own account, [[only if this version is bigger than the existing one>>ReleasePlans.ReleasePlanHelp||anchor="HUpdateWikimatrix"]]. | ||
96 | #end | ||
97 | * (x) [[Announce on Twitter>>ReleasePlans.ReleasePlanHelp||anchor="HAnnounceonTwitter"]] with the [[xwikiorg account>>https://twitter.com/xwikiorg/]] | ||
98 | * (x) [[Announce on Mastodon>>ReleasePlans.ReleasePlanHelp||anchor="HAnnounceonMastodon"]] with the [[xwikiorg account>>https://fosstodon.org/@xwikiorg]] | ||
99 | * (x) Update the [[Release Plan page>>ReleasePlans.WebHome||anchor="HNextReleaseManagers"]] to move yourself to the bottom of the list for your next release. | ||
100 | * (x) Ensure that the [[release date in this Release Plan>>path:$doc.getURL("edit", "editor=object")]] corresponds to the date when the git release was done | ||
101 | #if (!$isBugfix) | ||
102 | * (x) Update the release date on the [[Roadmap page>>xwiki:Roadmaps.WebHome]] for non bugfix releases, add a (/) for the release and move the roadmap items to the archive page (for final releases) | ||
103 | #end | ||
104 | #if ($isFinal) | ||
105 | * (x) [[Update the XWiki official Docker images>>ReleasePlans.ReleasePlanHelp||anchor="HUpdateDocker"]] | ||
106 | #end | ||
107 | #if ($isRC) | ||
108 | * Clean up the previous stable branch in Git by doing the following: | ||
109 | ** Delete the ${escapetool.h}#stable-XXX${escapetool.h}# branches before the "stable-${version}" ones on GitHub: | ||
110 | *** (x) [[Commons>>https://github.com/xwiki/xwiki-commons/branches]] | ||
111 | *** (x) [[Rendering>>https://github.com/xwiki/xwiki-rendering/branches]] | ||
112 | *** (x) [[Platform>>https://github.com/xwiki/xwiki-platform/branches]] | ||
113 | ** Delete them in Jenkins by using the "Delete branch" UI button when on the branch jobs (after they've been deleted in GitHub) | ||
114 | *** (x) [[Commons>>https://ci.xwiki.org/job/XWiki/job/xwiki-commons/]] | ||
115 | *** (x) [[Rendering>>https://ci.xwiki.org/job/XWiki/job/xwiki-rendering/]] | ||
116 | *** (x) [[Platform (main)>>https://ci.xwiki.org/job/XWiki/job/xwiki-platform/]] && [[Platform (docker tests)>>https://ci.xwiki.org/job/XWiki%20Environment%20Tests/job/xwiki-platform/]] | ||
117 | ** Remove any unreleased JIRA versions for the ${escapetool.h}#stable-XXX${escapetool.h}# branch that has been deleted (e.g. remove ${escapetool.h}#13.7.1${escapetool.h}# if branch ${escapetool.h}#stable-13.7.x${escapetool.h}# has been deleted and version ${escapetool.h}#13.7.1${escapetool.h}# has not been released): | ||
118 | *** (x) [[Commons JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XCOMMONS/versions]] | ||
119 | *** (x) [[Rendering JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XRENDERING/versions]] | ||
120 | *** (x) [[Platform JIRA>>https://jira.xwiki.org/plugins/servlet/project-config/XWIKI/versions]] | ||
121 | * Manually start the environment tests on the [[newly created branch>>https://ci.xwiki.org/job/XWiki%20Environment%20Tests/job/xwiki-platform/job/stable-${major}.${minor}.x/]] | ||
122 | #end | ||
123 | #if ($isFirstLTS) | ||
124 | * (x) Ensure to follow the steps indicated in [[Versioning and releases practices>>dev:Community.VersioningAndReleasePractices||anchor="HReleaseCyclesandReleaseStrategy"]] to announce the new LTS. | ||
125 | #end | ||
126 | {{/velocity}} |