Commit graph

168 commits

Author SHA1 Message Date
GitLab CI
208e552927 perf - Add performance report for 4.2.6 [ci skip] 2026-01-19 15:22:27 -05:00
f68a78684b chore: Bump version to 4.2.6 2026-01-19 15:17:01 -05:00
824a555974 fix(ci): Use git stash to preserve artifacts before checking out main
Fixed perf-aggregate-report job failure caused by artifact files
conflicting with git checkout.

The issue:
- Job downloads artifacts from perf-report (reports/4.2.5/*)
- Tries to checkout main with 'git checkout -B main origin/main'
- Fails because artifact files would be overwritten

The solution:
1. Stash all artifact files and generated content
2. Checkout main branch cleanly
3. Pull latest changes from origin/main
4. Pop stash to restore artifacts
5. Add and commit aggregated report

This preserves the artifact files while properly syncing with remote main.
2026-01-19 14:15:18 -05:00
GitLab CI
106e2014d5 perf - Add performance report for 4.2.5 [ci skip] 2026-01-19 14:10:31 -05:00
27e3ee5ffa chore: Bump version to 4.2.5 2026-01-19 14:02:38 -05:00
03529310c6 Fix GitLab CI YAML syntax for perf-aggregate-report job
Convert complex shell commands to multi-line blocks to fix YAML parsing:
- Changed `test -z "$VAR" && ... || true` patterns to proper if/else blocks
- Used `|` syntax for multi-line shell scripts
- Fixed variable expansion in $FILES for build/un command
- Separated git diff --cached logic into if/else block

This resolves the error:
"jobs:perf-aggregate-report:script config should be a string or
a nested array of strings up to 10 levels deep"

YAML validated successfully with Python yaml.safe_load()
2026-01-19 14:01:05 -05:00
1f83eaf175 Add aggregated performance analysis with dynamic version discovery
- Add perf-aggregate-report CI job to analyze variance across releases
- Implement dynamic version discovery using git tags (ever-growing)
- Generate charts via UN sandbox using matplotlib
- Create AGGREGATED-PERFORMANCE.md with comprehensive methodology
- Add Makefile target for local report generation
- Include 3 visualization charts showing variance trends

Key findings: 2-3x performance variance due to orchestrator placement
on CPU-bound pool causing non-deterministic scheduling.
2026-01-19 13:13:22 -05:00
GitLab CI
1def22d14d perf - Add performance report for 4.2.4 [ci skip] 2026-01-19 07:02:22 -05:00
GitLab CI
627338cdf1 perf - Add performance report for 4.2.3 [ci skip] 2026-01-19 06:58:57 -05:00
0f6f6282d5 chore: Bump version to 4.2.4 2026-01-19 06:56:18 -05:00
c078c21eb3 fix(ci): Handle empty grep results in cleanup-services
Store grep output in variable with || true to prevent exit code 1
when no test-* resources are found
2026-01-19 06:56:10 -05:00
c4ff92c523 chore: Bump version to 4.2.3 2026-01-19 06:53:05 -05:00
fe16333d28 fix(ci): Add 60s delay and fix git checkout for perf-report
- Wait 60s after test matrix completes for data to settle
- Checkout main branch BEFORE generating reports to avoid unstaged changes
- Use git checkout -B to force-create branch from origin/main
2026-01-19 06:52:41 -05:00
252bdffca2 fix(tests): Fix GitHub Actions test failures
- bash: Add file existence check before reading
- bash: Improve exit code handling for invalid JSON results
- bash: Expand detect_language to support all 42 languages
- python: Use detect_language() instead of non-existent EXT_MAP
- python: Remove exit_on_error param that doesn't exist
- python: Replace read_file test with validate_keys existence check
2026-01-19 06:40:49 -05:00
1cd5dc5b1f chore: Bump version to 4.2.2 2026-01-19 06:25:56 -05:00
612088732a fix(ci): Expand cleanup to sessions, snapshots, images
Only targets resources matching test-* pattern to avoid
destroying real services. Cleans up:
- test-* services
- test-* sessions
- test-* snapshots
- test-* images
2026-01-19 06:25:51 -05:00
fcd7e618c8 chore: Bump version to 4.2.1 2026-01-19 06:22:43 -05:00
cdb1be4b35 fix(ci): Cleanup orphaned test services before fan-out
Adds cleanup-services stage to child pipeline that destroys any
existing test services before the 42-language parallel test matrix
runs. Prevents concurrency limit failures from orphaned services.
2026-01-19 06:22:16 -05:00
be38af7ace feat(ci): Auto-generate enhanced perf.md with embedded charts
Updates generate-perf-report.sh to produce markdown with:
- Embedded chart images for all 6 visualizations
- Dynamic observations pulled from actual performance data
- Slowest/fastest language names extracted from JSON
- Raw data table at the end

The markdown now matches the manual report format and will be
generated automatically on each tagged release.
2026-01-18 20:08:38 -05:00
1d08dc0de5 perf: Add charts for 4.2.0 performance report [ci skip] 2026-01-18 19:58:26 -05:00
2dea39875f Add un.h symlink to root for consistency with other clients 2026-01-18 18:32:21 -05:00
GitLab CI
be8db8697b perf - Add performance report for 4.2.0 [ci skip] 2026-01-18 18:20:55 -05:00
af216da281 chore: Remove reports for fresh regeneration from clean test run 2026-01-18 18:16:16 -05:00
5164c3a381 fix(ci): Remove circular variable references from test matrix generator 2026-01-18 18:04:11 -05:00
GitLab CI
210d786674 perf - Add performance report for 4.2.0 [ci skip] 2026-01-18 17:32:27 -05:00
e972e21ae0 fix(ci): Remove circular variable references and reset report 2026-01-18 17:27:44 -05:00
GitLab CI
7f53e58766 perf - Add performance report for 4.2.0 [ci skip] 2026-01-18 17:24:14 -05:00
bea7923084 chore: Remove report for fresh regeneration 2026-01-18 17:20:04 -05:00
4def896c74 fix(ci): Add debug for API key availability 2026-01-18 17:20:03 -05:00
GitLab CI
875fae291c perf - Add performance report for 4.2.0 [ci skip] 2026-01-18 17:12:32 -05:00
c4db2028b5 chore: Remove 4.2.0 report to regenerate with charts 2026-01-18 17:07:16 -05:00
5f1bf5157a fix(ci): Add debug for build artifact and improve chart generation check 2026-01-18 16:01:11 -05:00
GitLab CI
7f6fab9fc6 perf - Add performance report for 4.2.0 [ci skip] 2026-01-18 15:48:17 -05:00
8e133604c0 fix(ci): Always push after commit in perf-report 2026-01-18 15:41:09 -05:00
7dba5ff07a fix(ci): Add build artifacts dependency and fix ssh-keyscan port 2026-01-18 15:31:56 -05:00
ad8bd44869 fix(ci): Flatten perf-report script to avoid YAML nesting issues 2026-01-18 14:49:43 -05:00
6dd7798cbf fix(ci): Simplify commit message to avoid YAML parsing issues 2026-01-18 14:48:44 -05:00
b33b8a89af fix(ci): Use heredoc for multi-line commit message in perf-report 2026-01-18 14:45:02 -05:00
9ce01359f0 fix(ci): Correct project ID to 116 (un-inception) 2026-01-18 14:41:22 -05:00
7cff85a700 chore: Remove test performance reports 2026-01-18 14:36:57 -05:00
99fbf571a1 feat(ci): Add protected tag creation to deploy key setup 2026-01-18 14:36:11 -05:00
2d95291dc2 feat(ci): Add deploy key setup automation with protected variables
- Add setup-ci-deploy-key target to automate SSH deploy key creation
- Use protected=true so DEPLOY_KEY only exposed on protected tags
- Add test-ci-deploy-key target to verify SSH access
- Add remove-ci-deploy-key target for cleanup
- Include instructions about protecting release tags in GitLab
2026-01-18 14:19:49 -05:00
3c5f1240be fix(ci): Use deploy key instead of token for pushing
Deploy key is:
- Permanent (no expiration)
- Repo-scoped (no API access)
- SSH-based (more secure)

Setup: Add DEPLOY_KEY variable with base64-encoded SSH private key
Generate: ssh-keygen -t ed25519 -C 'ci@un-inception'
Encode: base64 -w0 < id_ed25519 | pbcopy
2026-01-18 14:15:07 -05:00
9ecc93a75f fix(ci): Make perf-report job safer and more robust
- Add input validation for tag format
- Check for required tools (curl, jq, bc)
- Skip if report already exists (idempotent)
- Add colored logging for better visibility
- Handle push failures gracefully
- Use 'rules' instead of 'only' for modern GitLab CI
- Add GIT_DEPTH: 0 for full history access
2026-01-18 14:12:53 -05:00
88a3a6718c feat: Add performance charts and CI auto-commit
- Add scripts/generate-perf-charts.py for matplotlib visualizations
- Update generate-perf-report.sh for versioned directories (reports/TAG/)
- Add make perf-charts and make perf-all targets
- Add GitLab CI perf-report job to auto-commit after tagged releases
- Generated 6 charts for 4.2.0: dashboard, duration, histogram, leaders, etc.

Each release now gets its own reports/TAG/ directory with:
  - perf.json (raw timing data)
  - perf.md (markdown report)
  - chart-*.png (6 visualizations)
2026-01-18 14:00:08 -05:00
a0ee191dd7 feat: Add performance reporting for release tracking
- Add scripts/generate-perf-report.sh to fetch CI timing data
- Add make perf-report TAG=X.Y.Z target
- Generate per-language timing reports (JSON + Markdown)
- Track performance history across releases
- Prefer fully passing pipelines over warnings

4.2.0: 638 tests, 100% pass, avg 58s, slowest commonlisp (119s)
2026-01-18 13:45:24 -05:00
078a530361 docs: Update release process to use set-version and tags without v prefix 2026-01-18 13:35:18 -05:00
4b602b8174 chore: Add set-version script and update all clients to 4.2.0
- Add scripts/set-version.sh to update version in all source files
- Add make set-version VERSION=X.Y.Z target
- Updated 11 files: VERSION, C, Python, Lua, Perl, Groovy, JS, Rust
2026-01-18 13:09:10 -05:00
d76a56610e docs: Add UN CLI link to README 2026-01-18 08:11:53 -05:00
04f6cf6eaf docs: Update test counts to 638 tests, add badges to README 2026-01-18 08:11:24 -05:00