From 12362203025d2060a381bb2b09ebaccee661cfc1 Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Wed, 1 Apr 2026 16:49:01 +0000 Subject: [PATCH] Feat v0.6.18 ci bundled packages (#53) Co-authored-by: Jeffrey Smith Co-committed-by: Jeffrey Smith --- .gitea/workflows/ci.yaml | 4 ++++ CHANGELOG.md | 16 ++++++++++++++++ VERSION | 2 +- docker-compose.yml | 2 +- server/handlers/packages_update_test.go | 17 ++++++++--------- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 083beff..7f7abab 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -413,6 +413,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=50m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=250m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=*" >> "$GITHUB_OUTPUT" echo "env_label=dev (PR #${{ gitea.event.pull_request.number }})" >> "$GITHUB_OUTPUT" elif [[ "${{ gitea.ref }}" == refs/tags/v* ]]; then VERSION="${{ gitea.ref_name }}" @@ -429,6 +430,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=100m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=500m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=notes,chat,chat-core,mermaid-renderer,schedules" >> "$GITHUB_OUTPUT" echo "is_release=true" >> "$GITHUB_OUTPUT" echo "env_label=production (${VERSION})" >> "$GITHUB_OUTPUT" else @@ -444,6 +446,7 @@ jobs: echo "MEMORY_LIMIT=512Mi" >> "$GITHUB_OUTPUT" echo "CPU_REQUEST=50m" >> "$GITHUB_OUTPUT" echo "CPU_LIMIT=250m" >> "$GITHUB_OUTPUT" + echo "BUNDLED_PACKAGES=notes,chat,chat-core" >> "$GITHUB_OUTPUT" echo "env_label=test (main)" >> "$GITHUB_OUTPUT" fi @@ -670,6 +673,7 @@ jobs: STORAGE_CLASS: ${{ vars.STORAGE_CLASS }} STORAGE_SIZE: ${{ vars.STORAGE_SIZE || '10Gi' }} STORAGE_BACKEND: ${{ vars.STORAGE_BACKEND || 'pvc' }} + BUNDLED_PACKAGES: ${{ steps.setup.outputs.BUNDLED_PACKAGES }} run: | # Render PVC first (must exist before backend references it) if [[ -n "${STORAGE_CLASS}" ]]; then diff --git a/CHANGELOG.md b/CHANGELOG.md index 358bd9f..406ef37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to Armature are documented here. +## v0.6.18 — CI Bundle Wiring + +Wire `BUNDLED_PACKAGES` env var into the Gitea CI pipeline so each +environment gets the correct package set at boot. + +### Changed + +- **CI: dev deploys** — `BUNDLED_PACKAGES=*` (install all, matches docker-compose default). +- **CI: test deploys** — `BUNDLED_PACKAGES=notes,chat,chat-core` (core surfaces only). +- **CI: prod deploys** — `BUNDLED_PACKAGES=notes,chat,chat-core,mermaid-renderer,schedules`. +- **docker-compose.yml** — default `BUNDLED_PACKAGES` changed from empty to `*` (install all for local dev). + +### Fixed + +- **TestBundledInstall_DefaultAllowlist** — updated test assertions to match v0.6.17's empty default set (was still expecting `notes` in curated defaults). + ## v0.6.17 — Bug Fixes & Welcome Logic Fixes broken UI interactions (folder creation, team member add), dropdown diff --git a/VERSION b/VERSION index fa20946..724e8d9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.6.17 +0.6.18 diff --git a/docker-compose.yml b/docker-compose.yml index c67e6a7..e189bb6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,7 @@ services: EXT_ALLOW_PRIVATE_IPS: ${EXT_ALLOW_PRIVATE_IPS:-true} LOG_FORMAT: ${LOG_FORMAT:-text} LOG_LEVEL: ${LOG_LEVEL:-info} - BUNDLED_PACKAGES: ${BUNDLED_PACKAGES:-} + BUNDLED_PACKAGES: ${BUNDLED_PACKAGES:-*} # Dev seed users — ignored if ENVIRONMENT=production SEED_USERS: ${SEED_USERS:-alice:password123:user,bob:password456:user,charlie:password789:user} volumes: diff --git a/server/handlers/packages_update_test.go b/server/handlers/packages_update_test.go index d8c06dd..6c8a894 100644 --- a/server/handlers/packages_update_test.go +++ b/server/handlers/packages_update_test.go @@ -441,7 +441,8 @@ func TestExportPackage_NotFound(t *testing.T) { } } -// TestBundledInstall_DefaultAllowlist verifies the curated default set behavior. +// TestBundledInstall_DefaultAllowlist verifies that an empty allowlist +// installs nothing (defaultBundledPackages is empty since v0.6.17). func TestBundledInstall_DefaultAllowlist(t *testing.T) { stores := newTestStores(t) ctx := context.Background() @@ -449,7 +450,7 @@ func TestBundledInstall_DefaultAllowlist(t *testing.T) { bundledDir := t.TempDir() packagesDir := t.TempDir() - // Create packages: one in default set, one not + // Create packages — neither should be installed with empty defaults buildTestPkg(t, bundledDir, map[string]any{ "id": "notes", "title": "Notes", "type": "surface", "version": "1.0.0", }) @@ -457,19 +458,17 @@ func TestBundledInstall_DefaultAllowlist(t *testing.T) { "id": "regex-tester", "title": "Regex Tester", "type": "extension", "version": "1.0.0", }) - // Empty allowlist → curated defaults + // Empty allowlist → empty default set → nothing installed InstallBundledPackages(bundledDir, packagesDir, "", stores, nil) - // "notes" is in the default set → should be installed - pkg, err := stores.Packages.Get(ctx, "notes") - if err != nil || pkg == nil { - t.Fatal("notes should be installed (in default set)") + pkg, _ := stores.Packages.Get(ctx, "notes") + if pkg != nil { + t.Fatal("notes should NOT be installed (default set is empty)") } - // "regex-tester" is NOT in the default set → should be filtered pkg, _ = stores.Packages.Get(ctx, "regex-tester") if pkg != nil { - t.Fatal("regex-tester should NOT be installed (not in default set)") + t.Fatal("regex-tester should NOT be installed (default set is empty)") } }