Compare commits

...

9 Commits

Author SHA1 Message Date
wmantly 9c10b3b1d1 Merge pull request #55 from theta42/bump-1.1.4
Bump proxy and sso-manager-node submodule pins to v1.1.4
2026-07-16 17:48:36 -04:00
wmantly 7a65841d2d Bump proxy and sso-manager-node submodule pins to v1.1.4
Picks up: unified master-branch protection backed by real CI on all
3 repos, a ppolicy pwdLockout fix in sso-manager-node, and
white-label support (conf-driven title/logo) in both apps.
2026-07-16 17:48:13 -04:00
wmantly 7fd2b828ab Merge pull request #54 from theta42/add-ci
Add CI: shellcheck setup.sh, syntax-check bootstrap.js
2026-07-16 17:03:12 -04:00
wmantly c7b90b7e7c setup.sh: fix shellcheck findings (SC2115, SC2155 x2, SC2034)
- rm -rf "$BACKUP_DIR/$old" -> "${BACKUP_DIR:?}/$old": if BACKUP_DIR
  ever ended up empty, this was rm -rf /$old. Low practical risk
  (BACKUP_DIR is a hardcoded ./backups default), but cheap to harden.
- export FOO="$(...)" split into assign-then-export so a failing
  command substitution isn't masked by export's own exit status.
- Removed CLIENT_SECRET=$(getval CLIENT_SECRET): extracted from
  bootstrap's output but never used afterward (already written
  directly into proxy-secrets.js by bootstrap.js itself).
2026-07-16 17:02:29 -04:00
wmantly a6653cfb96 Add CI: shellcheck setup.sh, syntax-check bootstrap.js
theta-env has no app code of its own to unit-test (it orchestrates
the proxy/sso-manager-node submodules) -- this catches the one thing
that can actually break silently: setup.sh and bootstrap.js.
2026-07-16 17:00:27 -04:00
wmantly 9cf2d70226 Merge pull request #53 from theta42/add-changelog-bump-1.1.3
Add CHANGELOG.md; bump submodules to v1.1.3
2026-07-16 16:08:29 -04:00
wmantly e5f3e1714f Add CHANGELOG.md; bump submodules to v1.1.3 (closes #43)
Adds a Keep-a-Changelog-style CHANGELOG.md, linked from README and
docs/index.md, closing the "no changelog or versioning scheme"
issue. Bumps proxy and sso-manager-node to v1.1.3 (both add their
own CHANGELOG.md, served in-app at /docs/changelog).
2026-07-16 16:08:17 -04:00
wmantly 4fe1c41b82 Merge pull request #52 from theta42/docs-nav-and-bump-1.1.2
docs: link Quickstart/Architecture/Standalone from Home; bump submodules to v1.1.2
2026-07-16 15:40:41 -04:00
wmantly c60e745665 docs: link Quickstart/Architecture/Standalone from Home; bump submodules to v1.1.2
docs/index.md (the published site's home page) never linked to
architecture.md, quickstart.md, or standalone.md -- they were only
reachable by direct URL. Added a "More docs" section linking all
three.

Bumps proxy and sso-manager-node to v1.1.2 (air-gap fixes + in-app
/docs on both).
2026-07-16 15:40:25 -04:00
7 changed files with 119 additions and 7 deletions
+41
View File
@@ -0,0 +1,41 @@
name: Lint
# theta-env has no app code of its own to unit-test (it orchestrates the
# proxy/sso-manager-node submodules) -- this checks the one thing that can
# actually break silently: setup.sh and bootstrap.js.
on:
pull_request:
branches:
- master
push:
branches-ignore:
- master
jobs:
shellcheck:
name: Shellcheck setup.sh
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Syntax check
run: bash -n setup.sh
- name: Shellcheck
run: shellcheck -S warning setup.sh
bootstrap-syntax:
name: Syntax check bootstrap.js
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22.x
- name: Syntax check
run: node --check bootstrap/bootstrap.js
+55
View File
@@ -0,0 +1,55 @@
# Changelog
All notable changes to this project are documented here. Format loosely
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions
correspond to git tags (`vX.Y.Z`). Entries here cover theta-env's own
orchestration code; see each submodule's own `CHANGELOG.md`
([proxy](https://github.com/theta42/proxy/blob/master/CHANGELOG.md),
[sso-manager-node](https://github.com/theta42/sso-manager-node/blob/master/CHANGELOG.md))
for what changed inside the apps it composes.
## [Unreleased]
## [1.1.3] - 2026-07-16
### Added
- `CHANGELOG.md` (this file). Closes [#43](https://github.com/theta42/theta-env/issues/43).
### Bumped
- proxy -> [v1.1.3](https://github.com/theta42/proxy/releases/tag/v1.1.3)
- sso-manager-node -> [v1.1.3](https://github.com/theta42/sso-manager-node/releases/tag/v1.1.3)
## [1.1.2] - 2026-07-16
### Changed
- `docs/index.md` (the published site's home page) never linked to `architecture.md`, `quickstart.md`, or `standalone.md` — added a "More docs" section so they're reachable from the site instead of only by direct URL.
### Bumped
- proxy -> [v1.1.2](https://github.com/theta42/proxy/releases/tag/v1.1.2)
- sso-manager-node -> [v1.1.2](https://github.com/theta42/sso-manager-node/releases/tag/v1.1.2)
## [1.1.1] - 2026-07-16
### Changed
- `setup.sh` now pins `proxy` and `sso-manager-node` to their latest release tag (`vX.Y.Z`) instead of the tip of `master`. A rebuild now always lands on a tagged, versioned release of each app rather than whatever was most recently merged upstream.
### Bumped
- proxy -> [v1.1.1](https://github.com/theta42/proxy/releases/tag/v1.1.1)
- sso-manager-node -> [v1.1.1](https://github.com/theta42/sso-manager-node/releases/tag/v1.1.1)
## [1.1.0] - 2026-07-16
First tagged release. Establishes the `vX.Y.Z` tag convention going forward.
### Added
- `setup.sh` now reports which submodules actually moved to a newer commit during an update, instead of updating silently.
### Bumped
- proxy -> [v1.1.0](https://github.com/theta42/proxy/releases/tag/v1.1.0)
- sso-manager-node -> [v1.1.0](https://github.com/theta42/sso-manager-node/releases/tag/v1.1.0)
[Unreleased]: https://github.com/theta42/theta-env/compare/v1.1.3...HEAD
[1.1.3]: https://github.com/theta42/theta-env/compare/v1.1.2...v1.1.3
[1.1.2]: https://github.com/theta42/theta-env/compare/v1.1.1...v1.1.2
[1.1.1]: https://github.com/theta42/theta-env/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/theta42/theta-env/releases/tag/v1.1.0
+6
View File
@@ -476,3 +476,9 @@ before building — not the tip of `master` — so each run builds the newest
tagged release of each app, not whatever's most recently merged upstream. To tagged release of each app, not whatever's most recently merged upstream. To
lock to the pinned commits (offline rebuild, or a deliberate pin), run lock to the pinned commits (offline rebuild, or a deliberate pin), run
`SKIP_SUBMODULE_UPDATE=1 ./setup.sh`. `SKIP_SUBMODULE_UPDATE=1 ./setup.sh`.
See [CHANGELOG.md](CHANGELOG.md) for what changed in each theta-env release
(and each submodule's own `CHANGELOG.md` —
[proxy](https://github.com/theta42/proxy/blob/master/CHANGELOG.md),
[sso-manager-node](https://github.com/theta42/sso-manager-node/blob/master/CHANGELOG.md)
— for what changed inside the apps themselves).
+9
View File
@@ -58,6 +58,15 @@ any time to converge the stack to `./config/`. For the full config reference,
architecture, and running each project standalone, see the architecture, and running each project standalone, see the
**[GitHub repository](https://github.com/theta42/theta-env)**. **[GitHub repository](https://github.com/theta42/theta-env)**.
## More docs
- **[Quickstart](quickstart.html)** — prerequisites and a step-by-step first run.
- **[Architecture](architecture.html)** — how the pieces fit together.
- **[Running each project standalone](standalone.html)** — using the SSO
Manager or the proxy on their own, without theta-env.
- **[Changelog](https://github.com/theta42/theta-env/blob/master/CHANGELOG.md)**
— what changed in each release.
## Related projects ## Related projects
- **[SSO Manager](https://theta42.github.io/sso-manager-node/)** — the OIDC - **[SSO Manager](https://theta42.github.io/sso-manager-node/)** — the OIDC
+1 -1
Submodule proxy updated: 5a685e9dd7...88cf5cf281
+5 -4
View File
@@ -558,7 +558,7 @@ backup_before_rebuild() {
# Only prune real backup dirs — skip symlinks (a stray symlink could # Only prune real backup dirs — skip symlinks (a stray symlink could
# point rm at an arbitrary tree) and non-dir entries. # point rm at an arbitrary tree) and non-dir entries.
[[ -d "$BACKUP_DIR/$old" && ! -L "$BACKUP_DIR/$old" ]] || continue [[ -d "$BACKUP_DIR/$old" && ! -L "$BACKUP_DIR/$old" ]] || continue
rm -rf "$BACKUP_DIR/$old" || true rm -rf "${BACKUP_DIR:?}/$old" || true
removed=$((removed + 1)) removed=$((removed + 1))
done < <(ls -1 "$BACKUP_DIR" 2>/dev/null | sort -r | tail -n +$((keep + 1))) done < <(ls -1 "$BACKUP_DIR" 2>/dev/null | sort -r | tail -n +$((keep + 1)))
[[ "$removed" -gt 0 ]] && info " pruned $removed old backup(s) (keeping $keep)." [[ "$removed" -gt 0 ]] && info " pruned $removed old backup(s) (keeping $keep)."
@@ -572,7 +572,8 @@ backup_before_rebuild
# hash from inside the Docker build context. Resolve it on the host (where # hash from inside the Docker build context. Resolve it on the host (where
# the submodule DOES resolve correctly) and pass it in as a build arg; see # the submodule DOES resolve correctly) and pass it in as a build arg; see
# docker-compose.yml and sso-manager-node's Dockerfile.openldap. # docker-compose.yml and sso-manager-node's Dockerfile.openldap.
export SSO_GIT_COMMIT="$(git -C sso-manager-node rev-parse --short HEAD 2>/dev/null || echo unknown)" SSO_GIT_COMMIT="$(git -C sso-manager-node rev-parse --short HEAD 2>/dev/null || echo unknown)"
export SSO_GIT_COMMIT
info "Building + starting sso-manager (first run builds the image; this takes a while)..." info "Building + starting sso-manager (first run builds the image; this takes a while)..."
"${COMPOSE[@]}" up -d --build sso-manager "${COMPOSE[@]}" up -d --build sso-manager
@@ -629,7 +630,6 @@ BOOTSTRAP_OUT=$("${COMPOSE[@]}" exec -T sso-manager node /bootstrap/bootstrap.js
getval() { echo "$BOOTSTRAP_OUT" | grep -m1 "^$1=" | cut -d= -f2-; } getval() { echo "$BOOTSTRAP_OUT" | grep -m1 "^$1=" | cut -d= -f2-; }
CLIENT_ID=$(getval CLIENT_ID) CLIENT_ID=$(getval CLIENT_ID)
CLIENT_SECRET=$(getval CLIENT_SECRET)
ALREADY_CONFIGURED=$(getval ALREADY_CONFIGURED) ALREADY_CONFIGURED=$(getval ALREADY_CONFIGURED)
[[ -n "$CLIENT_ID" ]] || die "bootstrap did not return CLIENT_ID:\n${BOOTSTRAP_OUT}" [[ -n "$CLIENT_ID" ]] || die "bootstrap did not return CLIENT_ID:\n${BOOTSTRAP_OUT}"
@@ -641,7 +641,8 @@ fi
# ── 6. Start the proxy, wait for health ─────────────────────────────────────── # ── 6. Start the proxy, wait for health ───────────────────────────────────────
# PROXY_GIT_COMMIT: same reasoning as SSO_GIT_COMMIT above. # PROXY_GIT_COMMIT: same reasoning as SSO_GIT_COMMIT above.
export PROXY_GIT_COMMIT="$(git -C proxy rev-parse --short HEAD 2>/dev/null || echo unknown)" PROXY_GIT_COMMIT="$(git -C proxy rev-parse --short HEAD 2>/dev/null || echo unknown)"
export PROXY_GIT_COMMIT
info "Building + starting proxy (first run builds the image; this takes a while)..." info "Building + starting proxy (first run builds the image; this takes a while)..."
"${COMPOSE[@]}" up -d --build proxy "${COMPOSE[@]}" up -d --build proxy