- Regime De/Activation
- Adding Living Documentation Regime to the Workflow
- Regime Configuration
- Expected Output
- Documentation Ticket Introduction
- Living Documentation Regime Features
This regime is designed to data-mine GitHub repositories for documentation tickets containing project documentation (e.g. tagged with feature-related labels). This tool automatically generates comprehensive living documentation in a format compatible with an mdoc viewer, providing detailed feature overview pages and in-depth feature descriptions.
- liv-doc-regime (required)
- Description: Enables or disables the Living Documentation regime.
- Usage: Set to true to activate.
- Example:
with: liv-doc-regime: true
See the default minimal Living Documentation regime action step definition:
- name: Generate Living Documentation
id: generate_living_doc
uses: AbsaOSS/[email protected]
env:
GITHUB-TOKEN: ${{ secrets.REPOSITORIES_ACCESS_TOKEN }}
with:
liv-doc-regime: true # living documentation regime de/activation
liv-doc-repositories: |
[
{
"organization-name": "fin-services",
"repository-name": "investment-app"
}
]
See the full example of Living Documentation regime step definition (in example are used non-default values):
- name: Generate Living Documentation
id: generate_living_doc
uses: AbsaOSS/[email protected]
env:
GITHUB-TOKEN: ${{ secrets.REPOSITORIES_ACCESS_TOKEN }}
with:
liv-doc-regime: true # living documentation regime de/activation
verbose-logging: true # project verbose (debug) logging feature de/activation
liv-doc-repositories: |
[
{
"organization-name": "fin-services",
"repository-name": "investment-app",
"query-labels": ["feature", "enhancement"],
"projects-title-filter": []
},
{
"organization-name": "health-analytics",
"repository-name": "patient-data-analysis",
"query-labels": ["functionality"],
"projects-title-filter": ["Health Data Analysis Project"]
}
]
liv-doc-project-state-mining: true # project state mining feature de/activation
liv-doc-structured-output: true # structured output feature de/activation
liv-doc-group-output-by-topics: true # group output by topics feature de/activation
Configure the Living Documentation regime by customizing the following parameters based on your needs:
-
liv-doc-repositories (optional,
default: '[]'
)- Description: A JSON string defining the repositories to be included in the documentation generation.
- Usage: Provide a list of repositories including the organization name, repository name, query labels, and any attached projects you wish to filter. The query-labels and projects-title-filter parameters are optional. Only issues with the specified labels and projects will be fetched. To fetch all issues (all labels), either omit these parameters or leave the lists empty.
- Example:
with: liv-doc-repositories: | [ { "organization-name": "fin-services", "repository-name": "investment-app", "query-labels": ["feature", "enhancement"] }, { "organization-name": "open-source-initiative", "repository-name": "community-driven-project", "projects-title-filter": ["Community Outreach Initiatives", "CDD Project"] } ]
-
liv-doc-project-state-mining (optional,
default: false
)- Input description: Enables or disables the mining of project state data from GitHub Projects.
- Feature description: Data mining from GitHub projects
- Usage: Set to true to activate.
- Example:
with: liv-doc-project-state-mining: true
-
liv-doc-structured-output (optional,
default: false
)- Input description: Enables or disables structured output.
- Feature description: Structured output
- Usage: Set to true to activate.
- Example:
with: liv-doc-structured-output: true
-
liv-doc-group-output-by-topics (optional,
default: false
)- Input description: Enable or disable grouping tickets by topics in the summary index.md file.
- Feature description: Output grouped by topics
- Usage: Set to true to activate.
- Example:
with: liv-doc-group-output-by-topics: true
The Living Documentation Generator in Living Documentation regime is designed to produce an Issue Summary page (index.md) along with multiple detailed single issue pages. The structure of pages is designed to work with the AbsaOSS mdoc viewer solution.
---
title: Features
toolbar_title: Features
description_title: Living Documentation
description: >
This is a comprehensive list and brief overview of all mined features.
date: 2024-12-12
weight: 0
---
<h1>Feature Summary page</h1>
Our project is designed with a myriad of features to ensure seamless user experience, top-tier functionality, and efficient operations. Here, you'll find a summarized list of all these features, their brief descriptions, and links to their detailed documentation.
<h2>Feature Overview</h2>
<div class="cps-table sortable searchable filterableByColumns paginator">
| Organization name | Repository name | Issue 'Number - Title' | Linked to project | Project Status | Issue URL |
|-------------------|----------------------------|-------------------------------------|--------------------|----------------|---------------------------------------------|
| AbsaOSS | living-doc-example-project | [#89 - Test issue 2](features#test-issue-2) | 🔴 | --- | <a href='#' target='_blank'>GitHub link</a> |
| AbsaOSS | living-doc-example-project | [#88 - Test issue](features#test-issue.md) | 🟢 | Todo | <a href='#' target='_blank'>GitHub link</a> |
| AbsaOSS | living-doc-example-project | [#41 - Initial commit.](features#initial-commit.md) | 🟢 | Done | <a href='#' target='_blank'>GitHub link</a> |
| AbsaOSS | living-doc-example-project | [#33 - Example bugfix](features#example-bugfix.md) | 🔴 | --- | <a href='#' target='_blank'>GitHub link</a> |
</div>
- Project Status can have various values depending on the project, such as: Todo, Done, Closed, In Progress, In Review, Blocked, etc. These values can vary from project to project.
- The
---
symbol is used to indicate that an issue has no required project data.
---
title: "Advanced Book Search"
date: 2024-12-12
weight: 1
---
| Attribute | Content |
|-------------------|---------------------------------------------|
| Organization name | AbsaOSS |
| Repository name | living-doc-example-project |
| Issue number | 17 |
| Title | Advanced Book Search |
| State | open |
| Issue URL | <a href='#' target='_blank'>GitHub link</a> |
| Created at | 2023-12-12 11:34:52 |
| Updated at | 2023-12-13 10:24:58 |
| Closed at | None |
| Labels | feature |
| Project title | Book Store Living Doc Example project |
| Status | Todo |
| Priority | P1 |
| Size | S |
| MoSCoW | --- |
<h3>Issue Content</h3>
Users often struggle to find specific books in a large catalog. An advanced search feature would streamline this process, enhancing user experience.
#### Background
...
A Documentation Ticket is a small piece of documentation realized as a GitHub Issue dedicated to project documentation. Unlike development-focused tickets, Documentation Ticket can remain in open state continuously, evolving as updates are needed, and can be reopened or revised indefinitely. They are not directly tied to Pull Requests (PRs) but can be referenced for context.
- Content Rules:
- Non-technical Focus:
- Keep the documentation body free of technical solution specifics.
- Technical insights should be accessible through linked PRs or Tickets within the development repository.
- Independent Documentation:
- Ensure the content remains independent of implementation details to allow a clear, high-level view of the feature or user story's purpose and functionality.
- Non-technical Focus:
To enhance clarity, the following label groups define and categorize each Documentation Issue:
- Topic:
- {Name}Topic: Designates the main focus area or theme relevant to the ticket, assigned by the editor for consistency across related documentation.
- Examples:
ReportingTopic
,UserManagementTopic
,SecurityTopic
.
- Examples:
- NoTopic: Indicates that the ticket does not align with a specific topic, based on the editor's discretion.
- {Name}Topic: Designates the main focus area or theme relevant to the ticket, assigned by the editor for consistency across related documentation.
- Type:
- DocumentedUserStory: Describes a user-centric functionality or process, highlighting its purpose and value.
- Encompasses multiple features, capturing the broader goal from a user perspective.
- DocumentedFeature: Details a specific feature, providing a breakdown of its components and intended outcomes.
- Built from various requirements and can relate to multiple User Stories, offering an in-depth look at functionality.
- DocumentedRequirement: Outlines individual requirements or enhancements tied to the feature or user story.
- DocumentedUserStory: Describes a user-centric functionality or process, highlighting its purpose and value.
- Issue States:
- Upcoming: The feature, story, or requirement is planned but not yet implemented.
- Implemented: The feature or requirement has been completed and is in active use.
- Deprecated: The feature or requirement has been phased out or replaced and is no longer supported.
DocumentedUserStory and DocumentedFeature serve as Epics, whereas DocumentedRequirement represents specific items similar to feature enhancements or individual requirements.
Using a dedicated repository solely for documentation tickets provides multiple advantages:
- Streamlined Management: This avoids cross-project conflicts, board exclusions and enables specialized templates solely for documentation purposes.- Focused Access Control: This allows a small team to manage and edit documentation without interference, maintaining high-quality content.
- Optimized Data Mining: Supports easier and more efficient data extraction for feedback and review cycles through Release Notes.
- Implementation Reflection: Mirrors elements from the implementation repositories, providing a high-level knowledge source that is valuable for both business and technical teams.
- Release Notes Integration: Documentation can evolve based on insights from release notes, serving as a dynamic feedback loop back to the documentation repository.
This is a build-in feature, that allows you to define which repositories should be included in the living documentation process. This essential process can not be deactivated inside of regime scope. By specifying repositories, you can focus on the most relevant projects for your documentation needs.
- Activation: This is a built-in feature, so it is always activated.
- Default Behavior: By default, the action will include all repositories defined in the repositories input parameter. Each repository is defined with its organization name, repository name, and query labels.
This feature allows you to define which projects should be included in the living documentation process. By specifying projects, you can focus on the most relevant projects for your documentation needs.
- Activation: To activate this feature, set the
liv-doc-project-state-mining
input to true. - Non-Activated Behavior: By default, when the feature is inactive, the action will include all projects linked to the repositories. This information is provided by the GitHub API.
- Activated Example: Use available options to customize which projects are included in the documentation.
project-state-mining: false
deactivates the mining of project state data from GitHub Projects. If set to false, project state data will not be included in the generated documentation and project related configuration options will be ignored.projects-title-filter: []
filters the repository attached projects by titles, if list is empty all projects are used.{ "organization-name": "absa-group", "repository-name": "living-doc-example-project", "query-labels": ["feature", "bug"], "projects-title-filter": ["Community Outreach Initiatives", "Health Data Analysis"] }
The goal is to provide a straightforward view of all issues in a single table, making it easy to see the overall status and details of issues across repositories.
The current output implementation is designed to work with the AbsaOSS mdoc viewer solution. The presence of multiple _index.md files is necessary for the current solution to correctly generate the documentation structure.
- Activation: This is a built-in feature, so it is always activated.
- Default Behavior: By default, the action generates a single table that lists all issues from the defined repositories.
This feature allows you to generate structured output for the living documentation and see a summary index.md
page for each fetched repository.
- Activation: To activate this feature, set the
liv-doc-structured-output
input to true. - Non-Activated Behavior: By default, when the feature is inactive, the action generates all the documentation in a single directory.
- Activated Example: Use the structured output feature to organize the generated documentation by organization and repository name.
structured-output: true
activates the structured output feature.output |- org 1 |--repo 1 |-- issue md page 1 |-- issue md page 2 |-- _index.md |-- _index.md |- org 2 |--repo 1 |-- issue md page 1 |-- _index.md |--repo 2 ... |-- _index.md |- _index.md
The feature allows you to generate output grouped by topics. This feature is useful when grouping tickets by specific topics or themes.
To gain a better understanding of the term "Topic", refer to the Labels section.
- Activation: To activate this feature, set the
liv-doc-group-output-by-topics
input to true. - Non-Activated Behavior: By default, when the feature is inactive, the action generates all the documentation in a single directory.
- Activated Example: Use the grouped output feature to organize the generated documentation by topics.
group-output-by-topics: true
activates the grouped output feature.output |- topic 1 |-- issue md page 1 |-- issue md page 2 |-- _index.md |- topic 2 |-- issue md page 1 |-- _index.md |- _index.md