Implement enhanced multi-component version separation system#38
Merged
DutchmanNL merged 5 commits intomainfrom Sep 19, 2025
Merged
Implement enhanced multi-component version separation system#38DutchmanNL merged 5 commits intomainfrom
DutchmanNL merged 5 commits intomainfrom
Conversation
Co-authored-by: DutchmanNL <7318445+DutchmanNL@users.noreply.github.com>
Co-authored-by: DutchmanNL <7318445+DutchmanNL@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] ensure separation of versioning
Implement enhanced multi-component version separation system
Sep 19, 2025
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR implements a comprehensive multi-component version separation system that enables independent versioning for GitHub Actions, templates, and snippets while maintaining strict governance for the main package version. The system introduces automated deployment pipelines triggered by main version changes and comprehensive validation to prevent version downgrades.
Key Changes:
- Enhanced metadata structure with component registry and version policies
- Multi-component version management with independent versioning capabilities
- Automated deployment workflow triggered by main version changes
- Comprehensive testing framework for version separation functionality
Reviewed Changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test-version-separation.sh | New comprehensive test suite for multi-component versioning system with 25+ test cases |
| scripts/shared-utils.sh | Enhanced with component version management functions and validation |
| scripts/manage-versions.sh | Major expansion with component versioning commands and policy enforcement |
| config/metadata.json | Enhanced structure with component registry, version policies, and deployment configuration |
| .github/workflows/deploy-on-version-change.yml | New automated deployment workflow with version validation and testing |
| .github/copilot-instructions.md | Updated with specific review guidelines for version changes and component management |
Comments suppressed due to low confidence (1)
scripts/manage-versions.sh:1
- The component path is directly interpolated into the jq expression without validation, which could allow command injection if malicious input is provided. Validate the component path format before using it in the jq command.
#!/bin/bash
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR implements a comprehensive version separation system that allows different components (GitHub Actions, templates, snippets) to have independent versioning while maintaining strict governance for the main package version.
Key Changes
Enhanced Metadata Structure
The
config/metadata.jsonfile now includes a complete component registry with individual version tracking:{ "version": "0.4.0", "warning": "⚠️ CHANGING THE MAIN VERSION ABOVE WILL TRIGGER AUTOMATED PACKAGE UPDATE DEPLOYMENT", "components": { "github_actions": { "weekly_version_check": { "version": "0.2.1", "file": "templates/weekly-version-check-action.yml", "description": "GitHub Action for automated template version monitoring" } } }, "version_policy": { "main_version_source": "template.version", "increment_policy": "must_be_higher_than_previous", "deployment_trigger": "main_version_change" } }Enhanced Version Management
New commands added to
scripts/manage-versions.sh:Automated Deployment Pipeline
New workflow
.github/workflows/deploy-on-version-change.ymlautomatically triggers when the main version changes, including:Version Policy Enforcement
Comprehensive Testing
Added
tests/test-version-separation.shwith 25+ test cases covering:Updated Documentation
Enhanced GitHub Copilot instructions with specific review guidelines for version changes:
Demonstration
The system now allows independent component versioning while maintaining governance:
Benefits
The implementation provides complete version separation while maintaining the stability and governance required for a template repository used by multiple ioBroker adapter developers.
Fixes #33.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.