Enhance branding and release workflows
- Updated README.md to include a reference to branding and releases documentation. - Modified brand_config.py to support multi-brand packaging, including functions for collecting local release data and merging release manifests. - Adjusted build_macos.sh to set a default brand if none is specified and updated DMG naming conventions. - Enhanced create_release.ps1 and create_release.sh scripts to support dry-run functionality and improved artifact handling. - Added a new template for brand configuration in build/brands/template.jsonc. - Created comprehensive branding and releases documentation in docs/BRANDING_AND_RELEASES.md. - Added unit tests for new branding functionalities in test_brand_config.py.
This commit is contained in:
parent
fd69996c53
commit
67bfe4a600
8 changed files with 923 additions and 82 deletions
|
|
@ -8,7 +8,13 @@ BUILD_SCRIPTS_DIR = Path(__file__).resolve().parents[2] / "build" / "scripts"
|
|||
if str(BUILD_SCRIPTS_DIR) not in sys.path:
|
||||
sys.path.insert(0, str(BUILD_SCRIPTS_DIR))
|
||||
|
||||
from brand_config import generate_release_manifest, load_brand_config
|
||||
from brand_config import (
|
||||
DEFAULT_BRAND_ID,
|
||||
collect_local_release_data,
|
||||
generate_release_manifest,
|
||||
load_brand_config,
|
||||
merge_release_manifests,
|
||||
)
|
||||
|
||||
|
||||
def test_load_agravity_brand_config():
|
||||
|
|
@ -75,3 +81,63 @@ def test_generate_release_manifest_for_agravity(tmp_path):
|
|||
manifest["brands"]["agravity"]["macos-universal"]["installer"]
|
||||
== "AgravityBridge-0.8.4-macos-universal.dmg"
|
||||
)
|
||||
|
||||
|
||||
def test_collect_local_release_data_includes_default_brand(tmp_path):
|
||||
"""Test discovering local artifacts for the default Windows build."""
|
||||
project_root = tmp_path
|
||||
installer_dir = project_root / "build" / "dist" / "windows" / DEFAULT_BRAND_ID
|
||||
installer_dir.mkdir(parents=True)
|
||||
|
||||
installer = installer_dir / "WebDropBridge-0.8.4-win-x64.msi"
|
||||
installer.write_bytes(b"msi")
|
||||
checksum = installer_dir / f"{installer.name}.sha256"
|
||||
checksum.write_text("abc", encoding="utf-8")
|
||||
|
||||
data = collect_local_release_data("0.8.4", platform="windows", root=project_root)
|
||||
|
||||
assert data["brands"] == [DEFAULT_BRAND_ID]
|
||||
assert str(installer) in data["artifacts"]
|
||||
assert str(checksum) in data["artifacts"]
|
||||
assert (
|
||||
data["manifest"]["brands"][DEFAULT_BRAND_ID]["windows-x64"]["installer"] == installer.name
|
||||
)
|
||||
|
||||
|
||||
def test_merge_release_manifests_preserves_existing_platforms():
|
||||
"""Test merging platform-specific manifest entries from separate upload runs."""
|
||||
base_manifest = {
|
||||
"version": "0.8.4",
|
||||
"channel": "stable",
|
||||
"brands": {
|
||||
"agravity": {
|
||||
"windows-x64": {
|
||||
"installer": "AgravityBridge-0.8.4-win-x64.msi",
|
||||
"checksum": "AgravityBridge-0.8.4-win-x64.msi.sha256",
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
overlay_manifest = {
|
||||
"version": "0.8.4",
|
||||
"channel": "stable",
|
||||
"brands": {
|
||||
"agravity": {
|
||||
"macos-universal": {
|
||||
"installer": "AgravityBridge-0.8.4-macos-universal.dmg",
|
||||
"checksum": "AgravityBridge-0.8.4-macos-universal.dmg.sha256",
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
merged = merge_release_manifests(base_manifest, overlay_manifest)
|
||||
|
||||
assert (
|
||||
merged["brands"]["agravity"]["windows-x64"]["installer"]
|
||||
== "AgravityBridge-0.8.4-win-x64.msi"
|
||||
)
|
||||
assert (
|
||||
merged["brands"]["agravity"]["macos-universal"]["installer"]
|
||||
== "AgravityBridge-0.8.4-macos-universal.dmg"
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue