chore(release): bump version to v3.0.0 and prepare unified release
CI Test Suite / Run Component Tests & Pipeline Verification (push) Failing after 1m50s
Release Binaries & Installers / Build & Release Linux Binaries (push) Failing after 1m5s
Release Binaries & Installers / Build & Release Windows Binaries & Installers (push) Canceled after 0s
CI Test Suite / Run Component Tests & Pipeline Verification (push) Failing after 1m50s
Release Binaries & Installers / Build & Release Linux Binaries (push) Failing after 1m5s
Release Binaries & Installers / Build & Release Windows Binaries & Installers (push) Canceled after 0s
This commit is contained in:
@@ -7,9 +7,9 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
tag:
|
tag:
|
||||||
description: 'Release tag to publish assets to (default: v2.0.1)'
|
description: 'Release tag to publish assets to (default: v3.0.0)'
|
||||||
required: false
|
required: false
|
||||||
default: 'v2.0.1'
|
default: 'v3.0.0'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release-linux:
|
release-linux:
|
||||||
|
|||||||
+1
-1
Submodule LOGAR-LICENSING updated: bc07e45802...0dc691b9b9
@@ -531,8 +531,8 @@ Releases can be built and published through three complementary channels:
|
|||||||
### 1. Tag Push Automation (Gitea Actions)
|
### 1. Tag Push Automation (Gitea Actions)
|
||||||
Pushing a release tag automatically triggers the build workflows:
|
Pushing a release tag automatically triggers the build workflows:
|
||||||
```bash
|
```bash
|
||||||
git tag v2.0.1
|
git tag v3.0.0
|
||||||
git push origin v2.0.1
|
git push origin v3.0.0
|
||||||
```
|
```
|
||||||
The consolidated workflow **`release.yml`** defines two parallel jobs:
|
The consolidated workflow **`release.yml`** defines two parallel jobs:
|
||||||
- **`release-linux`** (`ubuntu-latest`): Compiles standalone native ELF binaries (`Linux_Client.bin`, `Server.bin`) and checksums.
|
- **`release-linux`** (`ubuntu-latest`): Compiles standalone native ELF binaries (`Linux_Client.bin`, `Server.bin`) and checksums.
|
||||||
@@ -541,7 +541,7 @@ The consolidated workflow **`release.yml`** defines two parallel jobs:
|
|||||||
### 2. Manual Workflow Dispatch (Gitea UI)
|
### 2. Manual Workflow Dispatch (Gitea UI)
|
||||||
Workflows can be manually triggered on demand from the Gitea web interface:
|
Workflows can be manually triggered on demand from the Gitea web interface:
|
||||||
1. Navigate to **Actions** $\rightarrow$ **Release Binaries & Installers** (`release.yml`).
|
1. Navigate to **Actions** $\rightarrow$ **Release Binaries & Installers** (`release.yml`).
|
||||||
2. Click **Run workflow**, set the release tag (defaults to `v2.0.1`), and run.
|
2. Click **Run workflow**, set the release tag (defaults to `v3.0.0`), and run.
|
||||||
|
|
||||||
### 3. Native Local Windows Build & Direct Release Upload
|
### 3. Native Local Windows Build & Direct Release Upload
|
||||||
For environments without a registered Windows CI runner, Windows executables can be built and published directly to Gitea releases:
|
For environments without a registered Windows CI runner, Windows executables can be built and published directly to Gitea releases:
|
||||||
@@ -550,5 +550,5 @@ For environments without a registered Windows CI runner, Windows executables can
|
|||||||
python compilation/package_dist.py --target windows
|
python compilation/package_dist.py --target windows
|
||||||
|
|
||||||
# 2. Upload assets and release notes directly to the Gitea release
|
# 2. Upload assets and release notes directly to the Gitea release
|
||||||
python compilation/upload_release.py --tag v2.0.1 --token <GITEA_TOKEN> --skip-build
|
python compilation/upload_release.py --tag v3.0.0 --token <GITEA_TOKEN> --skip-build
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,3 +1,33 @@
|
|||||||
|
# LOGAR Release v3.0.0
|
||||||
|
|
||||||
|
Major architectural release introducing the centralized **Master Licensing Authority** (logar.eibl.tech), Subordinate CA hierarchy, live seat synchronization over mTLS, authenticated Hermes AI Bearer token integrations, and streamlined WebUI dashboard controls.
|
||||||
|
|
||||||
|
### Key Highlights & Changes in v3.0.0:
|
||||||
|
|
||||||
|
- **Enterprise Master Licensing Authority (`LOGAR-LICENSING`)**:
|
||||||
|
- Implemented standalone hierarchical PKI Authority issuing and signing subordinate CA certificates with custom X.509 OID seat quotas (`1.3.6.1.4.1.59999.1.1`).
|
||||||
|
- Automated mTLS renewal and synchronization (`renew_ca_cert_mtls`) connecting Hub servers to upstream authority.
|
||||||
|
- Dedicated multi-tenant licensing dashboard with 2FA TOTP authentication, user RBAC, and WebSocket real-time seat synchronization.
|
||||||
|
- Dedicated Docker container publishing workflow on release tags and portainer GitOps redeployment webhooks.
|
||||||
|
|
||||||
|
- **Real-Time Active Seat Quota Synchronization**:
|
||||||
|
- Hub automatically tracks and reports active node seat quotas (`seats_taken`, `active_seats`, `hostname`, `server_fingerprint`) to the upstream authority upon client enrollment, approval, revocation, and removal.
|
||||||
|
- Non-blocking asynchronous thread dispatch ensures instantaneous client responses while keeping central licensing metrics synchronized.
|
||||||
|
|
||||||
|
- **Hermes AI Integration & Token Authentication**:
|
||||||
|
- Dedicated `/api/hermes/report` ingestion endpoint delivering verified anomalies within a 12-hour evaluation window.
|
||||||
|
- Bearer token administration (`/api/hermes/tokens`) with dedicated generation, copying, revocation, and deletion in the Hub WebUI.
|
||||||
|
|
||||||
|
- **Streamlined WebUI Dashboard**:
|
||||||
|
- Cleaned up top summary KPI cards to focus strictly on operational status and fleet health.
|
||||||
|
- Centralized full cryptographic inspection (Master Authority URL, Server Hub Fingerprint, CA Fingerprint) into the dedicated *Sub-CA & Licensing* tab.
|
||||||
|
|
||||||
|
- **Standalone CI & Modular Testing**:
|
||||||
|
- Decoupled LOGAR and LOGAR-LICENSING CI pipelines so each repository tests independently without submodule dependencies.
|
||||||
|
- 100% test coverage across 35 LOGAR unit tests and 14 Licensing Authority unit tests.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# LOGAR Release v2.0.1
|
# LOGAR Release v2.0.1
|
||||||
|
|
||||||
Maintenance and deployment release consolidating Gitea Actions release automation into a unified single workflow file, standardizing release dispatching across platforms, and bumping version definitions across server hub and Windows installers.
|
Maintenance and deployment release consolidating Gitea Actions release automation into a unified single workflow file, standardizing release dispatching across platforms, and bumping version definitions across server hub and Windows installers.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[Setup]
|
[Setup]
|
||||||
AppName=LOGAR Client
|
AppName=LOGAR Client
|
||||||
AppVersion=2.0.1
|
AppVersion=3.0.0
|
||||||
DefaultDirName={autopf}\LOGAR
|
DefaultDirName={autopf}\LOGAR
|
||||||
OutputDir=..\dist
|
OutputDir=..\dist
|
||||||
OutputBaseFilename=LOGAR-Client-Setup
|
OutputBaseFilename=LOGAR-Client-Setup
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[Setup]
|
[Setup]
|
||||||
AppName=LOGAR Server
|
AppName=LOGAR Server
|
||||||
AppVersion=2.0.1
|
AppVersion=3.0.0
|
||||||
DefaultDirName={autopf}\LOGAR-Server
|
DefaultDirName={autopf}\LOGAR-Server
|
||||||
OutputDir=..\dist
|
OutputDir=..\dist
|
||||||
OutputBaseFilename=LOGAR-Server-Setup
|
OutputBaseFilename=LOGAR-Server-Setup
|
||||||
|
|||||||
+2
-2
@@ -47,7 +47,7 @@ SESSION_SECRET = os.environ.get("LOGAR_SESSION_SECRET", "logar_server_hub_sessio
|
|||||||
DEFAULT_ADMIN_USER = os.environ.get("LOGAR_ADMIN_USER", "admin")
|
DEFAULT_ADMIN_USER = os.environ.get("LOGAR_ADMIN_USER", "admin")
|
||||||
DEFAULT_ADMIN_PASS = os.environ.get("LOGAR_ADMIN_PASS", "admin_logar_2026!")
|
DEFAULT_ADMIN_PASS = os.environ.get("LOGAR_ADMIN_PASS", "admin_logar_2026!")
|
||||||
|
|
||||||
app = FastAPI(title="LOGAR Cloud Ingestion & Hermes Hub", version="2.0.1")
|
app = FastAPI(title="LOGAR Cloud Ingestion & Hermes Hub", version="3.0.0")
|
||||||
|
|
||||||
# Global context holding server state
|
# Global context holding server state
|
||||||
SERVER_STATE: Dict[str, Any] = {}
|
SERVER_STATE: Dict[str, Any] = {}
|
||||||
@@ -388,7 +388,7 @@ def generate_client_profile_dict(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
"format": "LOGAR_CLIENT_PROFILE",
|
"format": "LOGAR_CLIENT_PROFILE",
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"generated_at": datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC"),
|
"generated_at": datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC"),
|
||||||
"server_host": server_host,
|
"server_host": server_host,
|
||||||
"server_port": int(server_port),
|
"server_port": int(server_port),
|
||||||
|
|||||||
Reference in New Issue
Block a user