10 Commits
Author SHA1 Message Date
me0nline 56d8516427 docs: update README.md to reference consolidated release.yml workflow
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m24s
2026-09-04 23:26:05 +02:00
me0nline 94ad3f9461 ci: remove obsolete release-windows.yml in favor of consolidated release.yml 2026-09-04 23:25:38 +02:00
me0nline 26a4509429 ci: remove obsolete release-linux.yml in favor of consolidated release.yml 2026-09-04 23:25:35 +02:00
me0nline 80ae42088f ci: add consolidated release.yml combining Linux and Windows release jobs 2026-09-04 23:25:32 +02:00
me0nline 42f01addca docs: document 25 unit tests and tripartite release options in root README.md
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m21s
2026-09-04 23:23:08 +02:00
me0nline a9f096ef1b ci(windows): optimize tag triggers and add default v2.0.0 tag to release-windows.yml 2026-09-04 23:22:52 +02:00
me0nline 26d3d59812 ci(linux): optimize tag triggers and add default v2.0.0 tag to release-linux.yml 2026-09-04 23:22:38 +02:00
me0nline 5fec32327f ci: prevent ci.yml from triggering on tag pushes
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m22s
2026-09-04 23:08:19 +02:00
me0nline 478807d873 ci(linux): add v* tag pattern to release-linux.yml 2026-09-04 23:08:06 +02:00
me0nline 149ba6dfec ci(windows): add release event and multi-pattern tag triggers to release-windows.yml 2026-09-04 23:07:54 +02:00
4 changed files with 64 additions and 56 deletions
+3
View File
@@ -6,12 +6,15 @@ on:
- '**' - '**'
tags-ignore: tags-ignore:
- '*' - '*'
- '**'
- 'v*'
pull_request: pull_request:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
test: test:
name: Run Component Tests & Pipeline Verification name: Run Component Tests & Pipeline Verification
if: "!startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Code - name: Checkout Code
-44
View File
@@ -1,44 +0,0 @@
name: Release Linux Binaries
on:
release:
types: [published, created]
push:
tags:
- '*'
- '**'
workflow_dispatch:
inputs:
tag:
description: 'Release tag (optional)'
required: false
jobs:
release-linux:
name: Build & Release Linux Binaries
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install Python and Build Dependencies
run: |
if command -v apt-get >/dev/null 2>&1; then
apt-get update -y
apt-get install -y python3 python3-pip python3-venv binutils zip
fi
python3 -m pip install --upgrade pip --break-system-packages || python3 -m pip install --upgrade pip || true
pip3 install pyinstaller -r compilation/requirements.txt --break-system-packages || pip3 install pyinstaller -r compilation/requirements.txt
- name: Compile Standalone Linux Binaries
run: |
python3 compilation/package_dist.py --target linux
- name: Publish Linux Release Assets
env:
GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }}
GITEA_SERVER_URL: ${{ github.server_url }}
GITEA_REPOSITORY: ${{ github.repository }}
GITEA_REF_NAME: ${{ github.event.release.tag_name || inputs.tag || github.ref_name }}
run: |
python3 compilation/upload_release.py --skip-build
@@ -1,4 +1,4 @@
name: Release Windows Binaries & Installers name: Release Binaries & Installers
on: on:
push: push:
@@ -7,12 +7,43 @@ on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
tag: tag:
description: 'Release tag (optional)' description: 'Release tag to publish assets to (default: v2.0.0)'
required: false required: false
default: 'v2.0.0'
jobs: jobs:
release-linux:
name: Build & Release Linux Binaries
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install Python and Build Dependencies
run: |
if command -v apt-get >/dev/null 2>&1; then
apt-get update -y
apt-get install -y python3 python3-pip python3-venv binutils zip
fi
python3 -m pip install --upgrade pip --break-system-packages || python3 -m pip install --upgrade pip || true
pip3 install pyinstaller -r compilation/requirements.txt --break-system-packages || pip3 install pyinstaller -r compilation/requirements.txt
- name: Compile Standalone Linux Binaries
run: |
python3 compilation/package_dist.py --target linux
- name: Publish Linux Release Assets
env:
GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }}
GITEA_SERVER_URL: ${{ github.server_url }}
GITEA_REPOSITORY: ${{ github.repository }}
GITEA_REF_NAME: ${{ inputs.tag || github.event.release.tag_name || github.ref_name }}
run: |
python3 compilation/upload_release.py --skip-build
release-windows: release-windows:
name: Build & Release Windows Binaries & Installers name: Build & Release Windows Binaries & Installers
# Note: Requires a registered Gitea Act Runner with label 'windows-latest'
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
@@ -73,7 +104,7 @@ jobs:
GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }} GITEA_TOKEN: ${{ secrets.TAG_TOKEN || github.token }}
GITEA_SERVER_URL: ${{ github.server_url }} GITEA_SERVER_URL: ${{ github.server_url }}
GITEA_REPOSITORY: ${{ github.repository }} GITEA_REPOSITORY: ${{ github.repository }}
GITEA_REF_NAME: ${{ github.event.release.tag_name || inputs.tag || github.ref_name }} GITEA_REF_NAME: ${{ inputs.tag || github.event.release.tag_name || github.ref_name }}
run: | run: |
$py = "python" $py = "python"
if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) { if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) {
+27 -9
View File
@@ -263,9 +263,8 @@ LOGAR provides production-grade installation scripts and installer builders for
LOGAR/ LOGAR/
├── .gitea/ ├── .gitea/
│ └── workflows/ │ └── workflows/
│ ├── ci.yml # CI pipeline: syntax, 22 unit tests & mTLS pipeline test │ ├── ci.yml # CI pipeline: syntax, 25 unit tests & mTLS pipeline test
── release-linux.yml # Linux release workflow (compiles binaries & checksums) ── release.yml # Consolidated release workflow (Linux binaries & Windows installers)
│ └── release-windows.yml # Windows release workflow (compiles .exe & Inno Setup installers)
├── compilation/ # Packaging, installers, and release automation ├── compilation/ # Packaging, installers, and release automation
│ ├── install_linux_client.sh # Automated Linux client systemd installation script │ ├── install_linux_client.sh # Automated Linux client systemd installation script
│ ├── install_linux_server.sh # Automated Linux server systemd installation script │ ├── install_linux_server.sh # Automated Linux server systemd installation script
@@ -343,10 +342,11 @@ LOGAR/
```bash ```bash
python -m unittest discover -s tests -v python -m unittest discover -s tests -v
``` ```
Runs all **22 unit tests**, covering: Runs all **25 unit tests**, covering:
- Dynamic Root CA generation and server TLS certificate issuance. - Dynamic Root CA generation and server TLS certificate issuance.
- Dynamic client certificate issuance with CN and authority key extensions. - Dynamic client certificate issuance with CN and authority key extensions.
- Enrollment secret authentication, seat limits, and certificate revocation. - Enrollment secret authentication, seat limits, and certificate revocation.
- Proactive certificate validity checks, Root CA auto-renewal, and in-flight server SSLContext reload.
- Windows & Linux event log collection, deduplication, and mTLS certificate verification. - Windows & Linux event log collection, deduplication, and mTLS certificate verification.
- 12-hour evaluation window and 4-run rule progression. - 12-hour evaluation window and 4-run rule progression.
@@ -365,13 +365,31 @@ Tests client enrollment, secret rejection, mTLS TLS 1.3 socket handshake, warnin
--- ---
## Automated Releases via Gitea Actions ## Releases & Binary Distribution
Releases are triggered automatically on tag push (`v*`): Releases can be built and published through three complementary channels:
### 1. Tag Push Automation (Gitea Actions)
Pushing a release tag automatically triggers the build workflows:
```bash ```bash
git tag v2.0.0 git tag v2.0.0
git push origin v2.0.0 git push origin v2.0.0
``` ```
Two dedicated workflows run in parallel: The consolidated workflow **`release.yml`** defines two parallel jobs:
- **`release-linux.yml`** (`ubuntu-latest`): Compiles `Linux_Client.bin` and `Server.bin`, generating checksums. - **`release-linux`** (`ubuntu-latest`): Compiles standalone native ELF binaries (`Linux_Client.bin`, `Server.bin`) and checksums.
- **`release-windows.yml`** (`windows-latest`): Compiles `Win_Client.exe` and `Server.exe`, builds Inno Setup installers (`LOGAR-Client-Setup.exe`, `LOGAR-Server-Setup.exe`), and uploads all artifacts. - **`release-windows`** (`windows-latest`): Compiles Windows executables (`Win_Client.exe`, `Server.exe`), builds Inno Setup installers, and publishes checksums (requires self-hosted Windows Act Runner).
### 2. Manual Workflow Dispatch (Gitea UI)
Workflows can be manually triggered on demand from the Gitea web interface:
1. Navigate to **Actions** $\rightarrow$ **Release Binaries & Installers** (`release.yml`).
2. Click **Run workflow**, set the release tag (defaults to `v2.0.0`), and run.
### 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:
```powershell
# 1. Build Windows binaries locally
python compilation/package_dist.py --target windows
# 2. Upload assets and release notes directly to the Gitea release
python compilation/upload_release.py --tag v2.0.0 --token <GITEA_TOKEN> --skip-build
```