releasehx 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +22 -16
- data/build/docs/_config.yml +3 -1
- data/build/docs/_release_index.adoc +16 -6
- data/build/docs/index.adoc +71 -287
- data/build/docs/release-procedure.adoc +8 -2
- data/build/docs/release-procedure.html +5 -4
- data/build/docs/releasehx.1 +2 -2
- data/lib/releasehx/generated.rb +1 -1
- data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +7 -7
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 78e2b0461641bd5ccec859dc8cc3902b17cf253e0e93bbd67e9985d99b118aed
|
|
4
|
+
data.tar.gz: 61625da70d76384524914b4457f4803e2add183122cbd987a9406c3fe176e0b1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37386a8549560e7ff8ebb64975b4907966e731fadd4d918bba0d93f177e9d05eafbb0a097f184f615c94d09c2b0aeb32b3155d6ce1762f1c24a412712ea7577d
|
|
7
|
+
data.tar.gz: 73cd6b547b271985f3f0df2e39c1e5636966788dc5492624591521ff97efa37031024515f67aea5a3c27f9a9cb9a18d0172c1aad4164f08cbd9235d1ecace1d5
|
data/README.adoc
CHANGED
|
@@ -12,23 +12,25 @@
|
|
|
12
12
|
:this_proj_slug: releasehx
|
|
13
13
|
:this_proj_name: ReleaseHx
|
|
14
14
|
// tag::universal-settings[]
|
|
15
|
+
// ALL changes within this block must be made in prime template:
|
|
16
|
+
// DocOps/lab/gems/docopslab-dev/templates/README.asciidoc
|
|
15
17
|
:docopslab_src_www_url: https://github.com/DocOps
|
|
16
18
|
:docopslab_domain: docopslab.org
|
|
17
19
|
:docopslab_www_url: https://{docopslab_domain}
|
|
18
20
|
:docopslab_io_www_url: https://docopslab.github.io
|
|
19
21
|
:docopslab_ruby_version: 3.2.7
|
|
20
|
-
:docopslab_src_www_url: https://raw.githubusercontent.com/DocOps
|
|
21
22
|
:docopslab_git_src_uri: git@github.com:DocOps
|
|
23
|
+
:docopslab_src_raw_url: https://raw.githubusercontent.com/DocOps
|
|
22
24
|
:this_proj_src_www_url: {docopslab_src_www_url}/{this_proj_slug}
|
|
23
|
-
:this_proj_src_raw_url:
|
|
25
|
+
:this_proj_src_raw_url: {docopslab_src_raw_url}/{this_proj_slug}
|
|
26
|
+
:this_proj_src_main_raw_url: {this_proj_src_raw_url}/main
|
|
24
27
|
:this_proj_src_main_files_url: {this_proj_src_www_url}/blob/main
|
|
25
|
-
:this_proj_src_main_edit_url: {this_proj_src_www_url}/edit/main
|
|
26
28
|
:this_proj_src_git_uri: {docopslab_git_src_uri}/{this_proj_slug}.git
|
|
27
29
|
:this_proj_ruby_version: {docopslab_ruby_version}
|
|
28
30
|
// tag::env-settings[]
|
|
29
|
-
:
|
|
31
|
+
:docs_extn:
|
|
30
32
|
ifdef::env-github[]
|
|
31
|
-
:
|
|
33
|
+
:docs_extn: .adoc
|
|
32
34
|
:icons: font
|
|
33
35
|
:caution-caption: :fire:
|
|
34
36
|
:important-caption: :exclamation:
|
|
@@ -37,15 +39,19 @@ ifdef::env-github[]
|
|
|
37
39
|
:warning-caption: :warning:
|
|
38
40
|
endif::[]
|
|
39
41
|
// end::env-settings[]
|
|
42
|
+
// Settings likely to be overridden locally
|
|
43
|
+
:this_prod_slug: {this_proj_slug}
|
|
44
|
+
:this_prod_name: {this_proj_name}
|
|
45
|
+
:this_prod_src_www_url: {this_proj_src_www_url}
|
|
40
46
|
// end::universal-settings[]
|
|
41
|
-
:
|
|
47
|
+
:releasehx-demo_repo_www_url: {docopslab_src_www_url}/releasehx-demo
|
|
42
48
|
// tag::product-settings[]
|
|
43
49
|
:this_prod_slug: {this_proj_slug}
|
|
44
50
|
// tag::version-settings[]
|
|
45
51
|
:this_prod_vrsn_major: 0
|
|
46
52
|
:this_prod_vrsn_minor: 2
|
|
47
53
|
:this_prod_vrsn_majmin: {this_prod_vrsn_major}.{this_prod_vrsn_minor}
|
|
48
|
-
:this_prod_vrsn_patch:
|
|
54
|
+
:this_prod_vrsn_patch: 1
|
|
49
55
|
:this_prod_vrsn: {this_prod_vrsn_majmin}.{this_prod_vrsn_patch}
|
|
50
56
|
:next_prod_vrsn: 0.3.0
|
|
51
57
|
:next_prod_vrsn_majmin: 0.3
|
|
@@ -461,7 +467,7 @@ Then have it consult `releasehx://config/sample` as a table of contents before u
|
|
|
461
467
|
[[demo-setup]]
|
|
462
468
|
==== Demo Repo Setup
|
|
463
469
|
|
|
464
|
-
If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{
|
|
470
|
+
If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx-demo_repo_www_url}[DocOps/releasehx-demo]` repository as instructed in this section.
|
|
465
471
|
|
|
466
472
|
Alternately, skip to <<issue-sources>> to begin configuring your own project/environment.
|
|
467
473
|
|
|
@@ -632,7 +638,7 @@ Out of the box, there are two issues in the `jira-customfield-note-1.1.0.json` f
|
|
|
632
638
|
[.prompt.testable]
|
|
633
639
|
rhx 1.1.0 --config configs/jira-customfield.yml --api-data _payloads/jira-customfield-note-1.1.0.json --html --pdf
|
|
634
640
|
|
|
635
|
-
For more on the demo repo, visit its README at {
|
|
641
|
+
For more on the demo repo, visit its README at {releasehx-demo_repo_www_url}.
|
|
636
642
|
|
|
637
643
|
[[custom-configuration]]
|
|
638
644
|
==== Custom Configuration
|
|
@@ -923,7 +929,7 @@ For *custom field-based* release notes, the entire ADF content in the custom fie
|
|
|
923
929
|
No heading extraction is performed.
|
|
924
930
|
--
|
|
925
931
|
|
|
926
|
-
See link:{
|
|
932
|
+
See link:{releasehx-demo_repo_www_url}[releasehx-demo] repository for working examples with ADF payloads and configurations.
|
|
927
933
|
|
|
928
934
|
[[github-issues]]
|
|
929
935
|
==== GitHub Issues
|
|
@@ -1350,7 +1356,7 @@ When rendered, the HTML will include:
|
|
|
1350
1356
|
}
|
|
1351
1357
|
----
|
|
1352
1358
|
|
|
1353
|
-
For examples of dark theme in action, see the demo configurations in the {
|
|
1359
|
+
For examples of dark theme in action, see the demo configurations in the {releasehx-demo_repo_www_url}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
|
|
1354
1360
|
|
|
1355
1361
|
[[html-wrapper-control]]
|
|
1356
1362
|
===== HTML Wrapper Control
|
|
@@ -1954,7 +1960,7 @@ ReleaseHx comes with a complete default configuration file as well as a series o
|
|
|
1954
1960
|
|
|
1955
1961
|
The complete link:{default-config_www}[default config file] displays default values with commented descriptions of all available properties.
|
|
1956
1962
|
|
|
1957
|
-
The various sample configurations stored in the link:{
|
|
1963
|
+
The various sample configurations stored in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
|
|
1958
1964
|
|
|
1959
1965
|
[[env-vars]]
|
|
1960
1966
|
=== Environment Variables in ReleaseHx
|
|
@@ -2188,7 +2194,7 @@ For example, if your GitHub issues use labels like:
|
|
|
2188
2194
|
Your ReleaseHx application will need an alternate mapping because the default GitHub mapping expects native `issue_type.name` fields.
|
|
2189
2195
|
|
|
2190
2196
|
An example alternate mapping for label-based GitHub type extraction can be found at:
|
|
2191
|
-
link:{
|
|
2197
|
+
link:{releasehx-demo_repo_www_url}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
|
|
2192
2198
|
|
|
2193
2199
|
This mapping includes Ruby logic to:
|
|
2194
2200
|
|
|
@@ -2240,7 +2246,7 @@ To use an alternate mapping:
|
|
|
2240
2246
|
|
|
2241
2247
|
. Test with representative payload data to ensure proper extraction
|
|
2242
2248
|
|
|
2243
|
-
The link:{
|
|
2249
|
+
The link:{releasehx-demo_repo_www_url}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
|
|
2244
2250
|
|
|
2245
2251
|
[NOTE]
|
|
2246
2252
|
ReleaseHx by default looks for a mapping file that matches the name of the API you are using.
|
|
@@ -2276,7 +2282,7 @@ Using the ReleaseHx config file, you can manipulate:
|
|
|
2276
2282
|
|
|
2277
2283
|
Most of this can be manipulated using the following sections: <<conf_ppty_history>>, <<conf_ppty_changelog>>, <<conf_ppty_notes>>, <<conf_ppty_links>>, as well as within change-metadata config blocks, where you can alter labels, icons, and such: <<conf_ppty_types>>, <<conf_ppty_parts>>, <<conf_ppty_tags>>.
|
|
2278
2284
|
|
|
2279
|
-
The various sample configurations found in the link:{
|
|
2285
|
+
The various sample configurations found in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] illustrate many of these options.
|
|
2280
2286
|
|
|
2281
2287
|
A complete link:{default-config_www}[sample config] displays default values and commented descriptions of all available properties.
|
|
2282
2288
|
|
|
@@ -2550,7 +2556,7 @@ To work with ReleaseHx source, clone both repositories side by side for the most
|
|
|
2550
2556
|
+
|
|
2551
2557
|
[.prompt]
|
|
2552
2558
|
git clone {this_proj_src_www_url}
|
|
2553
|
-
git clone {
|
|
2559
|
+
git clone {releasehx-demo_repo_www_url}
|
|
2554
2560
|
+
|
|
2555
2561
|
This will give you `<source_dir>/releasehx` and `<source_dir>/releasehx-demo`, side by side.
|
|
2556
2562
|
|
data/build/docs/_config.yml
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
title: ReleaseHx Documentation
|
|
2
2
|
theme: just-the-docs
|
|
3
3
|
baseurl: /
|
|
4
|
+
future: true
|
|
4
5
|
|
|
5
6
|
plugins:
|
|
6
7
|
- jekyll-asciidoc
|
|
@@ -31,7 +32,8 @@ exclude:
|
|
|
31
32
|
- manpage.adoc
|
|
32
33
|
- jekyll/
|
|
33
34
|
- payloads/
|
|
34
|
-
-
|
|
35
|
+
- _releases/drafts
|
|
36
|
+
- _releases/payloads
|
|
35
37
|
- yard/
|
|
36
38
|
- release-procedure.adoc
|
|
37
39
|
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
==
|
|
1
|
+
== Release History
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[cols="~,~"]
|
|
4
|
+
|===
|
|
5
|
+
| <<release-0-2-1,0.2.1>>
|
|
6
|
+
| 28 May, 2026
|
|
7
|
+
| <<release-0-2-0,0.2.0>>
|
|
8
|
+
| 27 May, 2026
|
|
9
|
+
| <<release-0-1-2,0.1.2>>
|
|
10
|
+
| 30 January, 2026
|
|
11
|
+
|===
|
|
4
12
|
|
|
5
|
-
|
|
6
|
-
|
|
13
|
+
[[release-0-2-1]]
|
|
14
|
+
include::_releases/0.2.1.adoc[leveloffset=+1]
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
[[release-0-2-0]]
|
|
17
|
+
include::_releases/0.2.0.adoc[leveloffset=+1]
|
|
9
18
|
|
|
10
|
-
|
|
19
|
+
[[release-0-1-2]]
|
|
20
|
+
include::_releases/0.1.2.adoc[leveloffset=+1]
|
data/build/docs/index.adoc
CHANGED
|
@@ -12,23 +12,25 @@
|
|
|
12
12
|
:this_proj_slug: releasehx
|
|
13
13
|
:this_proj_name: ReleaseHx
|
|
14
14
|
// tag::universal-settings[]
|
|
15
|
+
// ALL changes within this block must be made in prime template:
|
|
16
|
+
// DocOps/lab/gems/docopslab-dev/templates/README.asciidoc
|
|
15
17
|
:docopslab_src_www_url: https://github.com/DocOps
|
|
16
18
|
:docopslab_domain: docopslab.org
|
|
17
19
|
:docopslab_www_url: https://{docopslab_domain}
|
|
18
20
|
:docopslab_io_www_url: https://docopslab.github.io
|
|
19
21
|
:docopslab_ruby_version: 3.2.7
|
|
20
|
-
:docopslab_src_www_url: https://raw.githubusercontent.com/DocOps
|
|
21
22
|
:docopslab_git_src_uri: git@github.com:DocOps
|
|
23
|
+
:docopslab_src_raw_url: https://raw.githubusercontent.com/DocOps
|
|
22
24
|
:this_proj_src_www_url: {docopslab_src_www_url}/{this_proj_slug}
|
|
23
|
-
:this_proj_src_raw_url:
|
|
25
|
+
:this_proj_src_raw_url: {docopslab_src_raw_url}/{this_proj_slug}
|
|
26
|
+
:this_proj_src_main_raw_url: {this_proj_src_raw_url}/main
|
|
24
27
|
:this_proj_src_main_files_url: {this_proj_src_www_url}/blob/main
|
|
25
|
-
:this_proj_src_main_edit_url: {this_proj_src_www_url}/edit/main
|
|
26
28
|
:this_proj_src_git_uri: {docopslab_git_src_uri}/{this_proj_slug}.git
|
|
27
29
|
:this_proj_ruby_version: {docopslab_ruby_version}
|
|
28
30
|
// tag::env-settings[]
|
|
29
|
-
:
|
|
31
|
+
:docs_extn:
|
|
30
32
|
ifdef::env-github[]
|
|
31
|
-
:
|
|
33
|
+
:docs_extn: .adoc
|
|
32
34
|
:icons: font
|
|
33
35
|
:caution-caption: :fire:
|
|
34
36
|
:important-caption: :exclamation:
|
|
@@ -37,15 +39,19 @@ ifdef::env-github[]
|
|
|
37
39
|
:warning-caption: :warning:
|
|
38
40
|
endif::[]
|
|
39
41
|
// end::env-settings[]
|
|
42
|
+
// Settings likely to be overridden locally
|
|
43
|
+
:this_prod_slug: {this_proj_slug}
|
|
44
|
+
:this_prod_name: {this_proj_name}
|
|
45
|
+
:this_prod_src_www_url: {this_proj_src_www_url}
|
|
40
46
|
// end::universal-settings[]
|
|
41
|
-
:
|
|
47
|
+
:releasehx-demo_repo_www_url: {docopslab_src_www_url}/releasehx-demo
|
|
42
48
|
// tag::product-settings[]
|
|
43
49
|
:this_prod_slug: {this_proj_slug}
|
|
44
50
|
// tag::version-settings[]
|
|
45
51
|
:this_prod_vrsn_major: 0
|
|
46
52
|
:this_prod_vrsn_minor: 2
|
|
47
53
|
:this_prod_vrsn_majmin: {this_prod_vrsn_major}.{this_prod_vrsn_minor}
|
|
48
|
-
:this_prod_vrsn_patch:
|
|
54
|
+
:this_prod_vrsn_patch: 1
|
|
49
55
|
:this_prod_vrsn: {this_prod_vrsn_majmin}.{this_prod_vrsn_patch}
|
|
50
56
|
:next_prod_vrsn: 0.3.0
|
|
51
57
|
:next_prod_vrsn_majmin: 0.3
|
|
@@ -79,6 +85,8 @@ endif::[]
|
|
|
79
85
|
:enrich_file_types: HTML, PDF
|
|
80
86
|
:enrich_extensions: .html, .pdf
|
|
81
87
|
// end::product-settings[]
|
|
88
|
+
:asciisourcerer_www_url: {docopslab_src_www_url}/asciisourcerer
|
|
89
|
+
:schemagraphy_www_url: {docopslab_src_www_url}/schemagraphy
|
|
82
90
|
// end::global-settings[]
|
|
83
91
|
:toc: macro
|
|
84
92
|
:toclevels: 3
|
|
@@ -459,7 +467,7 @@ Then have it consult `releasehx://config/sample` as a table of contents before u
|
|
|
459
467
|
[[demo-setup]]
|
|
460
468
|
==== Demo Repo Setup
|
|
461
469
|
|
|
462
|
-
If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{
|
|
470
|
+
If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx-demo_repo_www_url}[DocOps/releasehx-demo]` repository as instructed in this section.
|
|
463
471
|
|
|
464
472
|
Alternately, skip to <<issue-sources>> to begin configuring your own project/environment.
|
|
465
473
|
|
|
@@ -630,7 +638,7 @@ Out of the box, there are two issues in the `jira-customfield-note-1.1.0.json` f
|
|
|
630
638
|
[.prompt.testable]
|
|
631
639
|
rhx 1.1.0 --config configs/jira-customfield.yml --api-data _payloads/jira-customfield-note-1.1.0.json --html --pdf
|
|
632
640
|
|
|
633
|
-
For more on the demo repo, visit its README at {
|
|
641
|
+
For more on the demo repo, visit its README at {releasehx-demo_repo_www_url}.
|
|
634
642
|
|
|
635
643
|
[[custom-configuration]]
|
|
636
644
|
==== Custom Configuration
|
|
@@ -921,7 +929,7 @@ For *custom field-based* release notes, the entire ADF content in the custom fie
|
|
|
921
929
|
No heading extraction is performed.
|
|
922
930
|
--
|
|
923
931
|
|
|
924
|
-
See link:{
|
|
932
|
+
See link:{releasehx-demo_repo_www_url}[releasehx-demo] repository for working examples with ADF payloads and configurations.
|
|
925
933
|
|
|
926
934
|
[[github-issues]]
|
|
927
935
|
==== GitHub Issues
|
|
@@ -1348,7 +1356,7 @@ When rendered, the HTML will include:
|
|
|
1348
1356
|
}
|
|
1349
1357
|
----
|
|
1350
1358
|
|
|
1351
|
-
For examples of dark theme in action, see the demo configurations in the {
|
|
1359
|
+
For examples of dark theme in action, see the demo configurations in the {releasehx-demo_repo_www_url}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
|
|
1352
1360
|
|
|
1353
1361
|
[[html-wrapper-control]]
|
|
1354
1362
|
===== HTML Wrapper Control
|
|
@@ -1952,7 +1960,7 @@ ReleaseHx comes with a complete default configuration file as well as a series o
|
|
|
1952
1960
|
|
|
1953
1961
|
The complete link:{default-config_www}[default config file] displays default values with commented descriptions of all available properties.
|
|
1954
1962
|
|
|
1955
|
-
The various sample configurations stored in the link:{
|
|
1963
|
+
The various sample configurations stored in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
|
|
1956
1964
|
|
|
1957
1965
|
[[env-vars]]
|
|
1958
1966
|
=== Environment Variables in ReleaseHx
|
|
@@ -2099,7 +2107,7 @@ The extracted value is available in the `path` local variable.
|
|
|
2099
2107
|
==== Sandboxed Ruby Transformations
|
|
2100
2108
|
|
|
2101
2109
|
The `ruby` key provides a powerful way to perform complex data transformations using a secure, sandboxed Ruby environment.
|
|
2102
|
-
This sandbox is powered by the `SchemaGraphy::SafeTransform` class, which ensures that only an explicit allowlist of safe methods and language features can be used.
|
|
2110
|
+
This sandbox is powered by the `SchemaGraphy::SafeTransform` class (from link:{schemagraphy_www_url}[SchemaGraphy gem]), which ensures that only an explicit allowlist of safe methods and language features can be used.
|
|
2103
2111
|
|
|
2104
2112
|
[[sandboxed-ruby-context]]
|
|
2105
2113
|
===== Execution Context
|
|
@@ -2186,7 +2194,7 @@ For example, if your GitHub issues use labels like:
|
|
|
2186
2194
|
Your ReleaseHx application will need an alternate mapping because the default GitHub mapping expects native `issue_type.name` fields.
|
|
2187
2195
|
|
|
2188
2196
|
An example alternate mapping for label-based GitHub type extraction can be found at:
|
|
2189
|
-
link:{
|
|
2197
|
+
link:{releasehx-demo_repo_www_url}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
|
|
2190
2198
|
|
|
2191
2199
|
This mapping includes Ruby logic to:
|
|
2192
2200
|
|
|
@@ -2238,7 +2246,7 @@ To use an alternate mapping:
|
|
|
2238
2246
|
|
|
2239
2247
|
. Test with representative payload data to ensure proper extraction
|
|
2240
2248
|
|
|
2241
|
-
The link:{
|
|
2249
|
+
The link:{releasehx-demo_repo_www_url}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
|
|
2242
2250
|
|
|
2243
2251
|
[NOTE]
|
|
2244
2252
|
ReleaseHx by default looks for a mapping file that matches the name of the API you are using.
|
|
@@ -2252,9 +2260,8 @@ The custom mappings path can be set using <<conf_ppty_paths_mappings_dir>> setti
|
|
|
2252
2260
|
|
|
2253
2261
|
ReleaseHx generally uses enhanced *Liquid 4 templates* to generate new files and content from RHYML and configuration data.
|
|
2254
2262
|
|
|
2255
|
-
Notably, it employs *link:https://jekyllrb.com/docs/liquid/[Jekyll's extended tags and filters]*, as well as some additional tag and several filters provided by
|
|
2256
|
-
|
|
2257
|
-
Here we document the custom filters added by the Sourcerer module and ReleaseHx itself.
|
|
2263
|
+
Notably, it employs *link:https://jekyllrb.com/docs/liquid/[Jekyll's extended tags and filters]*, as well as some additional tag and several filters provided by AsciiSourcerer.
|
|
2264
|
+
Here we document the custom filters added by the link:{asciisourcerer_www_url}[AsciiSourcerer gem] and ReleaseHx itself.
|
|
2258
2265
|
|
|
2259
2266
|
[[advanced-template-configuration]]
|
|
2260
2267
|
==== Advanced Template Configuration
|
|
@@ -2275,7 +2282,7 @@ Using the ReleaseHx config file, you can manipulate:
|
|
|
2275
2282
|
|
|
2276
2283
|
Most of this can be manipulated using the following sections: <<conf_ppty_history>>, <<conf_ppty_changelog>>, <<conf_ppty_notes>>, <<conf_ppty_links>>, as well as within change-metadata config blocks, where you can alter labels, icons, and such: <<conf_ppty_types>>, <<conf_ppty_parts>>, <<conf_ppty_tags>>.
|
|
2277
2284
|
|
|
2278
|
-
The various sample configurations found in the link:{
|
|
2285
|
+
The various sample configurations found in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] illustrate many of these options.
|
|
2279
2286
|
|
|
2280
2287
|
A complete link:{default-config_www}[sample config] displays default values and commented descriptions of all available properties.
|
|
2281
2288
|
|
|
@@ -2487,18 +2494,6 @@ Solution::
|
|
|
2487
2494
|
. Review Jekyll's Liquid documentation for supported tags and filters
|
|
2488
2495
|
|
|
2489
2496
|
|
|
2490
|
-
ifdef::site-gen-jekyll[]
|
|
2491
|
-
[[apis]]
|
|
2492
|
-
== APIs
|
|
2493
|
-
|
|
2494
|
-
Documntation for th ReleaseHx, SchemaGraphy, and Sourcerer APIs is available at:
|
|
2495
|
-
|
|
2496
|
-
* link:/api/releasehx[ReleaseHx API]
|
|
2497
|
-
* link:/api/schemagraphy[SchemaGraphy API]
|
|
2498
|
-
* link:/api/sourcerer[Sourcerer API]
|
|
2499
|
-
|
|
2500
|
-
endif::[]
|
|
2501
|
-
|
|
2502
2497
|
|
|
2503
2498
|
ifndef::site-gen-jekyll[]
|
|
2504
2499
|
// tag::releasehx-api[]
|
|
@@ -2561,7 +2556,7 @@ To work with ReleaseHx source, clone both repositories side by side for the most
|
|
|
2561
2556
|
+
|
|
2562
2557
|
[.prompt]
|
|
2563
2558
|
git clone {this_proj_src_www_url}
|
|
2564
|
-
git clone {
|
|
2559
|
+
git clone {releasehx-demo_repo_www_url}
|
|
2565
2560
|
+
|
|
2566
2561
|
This will give you `<source_dir>/releasehx` and `<source_dir>/releasehx-demo`, side by side.
|
|
2567
2562
|
|
|
@@ -2681,7 +2676,7 @@ Additionally, the help screen itself is sourced here in this README and included
|
|
|
2681
2676
|
The application help and manpage documentation is also sourced in this way.
|
|
2682
2677
|
(Use `rhx --help` or `rhx --man` to reveal.)
|
|
2683
2678
|
|
|
2684
|
-
This capability is provided by the
|
|
2679
|
+
This capability is provided by the link:{asciisourcerer_www_url}[AsciiSourcerer gem].
|
|
2685
2680
|
|
|
2686
2681
|
[[common-dev-tasks]]
|
|
2687
2682
|
=== Common Dev Tasks
|
|
@@ -2879,71 +2874,54 @@ Dockerfile # Docker image definition
|
|
|
2879
2874
|
build/ # Untracked, ephemeral path for generated assets
|
|
2880
2875
|
docs/ # Documentation build source (Jekyll, YARD)
|
|
2881
2876
|
.config/ # Config files for various tools
|
|
2882
|
-
├── sourcerer.yml
|
|
2883
|
-
└── docopslab-dev.yml
|
|
2877
|
+
├── sourcerer.yml # Sourcerer prebuild manifest
|
|
2878
|
+
└── docopslab-dev.yml # DocOpsLab Devtool config
|
|
2884
2879
|
specs/
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2880
|
+
├── data/ # Schema/definition files
|
|
2881
|
+
│ ├── config-def.yml # Configuration definition
|
|
2882
|
+
│ ├── rhyml-schema.yaml # RHYML schema definition
|
|
2883
|
+
│ ├── api-client-schema.yaml # API client schema definition
|
|
2884
|
+
│ ├── rhyml-mapping-schema.yaml # API -> RHYML schema definition
|
|
2885
|
+
│ └── mcp-manifest.yml # Asset registry for MCP server
|
|
2886
|
+
└── tests/
|
|
2887
|
+
├── README.adoc
|
|
2888
|
+
├── rspec/ # RSpec tests
|
|
2889
|
+
└── configs/ # Test configs
|
|
2895
2890
|
lib/
|
|
2896
|
-
├── releasehx.rb # Application core
|
|
2897
|
-
├── schemagraphy.rb # Special YAML handling
|
|
2898
|
-
├── sourcerer.rb # Single-sourcing tool
|
|
2899
2891
|
├── docopslab/
|
|
2900
2892
|
│ ├── mcp/ # MCP assets and packaging
|
|
2901
2893
|
│ └── mcp.rb # DocOpsLab MCP entrypoint
|
|
2902
|
-
├── releasehx
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
│
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
│
|
|
2918
|
-
│
|
|
2919
|
-
|
|
2920
|
-
│
|
|
2921
|
-
│
|
|
2922
|
-
│
|
|
2923
|
-
│
|
|
2924
|
-
│
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
│ ├── cfgyml/ # CFGYML (OpenCFGY) parsing
|
|
2934
|
-
│ ├── attribute_resolver.rb # Resolves {attribute_name} placeholders
|
|
2935
|
-
│ ├── loader.rb # `SchemaGraphy::Loader`
|
|
2936
|
-
│ ├── regexp_utils.rb # Regular expression utilities
|
|
2937
|
-
│ ├── schema_utils.rb # `get_schema_defaults`, etc
|
|
2938
|
-
│ ├── tag_utils.rb # `detag`, `tag_of`, etc
|
|
2939
|
-
│ ├── templates/ # CFGYML documentation templates
|
|
2940
|
-
│ │ └── cfgyml/ # Config reference templates (+ sample gen)
|
|
2941
|
-
│ └── templating.rb # Defines handling of parsable YAML nodes
|
|
2942
|
-
└── sourcerer/
|
|
2943
|
-
├── builder.rb # Writes snippets to files at build time
|
|
2944
|
-
├── jekyll.rb # Jekyll and Liquid handling for Sourcerer
|
|
2945
|
-
├── plaintext_converter.rb # Pre-processes AsciiDoc source files
|
|
2946
|
-
└── templating.rb # Liquid/ERB template handling
|
|
2894
|
+
├── releasehx.rb # Application core
|
|
2895
|
+
└── releasehx/
|
|
2896
|
+
├── cli.rb # Thor CLI definition
|
|
2897
|
+
├── configuration.rb # CFGYML parsing
|
|
2898
|
+
├── generated.rb # Generated by prebuild (packaged)
|
|
2899
|
+
├── helpers.rb # Utility helpers
|
|
2900
|
+
├── mcp/ # MCP server assets
|
|
2901
|
+
├── mcp.rb # MCP server entrypoint
|
|
2902
|
+
├── README.adoc # Internal developer notes
|
|
2903
|
+
├── rhyml.rb # RHYML entrypoint
|
|
2904
|
+
├── sgyml/ # SGYML helpers
|
|
2905
|
+
│ └── helpers.rb # module SgymlHelpers
|
|
2906
|
+
├── transforms/ # Input transformations (ADF, etc)
|
|
2907
|
+
├── version.rb # Version constant
|
|
2908
|
+
├── rest/ # module REST
|
|
2909
|
+
│ ├── yaml_client.rb # ReleaseHx::REST::YamlClient class
|
|
2910
|
+
│ └── clients/ # YAML files for API clients (jira.yaml, etc)
|
|
2911
|
+
├── ops/ # Main ReleaseHx methods
|
|
2912
|
+
│ ├── check_ops.rb # ReleaseHx::CheckOps module
|
|
2913
|
+
│ ├── draft_ops.rb # ReleaseHx::DraftOps module
|
|
2914
|
+
│ ├── enrich_ops.rb # ReleaseHx::EnrichOps module
|
|
2915
|
+
│ ├── template_ops.rb # ReleaseHx::TemplateOps module
|
|
2916
|
+
│ └── write_ops.rb # ReleaseHx::WriteOps module
|
|
2917
|
+
└── rhyml/ # module RHYML
|
|
2918
|
+
├── adapter.rb # maps from JSON using a mapping file
|
|
2919
|
+
├── change.rb # Change class
|
|
2920
|
+
├── liquid.rb # Liquid filters for RHYML
|
|
2921
|
+
├── release.rb # Release class
|
|
2922
|
+
├── loaders.rb # loads RHYML YAML or JSON from disk
|
|
2923
|
+
├── mappings/ # API -> RHYML mappings
|
|
2924
|
+
└── templates/ # RHYML output templates
|
|
2947
2925
|
----
|
|
2948
2926
|
// end::ai-prompt[]
|
|
2949
2927
|
|
|
@@ -2957,200 +2935,6 @@ For now it's easier to test inside the one gem that is making immediate use of t
|
|
|
2957
2935
|
|
|
2958
2936
|
If the MVP pans out (which is uncertain given how weak MCP tech is and how frustrating it was to get it working with various clients), I will upstream it for use in any Ruby projects.
|
|
2959
2937
|
|
|
2960
|
-
[[sourcerer]]
|
|
2961
|
-
=== Sourcerer
|
|
2962
|
-
// tag::sourcerer[]
|
|
2963
|
-
This gem introduces a module called Sourcerer, by which AsciiDoc files can be parsed and their contents harvested for use in the application build.
|
|
2964
|
-
The module also handles Liquid template processing with enhanced attribute resolution capabilities.
|
|
2965
|
-
|
|
2966
|
-
[NOTE]
|
|
2967
|
-
Sourcerer is intended to be spun off as its own gem once it successfully proves the concept in this gem.
|
|
2968
|
-
It will probably be called _AsciiSourcerer_ and may replace an older and unmaintained utility of mine called LiquiDoc.
|
|
2969
|
-
|
|
2970
|
-
It is invoked in the Rakefile, establishing global namespaces:
|
|
2971
|
-
|
|
2972
|
-
* `ReleaseHx::ATTRIBUTES[:globals]` (derived from this `README.adoc` file)
|
|
2973
|
-
* `ReleaseHx.read_built_snippet(:<name>)` (such as `:helpscreen`)
|
|
2974
|
-
|
|
2975
|
-
The Sourcerer module also generates files like `build/docs/manpage.adoc`, which generates the formatted terminal manual, using content from `build/docs/config-reference.adoc` and this README (`tags="cli_options"`, for instance).
|
|
2976
|
-
|
|
2977
|
-
It also generates an AsciiDoc-formatted configuration reference, a machine-readable JSON reference, and a sample config using the `specs/data/config-def.yml` file.
|
|
2978
|
-
The Sourcerer system now supports *attribute resolution* from AsciiDoc source files, enabling templates to access README attributes during rendering, ensuring configuration documentation reflects actual default values.
|
|
2979
|
-
|
|
2980
|
-
Sourcerer also performs basic testing of select commands in the ASciiDoc file that have been assigned a `testable` role.
|
|
2981
|
-
|
|
2982
|
-
This is mostly just showing off what Sourcerer can do, and hopefully setting into habit some best practices for my more complicated apps.
|
|
2983
|
-
|
|
2984
|
-
Sourcerer is also where integration with Jekyll's extensions of Liquid occurs, bringing ReleaseHx's templating powers closely in line with how Jekyll's work, as described in <<custom-liquid>>.
|
|
2985
|
-
// end::sourcerer[]
|
|
2986
|
-
|
|
2987
|
-
[[schemagraphy]]
|
|
2988
|
-
=== SchemaGraphy
|
|
2989
|
-
|
|
2990
|
-
This gem also introduces a module that derives from an unreleased gem I have been working on for some years: SchemaGraphy.
|
|
2991
|
-
|
|
2992
|
-
SchemaGraphy is basically an extension of YAML, enabling Ruby developers and end users more broadly to powerfully interpret and schematize YAML-based data.
|
|
2993
|
-
Most relevant to our case, as enabled by the `SchemaGraphy` module in this gem, is its handling of *YAML custom tags*, *attribute resolution*, and what I am calling *"`templated fields`"*, where the value of a YAML node is a String that is intended to be further processed by a templating engine like Liquid or ERB, either immediately upon ingest or later in the runtime stack, when it can be mixed with additional data.
|
|
2994
|
-
|
|
2995
|
-
SchemaGraphy facilitates handling these and other quirky power-ups we use with our fully valid YAML files, so low-code users can pass some dynamism along in their YAML configs and so forth.
|
|
2996
|
-
|
|
2997
|
-
[[attribute-resolution]]
|
|
2998
|
-
==== Attribute Resolution
|
|
2999
|
-
|
|
3000
|
-
SchemaGraphy provides *attribute resolution* capabilities through the `AttributeResolver` component.
|
|
3001
|
-
This enables YAML files to reference external attributes using placeholder syntax like `{attribute_name}`.
|
|
3002
|
-
|
|
3003
|
-
When loading YAML with `.load_yaml_with_attributes(file_path, attributes)`, SchemaGraphy:
|
|
3004
|
-
|
|
3005
|
-
. Loads the YAML file normally
|
|
3006
|
-
. Searches for `{attribute_name}` patterns in String values
|
|
3007
|
-
. Replaces them with corresponding values from the provided attributes Hash
|
|
3008
|
-
. Returns the resolved YAML data structure
|
|
3009
|
-
|
|
3010
|
-
This is used extensively in ReleaseHx's configuration system to enable single-sourcing of defaults from README attributes.
|
|
3011
|
-
|
|
3012
|
-
[[custom-yaml-tag-handling]]
|
|
3013
|
-
==== Custom YAML Tag Handling
|
|
3014
|
-
|
|
3015
|
-
To enable end users to pass meta-instructions along with their data, wherever it will make sense to do so, SchemaGraphy offers a straightforward handling system.
|
|
3016
|
-
|
|
3017
|
-
Wherever you parse YAML-formatted data using `.load_yaml_with_tags`, custom-tagged Scalar nodes are converted into Maps like so:
|
|
3018
|
-
|
|
3019
|
-
.User's YAML
|
|
3020
|
-
[source,yaml]
|
|
3021
|
-
----
|
|
3022
|
-
some_property: !liquid "{{ some_value }}"
|
|
3023
|
-
----
|
|
3024
|
-
|
|
3025
|
-
.Converted data TagMap
|
|
3026
|
-
[source,yaml]
|
|
3027
|
-
----
|
|
3028
|
-
some_property:
|
|
3029
|
-
__tag__: liquid
|
|
3030
|
-
value: "{{ some_value }}"
|
|
3031
|
-
----
|
|
3032
|
-
|
|
3033
|
-
Developers may therefore conditionally interpret ingested data based on user-defined classifications, wherever the developer supports such things.
|
|
3034
|
-
|
|
3035
|
-
Whether a Scalar has been transformed into a TagMap, you can resolve it using:
|
|
3036
|
-
|
|
3037
|
-
[source,ruby]
|
|
3038
|
-
----
|
|
3039
|
-
SchemaGraphy::TagUtils.detag(some_property)
|
|
3040
|
-
# Or, with a local alias
|
|
3041
|
-
detag = ->(val) { SchemaGraphy::TagUtils.detag(val) }
|
|
3042
|
-
detag(some_property)
|
|
3043
|
-
----
|
|
3044
|
-
|
|
3045
|
-
When tags are used this way, to convey a syntax/engine for processing a template or other dynamic content, SchemaGraphy can even help us handle the content in the manner designated by the tag.
|
|
3046
|
-
This will come up again in <<templated-fields,the next section>>.
|
|
3047
|
-
|
|
3048
|
-
[NOTE]
|
|
3049
|
-
This capability is only available on Scalar node values.
|
|
3050
|
-
For now, tags applied to other compound node types (Arrays/sequences, Maps/mappings) will be ignored by SchemaGraphy interpreters.
|
|
3051
|
-
|
|
3052
|
-
[WARNING]
|
|
3053
|
-
When you use `load_yaml_with_tags`, you will encounter errors downstream if a user places a tag on a node where you do not expect it.
|
|
3054
|
-
|
|
3055
|
-
[[templated-fields]]
|
|
3056
|
-
==== Templated Property Values in YAML
|
|
3057
|
-
|
|
3058
|
-
We are calling these "`templated fields`" to specify that we are talking about enabling end users to use Liquid, ERB, or eventually other templating syntaxes in YAML node values.
|
|
3059
|
-
|
|
3060
|
-
In so doing, developer are able to designate that the value of certain YAML nodes should be handled by a templating engine, as well as when and how.
|
|
3061
|
-
|
|
3062
|
-
We'll look at how this is done in <<templated-fields-handling>>.
|
|
3063
|
-
For now, the point is that sometimes files like `specs/data/config-def.yml` or an API-mapping file call for a little more runtime dynamism than a low-code solution like pure YAML can support.
|
|
3064
|
-
|
|
3065
|
-
Therefore, when the value of a user-configurable or environment-deterimined "`setting`" is a string that must be generated from data defined outside that field, we parse and render the template at runtime, using data from the environment or elsewhere.
|
|
3066
|
-
For now, it is up to our calling code to provide the appropriate variables to the template depending on the context.
|
|
3067
|
-
|
|
3068
|
-
[[config-def]]
|
|
3069
|
-
==== Configuration Definition (CFGYML)
|
|
3070
|
-
|
|
3071
|
-
All user-configurable settings have a definition, if not also a default value.
|
|
3072
|
-
For single-sourcing purposes, these are defined in a YAML format called CFGYML -- a configuration-file modeling language.
|
|
3073
|
-
|
|
3074
|
-
The file is at `{gem_config_definition_path}`.
|
|
3075
|
-
It is used to establish the literal default settings carried by the application, and also to document those settings for the user.
|
|
3076
|
-
|
|
3077
|
-
This practice lets developers give end users extremely detailed configurations, always well documented.
|
|
3078
|
-
|
|
3079
|
-
[[attribute-resolution-in-cfgyml]]
|
|
3080
|
-
===== Attribute Resolution in CFGYML
|
|
3081
|
-
|
|
3082
|
-
CFGYML supports *attribute resolution* from AsciiDoc files (like this README) using placeholder syntax.
|
|
3083
|
-
Default values can reference README attributes using `{attribute_name}` syntax:
|
|
3084
|
-
|
|
3085
|
-
[source,yaml]
|
|
3086
|
-
----
|
|
3087
|
-
properties:
|
|
3088
|
-
$meta:
|
|
3089
|
-
properties:
|
|
3090
|
-
markup:
|
|
3091
|
-
dflt: "{default_markup}" # Resolved from README.adoc :default_markup: attribute
|
|
3092
|
-
----
|
|
3093
|
-
|
|
3094
|
-
This enables single-sourcing of configuration defaults from README attributes, ensuring that documentation and defaults stay synchronized.
|
|
3095
|
-
|
|
3096
|
-
[[cfgyml-schema-structure]]
|
|
3097
|
-
===== CFGYML Schema Structure
|
|
3098
|
-
|
|
3099
|
-
The basic schema is somewhat straightforward.
|
|
3100
|
-
Essentially, you're nesting Map objects within a YAML key `properties`, and each property (setting) of the defined config file can be described and constrained.
|
|
3101
|
-
|
|
3102
|
-
Each setting can have a type, description (`desc`), default (`dflt`), and templated-field instructions (`templating`).
|
|
3103
|
-
If the setting is itself a of type `Map` (YAML "`mapping`", JSON "`object`"), its own nested parameters can be established with a `properties:` block.
|
|
3104
|
-
|
|
3105
|
-
For now, you can designate the type, which you will have to enforce in your code, as well as a default value.
|
|
3106
|
-
|
|
3107
|
-
[[sgyml-schemas]]
|
|
3108
|
-
==== SGYML Schemas
|
|
3109
|
-
|
|
3110
|
-
Similar to but more complicated than CFGYML definition files are SchemaGraphy schema files.
|
|
3111
|
-
This is a partially specified, partially developed, and as-yet-incomplete syntax for designating and constraining YAML documents.
|
|
3112
|
-
|
|
3113
|
-
ReleaseHx at this time makes active use of only minimal aspects of these schemas, all of which are contained in the `specs/` directory at the root of the gem source.
|
|
3114
|
-
|
|
3115
|
-
Each of the YAML formats used by ReleaseHx has its own schema in the repo.
|
|
3116
|
-
The cfgyml-schema.yaml file will eventually be spun off, but the `specs/data/rhyml-schema.yaml` and `specs/data/rhyml-mapping-schema.yaml` files will stay here, defining valid formats for the types of files they apply to.
|
|
3117
|
-
|
|
3118
|
-
Since SchemaGraphy itself is still unreleased, CFGYML as introduced in this gem offers only a subset of what it will enable down the road.
|
|
3119
|
-
|
|
3120
|
-
Once SchemaGraphy is generally available, this gem will call it as a dependency.
|
|
3121
|
-
At that point, a file like `specs/data/config-def.yml` (CFGYML) will be able to impose a more detailed `$schema` for any property.
|
|
3122
|
-
|
|
3123
|
-
[[templated-fields-handling]]
|
|
3124
|
-
==== Dynamic Templated-field Handling
|
|
3125
|
-
|
|
3126
|
-
The most powerful function of SchemaGraphy schemas that is now available in ReleaseHx is the ability to instruct how templated fields should be processed at different stages, and also to parse and render them as needed.
|
|
3127
|
-
|
|
3128
|
-
Templated-field handling can be established between a combination of (1) CFGYML definition files or SGYML schema files and (2) configuration files to be applied at runtime.
|
|
3129
|
-
|
|
3130
|
-
Developers can designate a given property to be `type: Template` in a schema or definition.
|
|
3131
|
-
This "`typing`" can be a trigger for downstream parsing/rendering of the template.
|
|
3132
|
-
|
|
3133
|
-
[NOTE]
|
|
3134
|
-
Liquid uses these two stages.
|
|
3135
|
-
The _parse_ operation compiles a template into a `Liquid::Template` object.
|
|
3136
|
-
The _render_ operation applies a dataset to the loaded template, generating a String with Liquid tags resolved.
|
|
3137
|
-
|
|
3138
|
-
[[nyi]]
|
|
3139
|
-
==== Not Yet Implemented
|
|
3140
|
-
|
|
3141
|
-
Most aspects of SchemaGraphy/SGYML are not yet available in ReleaseHx, but some are worth pointing out.
|
|
3142
|
-
|
|
3143
|
-
data types::
|
|
3144
|
-
As of now, the `type` node of any property in `specs/data/config-def.yml` is not particularly functional.
|
|
3145
|
-
I do have a whole table of "`data types`" in SGYML, most of which are extremely self-explanatory and drawn from fairly platonic, cross-language terms.
|
|
3146
|
-
+
|
|
3147
|
-
However, these are entirely unenforced in ReleaseHx -- for now, data still has to be type checked explicitly in the Ruby code, and user configs are not validated against any kind of typing system.
|
|
3148
|
-
|
|
3149
|
-
schema docs::
|
|
3150
|
-
The schema files do not yet generate complete reference docs for the subject files that they govern.
|
|
3151
|
-
So for instance, you'll have to read files like `specs/data/rhyml-schema.yaml` and `specs/data/rhyml-mapping-schema.yaml` directly to understand the format of RHYML files and how they are mapped to REST response payloads.
|
|
3152
|
-
// end::schemagraphy[]
|
|
3153
|
-
|
|
3154
2938
|
[[docs-deployment]]
|
|
3155
2939
|
=== Documentation Deployment
|
|
3156
2940
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
= ReleaseHx Release Procedure
|
|
2
|
+
include::../README.adoc[tags="global-settings"]
|
|
2
3
|
|
|
3
4
|
This document outlines the step-by-step procedure for releasing a new version of ReleaseHx.
|
|
4
5
|
|
|
@@ -10,7 +11,7 @@ It covers all stages from pre-release checks to post-release verification.
|
|
|
10
11
|
|
|
11
12
|
- [ ] All changes merged to `release/0.x` branch
|
|
12
13
|
- [ ] Version numbers updated in README.adoc attributes (`:this_prod_vrsn_major:` through `:next_prod_vrsn_majmin:`)
|
|
13
|
-
- [ ] Release notes prepared in `docs/
|
|
14
|
+
- [ ] Release notes prepared in `docs/_releases/0.x.y.adoc`
|
|
14
15
|
- [ ] Clean working tree on `release/0.x`
|
|
15
16
|
- [ ] RubyGems credentials configured (`~/.gem/credentials`)
|
|
16
17
|
- [ ] Docker Hub credentials configured (`docker login`)
|
|
@@ -123,7 +124,7 @@ Confirm Release Notes::
|
|
|
123
124
|
[source,bash]
|
|
124
125
|
----
|
|
125
126
|
# Verify release notes file exists
|
|
126
|
-
ls -lh docs/
|
|
127
|
+
ls -lh docs/_releases/0.x.y.adoc
|
|
127
128
|
----
|
|
128
129
|
|
|
129
130
|
[[stage-build-artifacts]]
|
|
@@ -276,6 +277,11 @@ gh release create v0.x.y pkg/releasehx-0.x.y.gem \
|
|
|
276
277
|
--notes "See release notes at https://releasehx.docopslab.org/docs/releases/"
|
|
277
278
|
----
|
|
278
279
|
|
|
280
|
+
[[stage-demo-repo-release]]
|
|
281
|
+
=== Stage {counter:stage}: Release releasehx-demo
|
|
282
|
+
|
|
283
|
+
Follow the release process documented in the {releasehx-demo_repo_www_url}[releasehx-demo] repo's `README.adoc`.
|
|
284
|
+
|
|
279
285
|
[[stage-release-verification]]
|
|
280
286
|
=== Stage {counter:stage}: Post-Release Verification
|
|
281
287
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<section id="preamble" aria-label="Preamble"><p>This document outlines the step-by-step procedure for releasing a new version of ReleaseHx.</p>
|
|
4
4
|
<p>It covers all stages from pre-release checks to post-release verification.</p></section>
|
|
5
|
-
<section class="doc-section level-1"><h2 id="prerequisites">Prerequisites</h2><div class="ulist"><ul class="task-list"><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> All changes merged to <code>release/0.x</code> branch</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Version numbers updated in README.adoc attributes (<code>:this_prod_vrsn_major:</code> through <code>:next_prod_vrsn_majmin:</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Release notes prepared in <code>docs/
|
|
5
|
+
<section class="doc-section level-1"><h2 id="prerequisites">Prerequisites</h2><div class="ulist"><ul class="task-list"><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> All changes merged to <code>release/0.x</code> branch</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Version numbers updated in README.adoc attributes (<code>:this_prod_vrsn_major:</code> through <code>:next_prod_vrsn_majmin:</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Release notes prepared in <code>docs/_releases/0.x.y.adoc</code></li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Clean working tree on <code>release/0.x</code></li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> RubyGems credentials configured (<code>~/.gem/credentials</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Docker Hub credentials configured (<code>docker login</code>)</li></ul></div></section>
|
|
6
6
|
<section class="doc-section level-1"><h2 id="release-stages">Release Stages</h2><section class="doc-section level-2"><h3 id="stage-pre-flight-checks">Stage 1: Pre-flight Checks</h3><div class="dlist"><dl><dt>Verify CI/CD Setup</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check workflows exist
|
|
7
7
|
ls .github/workflows/
|
|
8
8
|
# Should see: ci-cd.yml, gh-pages.yml, docs-qa.yml</code></pre></div></dd><dt>Check Current State</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Verify branch and clean status
|
|
@@ -34,7 +34,7 @@ grep ":this_prod_vrsn" README.adoc
|
|
|
34
34
|
grep "VERSION" lib/releasehx/version.rb</code></pre></div></dd><dt>Verify Gemfile</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Ensure no local path dependencies
|
|
35
35
|
grep -E "path:|git:" Gemfile
|
|
36
36
|
# Should be empty</code></pre></div></dd><dt>Confirm Release Notes</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Verify release notes file exists
|
|
37
|
-
ls -lh docs/
|
|
37
|
+
ls -lh docs/_releases/0.x.y.adoc</code></pre></div></dd></dl></div></section>
|
|
38
38
|
<section class="doc-section level-2"><h3 id="stage-build-artifacts">Stage 2: Build Artifacts</h3><div class="dlist"><dl><dt>Build Gem Package</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">bundle exec rake build:gem</code></pre></div></dd><dt>Verify Gem Package</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">ls -lh pkg/releasehx-*.gem
|
|
39
39
|
# Confirm version number is correct</code></pre></div></dd></dl></div></section>
|
|
40
40
|
<section class="doc-section level-2"><h3 id="stage-create-pull-request">Stage 3: Create Pull Request</h3><div class="dlist"><dl><dt>Push Release Branch</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">git push origin release/0.x</code></pre></div></dd><dt>Create Pull Request</dt><dd><ul><li>Via GitHub UI:
|
|
@@ -67,14 +67,15 @@ open https://hub.docker.com/r/docopslab/releasehx</code></pre></div></dd></dl></
|
|
|
67
67
|
See release notes at <code><a class="bare" href="https://releasehx.docopslab.org/docs/releases/">https://releasehx.docopslab.org/docs/releases/</a></code></li><li>Upload: <code>pkg/releasehx-0.x.y.gem</code></li><li>Click “Publish release”</li></ol></dd><dt>Via CLI (if permissions allow)</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">gh release create v0.x.y pkg/releasehx-0.x.y.gem \
|
|
68
68
|
--title "ReleaseHx 0.x.y" \
|
|
69
69
|
--notes "See release notes at https://releasehx.docopslab.org/docs/releases/"</code></pre></div></dd></dl></div></section>
|
|
70
|
-
<section class="doc-section level-2"><h3 id="stage-release
|
|
70
|
+
<section class="doc-section level-2"><h3 id="stage-demo-repo-release">Stage 10: Release releasehx-demo</h3><p>Follow the release process documented in the <a href="https://github.com/DocOps/releasehx-demo">releasehx-demo</a> repo’s <code>README.adoc</code>.</p></section>
|
|
71
|
+
<section class="doc-section level-2"><h3 id="stage-release-verification">Stage 11: Post-Release Verification</h3><div class="dlist"><dl><dt>Test Gem Installation</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">gem install releasehx --version 0.x.y
|
|
71
72
|
rhx --version
|
|
72
73
|
# Should show: 0.x.y</code></pre></div></dd><dt>Test Docker Image</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">docker pull docopslab/releasehx:0.x.y
|
|
73
74
|
docker run --rm docopslab/releasehx:0.x.y rhx --version
|
|
74
75
|
# Should show: 0.x.y</code></pre></div></dd><dt>Verify Documentation</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check that docs are live
|
|
75
76
|
open https://releasehx.docopslab.org/docs/releases/
|
|
76
77
|
# Should show 0.x.y release notes</code></pre></div></dd></dl></div></section>
|
|
77
|
-
<section class="doc-section level-2"><h3 id="stage-post-release-cleanup-optional">Stage
|
|
78
|
+
<section class="doc-section level-2"><h3 id="stage-post-release-cleanup-optional">Stage 12: Post-Release Cleanup (Optional)</h3><div class="dlist"><dl><dt>Update Version for Next Release</dt><dd>Edit <code>README.adoc</code> to increment patch version; commit on <code>release/0.x</code> branch</dd><dt>Notify Stakeholders</dt><dd>Post announcement in relevant channels; update downstream projects</dd></dl></div></section></section>
|
|
78
79
|
<section class="doc-section level-1"><h2 id="troubleshooting">Troubleshooting</h2><section class="doc-section level-2"><h3 id="docker-buildkit-issues">Docker BuildKit Issues</h3><p>If you encounter TLS certificate errors with buildx:</p>
|
|
79
80
|
<div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Remove stale builder
|
|
80
81
|
docker buildx rm releasehx-builder
|
data/build/docs/releasehx.1
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
.\" Title: releasehx
|
|
3
3
|
.\" Author: [see the "AUTHOR(S)" section]
|
|
4
4
|
.\" Generator: Asciidoctor 2.0.26
|
|
5
|
-
.\" Date: 2026-05-
|
|
5
|
+
.\" Date: 2026-05-27
|
|
6
6
|
.\" Manual: \ \&
|
|
7
7
|
.\" Source: \ \&
|
|
8
8
|
.\" Language: English
|
|
9
9
|
.\"
|
|
10
|
-
.TH "RELEASEHX" "1" "2026-05-
|
|
10
|
+
.TH "RELEASEHX" "1" "2026-05-27" "\ \&" "\ \&"
|
|
11
11
|
.ie \n(.g .ds Aq \(aq
|
|
12
12
|
.el .ds Aq '
|
|
13
13
|
.ss \n[.ss] 0
|
data/lib/releasehx/generated.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Auto-generated by Sourcerer::Builder
|
|
3
3
|
|
|
4
4
|
module ReleaseHx
|
|
5
|
-
ATTRIBUTES = {:globals=>{"attribute-undefined"=>"drop-line", "attribute-missing"=>"skip", "appendix-caption"=>"Appendix", "appendix-refsig"=>"Appendix", "caution-caption"=>"Caution", "chapter-refsig"=>"Chapter", "example-caption"=>"Example", "figure-caption"=>"Figure", "important-caption"=>"Important", "last-update-label"=>"Last updated", "note-caption"=>"Note", "part-refsig"=>"Part", "prewrap"=>"", "sectids"=>"", "section-refsig"=>"Section", "table-caption"=>"Table", "tip-caption"=>"Tip", "toc-placement"=>"macro", "toc-title"=>"Table of Contents", "untitled-label"=>"Untitled", "version-label"=>"Version", "warning-caption"=>"Warning", "notitle"=>"", "docfile"=>"/home/brian/Documents/work/releasehx/README.adoc", "docdir"=>"/home/brian/Documents/work/releasehx", "docfilesuffix"=>".adoc", "docname"=>"README", "embedded"=>"", "asciidoctor"=>"", "asciidoctor-version"=>"2.0.26", "safe-mode-name"=>"unsafe", "safe-mode-unsafe"=>"", "safe-mode-level"=>0, "max-include-depth"=>64, "user-home"=>"/home/brian", "doctype"=>"article", "htmlsyntax"=>"html", "backend-html5-doctype-article"=>"", "doctype-article"=>"", "backend-html5"=>"", "backend"=>"html5", "outfilesuffix"=>".html", "filetype"=>"html", "filetype-html"=>"", "basebackend-html-doctype-article"=>"", "basebackend-html"=>"", "basebackend"=>"html", "stylesdir"=>".", "iconsdir"=>"./images/icons", "localdate"=>"2026-05-
|
|
5
|
+
ATTRIBUTES = {:globals=>{"attribute-undefined"=>"drop-line", "attribute-missing"=>"skip", "appendix-caption"=>"Appendix", "appendix-refsig"=>"Appendix", "caution-caption"=>"Caution", "chapter-refsig"=>"Chapter", "example-caption"=>"Example", "figure-caption"=>"Figure", "important-caption"=>"Important", "last-update-label"=>"Last updated", "note-caption"=>"Note", "part-refsig"=>"Part", "prewrap"=>"", "sectids"=>"", "section-refsig"=>"Section", "table-caption"=>"Table", "tip-caption"=>"Tip", "toc-placement"=>"macro", "toc-title"=>"Table of Contents", "untitled-label"=>"Untitled", "version-label"=>"Version", "warning-caption"=>"Warning", "notitle"=>"", "docfile"=>"/home/brian/Documents/work/releasehx/README.adoc", "docdir"=>"/home/brian/Documents/work/releasehx", "docfilesuffix"=>".adoc", "docname"=>"README", "embedded"=>"", "asciidoctor"=>"", "asciidoctor-version"=>"2.0.26", "safe-mode-name"=>"unsafe", "safe-mode-unsafe"=>"", "safe-mode-level"=>0, "max-include-depth"=>64, "user-home"=>"/home/brian", "doctype"=>"article", "htmlsyntax"=>"html", "backend-html5-doctype-article"=>"", "doctype-article"=>"", "backend-html5"=>"", "backend"=>"html5", "outfilesuffix"=>".html", "filetype"=>"html", "filetype-html"=>"", "basebackend-html-doctype-article"=>"", "basebackend-html"=>"", "basebackend"=>"html", "stylesdir"=>".", "iconsdir"=>"./images/icons", "localdate"=>"2026-05-29", "localyear"=>"2026", "localtime"=>"01:39:22 -0400", "localdatetime"=>"2026-05-29 01:39:22 -0400", "docdate"=>"2026-05-29", "docyear"=>"2026", "doctime"=>"01:35:44 -0400", "docdatetime"=>"2026-05-29 01:35:44 -0400", "page-layout"=>"default", "page-permalink"=>"/docs/", "page-title"=>"ReleaseHx Docs", "page-nav_order"=>"1", "doctitle"=>"ReleaseHx", "this_proj_slug"=>"releasehx", "this_proj_name"=>"ReleaseHx", "docopslab_src_www_url"=>"https://github.com/DocOps", "docopslab_domain"=>"docopslab.org", "docopslab_www_url"=>"https://docopslab.org", "docopslab_io_www_url"=>"https://docopslab.github.io", "docopslab_ruby_version"=>"3.2.7", "docopslab_git_src_uri"=>"git@github.com:DocOps", "docopslab_src_raw_url"=>"https://raw.githubusercontent.com/DocOps", "this_proj_src_www_url"=>"https://github.com/DocOps/releasehx", "this_proj_src_raw_url"=>"https://raw.githubusercontent.com/DocOps/releasehx", "this_proj_src_main_raw_url"=>"https://raw.githubusercontent.com/DocOps/releasehx/main", "this_proj_src_main_files_url"=>"https://github.com/DocOps/releasehx/blob/main", "this_proj_src_git_uri"=>"git@github.com:DocOps/releasehx.git", "this_proj_ruby_version"=>"3.2.7", "docs_extn"=>"", "this_prod_slug"=>"releasehx", "this_prod_name"=>"ReleaseHx", "this_prod_src_www_url"=>"https://github.com/DocOps/releasehx", "releasehx-demo_repo_www_url"=>"https://github.com/DocOps/releasehx-demo", "this_prod_vrsn_major"=>"0", "this_prod_vrsn_minor"=>"2", "this_prod_vrsn_majmin"=>"0.2", "this_prod_vrsn_patch"=>"1", "this_prod_vrsn"=>"0.2.1", "next_prod_vrsn"=>"0.3.0", "next_prod_vrsn_majmin"=>"0.3", "tagline"=>"Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.", "description"=>"CLI utility and Ruby API for generating structured release notes and changelog documents from various issue-tracking platforms or YAML definitions into plaintext drafts (<strong>AsciiDoc</strong>, <strong>Markdown</strong>, <strong>YAML</strong>) and rich-text output (<strong>HTML</strong> and <strong>PDF</strong>).", "gem_config_definition_path"=>"./specs/data/config-def.yml", "app_default_config_path"=>"./.releasehx.yml", "docker_run_command"=>"docker run -it --rm --user $(id -u):$(id -g) -v $(pwd):/workdir docopslab/releasehx rhx", "default_markup"=>"markdown", "default_slug_type"=>"kebab", "default_tplt_lang"=>"liquid", "default_drafts_dir"=>"_drafts", "default_enrich_dir"=>"_publish", "default_output_dir"=>".", "default_payloads_dir"=>"_payloads", "default_templates_dir"=>"_templates", "default_mappings_dir"=>"_mappings", "default_api_clients_dir"=>"_apis", "default_cache_dir"=>".releasehx/cache", "default_api_cred_env"=>"RELEASEHX_API_CRED", "default_api_key_env"=>"RELEASEHX_API_KEY", "default_api_user_env"=>"RELEASEHX_API_USER", "default_api_org_env"=>"RELEASEHX_API_ORG", "markdown_extensions"=>".md, .markdown", "asciidoc_extensions"=>".adoc, .ad, .asciidoc", "yaml_extensions"=>".yml, .yaml, .rhyml", "draft_source_file_types"=>"AsciiDoc, Markdown, YAML", "draft_source_extensions"=>".md, .markdown, .adoc, .ad, .asciidoc, .yml, .yaml, .rhyml", "enrich_file_types"=>"HTML, PDF", "enrich_extensions"=>".html, .pdf", "asciisourcerer_www_url"=>"https://github.com/DocOps/asciisourcerer", "schemagraphy_www_url"=>"https://github.com/DocOps/schemagraphy", "toc"=>"", "toclevels"=>"3", "authorcount"=>0, "toc-position"=>"content"}}
|
|
6
6
|
|
|
7
7
|
SNIPPET_LOOKUP = {"helpscreen"=>"helpscreen.txt"}
|
|
8
8
|
|
|
@@ -9,25 +9,25 @@
|
|
|
9
9
|
{%- endif %}
|
|
10
10
|
{%- if change.parts.size > 0 %}
|
|
11
11
|
{%- if change.parts.size == 1 %}
|
|
12
|
-
|
|
12
|
+
part: {{ change.parts[0] }}
|
|
13
13
|
{%- else %}
|
|
14
|
-
|
|
14
|
+
parts:
|
|
15
15
|
{%- for part in change.parts %}
|
|
16
|
-
|
|
16
|
+
- {{ part }}
|
|
17
17
|
{%- endfor %}
|
|
18
18
|
{%- endif %}
|
|
19
19
|
{%- endif %}
|
|
20
20
|
{%- if change.hash %}
|
|
21
21
|
hash: {{ change.hash }}
|
|
22
22
|
{%- endif %}
|
|
23
|
-
summ: |
|
|
24
|
-
{{ change.summ }}
|
|
23
|
+
summ: |
|
|
24
|
+
{{ change.summ }}
|
|
25
25
|
{%- if change.head %}
|
|
26
26
|
head: {{ change.head }}
|
|
27
27
|
{%- endif %}
|
|
28
|
-
{%- if change.note and change.note
|
|
28
|
+
{%- if change.note and change.note != '' %}
|
|
29
29
|
note: |
|
|
30
|
-
|
|
30
|
+
{{ change.note | indent: 4 }}
|
|
31
31
|
{%- endif %}
|
|
32
32
|
{%- if change.tags.size > 0 %}
|
|
33
33
|
tags:
|