diff --git a/scripts/ci/changelog/Gemfile b/scripts/ci/changelog/Gemfile index f2d7c3bd716..46b058e3c50 100644 --- a/scripts/ci/changelog/Gemfile +++ b/scripts/ci/changelog/Gemfile @@ -16,6 +16,8 @@ gem 'optparse', '~> 0.1.1' gem 'logger', '~> 1.4' +gem 'changelogerator', '0.10.1' + gem 'test-unit', group: :dev gem 'rubocop', group: :dev, require: false diff --git a/scripts/ci/changelog/Gemfile.lock b/scripts/ci/changelog/Gemfile.lock index 855d7f91a54..893bec54919 100644 --- a/scripts/ci/changelog/Gemfile.lock +++ b/scripts/ci/changelog/Gemfile.lock @@ -4,6 +4,9 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) + changelogerator (0.10.1) + git_diff_parser (~> 3) + octokit (~> 4) faraday (1.8.0) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -64,8 +67,10 @@ GEM PLATFORMS x86_64-darwin-20 + x86_64-darwin-22 DEPENDENCIES + changelogerator (= 0.10.1) git_diff_parser (~> 3) logger (~> 1.4) octokit (~> 4) diff --git a/scripts/ci/changelog/bin/changelog b/scripts/ci/changelog/bin/changelog index 7589dcb4ebf..8588828d651 100755 --- a/scripts/ci/changelog/bin/changelog +++ b/scripts/ci/changelog/bin/changelog @@ -15,6 +15,9 @@ logger = Logger.new($stdout) logger.level = Logger::DEBUG logger.debug('Starting') +changelogerator_version = `changelogerator --version` +logger.debug(changelogerator_version) + owner = 'paritytech' repo = 'cumulus' ref1 = ARGV[0] @@ -32,6 +35,9 @@ polkadot_ref2 = gh_cumulus.get_dependency_reference(ref2, 'polkadot-client') substrate_ref1 = gh_cumulus.get_dependency_reference(ref1, 'sp-io') substrate_ref2 = gh_cumulus.get_dependency_reference(ref2, 'sp-io') +logger.debug("Cumulus from: #{ref1}") +logger.debug("Cumulus to: #{ref2}") + logger.debug("Polkadot from: #{polkadot_ref1}") logger.debug("Polkadot to: #{polkadot_ref2}") @@ -76,7 +82,7 @@ else logger.debug("Re-using:#{substrate_data}") end -POLKADOT_COLLECTIVES_DIGEST = ENV['COLLECTIVES_POLKADOT_DIGEST'] || 'digests/polkadot-collectives-srtool-digest.json' +POLKADOT_COLLECTIVES_DIGEST = ENV['COLLECTIVES_POLKADOT_DIGEST'] || 'digests/collectives-polkadot-srtool-digest.json' SHELL_DIGEST = ENV['SHELL_DIGEST'] || 'digests/shell-srtool-digest.json' WESTMINT_DIGEST = ENV['WESTMINT_DIGEST'] || 'digests/westmint-srtool-digest.json' STATEMINE_DIGEST = ENV['STATEMINE_DIGEST'] || 'digests/statemine-srtool-digest.json' @@ -90,7 +96,7 @@ CANVAS_KUSAMA_DIGEST = ENV['CANVAS_KUSAMA_DIGEST'] || 'digests/contracts-rococo- logger.debug("Release type: #{ENV['RELEASE_TYPE']}") if ENV['RELEASE_TYPE'] && ENV['RELEASE_TYPE'] == 'client' - logger.debug("Building changelog without runtimes") + logger.debug('Building changelog without runtimes') cmd = format('jq \ --slurpfile cumulus %s \ --slurpfile substrate %s \ @@ -102,7 +108,7 @@ if ENV['RELEASE_TYPE'] && ENV['RELEASE_TYPE'] == 'client' }\' > context.json', cumulus_data, substrate_data, polkadot_data, ) else - logger.debug("Building changelog with runtimes") + logger.debug('Building changelog with runtimes') # Here we compose all the pieces together into one # single big json file. diff --git a/scripts/ci/changelog/templates/change.md.tera b/scripts/ci/changelog/templates/change.md.tera index e545b4cec9c..609a038789a 100644 --- a/scripts/ci/changelog/templates/change.md.tera +++ b/scripts/ci/changelog/templates/change.md.tera @@ -1,11 +1,11 @@ {# This macro shows ONE change #} {%- macro change(c, cml="[C]", dot="[P]", sub="[S]") -%} -{%- if c.meta.C and c.meta.C.value >= 5 -%} +{%- if c.meta.C and c.meta.C.agg.max >= 5 -%} {%- set prio = " ‼️ HIGH" -%} -{%- elif c.meta.C and c.meta.C.value >= 3 -%} +{%- elif c.meta.C and c.meta.C.agg.max >= 3 -%} {%- set prio = " ❗️ Medium" -%} -{%- elif c.meta.C and c.meta.C.value < 3 -%} +{%- elif c.meta.C and c.meta.C.agg.max < 3 -%} {%- set prio = " Low" -%} {%- else -%} {%- set prio = "" -%} @@ -13,13 +13,13 @@ {%- set audit = "" -%} {# -{%- if c.meta.D and c.meta.D.value == 1 -%} +{%- if c.meta.D and c.meta.D.D1 -%} {%- set audit = "✅ audited " -%} -{%- elif c.meta.D and c.meta.D.value == 2 -%} +{%- elif c.meta.D and c.meta.D.D2 -%} {%- set audit = "✅ trivial " -%} -{%- elif c.meta.D and c.meta.D.value == 3 -%} +{%- elif c.meta.D and c.meta.D.D3 -%} {%- set audit = "✅ trivial " -%} -{%- elif c.meta.D and c.meta.D.value == 5 -%} +{%- elif c.meta.D and c.meta.D.D5 -%} {%- set audit = "⏳ pending non-critical audit " -%} {%- else -%} {%- set audit = "" -%} @@ -35,7 +35,7 @@ {%- set repo = " " -%} {%- endif -%} {# #} -{%- if c.meta.T and c.meta.T.value == 6 -%} +{%- if c.meta.T and c.meta.T.T6 -%} {%- set xcm = " [✉️ XCM]" -%} {%- else -%} {%- set xcm = "" -%} diff --git a/scripts/ci/changelog/templates/changes.md.tera b/scripts/ci/changelog/templates/changes.md.tera index d691da0a53c..f1704546b0a 100644 --- a/scripts/ci/changelog/templates/changes.md.tera +++ b/scripts/ci/changelog/templates/changes.md.tera @@ -16,4 +16,6 @@ {% endif %} +{% include "changes_api.md.tera" %} + {% include "changes_misc.md.tera" %} diff --git a/scripts/ci/changelog/templates/changes_api.md.tera b/scripts/ci/changelog/templates/changes_api.md.tera new file mode 100644 index 00000000000..2379c178c03 --- /dev/null +++ b/scripts/ci/changelog/templates/changes_api.md.tera @@ -0,0 +1,19 @@ +{%- import "change.md.tera" as m_c -%} + +### API + +{#- The changes are sorted by merge date -#} +{% for pr in changes | sort(attribute="merged_at") -%} + +{%- if pr.meta.B -%} +{%- if pr.meta.B.B0 -%} +{#- We skip silent ones -#} +{%- else -%} + +{%- if pr.meta.B.B1 and pr.meta.T.T2 and not pr.title is containing("ompanion") %} +- {{ m_c::change(c=pr) }} +{%- endif -%} +{%- endif -%} + +{%- endif -%} +{%- endfor %} diff --git a/scripts/ci/changelog/templates/changes_client.md.tera b/scripts/ci/changelog/templates/changes_client.md.tera index 36fb6b9de68..05a521d6870 100644 --- a/scripts/ci/changelog/templates/changes_client.md.tera +++ b/scripts/ci/changelog/templates/changes_client.md.tera @@ -5,11 +5,11 @@ {%- for pr in changes | sort(attribute="merged_at") %} {%- if pr.meta.B %} - {%- if pr.meta.B.value == 0 %} + {%- if pr.meta.B.B0 %} {#- We skip silent ones -#} {%- else -%} - {%- if pr.meta.B.value == 5 and not pr.title is containing("ompanion") %} + {%- if pr.meta.B.B1 and pr.meta.T and pr.meta.T.T0 and not pr.title is containing("ompanion") %} - {{ m_c::change(c=pr) }} {%- endif -%} {% endif -%} diff --git a/scripts/ci/changelog/templates/changes_misc.md.tera b/scripts/ci/changelog/templates/changes_misc.md.tera index cf3b701f2cf..b36595bc5d6 100644 --- a/scripts/ci/changelog/templates/changes_misc.md.tera +++ b/scripts/ci/changelog/templates/changes_misc.md.tera @@ -4,10 +4,10 @@ {#- First pass to count #} {%- for pr in changes -%} {%- if pr.meta.B %} - {%- if pr.meta.B.value == 0 -%} + {%- if pr.meta.B.B0 -%} {#- We skip silent ones -#} {%- else -%} - {%- if pr.meta.B and pr.meta.B.value != 5 or pr.meta.C or not pr.meta.B %} + {%- if pr.meta.T and pr.meta.T.agg.max > 2 %} {%- set_global misc_count = misc_count + 1 -%} {%- endif -%} {% endif -%} @@ -24,10 +24,10 @@ There are other misc. changes. You can expand the list below to view them all. {#- The changes are sorted by merge date #} {%- for pr in changes | sort(attribute="merged_at") %} {%- if pr.meta.B and not pr.title is containing("ompanion") %} - {%- if pr.meta.B.value == 0 %} + {%- if pr.meta.B.B0 %} {#- We skip silent ones -#} {%- else -%} - {%- if pr.meta.B and pr.meta.B.value != 5 or pr.meta.C or not pr.meta.B %} + {%- if pr.meta.T and pr.meta.T.agg.max > 2 %} - {{ m_c::change(c=pr) }} {%- endif -%} {% endif -%} diff --git a/scripts/ci/changelog/templates/changes_runtime.md.tera b/scripts/ci/changelog/templates/changes_runtime.md.tera index 9525d73935a..39c27263765 100644 --- a/scripts/ci/changelog/templates/changes_runtime.md.tera +++ b/scripts/ci/changelog/templates/changes_runtime.md.tera @@ -5,12 +5,12 @@ {#- The changes are sorted by merge date -#} {% for pr in changes | sort(attribute="merged_at") -%} -{%- if pr.meta.B and pr.meta.X -%} -{%- if pr.meta.B.value == 0 -%} +{%- if pr.meta.B -%} +{%- if pr.meta.B.B0 -%} {#- We skip silent ones -#} {%- else -%} -{%- if pr.meta.B.value == 1 and pr.meta.X.value == 1 and not pr.title is containing("ompanion") %} +{%- if pr.meta.B.B1 and pr.meta.T.T1 and not pr.title is containing("ompanion") %} - {{ m_c::change(c=pr) }} {%- endif -%} {%- endif -%} diff --git a/scripts/ci/changelog/templates/debug.md.tera b/scripts/ci/changelog/templates/debug.md.tera index 43eb52a84db..4f0b14c00f1 100644 --- a/scripts/ci/changelog/templates/debug.md.tera +++ b/scripts/ci/changelog/templates/debug.md.tera @@ -1,4 +1,4 @@ -{%- set to_ignore = changes | filter(attribute="meta.B.value", value=0) %} +{%- set to_ignore = changes | filter(attribute="meta.B.B0") %} - -{%- if prio -%} +{% if prio -%} {{prio}}: {{text}} {%- else -%} @@ -43,9 +42,9 @@ The changes motivating this priority level are: {% for pr in changes | sort(attribute="merged_at") -%} {%- if pr.meta.C -%} - {%- if pr.meta.C.value == p %} + {%- if pr.meta.C.agg.max >= p %} - {{ m_c::change(c=pr) }} -{%- if pr.meta.B and pr.meta.X and pr.meta.B.value == 1 and pr.meta.X.value == 1 %} +{%- if pr.meta.B and pr.meta.B.B1 and pr.meta.T and pr.meta.T.T1 %} (RUNTIME) {% endif %} diff --git a/scripts/ci/changelog/templates/host_functions.md.tera b/scripts/ci/changelog/templates/host_functions.md.tera index fc84c090285..2a9b26e8090 100644 --- a/scripts/ci/changelog/templates/host_functions.md.tera +++ b/scripts/ci/changelog/templates/host_functions.md.tera @@ -4,10 +4,10 @@ {# We loop first to count the number of host functions but we do not display anything yet #} {%- for pr in changes -%} -{%- if pr.meta.B and pr.meta.B.value == 0 -%} +{%- if pr.meta.B and pr.meta.B.B0 -%} {#- We skip silent ones -#} {%- else -%} - {%- if pr.meta.E and pr.meta.E.value == 4 -%} + {%- if pr.meta.E and pr.meta.E.E4 -%} {%- set_global host_fn_count = host_fn_count + 1 -%} {% endif -%} {%- endif -%} @@ -26,10 +26,10 @@ {% for pr in changes | sort(attribute="merged_at") -%} -{%- if pr.meta.B and pr.meta.B.value == 0 -%} +{%- if pr.meta.B and pr.meta.B.B0 -%} {#- We skip silent ones -#} {%- else -%} - {%- if pr.meta.E and pr.meta.E.value == 4 -%} + {%- if pr.meta.E and pr.meta.E.E4 -%} - {{ m_c::change(c=pr) }} {% endif -%} {% endif -%} diff --git a/scripts/ci/changelog/templates/migrations-db.md.tera b/scripts/ci/changelog/templates/migrations-db.md.tera index d2fd8105e41..e840d991d9a 100644 --- a/scripts/ci/changelog/templates/migrations-db.md.tera +++ b/scripts/ci/changelog/templates/migrations-db.md.tera @@ -5,10 +5,10 @@ {% for pr in changes | sort(attribute="merged_at") -%} -{%- if pr.meta.B and pr.meta.B.value == 0 %} +{%- if pr.meta.B and pr.meta.B.B0 %} {#- We skip silent ones -#} {%- else -%} -{%- if pr.meta.E and pr.meta.E.value == 2 -%} +{%- if pr.meta.E and pr.meta.E.E2 -%} {%- set_global db_migration_count = db_migration_count + 1 -%} - {{ m_c::change(c=pr) }} {% endif -%} diff --git a/scripts/ci/changelog/templates/migrations-runtime.md.tera b/scripts/ci/changelog/templates/migrations-runtime.md.tera index 6c7bd287c91..f02499a84d7 100644 --- a/scripts/ci/changelog/templates/migrations-runtime.md.tera +++ b/scripts/ci/changelog/templates/migrations-runtime.md.tera @@ -4,10 +4,10 @@ {% for pr in changes | sort(attribute="merged_at") -%} -{%- if pr.meta.B and pr.meta.B.value == 0 %} +{%- if pr.meta.B and pr.meta.B.B0 %} {#- We skip silent ones -#} {%- else -%} -{%- if pr.meta.E and pr.meta.E.value == 1 -%} +{%- if pr.meta.E and pr.meta.E.E1 -%} - {{ m_c::change(c=pr) }} {% endif -%} {% endif -%}