82 Commits
Author SHA1 Message Date
Kasra Bigdeli a91328fb76 test: cover build queue double advancement 2026-10-05 20:46:46 -07:00
Kasra Bigdeli 3811286def Merge pull request #2509 from libredb/fix/queued-build-promise
Settle the promise of a queued build when it finishes
2026-10-05 20:43:09 -07:00
Kasra Bigdeli cfedd66c78 Merge pull request #2507 from libredb/fix/project-name-leading-digit
Run build / build (push) Canceled after 0s
Run lint / run-lint (push) Canceled after 0s
Build and push the edge image / run-pre-checks (push) Canceled after 0s
Build and push the edge image / prepare-frontend (push) Canceled after 0s
Build and push the edge image / build-publish-docker-hub (push) Canceled after 0s
Run formatter / check-code-formatting (push) Canceled after 0s
Allow project names that start with a number
2026-10-05 09:31:39 -07:00
cevheri 582865118f fix: settle the promise of a queued build when it finishes
A build scheduled while another one ran was queued, and the promise handed to its caller never settled: onBuildFinished started the queued build and dropped its result. A one-click deploy registered during another app's build therefore stayed at "Registering" for good, although the build ran. Pass the result to the queued promise instead.
2026-10-05 18:54:55 +03:00
cevheri cfe716004d fix: allow project names that start with a number
be5d55d allowed a leading number in app names. A one-click deploy with
more than one service creates a project named after the app, so with the
old project rule such a name failed at "Creating project".

Fixes #2505
2026-10-05 12:53:04 +03:00
cevheri be9192c5f5 fix: check one-click app names before creating anything
A one-click deploy with more than one service checked each app name only
when it registered that app. A later name that was too long or already
taken failed after the project and the earlier apps were created, and
those stayed behind. Check every name before the first step instead, and
say the length limit in the error.

Fixes #2504
2026-10-05 12:53:04 +03:00
Kasra Bigdeli 2fc9d78e3a test: drain failed deploy response 2026-09-22 20:57:23 -07:00
Kasra Bigdeli 8b65665633 test: cover one-click deploy route handling 2026-09-22 20:57:01 -07:00
Kasra Bigdeli 73dc7cd1cf test: remove helper-specific one-click tests 2026-09-22 19:45:41 -07:00
Kasra Bigdeli a44a1be950 test: cover one-click deploy without values 2026-09-22 18:48:17 -07:00
Kasra Bigdeli 8629c4b08f test: cover omitted one-click values and job cleanup 2026-09-22 18:48:13 -07:00
Kasra Bigdeli e7c3faf7ee test: reject malformed backup without config 2026-09-21 22:29:58 -07:00
Kasra Bigdeli 275dedc36d Merge master into fix/restore-malformed-backup-layout 2026-09-21 22:28:56 -07:00
Kasra Bigdeli f11f2b1f26 test: restore malformed nested backup layout 2026-09-21 22:21:22 -07:00
Kasra Bigdeli d0814d67f1 test: cover one-time backup download failures 2026-09-21 21:51:19 -07:00
Kasra Bigdeli 340b20029c style: format backup copy tests 2026-09-21 21:50:10 -07:00
Kasra Bigdeli 576d0699a4 test: cover backup copy layout and failures 2026-09-21 21:49:58 -07:00
Kasra Bigdeli 369fcf0adc fix: return unauthorized for invalid app deploy tokens 2026-09-21 18:58:03 -07:00
Kasra Bigdeli f124c6a8b2 fix: reject duplicate custom domains across apps 2026-09-21 07:08:19 -07:00
Kasra Bigdeli a1682fa614 test: cover custom port persistence 2026-09-20 20:01:10 -07:00
Kasra Bigdeli 47a270f819 Keep cleanup assertion failures visible 2026-09-16 19:39:54 -07:00
Kasra Bigdeli 43d4ef8dda Test certificate cleanup renewal flow 2026-09-16 19:21:44 -07:00
Kasra Bigdeli 3ad2b12392 Simplify orphan certificate cleanup inputs 2026-09-16 18:09:17 -07:00
Kasra Bigdeli 9c35b9f8c8 Delete orphaned certificates after expiration grace period 2026-09-16 17:59:10 -07:00
Kasra Bigdeli 80f07b8740 Make orphan certificate deletion race-safe 2026-09-16 17:44:09 -07:00
Kasra Bigdeli b46542cab5 Delete expiring orphaned certificates before renewal 2026-09-15 22:34:36 -07:00
Kasra Bigdeli 43ae30f713 Test SSH clone return behavior 2026-09-14 15:18:17 -07:00
Kasra Bigdeli 66d8f05608 Preserve fs-extra APIs in GitHelper test 2026-09-14 12:51:45 -07:00
Kasra Bigdeli 76bdfa316b Add regression tests for SSH git clones 2026-09-14 12:50:13 -07:00
Kasra Bigdeli 877ce38015 Upgrade EJS and replace Moment 2026-09-06 23:15:16 -07:00
Kasra Bigdeli 8979791bbf Upgrade lint tooling to ESLint 10 2026-09-06 22:48:07 -07:00
Kasra Bigdeli d8b64ab04b Add coverage for version update checks 2026-09-06 22:24:53 -07:00
Kasra Bigdeli e9bea1df20 Replace deprecated request dependency 2026-09-06 22:02:45 -07:00
Kasra Bigdeli 146168b691 Add BuildKit failure path coverage 2026-08-20 12:17:30 -04:00
Kasra Bigdeli 9b8bf877c2 Release 1.15.3 2026-08-16 17:44:45 -04:00
Kasra Bigdeli 3e3e925470 Test keyed one-click service maps 2026-08-08 13:36:20 -07:00
Kasra Bigdeli 4a095fc82d Expose and protect legacy app name flag 2026-07-19 22:06:25 -07:00
Kasra Bigdeli fb90f2ade4 Merge pull request #2421 from caprover/agent/add-legacy-service-dns-alias-v2
Preserve legacy DNS names for new app services
2026-07-19 16:37:00 -07:00
Kasra Bigdeli ecc106b0db Merge pull request #2328 from caprover/removed-captain-prefixes
Removing the **captain** prefix for service and volume names
2026-07-19 16:33:57 -07:00
Kasra Bigdeli 18bff1f125 Test inherited app-name rejection 2026-07-19 15:34:03 -07:00
Kasra Bigdeli fe2819ca82 Test bulk deletion missing-app validation 2026-07-19 15:03:14 -07:00
Kasra Bigdeli e0e1a5f77a Remove network metadata preservation test 2026-07-19 11:44:20 -07:00
Kasra Bigdeli 40cb40dbf8 Remove orphaned service collision test 2026-07-19 11:08:52 -07:00
Kasra Bigdeli f946ed8e98 Test alias preservation across network rebuilds 2026-07-18 23:26:58 -07:00
Kasra Bigdeli d1f06c1398 Test DNS alias compatibility and collisions 2026-07-18 23:19:12 -07:00
Kasra Bigdeli e301b90039 Add naming migration regression tests 2026-07-18 22:27:38 -07:00
Kasra Bigdeli 3699872941 Test orphan certificate observation 2026-07-17 17:30:02 -07:00
Kasra Bigdeli 869aace8f3 Test orphaned certificate lifecycle 2026-07-16 22:19:42 -07:00
Kasra Bigdeli 198eaa0242 Prevent malformed config from being overwritten 2026-07-16 17:31:40 -07:00
Hamza Younas bf1beb5c99 Append leader hostname to backup filename (#1257)
Backup tar files currently use a filename that only encodes a
timestamp and the leader's IP, e.g.

    caprover-backup-2026_04_10-19_30_00-1744312200000-ip-1_2_3_4.tar

When you run several CapRover instances behind a NAT or with
similar IPs, that filename is not enough to tell the backups apart
after downloading them.

This appends the swarm leader's hostname to the existing filename:

    caprover-backup-...-ip-1_2_3_4-host-captain-prod.tar

The hostname is sanitized to a portable charset ([A-Za-z0-9._-]) so
it is safe in filesystems and HTTP Content-Disposition headers, and
the segment is omitted entirely when the leader has no hostname, so
existing single-node setups see no change beyond an additional
suffix when one is available.

The sanitization step is exposed as a small static helper
(`BackupManager.sanitizeHostnameForFilename`) so it can be unit
tested in isolation. Top-level cleanup hooks in the existing test
file are now gated on `process.env.CI`, matching how the
integration tests in the same file are gated, so the new pure
helper tests can run on a developer workstation.

Closes #1257
2026-04-10 19:56:29 +05:00