Commit Graph

121 Commits

Author SHA1 Message Date
Jeremy Daer a5a0cda295 Fix tailscale serve: use localhost:PORT, helpful error on Linux
Tailscale serve only supports localhost or 127.0.0.1 as proxy targets.
On Linux, prompts user to run `sudo tailscale set --operator=$USER` if access denied.
2025-12-16 14:47:09 -08:00
David Heinemeier Hansson a755ecdec9 Must be run as sudo 2025-12-16 14:36:51 -08:00
Jeremy Daer c691d39ecf Integrate fizzy-saas as vendored gem at saas/
- Update Gemfile.saas to use path: "saas" instead of GitHub source
- Update config/database.yml to reference local saas/ directory
- Update bin/setup to source saas/bin/setup directly
- Remove redundant dotfiles (ruby-version, gitignore, rubocop, github workflows)
- Add saas/db exclusions to root rubocop config
2025-12-16 12:25:22 -08:00
Jeremy Daer bf6ddcb933 Add --tailscale flag to bin/dev for remote access (#2168)
Enables sharing dev sites over Tailscale serve. Uses port convention
4xxxx (prepending 4 to the dev port, echoing TLS 443) so multiple apps
can run simultaneously on different ports.

Usage: bin/dev --tailscale
2025-12-16 09:54:53 -08:00
Jeremy Daer 586015c3f9 Bundle drift detection and correction (#2101)
Gemfile.saas evals Gemfile, so shared gems should have identical versions
in both lockfiles. This adds bin/bundle-drift to detect and fix drift:

* `bin/bundle-drift check` compares shared gem versions
* `bin/bundle-drift correct` seeds Gemfile.lock from Gemfile.saas.lock
  and re-locks, letting Bundler prune SaaS-only gems while preserving
  shared versions

Adds drift check to bin/ci and GitHub CI. Corrects existing drift.
2025-12-11 21:32:34 -08:00
Jeremy Daer 2e17b78e08 bin/bundle-both (#2100)
Convenience for bundling both OSS and SaaS in lock-step:
```bash
> bin/bundle-both install

▸ OSS: Gemfile
bundle install
Bundle complete! 45 Gemfile dependencies, 161 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

▸ SaaS: Gemfile.saas
bundle install
Bundle complete! 63 Gemfile dependencies, 187 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
```
2025-12-11 20:26:06 -08:00
Kevin McConnell 6f002b66d8 In non-SaaS, run jobs in container by default 2025-12-10 12:32:35 +00:00
Stanko Krtalić 150e7caf03 Merge pull request #1908 from basecamp/install-runtime-and-ci-dependencies-on-mac
Install any runtime or ci dependencies in bin/setup on MacOS
2025-12-04 13:16:46 +01:00
Stanko K.R. ea826860e0 Install any runtime or ci dependencies in bin/setup 2025-12-04 09:16:30 +01:00
Mike Dalessio 6345aa4787 Update seeds to use @example.com
See also https://www.rfc-editor.org/rfc/rfc2606.html
2025-12-03 15:40:58 -05:00
David Heinemeier Hansson 737d92781b We now use GH actions instead of local CI since this project is public 2025-12-03 14:57:59 +01:00
Stanko K.R. 4885e220d7 Install missing tools needed by bin/setup 2025-12-03 11:40:39 +01:00
Joseph Lozano 9f527fa872 Fix bin/setup to explicitly use bash syntax for mise hook-env (#1813) 2025-12-02 13:43:37 -08:00
Jorge Manrubia cc6dcb6c5b Extract mysql setup to function 2025-12-01 12:51:06 +01:00
Jorge Manrubia 12de564176 Remove MySQL from default local development setup
https://3.basecamp.com/2914079/buckets/37331921/chats/9301300227@9334968661
2025-12-01 12:46:37 +01:00
Mike Dalessio bd19b91e05 Make sure the sqlite db is prepared in SAAS mode
Previously, the mysql database was prepared twice and sqlite not at all.
2025-11-29 14:09:55 -05:00
Mike Dalessio 027cfc02b1 Restore the ability to pass arguments to bin/rails test
The app is not loaded by rails/commands if there are additional arguments to "rails test"
2025-11-28 14:47:00 -05:00
Jorge Manrubia 81656ac260 Run SQLite in saas mode too 2025-11-28 15:53:58 +01:00
Jorge Manrubia f03fbba5ac Restore local CI, sensible setup for open source users 2025-11-28 15:53:58 +01:00
Jorge Manrubia cebd5d35f6 Revert "Remove local ci for now"
This reverts commit 7d6ed4a459f78d14767f1523b32553df84e627e5.
2025-11-28 15:53:58 +01:00
Jorge Manrubia 76d3ec0fc4 Remove local ci for now 2025-11-28 15:53:58 +01:00
Jorge Manrubia afbc0ca8e5 Include engine tests in saas mode
Notice that test is not a regular rake task you can enhance, but a hard-coded rails command.
2025-11-28 15:53:58 +01:00
Jorge Manrubia a5b02755b2 Add rake tasks for enabling/disabling saas mode 2025-11-28 15:53:58 +01:00
Jorge Manrubia 08cc02804d Invoke setup script in gem 2025-11-28 15:53:58 +01:00
Jorge Manrubia 3caf8d05a2 Remove line, this gets bin/setup confused, better to keep the rails output clean 2025-11-28 15:53:58 +01:00
Jorge Manrubia 97c280ddb1 Prepare bin/setup to work with SAAS env variable / txt file 2025-11-28 15:53:58 +01:00
Jorge Manrubia fb9aa5dfac Extract common method to configure bundle 2025-11-28 15:53:48 +01:00
Jorge Manrubia 5d32e40756 Use kamal from the 2025-11-28 15:53:48 +01:00
Jorge Manrubia 2c7079393a Move kamal deploy config to the gem 2025-11-28 15:53:48 +01:00
Jorge Manrubia 102827ff8d Use bundler groups instead of conditional
So that the gemfile.lock does not change across invocations
2025-11-28 15:53:48 +01:00
Jorge Manrubia e1e9a01720 Make open source the default, and check for sass instead 2025-11-28 15:53:48 +01:00
Mike Dalessio f0b2603ba4 Rename bin/gitleaks to gitleaks-audit
to prevent script recursion if bin is in user's $PATH
2025-11-26 21:36:01 -05:00
Mike Dalessio 7f46063c25 Introduce gitleaks to the codebase
- `bin/setup` installs gitleaks
- add `gitleaks dir` command to CI
- configure gitleaks to ignore tmp, log, and encrypted files
- tag existing false positives with `gitleaks:allow`
- add historical false positives to the ignore list
2025-11-26 15:46:47 -05:00
Kevin McConnell 11a38a4526 Initial (wip) staging deployment
This adds an initial configuration for staging. Note that we are doing
this ahead of having the full infrastructure in all 3 DCs. So this
this will result in some cross-DC writes for now (e.g. we have a single cache in
IAD). We'll correct this as the infrastructure becomes available.

We'll also run jobs on every app server, until we split them out to
separate instances.
2025-11-17 09:12:41 -05:00
Mike Dalessio 93b2cef419 Delete unused script migrate-primary-db 2025-11-17 09:11:57 -05:00
Mike Dalessio 29cf6485e4 Drop the migrations audit from CI 2025-11-17 09:11:57 -05:00
Mike Dalessio 4ad1718d86 Stub searchable functionality and start to restore login/auth 2025-11-17 09:11:42 -05:00
Mike Dalessio 362427b383 More changes to get setup and tests to run 2025-11-17 09:11:42 -05:00
Mike Dalessio d41d50d52b Account.sole → Current.account
and some other de-tenant changes, including removing the controller
tenanting concerns
2025-11-17 09:11:40 -05:00
Mike Dalessio 4d3c265042 Rip out activerecord-tenanting
Co-authored-by: Stanko K.R. <stanko@stanko.io>
2025-11-17 09:11:35 -05:00
Kevin McConnell 9fa68c0ea9 Add Trilogy adapter 2025-11-17 09:11:28 -05:00
Kevin McConnell ea64ba6f9e Use regular db:prepare now 2025-11-17 09:11:28 -05:00
Kevin McConnell f66544b97a Remove testbed 2025-11-17 09:11:28 -05:00
Kevin McConnell e5bbe6cf64 Remove Beamer 2025-11-17 09:11:28 -05:00
Aaron Santos d0e45a0852 Use fizzy as app name on deploy notifications 2025-11-05 13:00:00 +08:00
Mike Dalessio 9ca63db91c bin/setup no longer resets when migrations are pending 2025-11-04 07:56:09 -05:00
David Heinemeier Hansson d6deb3ac5f Setup signoff too 2025-11-02 08:22:32 +01:00
Mike Dalessio eb471cc9d2 bin/setup installs libvips 2025-10-29 21:08:45 -04:00
Aaron Santos 6c672c73e4 Send notification to Dash on deploys 2025-10-29 10:27:13 +08:00
Mike Dalessio 9242bac2d5 Make migration audit more robust
ref: https://fizzy.37signals.com/5986089/cards/2542
2025-10-27 09:38:50 -04:00