From af28396680c53042ea99a977b479f24ada7c0438 Mon Sep 17 00:00:00 2001 From: Jeff Mesnil Date: Thu, 27 Jun 2024 11:12:43 +0200 Subject: [PATCH] Update template and checks * Update the template to move the tracking issue and the stability level to the front matter * When a PR is open, check that these fields are valid * Generate a HTML page for the proposal with these fields. Signed-off-by: Jeff Mesnil --- .scripts/check_proposals | 33 ++++++++++ _layouts/proposal.html | 13 +++- design-doc-template.adoc | 126 +++++++++++++++------------------------ 3 files changed, 93 insertions(+), 79 deletions(-) diff --git a/.scripts/check_proposals b/.scripts/check_proposals index 594ab165..6a134d66 100755 --- a/.scripts/check_proposals +++ b/.scripts/check_proposals @@ -37,6 +37,21 @@ class MetadataChecker else system("gh pr edit #{pr_number} --remove-label invalid-categories") end + issue_errors = check_issue(pr_number, front_matter) + if issue_errors.length() > 0 + errors << issue_errors + system("gh pr edit #{pr_number} --add-label missing-issue") + else + system("gh pr edit #{pr_number} --remove-label missing-issue") + end + stability_level_error = check_stability_level(pr_number, front_matter) + if stability_level_error.length() > 0 + errors << stability_level_error + system("gh pr edit #{pr_number} --add-label invalid-stability-level") + else + system("gh pr edit #{pr_number} --remove-label invalid-stability-level") + end + errors end @@ -54,6 +69,24 @@ class MetadataChecker errors end + def check_issue pr_number, front_matter + errors = [] + unless (front_matter.key? "issue") && (front_matter["issue"] != nil) + errors << "Missing field: issue" + end + errors + end + + def check_stability_level pr_number, front_matter + stability_levels = ["experimental", "preview", "community", "default"] + + errors = [] + unless (front_matter.key? "stability-level") && (stability_levels.include? front_matter["stability-level"]) + errors << "Invalid field: stability-level" + end + errors + end + def load_all_categories yaml = YAML.load_file("_data/wildfly-categories.yaml") return yaml["categories"] diff --git a/_layouts/proposal.html b/_layouts/proposal.html index 4b7cfa1a..a88c08db 100644 --- a/_layouts/proposal.html +++ b/_layouts/proposal.html @@ -2,9 +2,17 @@ layout: base --- +{% assign my_variable = false %} + +
-

{{page.title}}

+

+ {% if page.stability-level != "default" %} + <{{page.stability-level}}>  + {% endif %} + {{page.title}} +

{% unless pages.categories == empty %} @@ -14,6 +22,9 @@

{{page.title}}

{% endfor %}
{% endunless %} +
Tracked by  + {{ page.issue }} +
{{ content }}
diff --git a/design-doc-template.adoc b/design-doc-template.adoc index 4156a0aa..86094f69 100644 --- a/design-doc-template.adoc +++ b/design-doc-template.adoc @@ -4,8 +4,16 @@ categories: # - core # - management # if missing, add it to _data/widfly-categories and use its id +# +# Specify the stabitily level of the feature. +# Values can be one of: experimental preview community default +stability-level: +# Specify the main issue of the feature +# Most of the image, it will be a issue in https://issues.redhat.com/browse/WFLY +# or https://issues.redhat.com/browse/WFCORE +issue: --- -= [Experimental|Preview|Community|default]Template += :author: Your Name :email: your.email@redhat.com :toc: left @@ -13,116 +21,78 @@ categories: :idprefix: :idseparator: - -== Overview - -== Issue Metadata - -=== Issue - -* https://issues.redhat.com/browse/WFCORE[WFCORE-XXXX] - -=== Related Issues - -* https://issues.redhat.com/browse/WFLY[WFLY-XXXX] - -=== Stability Level -// Choose the planned stability level for the proposed functionality -* [ ] Experimental +____ -* [ ] Preview - -* [ ] Community - -* [ ] default - -=== Dev Contacts - -* mailto:{email}[{author}] +== Overview -=== QE Contacts +____ -=== Testing By -// Put an x in the relevant field to indicate if testing will be done by Engineering or QE. -// Discuss with QE during the Kickoff state to decide this -* [ ] Engineering -* [ ] QE +== Affected Projects or Components -=== Affected Projects or Components +____ === Other Interested Projects === Relevant Installation Types -// Remove the x next to the relevant field if the feature in question is not relevant -// to that kind of WildFly installation -* [x] Traditional standalone server (unzipped or provisioned by Galleon) - -* [x] Managed domain -* [x] OpenShift s2i +____. -* [x] Bootable jar +* Traditional standalone server (unzipped or provisioned by Galleon) +* Managed domain +* OpenShift Source-to-Image (S2I) +* Bootable jar == Requirements -=== Hard Requirements - -=== Nice-to-Have Requirements -// Requirements in this section do not have to be met to merge the proposed functionality. -// Note: Nice-to-have requirements that don't end up being implemented as part of -// the work covered by this proposal should be moved to the 'Future Work' section. - +____ === Non-Requirements -// Use this section to explicitly discuss things that readers might think are required -// but which are not required. + +____ === Future Work -// Use this section to discuss requirements that are not addressed by this proposal -// but which may be addressed in later proposals. + +____ == Backwards Compatibility -// Does this enhancement affect backwards compatibility with previously released -// versions of WildFly? -// Can the identified incompatibility be avoided? +____ === Default Configuration +____ + === Importing Existing Configuration +TBD + === Deployments +____ + === Interoperability -//== Implementation Plan -//// -Delete if not needed. The intent is if you have a complex feature which can -not be delivered all in one go to suggest the strategy. If your feature falls -into this category, please mention the Release Coordinators on the pull -request so they are aware. -//// +____ -== Security Considerations +== Implementation Plan -//// -Identification if any security implications that may need to be considered with this feature -or a confirmation that there are no security implications to consider. -//// +____ + +== Thread Model + +____ == Test Plan -== Community Documentation -//// -Generally a feature should have documentation as part of the PR to wildfly master, or as a follow up PR if the feature is in wildfly-core. In some cases though the documentation belongs more in a component, or does not need any documentation. Indicate which of these will happen. -//// +____ + +== Documentation Plan + +____ + == Release Note Content -//// -Draft verbiage for up to a few sentences on the feature for inclusion in the -Release Note blog article for the release that first includes this feature. -Example article: http://wildfly.org/news/2018/08/30/WildFly14-Final-Released/. -This content will be edited, so there is no need to make it perfect or discuss -what release it appears in. "See Overview" is acceptable if the overview is -suitable. For simple features best covered as an item in a bullet-point list -of features containing a few words on each, use "Bullet point: " -//// + +__">__