Donal McBreen
c884f2316d
Per destination latest image tag
...
We tag the deployed image with the latest image tag when deploying. But
if we are deploying multiple destinations to the same host they'll
conflict with each other.
2024-03-27 09:43:21 +00:00
Donal McBreen
786454f2ee
Merge pull request #502 from latyshev/main
...
Fix accessory name checking that is passing to command `kamal accessory`
2024-03-26 13:58:26 +00:00
Donal McBreen
827e18480d
Merge pull request #732 from basecamp/always-send-clear-env
...
Always send the clear env to the container
2024-03-26 11:01:59 +00:00
Donal McBreen
9f9c9ccbde
Merge pull request #742 from igor-alexandrov/remove_service_role_dest
...
Removed unused method from Kamal::Commands::App
2024-03-26 08:10:36 +00:00
Evgeny Latyshev
981d391d4d
Fix accessory name check in with_accessory
2024-03-26 09:29:34 +03:00
Igor Alexandrov
900041001a
Removed unused method
2024-03-25 22:48:23 +04:00
Donal McBreen
5481fbb973
Test that we pull in env host variables
...
Now that clear env variables specified on the command line we can check
that values specified as `${VAR}` are pulled in from the host.
2024-03-25 12:26:37 +00:00
Donal McBreen
49afdbb09a
Always send the clear env to the container
...
Secret and clear env variables have different lifecycles. The clear ones
are part of the repo, so it makes sense to always deploy them with the
rest of the repo.
The secret ones are external so we can't be sure that they are up to
date, therefore they require an explicit push via `envify` or `env push`.
We'll keep the env file, but now it just contains secrets. The clear
values are passed directly to `docker run`.
2024-03-25 11:42:27 +00:00
Donal McBreen
5f58575b62
Merge pull request #730 from igor-alexandrov/confirming_dialogs
...
Added -y option to kamal traefik reboot command
2024-03-22 15:14:44 +00:00
Igor Alexandrov
3d26fa8ddd
Updated confirmation text for the traefik reboot command
2024-03-22 14:27:18 +04:00
Donal McBreen
ea9f8b488d
Merge pull request #735 from basecamp/extract-app-boot-steps
...
Extract app boot steps
2024-03-22 09:35:04 +00:00
Donal McBreen
83472af32c
Merge pull request #734 from basecamp/rubocop-rails-omakase
...
Switch to rubocop-rails-omakase rubocop rules
2024-03-22 09:33:25 +00:00
Donal McBreen
e99e1955b8
Extract app boot steps
...
The Kamal::Cli::App#boot has a lot to do, so extract the steps to make
things clearer.
2024-03-22 09:21:52 +00:00
Donal McBreen
30e0c44396
Switch to rubocop-rails-omakase rubocop rules
...
No code changes required
2024-03-21 13:47:20 +00:00
Donal McBreen
20d6e5365e
Merge pull request #733 from basecamp/integration-test-roles
...
Integration test roles
2024-03-21 13:43:33 +00:00
Donal McBreen
72ace2bf0b
Add an integration test for roles
...
Add an app with roles to the integration tests. We'll deploy two web
containers and one worker. The worker just sleeps, so we are testing
that the container has booted.
2024-03-21 13:30:53 +00:00
Donal McBreen
ba40d026d0
Make integration test app to deploy configurable
2024-03-21 12:09:59 +00:00
Igor Alexandrov
0f13600ba3
Fixed Traefik integration test
2024-03-21 09:25:07 +04:00
Igor Alexandrov
bbf952952d
Added -y option to kamal traefik reboot command
2024-03-20 22:00:13 +04:00
Donal McBreen
474b76cf47
Merge pull request #701 from basecamp/rubocop
...
Add Rubocop
2024-03-20 10:59:35 +00:00
Donal McBreen
3ecfb3744f
Add Rubocop
...
- Pull in the 37signals house style
- Autofix violations
- Add to CI
2024-03-20 10:23:02 +00:00
Donal McBreen
c985fa33d1
Bump version for 1.4.0
2024-03-20 09:27:23 +00:00
Donal McBreen
e8b9f8907f
Merge pull request #715 from basecamp/use-role-not-string-in-config
...
Pass around Roles instead of Strings
2024-03-08 08:55:53 +00:00
Donal McBreen
4966d52919
Pass around Roles instead of Strings
...
Avoid looking up roles by names everywhere. This avoids the awkward
role/role_config naming as well.
2024-03-08 08:44:35 +00:00
Donal McBreen
52bb40add0
Merge pull request #656 from DanielJackson-Oslo/informative-error-message-on-lock
...
Informative message on lock error
2024-03-07 11:16:18 +00:00
Donal McBreen
73a9276cdd
Fix up app command tests
2024-03-07 11:11:20 +00:00
Donal McBreen
8c0784ed4a
Merge pull request #634 from alhafoudh/main
...
Allow lines option to be configured when following app logs
2024-03-07 11:11:08 +00:00
Donal McBreen
089a2d3bba
Merge pull request #710 from basecamp/install-wget-or-curl
...
Install docker with curl or wget
2024-03-07 11:01:30 +00:00
Donal McBreen
bd76d23916
Merge pull request #593 from CleverFew/role_logging_config
...
Role specific logging configuration
2024-03-07 10:53:34 +00:00
Donal McBreen
fa37fcd10c
Merge pull request #585 from tsvallender/docker-network
...
Add docker-setup hook
2024-03-07 10:51:08 +00:00
Donal McBreen
f5dc0858b0
Update error message to include wget
2024-03-07 10:49:32 +00:00
Donal McBreen
9dddb140b1
Merge pull request #558 from GeNiuS69/add-skip_push-to-setup
...
Add --skip_push option to setup
2024-03-07 10:26:41 +00:00
Donal McBreen
26b1d57c90
Install docker with curl or wget
...
If curl is not available to download the docker install script, try
with wget instead.
If neither is available or both fail, return a simple failing script
so that we don't carry on regardless.
Fixes: https://github.com/basecamp/kamal/issues/395
2024-03-07 10:16:03 +00:00
Donal McBreen
b94199415f
Convert combine by: '||' to any
2024-03-07 09:10:49 +00:00
Trevor Vallender
f69c45b7ea
Add docker-setup hook
...
This allows the user to make any necessary configuration changes to
Docker before setting up any containers, allowing those configuration
changes to take effect from the outset.
2024-03-06 19:01:48 +00:00
Donal McBreen
32a2ae5b2c
Merge pull request #708 from nickhammond/valid_service_name
...
Remove warning for valid service name
2024-03-06 16:22:04 +00:00
Nick Hammond
37544a6383
Merge branch 'basecamp:main' into valid_service_name
2024-03-06 09:09:13 -07:00
Nick Hammond
a1bc6d61af
Switch the regex ordering for hyphen and underscore for service name to remove warning
2024-03-06 09:08:17 -07:00
Donal McBreen
5c32be10f1
Merge pull request #707 from basecamp/boot-strategy-min-limit-1
...
Ensure a minimum limit of 1 for % boot strategy
2024-03-06 16:06:35 +00:00
Donal McBreen
dc5af03593
Update tests to match single quotes
2024-03-06 16:04:31 +00:00
Donal McBreen
1abd029ea0
Merge pull request #696 from dorianmariecom/patch-1
...
Replace \`service\` by 'service' so it doesn't get executed by bash
2024-03-06 16:04:11 +00:00
Donal McBreen
c4d0d3e5eb
Merge pull request #704 from basecamp/escape-registry-username-password
...
Escape the docker registry username and password
2024-03-06 15:58:46 +00:00
Donal McBreen
46e7cf8e78
Merge pull request #706 from basecamp/kamal-remove-noop
...
Ensure `kamal remove` completes without setup
2024-03-06 15:58:34 +00:00
Donal McBreen
c7cfc074b6
Ensure a minimum limit of 1 for % boot strategy
...
Fixes: https://github.com/basecamp/kamal/issues/681
2024-03-06 15:51:35 +00:00
Donal McBreen
c10f43e365
Merge pull request #692 from nickhammond/valid_service_name
...
Add a simple validation to the service name to prevent setup issues
2024-03-06 15:24:39 +00:00
Donal McBreen
8e2184d65e
Ensure kamal remove completes without setup
...
If `kamal setup` has not run or errored out part way through,
`kamal remove` should still complete.
Fixes: https://github.com/basecamp/kamal/issues/629
2024-03-06 14:59:26 +00:00
Donal McBreen
2be397b679
Escape the docker registry username and password
...
Fixes: https://github.com/basecamp/kamal/issues/278
2024-03-06 11:04:55 +00:00
Donal McBreen
cc8c508556
Merge branch 'main' into valid_service_name
2024-03-05 11:02:33 +00:00
Nick Hammond
3b16e047c5
Add hyphen to the allowed character list for service name
2024-03-04 10:03:22 -07:00
Donal McBreen
6563393d9a
Merge pull request #627 from aishek/626-mention-sprockets-config-in-deploy-template
...
Mention Sprockets config in deploy template
2024-03-04 15:31:41 +00:00
Ahmed Al Hafoudh
91f350fcce
Merge branch 'basecamp:main' into main
2024-03-04 16:22:28 +01:00
Nick Lozon
e4e9664049
use double quotes
2024-03-04 10:10:51 -05:00
Nick Lozon
1acef5221f
test deep_merge
2024-03-04 10:06:30 -05:00
Nick Lozon
788a57e85e
role logging_args method, use in app
2024-03-04 10:06:30 -05:00
Nick Lozon
f9a934a01f
configuration logging accessor
2024-03-04 10:06:30 -05:00
Aleksandr Borisov
f286fdc374
Update lib/kamal/cli/templates/deploy.yml
...
Co-authored-by: Donal McBreen <dmcbreen@gmail.com >
2024-03-04 16:26:11 +03:00
Donal McBreen
828cca322b
Merge pull request #650 from basecamp/retained-containers
...
Config the number of containers to keep
2024-03-04 12:05:35 +00:00
Donal McBreen
cb030e8751
Merge pull request #680 from igor-alexandrov/traefik-2.10
...
Bump default Traefik image to 2.10
2024-03-04 11:58:37 +00:00
Donal McBreen
6892abb4be
Config the number of containers to keep
...
By default we keep 5 containers around for rollback. The containers
don't take much space, but the images for them can.
Make the number of containers to retain configurable, either in the
config with the `retain_containers` setting on the command line
with the `--retain` option.
2024-03-04 11:55:45 +00:00
Donal McBreen
bcfd0ca88a
Merge pull request #645 from juan-apa/fix-missing-netscp-require
...
require missing net/scp dependency
2024-03-04 11:49:43 +00:00
Donal McBreen
2e8071a5b3
Merge pull request #608 from CleverFew/fix_accessory_cli_host_params
...
Accessory CLI respects `--hosts`
2024-03-04 11:31:50 +00:00
Donal McBreen
200e2686fd
Merge pull request #506 from rience/custom-acc-service-name
...
Allow for Custom Accessory Service Name
2024-03-04 10:57:10 +00:00
Donal McBreen
db94789dc1
Merge pull request #434 from rience/ssh-agent-support
...
Supports Passing SSH Agent Socket to Build Options
2024-03-04 10:54:47 +00:00
Dorian Marié
2bffc3bc74
Replace \service\ by 'service' so it doesn't get executed by bash
...
Fixes #694
2024-03-01 09:54:06 +01:00
Aleksandr Nigomatulin
064ace0598
Rollback passing invoke_options
2024-02-24 21:36:20 +06:00
Nick Hammond
a02af74dda
Add a simple validation to the service name to prevent setup issues
2024-02-22 09:47:48 -07:00
Aleksandr Nigomatulin
5ef384d666
Add test
2024-02-17 00:11:03 +06:00
Aleksandr Nigomatulin
b94dfe193b
Remove unnecessary code
2024-02-16 12:52:07 +06:00
Aleksandr Nigomatulin
bc6c027315
Upds according remarks
2024-02-16 11:56:58 +06:00
Krzysztof Adamski
1c2a45817a
Supports Passing SSH Args to Build Options
2024-02-15 14:20:20 +01:00
Krzysztof Adamski
b411356409
Allow for Custom Accessory Service Name
2024-02-15 11:12:18 +01:00
Igor Alexandrov
77e72e34ce
Bumped default Traefik image to 2.10
2024-02-13 16:00:02 +04:00
Daniel Jackson
ad04bb7556
Show context for lock status message on raise_if_locked
2024-01-23 09:17:15 +01:00
Daniel Jackson
1ec69d3764
Tell user about 'kamal lock help' when deploy fails due to a lock
2024-01-23 09:16:09 +01:00
Daniel Jackson
2d1a0dc9ba
Informative message on lock error
2024-01-22 09:11:17 +01:00
Juan Aparicio
c984db152f
require missing net/scp dependency
2024-01-11 17:00:13 -03:00
David Heinemeier Hansson
aea55480ad
Merge pull request #640 from basecamp/local-different-arch
...
Allow local builds using a different arch than native
2024-01-10 13:28:37 -08:00
dhh
5a09aa12ba
Allow local builds using a different arch than native
2024-01-10 13:00:48 -08:00
Donal McBreen
aca7796e9d
Bump version for 1.3.1
2024-01-10 08:56:34 +00:00
Donal McBreen
8b6d8306d1
Merge pull request #637 from basecamp/tests-wait-longer-for-health
...
Be a bit more patient during tests
2024-01-09 16:45:28 +00:00
Donal McBreen
bb50546467
Merge pull request #636 from basecamp/tests-clean-known-hosts
...
Fix Net::SSH::HostKeyMismatch between bin/test runs
2024-01-09 16:45:12 +00:00
Donal McBreen
acc6b9ad71
Merge pull request #635 from basecamp/missing-base64-require
...
Add a missing base64 require
2024-01-09 16:44:42 +00:00
Matthew Kent
9c681d4a38
Be a bit more patient during tests.
...
Seeing reasonably consistent local failures at 20 seconds.
2024-01-09 08:21:45 -08:00
Matthew Kent
2a8924b53c
Address Net::SSH::HostKeyMismatch seen locally between bin/test runs.
2024-01-09 08:21:30 -08:00
Matthew Kent
c5ae54d7d4
Add a missing base64 require.
...
Also, prepare for the moving of base64 from default to a bundled gem in ruby 3.4.
2024-01-09 08:21:10 -08:00
Donal McBreen
4b05068493
Merge pull request #638 from basecamp/rails-7.2-compatible-rubies
...
Rails 7.2 compatible Rubies
2024-01-09 12:10:29 +00:00
Donal McBreen
68eb549795
Update to actions/checkout@v4 to silence node warning
2024-01-09 11:35:10 +00:00
Donal McBreen
1a3dd52af4
Rails 7.2 compatible Rubies
...
1. Add Ruby 2.7 specific Gemfile that uses an older version of nokogiri
2. Rails edge doesn't support Ruby 2.7.0, so exclude it.
3. Add Ruby 3.3
4. Update Gemfile.lock to test against Rails 7.1.2 as it's the latest
version.
5. Remove continue-on-error from the matrix and always set to true
2024-01-09 11:13:11 +00:00
Ahmed Al Hafoudh
0d709a3fdb
Allow lines option to be configured when following app logs
2024-01-08 09:34:38 +01:00
Alexandr Borisov
414d29ae4e
Mention Sprockets config in deploy template
2024-01-04 09:18:38 +04:00
Nick Lozon
f8d8319c2f
better test description
2023-12-12 15:37:12 -05:00
Nick Lozon
f6a9d54902
unit test
2023-12-12 15:07:29 -05:00
Nick Lozon
b2fd5744fb
perform intersection on specified hosts
2023-12-12 14:39:33 -05:00
Donal McBreen
457f06da13
Merge pull request #598 from basecamp/fix-duplicate-role-env-vars
...
Fix duplicate role env vars
2023-11-29 10:09:34 +00:00
Matthew Kent
7fa53d90bd
Merge hashes to de-dupe the app and role envs.
...
This is better then adding them together which confusingly results in
both ENV vars in the same file, though based on the load order, they
worked anyway.
2023-11-28 15:59:03 -08:00
Donal McBreen
a155b7baab
Bump version for 1.3.0
2023-11-28 14:06:45 +00:00
Donal McBreen
175e3bc159
Merge pull request #507 from leonvogt/introduce-absolute-accessories-paths
...
Add option to set an absolute directory path
2023-11-28 10:15:27 +00:00
Donal McBreen
e3d8a2aa82
Merge pull request #594 from basecamp/match-primary-role-in-filters
...
Try to match primary_role when roles are filtered
2023-11-28 09:15:39 +00:00
Donal McBreen
0e067fb5e1
Merge pull request #595 from basecamp/error-on-filter-miss
...
Error out when roles or host filters don't match anything
2023-11-27 08:08:19 +00:00
Matthew Kent
63babecba7
Raise an error when either the filtered hosts or roles are empty.
...
Keeps us confusingly running things on the primary_host when nothing
matches.
2023-11-25 12:47:39 -08:00
Matthew Kent
79baa598fa
Make an effort to match the primary_role from a list of specific roles.
...
This is less surprising than picking the first role and first host.
2023-11-24 17:41:58 -08:00
Donal McBreen
b1dc188841
Remove stray file
2023-11-23 09:22:36 +00:00
Donal McBreen
635876bdb9
Merge pull request #523 from rmacklin/fix-error-message-in-pre-build-sample-hook
...
Fix duplicate error message in pre-build.sample
2023-11-16 08:51:22 +00:00
Donal McBreen
11521517fa
Merge pull request #550 from dmitrytrager/feature-name-all-for-accessory-reboot
...
feature: add NAME=all option for accessory reboot
2023-11-16 08:50:51 +00:00
Donal McBreen
610d9de3fd
Merge pull request #580 from happyscribe/feat/no-web
...
Allow Kamal to run without traefik
2023-11-16 08:44:45 +00:00
Donal McBreen
bf79df0f72
Bump version for 1.2.0
2023-11-15 14:48:11 +00:00
Donal McBreen
a0959b5afd
Merge pull request #573 from basecamp/pre-post-traefik-reboot-hooks
...
Pre and post Traefik reboot hooks
2023-11-15 14:01:40 +00:00
Yoel Cabo
7472e5dfa6
Merge remote-tracking branch 'origin/main' into feat/no-web
2023-11-14 12:11:18 +01:00
Yoel Cabo
887b7dd46d
Do not invoke healthcheck on deploy when no web role
2023-11-14 11:34:32 +01:00
Donal McBreen
77a79b299a
Merge pull request #583 from basecamp/wildcard-filters
...
Add wildcards to roles and hosts filters
2023-11-14 08:19:02 +00:00
Matthew Kent
efcb855db7
Advertise wildcard support.
2023-11-13 23:43:26 -08:00
Matthew Kent
7137850354
Add support for wildcard matches with '*' on roles and hosts.
...
eg:
--roles=*_chicago,*_tokyo
--hosts=app-*
Useful for targeted deploys.
2023-11-13 23:43:23 -08:00
Donal McBreen
8a85840a47
Merge pull request #582 from basecamp/allow-empty-roles
...
Add allow_empty_roles to control aborting on roles with no hosts.
2023-11-13 09:30:01 +00:00
Donal McBreen
80cc0c23d8
Merge pull request #578 from basecamp/enable-yaml-aliases
...
Enable yaml aliases
2023-11-13 09:28:40 +00:00
Donal McBreen
14a9129410
Merge pull request #577 from basecamp/set-primary-web-role
...
Support customizing the primary_web_role
2023-11-13 09:27:18 +00:00
Matthew Kent
60187cc3a4
Add allow_empty_roles to control aborting on roles with no hosts.
...
This added flexibility allows you to define base roles that might not
necessarily exist in each deploy destination.
2023-11-12 08:54:28 -08:00
Yoel Cabo
87cb8c1f71
fix: allow configurations without web roles
2023-11-12 09:39:07 +01:00
Matthew Kent
ed58ce6e61
Add test coverage with aliases.
2023-11-11 17:25:50 -08:00
Matthew Kent
263b4a4fb8
Enable aliases for more exotic templating situations.
...
This is super useful for DRY when configuring a number of roles and you
hit the limits of what's reasonable with ERB.
2023-11-11 17:25:50 -08:00
Matthew Kent
073f745677
Test for both undefined roles and missing traefik.
2023-11-11 12:57:52 -08:00
Matthew Kent
a9cc7c73d2
Handle an undefined primary_web_role.
2023-11-11 12:57:31 -08:00
Matthew Kent
6898e8789e
Further test the override.
2023-11-10 17:17:16 -08:00
Matthew Kent
d0ac6507e7
Add test coverage.
2023-11-10 16:49:37 -08:00
Matthew Kent
628a47ad88
Background for the new option.
2023-11-10 16:39:06 -08:00
Matthew Kent
47f8725cf3
Support a dynamic primary_web_role instead of assuming it's 'web'.
...
This allows for more meaningful naming in roles.
The only caution here is that we don't support the renaming of roles, so
any migration is left to the user.
2023-11-10 16:35:25 -08:00
Donal McBreen
5fd4a28bf7
Pre and post Traefik reboot hooks
...
Provide pre and post reboot hooks for Traefik, that can be used to
remove/add to an external load balancer to prevent requests from being
sent during the reboot.
Works best with the --rolling setting, where each hook is called once
per host.
2023-11-08 15:11:26 +00:00
Donal McBreen
97ba6b746b
Merge pull request #564 from basecamp/return-502-if-no-container
...
Return a 502 when container is down
2023-11-08 14:58:22 +00:00
Donal McBreen
9e25d8a012
Priority 2 for the main app
2023-11-08 14:12:45 +00:00
Donal McBreen
da161445fa
Merge pull request #508 from leonvogt/ssh-port-option
...
Configurable SSH port
2023-11-06 08:48:26 +00:00
Leon
f339626667
Add option to set absolute directory path
2023-11-03 22:48:30 +01:00
Leon
2d86d4f7cc
Add SSH port to run_over_ssh
2023-11-03 22:32:37 +01:00
Leon
792aa1dbdf
Add SSH port option
2023-11-03 22:32:37 +01:00
Donal McBreen
24a2f51641
Return a 502 when container is down
...
If the app container is down or not responding then traefik will return
a 404 response code. This is not ideal as it suggests a client rather
than a server problem.
To fix this, we'll define a catch all route that always returns a 502.
This is not ideal as this route would take priority over a shorter route
with priorty 1.
TODO: up the priority of the app route.
2023-11-03 14:20:52 +00:00
Donal McBreen
8f53104d00
Bump version for 1.1.0
2023-11-01 09:20:45 +00:00
dmitrytrager
2d22143a24
feature: add NAME=all option for accessory reboot
2023-10-31 00:13:45 +01:00
Aleksandr Nigomatulin
cbd99306eb
Add skip_push option to setup
2023-10-30 23:27:58 +06:00
Donal McBreen
78fc91f2ec
Merge pull request #557 from basecamp/envify-reset-env-before-push
...
Reset the env before pushing
2023-10-30 11:54:00 +00:00
Donal McBreen
dd748fac8c
Reset the env before pushing
...
Calling `load_envs` again does not load updated env variables, because
Dotenv does not overwrite existing values.
To fix this we'll store the original ENV and reset to it before
reloading.
https://github.com/basecamp/kamal/issues/512
2023-10-30 11:31:50 +00:00
Donal McBreen
b732b2dd55
Merge pull request #547 from nickhammond/envify/trim-lines
...
Enable trim mode with ERB
2023-10-30 08:57:55 +00:00
Donal McBreen
e3254b2aa8
Merge pull request #544 from nickhammond/bugfix-require-sshkit-sensitive-util
...
Require sshkit within the sshkit util
2023-10-30 08:57:08 +00:00
Donal McBreen
e9269d2ee8
Merge pull request #501 from rience/optional-envify-push
...
Optionally Skip Push for "envify"
2023-10-30 08:30:21 +00:00
Donal McBreen
d2214b43b7
Merge pull request #499 from basecamp/env-only-needed-for-push
...
Remove the env check
2023-10-30 08:22:56 +00:00
Donal McBreen
370481921e
Merge pull request #498 from basecamp/app-exec-env-file
...
App exec with env file
2023-10-30 08:22:35 +00:00
Donal McBreen
aa23f26330
Merge pull request #479 from npezza93/main
...
Loosen superuser check to match docker-installs script check
2023-10-30 08:21:30 +00:00
Donal McBreen
f4933d83bf
Merge pull request #477 from clintmiller/patch-1
...
Pass KAMAL_VERSION env var to container run
2023-10-30 08:19:20 +00:00
Nick Hammond
6c36c82153
Enable trim mode with ERB
2023-10-24 17:09:05 -07:00
Krzysztof Adamski
8ca04032a1
Optionally Skip Push for "envify"
2023-10-23 14:49:39 +02:00
Nick Hammond
2fb22c934b
Require sshkit within the sshkit util
2023-10-22 22:34:22 -07:00
Richard Macklin
f96d071222
Fix copy-pasted error message in pre-build.sample
...
The "No git remote set" error message was appropriate for the previous
block (where it was presumably copy-pasted from), but in this line we
have failed the check that determines if we have a git branch checked
out, so we should output a corresponding error.
2023-10-08 15:14:40 -07:00
Donal McBreen
f6662c7a8f
Remove the env check
...
The env check is not needded anymore as all the commands rely on the
env files having already been created remotely.
The only place the env is needed is when running `kamal env push` and
that will still raise an apropriate error.
2023-09-25 15:23:01 +01:00
Donal McBreen
645f5ab72d
App exec with env file
...
When calling `kamal app exec` for new non interactive containers, run
the command per role on each server and include the role config
including the environment.
Fixes: https://github.com/basecamp/kamal/issues/492
2023-09-25 15:07:05 +01:00
Clint Miller
8dca65f48f
Fix commands/app tests
2023-09-20 08:12:27 -05:00
dhh
83a2d52ff4
Bump version for 1.0.0
2023-09-18 17:39:01 -07:00
Nick Pezza
1a2796a7d0
Loosen superuser check to match docker-installs script check
2023-09-18 20:32:59 -04:00
Clint Miller
d80fdf8468
Pass KAMAL_VERSION env var to container run
...
In lieu of a general purpose mechanism to pass dynamically-evaluated env-vars at container execution time, we can pass the `config.version` as KAMAL_VERSION to avoid having to take apart the container name just to determine the SHA of the deployed version in the entrypoint.
2023-09-18 16:07:36 -05:00
dhh
90fefc419f
Point to rolling restarts
2023-09-18 08:31:49 -07:00
dhh
8671963719
Explain asset bridging
2023-09-18 08:16:44 -07:00
Donal McBreen
a03ffd5b92
Merge pull request #476 from basecamp/exec-with-role
...
Run interactive commands with the correct host
2023-09-18 12:14:13 +01:00
Donal McBreen
0861730e0e
Run interactive commands with the correct host
...
Fixes https://github.com/basecamp/kamal/issues/430
2023-09-18 12:00:36 +01:00
David Heinemeier Hansson
6b0f93a564
Update README.md
2023-09-16 16:02:54 -07:00
David Heinemeier Hansson
e6371faf4f
Merge pull request #473 from basecamp/introduce-git-gateway
...
Extract Kamal::Git as gateway for all git usage
2023-09-16 11:47:18 -07:00
dhh
e95a9b4fa2
Fix tests
2023-09-16 11:35:29 -07:00
dhh
e5886a1a8e
Merge branch 'main' into introduce-git-gateway
...
* main:
Healthcheck polling is a CLI concern
2023-09-16 11:31:48 -07:00
David Heinemeier Hansson
ec8192b160
Merge pull request #472 from basecamp/move-healthcheck-poller-to-cli
...
Healthcheck polling is a CLI concern
2023-09-16 11:31:28 -07:00
dhh
2da03a220d
Merge branch 'main' into introduce-git-gateway
...
* main:
No longer used
Fix env validation
Fix tests
Fix test
Extract Kamal::EnvFile
2023-09-16 11:31:18 -07:00
dhh
cfbfb37e23
Extract Kamal::Git as gateway for all git usage
2023-09-16 11:30:29 -07:00
David Heinemeier Hansson
ff4d025840
Merge pull request #471 from basecamp/extract-env-writer
...
Extract Kamal::EnvFile
2023-09-16 11:29:43 -07:00
dhh
59ac59d351
Healthcheck polling is a CLI concern
...
Also, it has no instance variables, so let's just have it be a module.
2023-09-16 11:19:38 -07:00
dhh
3df87520db
No longer used
2023-09-16 11:12:52 -07:00
dhh
85ce65a4ce
Merge branch 'main' into extract-env-writer
...
* main:
Inline util method only used in one place
2023-09-16 11:12:08 -07:00
dhh
12a82a6c58
Inline util method only used in one place
2023-09-16 11:11:24 -07:00
dhh
b2d2a254d7
Fix env validation
2023-09-16 11:05:47 -07:00
dhh
62cdf31ae2
Fix tests
2023-09-16 11:01:16 -07:00
dhh
0dcebe7d34
Fix test
2023-09-16 10:59:41 -07:00
dhh
32a5c157b9
Merge branch 'main' into extract-env-writer
...
* main:
No longer used
2023-09-16 10:56:29 -07:00
dhh
97cea8950d
No longer used
2023-09-16 10:56:00 -07:00
dhh
873be0b76b
Extract Kamal::EnvFile
...
Cleaning up the Utils junk drawer.
2023-09-16 10:55:41 -07:00
David Heinemeier Hansson
3a8eb0cf7d
Merge pull request #470 from basecamp/extract-app-concerns
...
Extract app concerns
2023-09-16 10:24:24 -07:00
dhh
e9ef13d06d
Group configuration methods in logical sections
2023-09-16 10:20:08 -07:00
dhh
f648fe6c3f
Grouping + ordering
2023-09-16 10:14:04 -07:00
dhh
46895d0b08
Better ordering and spacing
2023-09-16 10:11:42 -07:00
dhh
431ca9e809
Remind about env push
2023-09-16 10:09:42 -07:00
dhh
6b5c5f0650
Extract Logging too
...
Leave only the core essentials in App
2023-09-16 10:03:28 -07:00
dhh
d303fcc621
Extract Containers and Images concerns
2023-09-16 09:58:09 -07:00
dhh
3ae855ef28
Explain method better
2023-09-16 09:53:03 -07:00
dhh
76a3086569
Group related methods with spacing
2023-09-16 09:52:54 -07:00
dhh
07646bc020
Extract Cord, Assets, and Execution concerns from App
...
It was getting crowded!
2023-09-16 09:51:45 -07:00
dhh
880b8b267a
Fix test
2023-09-16 09:38:30 -07:00
dhh
37e5c48a27
Setup run directory on accessory hosts as well
...
cc @djmb
2023-09-15 11:08:27 -07:00
dhh
deb67386fa
No need to suggest use of erb
2023-09-15 10:54:50 -07:00
dhh
81d74e4a9d
Record push of env files for audit on app servers
2023-09-15 10:20:31 -07:00
dhh
39c13dcc18
Push env files as part of setup
2023-09-15 10:20:31 -07:00
dhh
e7314a0eea
Explain ensuring Docker is installed
2023-09-15 10:20:31 -07:00
Donal McBreen
168c6e2da3
Merge pull request #467 from basecamp/assets-copy-hidden-files
...
Copy all files into asset volume
2023-09-15 08:46:02 +01:00
Donal McBreen
564765862b
Add hidden file check to integration tests
2023-09-15 08:37:41 +01:00
Donal McBreen
3c12d1799c
Copy all files into asset volume
...
Adding -T to the copy command ensures that the files are copied at the
same level into the target directory whether it exists or not.
That allows us to drop the `/*` which was not picking up hidden files.
Fixes: https://github.com/basecamp/kamal/issues/465
2023-09-15 08:07:48 +01:00
Donal McBreen
60835d13a8
Merge pull request #444 from rience/custom-healthcheck-log-lines-count
...
Configurable Number of Lines in Healthcheck Log Output
2023-09-13 08:57:00 +01:00
Krzysztof Adamski
892cf0e66b
Configurable Log Lines Number in Healthcheck Log Output
2023-09-12 21:06:36 +02:00
Krzysztof Adamski
8ddc484ce6
Configurable Lines Number in Healthcheck Log Output
2023-09-12 21:04:18 +02:00
Donal McBreen
0e021e3c57
Merge pull request #461 from basecamp/escape-newline-from-inspect-format
...
Escape the newline in the inspect query
2023-09-12 19:19:47 +01:00
Donal McBreen
fb0aeec27e
Escape the newline in the inspect query
2023-09-12 19:10:39 +01:00
Donal McBreen
a367819a1c
Merge pull request #460 from basecamp/traefik-wait-5s-after-unhealthy
...
Give Traefik 5s to drop old container
2023-09-12 17:12:20 +01:00
Donal McBreen
0afe289a20
Give Traefik 5s to drop old container
2023-09-12 17:03:51 +01:00
Donal McBreen
bf6af46ac3
Merge pull request #459 from basecamp/env-file-escape-newlines
...
Escape newlines in docker env files
2023-09-12 15:05:38 +01:00
Donal McBreen
df2b76aee1
Escape newlines in docker env files
...
When env variables were passed via `-e` newlines were escaped. This
updates the env file to do the same thing.
2023-09-12 14:57:19 +01:00
Donal McBreen
70a3c7195a
Merge pull request #458 from basecamp/avoid-env-empty-file-warning
...
Fix empty file warning when uploading env files
2023-09-12 12:05:31 +01:00
Donal McBreen
c651de177f
Fix empty file warning when uploading env files
2023-09-12 11:57:28 +01:00
Donal McBreen
7b42daa9fb
Merge pull request #457 from basecamp/remove-dangling-image-filter
...
Remove the `dangling=true` filter
2023-09-12 11:21:50 +01:00
Donal McBreen
9d49b3e391
Merge pull request #456 from basecamp/validate-image
...
Validate the build image
2023-09-12 11:18:32 +01:00
Donal McBreen
2c5ab054db
Remove the dangling=true filter
...
This has been removed from Docker Engine 24 and `docker image prune`
only deletes dangling images anyway.
Fixes https://github.com/basecamp/kamal/issues/410
2023-09-12 11:09:26 +01:00
Donal McBreen
66291a2aea
Validate the build image
...
Kamal needs images to have the service label so it can track them for
pruning. Images built by Kamal will have the label, but externally built
ones may not.
Without it images will build up over time. The worst case is an outage
if all the hosts disks fill up at the same time.
We'll add a check for the label and halt if it is not there.
2023-09-12 10:45:01 +01:00
Donal McBreen
d96e086945
Merge pull request #452 from basecamp/preconnect-to-build-remote-host
...
Connect to remote host before creating builder
2023-09-12 09:21:57 +01:00
Donal McBreen
8424458174
Check protocol is SSH before connecting
2023-09-12 09:12:57 +01:00
Donal McBreen
6a3b0249fe
Connect to remote host before creating builder
...
Connecting to the remote host will make any SSH configuration issues
obvious and add the host to known hosts if that is how SSHKit is
configured.
2023-09-12 09:12:57 +01:00
Donal McBreen
dfc2803714
Merge pull request #454 from basecamp/lts-ubuntu
...
Use LTS version of Ubuntu for integration tests
2023-09-12 09:12:31 +01:00
Donal McBreen
ade90bc051
Use LTS version of Ubuntu for integration tests
2023-09-12 08:59:54 +01:00
Donal McBreen
daa53f5831
Merge pull request #451 from basecamp/require-destinations
...
Add a require_destination setting
2023-09-12 08:26:36 +01:00
Donal McBreen
50a4f83db6
Merge pull request #450 from basecamp/stop-stale-container-when-deploying
...
Stop stale containers when deploying
2023-09-12 08:26:16 +01:00
Donal McBreen
00cb7d99d8
Merge pull request #449 from basecamp/asset-path
...
Asset paths
2023-09-12 08:26:07 +01:00
Donal McBreen
fb74910dc8
Merge pull request #425 from basecamp/prune-healthcheck-containers
...
Prune healthcheck containers
2023-09-12 08:25:50 +01:00
Donal McBreen
26dcd75423
Add a require_destination setting
...
If you always want to use a destination, and have a base deploy.yml file
that doesn't specify any hosts, then if you forget to specific the
destination you will get a cryptic error.
Add a "require_destination" setting you can use to avoid this.
2023-09-11 16:57:11 +01:00
Donal McBreen
afb9b0bbe2
Stop stale containers when deploying
...
An interrupted deployment can leave older containers lying around. To
ensure they are cleaned up subsequently, stop stale containers during
deployments instead of just reporting them.
2023-09-11 14:49:06 +01:00
Donal McBreen
718776eb72
Prune healthcheck containers
...
If a deployment is interrupted it could leave stale healthcheck
containers around that prevent dependent images from being pruned.
2023-09-11 14:36:25 +01:00
Donal McBreen
9d35793287
Merge pull request #440 from gf3/fix/ssh-auth-methods
...
fix: do not hardcode Net::SSH auth_methods
2023-09-11 14:32:37 +01:00
Donal McBreen
0b439362da
Asset paths
...
During deployments both the old and new containers will be active for a
small period of time. There also may be lagging requests for older CSS
and JS after the deployment.
This can lead to 404s if a request for old assets hits a new container
or visa-versa.
This PR makes sure that both sets of assets are available throughout the
deployment from before the new version of the app is booted.
This can be configured by setting the asset path:
```yaml
asset_path: "/rails/public/assets"
```
The process is:
1. We extract the assets out of the container, with docker run, docker
cp, docker stop. Docker run sets the container command to "sleep" so
this needs to be available in the container.
2. We create an asset volume directory on the host for the new version
of the app on the host and copy the assets in there.
3. If there is a previous deployment we also copy the new assets into
its asset volume and copy the older assets into the new asset volume.
4. We start the new container mapping the asset volume over the top of
the container's asset path.
This means the both the old and new versions have replaced the asset
path with a volume containing both sets of assets and should be able
to serve any request during the deployment. The older assets will
continue to be available until the next deployment.
2023-09-11 12:18:18 +01:00
Donal McBreen
2962f545b9
Merge pull request #447 from basecamp/output-per-line-mounts
...
Output one mount per line
2023-09-07 15:30:03 +01:00
Donal McBreen
cd02510d0f
Output one mount per line
...
The go template was concatenating all the mounts into one line. It
happened to work because the mount we are interested was always first.
Fix it to output one mount per line instead.
2023-09-07 15:20:50 +01:00
Donal McBreen
cccf79ed94
Merge branch 'main' into fix/ssh-auth-methods
2023-09-07 10:21:28 +01:00
Donal McBreen
aa9999809c
Merge pull request #439 from basecamp/zero-downtime-deploy-file
...
Zero downtime deployment with cord file
2023-09-07 09:34:40 +01:00
Donal McBreen
6263bf96ba
Merge pull request #438 from basecamp/remote-env-file
...
Copy env files to remote hosts
2023-09-07 09:34:22 +01:00
Gianni Chiappetta
9a539ffc86
chore: update tests to remove hardcoded ssh auth method
2023-09-06 10:59:17 -04:00
Donal McBreen
8a41d15b69
Zero downtime deployment with cord file
...
When replacing a container currently we:
1. Boot the new container
2. Wait for it to become healthy
3. Stop the old container
Traefik will send requests to the old container until it notices that it
is unhealthy. But it may have stopped serving requests before that point
which can result in errors.
To get round that the new boot process is:
1. Create a directory with a single file on the host
2. Boot the new container, mounting the cord file into /tmp and
including a check for the file in the docker healthcheck
3. Wait for it to become healthy
4. Delete the healthcheck file ("cut the cord") for the old container
5. Wait for it to become unhealthy and give Traefik a couple of seconds
to notice
6. Stop the old container
The extra steps ensure that Traefik stops sending requests before the
old container is shutdown.
2023-09-06 14:35:30 +01:00
Donal McBreen
94bf090657
Copy env files to remote hosts
...
Setting env variables in the docker arguments requires having them on
the deploy host.
Instead we'll add two new commands `kamal env push` and
`kamal env delete` which will manage copying the environment as .env
files to the remote host.
Docker will pick up the file with `--env-file <path-to-file>`. Env files
will be stored under `<kamal run directory>/env`.
Running `kamal env push` will create env files for each role and
accessory, and traefik if required.
`kamal envify` has been updated to also push the env files.
By avoiding using `kamal envify` and creating the local and remote
secrets manually, you can now avoid accessing secrets needed
for the docker runtime environment locally. You will still need build
secrets.
One thing to note - the Docker doesn't parse the environment variables
in the env file, one result of this is that you can't specify multi-line
values - see https://github.com/moby/moby/issues/12997 .
We maybe need to look docker config or docker secrets longer term to get
around this.
Hattip to @kevinmcconnell - this was all his idea.
2023-09-06 14:33:13 +01:00
Donal McBreen
adc7173cf2
Merge pull request #437 from basecamp/kamal-run-directory
...
Configurable Kamal directory
2023-09-06 14:31:07 +01:00
Donal McBreen
fd6bf5324a
Merge pull request #443 from rience/custom-healthcheck-port
...
Configurable Healthcheck Expose Port
2023-09-06 11:09:48 +01:00
Krzysztof Adamski
c2b2f7ea33
Fixing Tests
2023-09-06 10:16:59 +02:00
Krzysztof Adamski
bbcc90e4d1
Configurable Healthcheck Expose Port
2023-09-05 10:53:32 +02:00
Gianni Chiappetta
84f78cd9f9
fix: do not hardcode Net::SSH auth_methods
2023-09-01 15:11:12 -04:00
Donal McBreen
787688ea08
kamal -> .kamal
2023-08-28 17:13:52 +01:00
Donal McBreen
bcfa1d83e8
Configurable Kamal directory
...
To avoid polluting the default SSH directory with lots of Kamal config,
we'll default to putting them in a `kamal` sub directory.
But also make the directory configurable with the `run_directory` key,
so for example you can set it as `/var/run/kamal/`
The directory is created during bootstrap or before any command that
will need to access a file.
2023-08-28 16:32:18 +01:00
David Heinemeier Hansson
9363b6a464
Bump version for 0.16.1
2023-08-24 09:16:13 -07:00
David Heinemeier Hansson
338fd4e493
Merge pull request #428 from tbuehlmann/main
...
Fix picking the first available role on primary_host
2023-08-24 08:36:29 -07:00
David Heinemeier Hansson
eb3cb81a79
Merge pull request #368 from tsvallender/main
2023-08-24 06:12:48 -07:00
Tobias Bühlmann
556f7f5a37
Fix picking the first available role on primary_host
2023-08-24 13:50:24 +02:00
Trevor Vallender
c2ec04f8c1
Allow Traefik to run without publishing port
...
Adds the `publish` option which, if set to false, does not pass `--publish` to
`docker run` when starting Traefik. This is useful when running Traefik
behind a reverse proxy, for example.
2023-08-24 10:52:10 +01:00
David Heinemeier Hansson
519659b84c
Merge pull request #422 from fig/fix-421
...
require ActiveSupport module to provide String#remove
2023-08-23 13:50:04 -07:00
David Heinemeier Hansson
560d0698ac
Merge pull request #426 from northeastprince/fix-site-in-gemspec
...
Fix site URL in gemspec
2023-08-23 13:47:26 -07:00
fig
f40e8e9af1
Merge branch 'fix-421' of https://github.com/fig/mrsk into fix-421
2023-08-23 15:22:41 +01:00
fig
1ab7405e36
require ActiveSupport module to provide String#remove
...
fixes #421
2023-08-23 15:17:26 +01:00
Matt Almeida
aeadd7c11f
Fix site URL in gemspec
2023-08-23 15:15:51 +02:00
Donal McBreen
d0fbf538d3
Add integration test hooks back in
2023-08-23 07:36:48 +01:00
David Heinemeier Hansson
cfe77934e8
Update README.md
...
Point all docs to the site so we don't duplicate everything.
2023-08-22 17:11:26 -07:00
David Heinemeier Hansson
3f6ca1648e
Update docker-publish.yml
...
Require setting tag
2023-08-22 15:44:07 -07:00
David Heinemeier Hansson
7c6d302baa
Update docker-publish.yml
...
Allow manual invocation
2023-08-22 15:20:02 -07:00
fig
b8eb50b982
require ActiveSupport module to provide String#remove
...
fixes #421
2023-08-22 20:58:48 +01:00
David Heinemeier Hansson
d981c3c968
Move hooks
2023-08-22 12:47:00 -07:00
David Heinemeier Hansson
416860d9b0
Update docker-publish.yml
...
Reflect rename
2023-08-22 12:34:57 -07:00
David Heinemeier Hansson
33d5d7e9a2
Update README.md
...
Point to name change.
2023-08-22 12:20:24 -07:00
David Heinemeier Hansson
99c1102a3a
Update README.md
...
Will do a new video shortly.
2023-08-22 12:13:54 -07:00
David Heinemeier Hansson
ac11089c7a
Bump version for 0.16.0
2023-08-22 11:42:32 -07:00
David Heinemeier Hansson
180ca219df
Merge pull request #423 from basecamp/rename
...
Rename project to Kamal
2023-08-22 11:41:42 -07:00
David Heinemeier Hansson
dc1421a1fc
Correct casing
2023-08-22 09:22:32 -07:00
David Heinemeier Hansson
c4a203e648
Rename to Kamal
2023-08-22 08:24:31 -07:00
Donal McBreen
e2c3709d74
Merge pull request #417 from manastyretskyi/main
...
Fix builder registry cache when using default registry
2023-08-17 14:08:05 +01:00
Liubomyr Manastyretskyi
f68a33465f
Fix review comments
2023-08-17 11:58:14 +03:00
Donal McBreen
e7bc74d9ee
Merge pull request #418 from mrsked/ssh-logging
...
Configurable log levels
2023-08-16 07:22:18 +01:00
Donal McBreen
1163c3de07
Configurable log levels
...
Allow ssh log_level to be set - this will help to debug connection
issues.
2023-08-15 16:51:56 +01:00
Donal McBreen
715cd94bbf
Merge pull request #413 from mrsked/extract-version-from-container-name-correctly
...
Extract versions that contains dashes
2023-08-15 15:11:03 +01:00
Donal McBreen
dda7099b2f
Merge pull request #414 from mrsked/traefik-start-stop-run-errors
...
Don't hide Traefik errors
2023-08-15 15:10:47 +01:00
Donal McBreen
4262fce863
Merge pull request #415 from igor-alexandrov/fix-builder-configuration-validation
...
Removed validation for remote and local builder params
2023-08-15 15:10:23 +01:00
Liubomyr Manastyretskyi
6774675547
Fix builder registry cache when using default registry
2023-08-13 12:04:03 +03:00
Igor Alexandrov
0c52a1053e
Removed not needed configuration test
2023-08-08 19:14:03 +04:00
Igor Alexandrov
c24c7abb79
Fix for https://github.com/mrsked/mrsk/issues/407
2023-08-08 19:04:35 +04:00
Donal McBreen
c2d7fd775f
Don't hide Traefik errors
...
When stopping or starting Traefik, don't hide important errors.
Docker doesn't return an error when starting a started container or
stopping a stopped container.
When rebooting we want to know about errors during run as we've just
stopped and removed the previous container.
When booting, we want to leave the running container if it exists,
restart a stopped container and run a new one if none exists.
We can implement this with `docker start ... || docker run ...`:
- if the container is started, `docker start` will exit with 0
- if the container is stopped, `docker start` will start it and exit with 0
- if the container doesn't exist, `docker start` will return a non zero
exit code and `docker run` will create a new container. Any errors in
`docker run` will be returned.
2023-08-08 15:41:16 +01:00
Donal McBreen
4dd8208290
Extract versions that contains dashes
...
The version extraction assumed that the version is everything after the
last `-` in the container name. This doesn't work if you deploy a
non-MRSK generated version that contains a `-`.
To fix we'll generate the non version prefix and strip it off. In some
places for this to work we need to make sure to pass the role through.
Fixes: https://github.com/mrsked/mrsk/issues/402
2023-08-08 14:16:32 +01:00
Donal McBreen
aa89ededde
Merge pull request #399 from mrsked/manage-ssh-connection-starts
...
Manage SSH connection starts
2023-08-07 14:37:34 +01:00
David Heinemeier Hansson
299b166db7
Merge pull request #389 from brunoprietog/include-role-options-when-executing-commands
...
Include role options when executing commands
2023-07-26 14:04:28 +02:00
Donal McBreen
94d6a763a8
Extract ssh and sshkit configuration
2023-07-26 12:26:23 +01:00
Donal McBreen
752ff53458
Merge pull request #396 from igor-alexandrov/track-uncommitted-changes
...
Log uncommitted changes during deploy
2023-07-25 14:35:44 +01:00
Donal McBreen
eb8c97a417
Document new sshkit settings
2023-07-25 13:09:49 +01:00
Donal McBreen
f64b596907
Prevent SSH connection restarts
...
Set a high idle timeout on the sshkit connection pool. This will
reduce the incidence of re-connection storms when a deployment has been
idle for a while (e.g. when waiting for a docker build).
The default timeout was 30 seconds, so we'll enable keepalives at a
30s interval to match. This is to help prevent connections from being
killed during long idle periods.
2023-07-25 13:09:46 +01:00
Donal McBreen
b25cfa178b
Limit SSH start concurrency
...
Starting many (90+) SSH connections has caused us some issues such as
failed DNS lookups and hitting process file descriptor limits.
To mitigate this, patch SSHKit::Backend::Netssh to limit concurrency of
connection starts. We'll default to 30 at a time which seems to work
without issue, but can be configured via:
```
sshkit:
max_concurrent_starts: 10
```
2023-07-25 13:08:44 +01:00
Donal McBreen
edcfc77d95
Bump version for 0.15.1
2023-07-25 13:07:04 +01:00
Donal McBreen
a71e167a03
Merge pull request #400 from mrsked/revert-386-ssh-log-levels
...
Revert "Configurable SSH log levels"
2023-07-25 13:04:21 +01:00
Donal McBreen
2daaf442fa
Revert "Configurable SSH log levels"
2023-07-25 12:53:45 +01:00
Igor Alexandrov
d414253393
Updated uncommitted notification text
2023-07-24 20:12:22 +04:00
Bruno Prieto
cbd180205d
Include role options when executing commands
2023-07-24 17:45:24 +02:00
Donal McBreen
61b7dc90f2
Bump version for 0.15.0
2023-07-24 13:43:50 +01:00
David Heinemeier Hansson
f6442513ae
Merge pull request #357 from igor-alexandrov/documentation-update
...
Updated README with info for Rails <7 usage
2023-07-24 14:39:48 +02:00
Igor Alexandrov
ea941f33f9
Moved uncommitted changes message out of run_locally block
2023-07-21 22:45:23 +04:00
Igor Alexandrov
9c2a1dc7cd
Removed commented code in tests
2023-07-21 18:44:01 +04:00
Igor Alexandrov
0cfafd1d25
Log uncommitted changes during deploy
2023-07-21 18:37:45 +04:00
Donal McBreen
5e8df58e6b
Merge pull request #393 from basecamp/rolling-traefik-restarts
...
Support a --rolling option for traefik reboots
2023-07-19 16:43:59 +01:00
Lewis Buckley
9d5a6d1321
Document the rolling option for traefik reboots
2023-07-19 15:03:15 +01:00
Lewis Buckley
ecfd258093
Document the rolling reboot option
2023-07-19 14:58:46 +01:00
Lewis Buckley
313f89a108
Merge branch 'main' into rolling-traefik-restarts
...
* main:
Removed not needed MRSK.traefik.run command in Traefil reboot
Updated README with locking directory name
Include service name to lock details
Configurable SSH log levels
Add registry container output to debug
Minor tweaks to hooks section in readme
Update README.md
Updated README.md to make setup examples consistent
Login to the registry proactively before stoping Accessory and Traefik
2023-07-19 14:46:16 +01:00
Lewis Buckley
9ab448e186
Support a --rolling option for traefik reboots
2023-07-19 14:39:27 +01:00
Donal McBreen
e1433f3895
Merge pull request #349 from igor-alexandrov/login-to-registry-proactively
...
Login to the registry proactively before stoping Accessory and Traefik
2023-07-19 13:36:00 +01:00
Igor Alexandrov
a29e188c90
Removed not needed MRSK.traefik.run command in Traefil reboot
2023-07-19 15:08:42 +04:00
Donal McBreen
95e3915991
Merge pull request #386 from mrsked/ssh-log-levels
...
Configurable SSH log levels
2023-07-17 14:09:21 +01:00
Donal McBreen
30d342183d
Merge pull request #387 from igor-alexandrov/lock-with-service-name
...
Include service name to lock details
2023-07-17 14:07:22 +01:00
Igor Alexandrov
83f5f3f053
Updated README with locking directory name
2023-07-17 10:39:50 +04:00
Igor Alexandrov
e6ca270537
Include service name to lock details
2023-07-15 21:50:39 +04:00
Donal McBreen
cd88c49c42
Configurable SSH log levels
...
Allow ssh log_level to be set to debug connection issues.
2023-07-14 16:08:47 +01:00
Donal McBreen
d03195ce1c
Merge pull request #385 from mrsked/integration-test-registry-debug
...
Add registry container output to debug
2023-07-14 13:50:31 +01:00
Donal McBreen
da1c049829
Add registry container output to debug
2023-07-14 13:41:30 +01:00
Donal McBreen
4095e1853d
Merge pull request #356 from helgeblod/fix-readme-username-typo
...
Update README.md to make setup examples consistent
2023-07-12 13:24:51 +01:00
Donal McBreen
dbc9989730
Merge pull request #364 from nickhammond/patch-2
...
Update README.md
2023-07-12 13:22:53 +01:00
Donal McBreen
e493369453
Merge pull request #379 from nickhammond/patch-3
...
Minor tweaks to hooks section in readme
2023-07-12 11:29:36 +01:00
Nick Hammond
e760cfa457
Minor tweaks to hooks section in readme
2023-07-08 10:59:55 -06:00
Nick Hammond
f8d651af0d
Update README.md
...
Add a note about utilizing biometrics with the envify example.
2023-06-28 10:03:27 -06:00
Igor Alexandrov
08172be375
Updated README with info for Rails <7 usage
2023-06-26 16:05:24 +04:00
Jonas Helgemo
a3cc2317e2
Updated README.md to make setup examples consistent
...
- SSH and apt examples should use same username
2023-06-26 11:57:23 +02:00
Igor Alexandrov
2746a48e88
Login to the registry proactively before stoping Accessory and Traefik
2023-06-22 15:13:47 +04:00
David Heinemeier Hansson
9a501867b4
Bump version for 0.14.0
2023-06-20 17:02:42 +02:00
David Heinemeier Hansson
c5397ff51e
Merge pull request #342 from mrsked/only-require-secrets-when-mutating
...
Only require secrets when mutating
2023-06-20 16:50:14 +02:00
Donal McBreen
4950f61a87
Only require secrets when mutating
...
Rename `with_lock` to more generic `mutating` and move the env_args
check to that point. This allows read-only actions to be run without
requiring secrets.
2023-06-20 15:39:51 +01:00
David Heinemeier Hansson
08d8790851
Merge pull request #337 from igor-alexandrov/feature/cache
...
Support for Docker multistage build cache
2023-06-20 11:38:46 +02:00
Igor Alexandrov
02256ac8fe
More code style improvements
2023-06-19 18:22:07 +04:00
Igor Alexandrov
dadd8225da
Various code style improvements
2023-06-18 23:39:44 +04:00
Igor Alexandrov
aa28ee0f3e
Inroduce Native::Cached builder
2023-06-18 22:45:04 +04:00
David Heinemeier Hansson
2007ab475e
Merge pull request #327 from bestfriendfinance/fix-run-over-ssh-with-proxy-command
...
Add support for proxy_command to run_over_ssh
2023-06-18 17:18:50 +02:00
Igor Alexandrov
4df3389d09
Added support for multistage build cache
2023-06-18 19:02:10 +04:00
Matt Robinson
21b13bf8d3
Add support for proxy_command to run_over_ssh
2023-06-16 08:22:10 -03:00
David Heinemeier Hansson
6e6f696717
Merge pull request #335 from mrsked/specify-min-version
...
Add a minimum version setting
2023-06-16 10:02:40 +02:00
Donal McBreen
98c12a254e
Add a minimum version setting
...
Allow a minimum MRSK version to be specified in the config.
2023-06-15 14:53:03 +01:00
Donal McBreen
f0301d2007
Merge pull request #328 from igor-alexandrov/319-override-default-traefik-args
...
Added ability to override default Traefik command line arguments
2023-06-15 14:49:56 +01:00
Igor Alexandrov
d3f5e9efe8
Updated Traefik CLI test
2023-06-15 17:11:20 +04:00
Igor Alexandrov
d9b3fac17a
Added ability to override default Traefik command line arguments
2023-06-15 15:41:20 +04:00
Donal McBreen
cd5c41ddbe
Merge pull request #334 from basecamp/fix-ssh-symlink
...
Fix ssh symlink
2023-06-15 12:14:30 +01:00
Donal McBreen
a14c6141e5
Dump container logs on failure
2023-06-15 12:05:50 +01:00
Donal McBreen
95d6ee5031
Remove /root/.ssh before symlinking
...
Ensure the symlinks are created correctly whether or not /root/.ssh
already exists.
2023-06-15 12:02:56 +01:00
David Heinemeier Hansson
80a4ca4f8a
Merge pull request #331 from basecamp/fix-sample-pre-deploy-hook
...
Fix up the sample pre-deploy hook
2023-06-12 14:09:29 +02:00
Donal McBreen
12ca865e71
Fix up the sample pre-deploy hook
...
- Fix the shebang
- Extract a GithubStatusChecks class
2023-06-12 12:47:51 +01:00
David Heinemeier Hansson
66b4a0ea40
Bump version for 0.13.2
2023-06-01 12:54:06 +02:00
David Heinemeier Hansson
04b39ea798
Fix spelling
2023-05-31 18:15:21 +02:00
David Heinemeier Hansson
ae55a7b5d8
Merge pull request #325 from mrsked/revert-324-fix-filename-typo
...
Revert "Fix typo in fixture filename"
2023-05-31 18:14:51 +02:00
David Heinemeier Hansson
601cfbd95e
Revert "Fix typo in fixture filename"
2023-05-31 18:14:43 +02:00
David Heinemeier Hansson
9fdc85c2e6
Merge pull request #324 from basecamp/fix-filename-typo
...
Fix typo in fixture filename
2023-05-31 18:13:11 +02:00
Donal McBreen
222eda6085
Fix typo in fixture filename
...
Following on from https://github.com/mrsked/mrsk/pull/320 , fix the
fixture filename as well
2023-05-31 17:11:13 +01:00
David Heinemeier Hansson
504a09ef1d
Merge pull request #318 from basecamp/pre-deploy-hook
...
Add a pre-deploy hook
2023-05-31 17:59:46 +02:00
David Heinemeier Hansson
5a25f073f7
Merge pull request #320 from jsoref/spelling
...
Spelling
2023-05-31 17:59:18 +02:00
David Heinemeier Hansson
c8f521c0e8
Merge pull request #323 from basecamp/prefix-docker-host-with-real-host
...
Prefix container hostname with the underlying one
2023-05-31 17:58:55 +02:00
Donal McBreen
28d6a131a9
Prefix container hostname with the underlying one
...
To make it easier to identity where a docker container is running,
prefix its hostname with the underlying one from the host.
Docker chooses a 12 character random hex string by default, so we'll
keep that as the suffix.
2023-05-31 16:22:25 +01:00
David Heinemeier Hansson
3a9075b8ba
Merge pull request #321 from basecamp/more-robust-image-pruning
2023-05-31 13:02:48 +02:00
Donal McBreen
079d9538bb
Improve image pruning robustness
...
If you different images with the same git SHA, on the second deploy the
tag is moved and the first image becomes untagged. It may however still
be attached to an existing container.
To handle this:
1. Initially prune dangling images - this will remove any untagged
images that are not attached to an existing image
2. Then filter out the untagged images when deleting tagged images - any
that remain will be attached to a container.
The second issue is that `docker container ls -a --format '{{.Image}}`
will sometimes return the image id rather than a tag. This means that
the image doesn't get filtered out when we grep to remove the active
images.
To fix that we'll grep against both the image id and repo:tag.
2023-05-31 10:17:52 +01:00
Josh Soref
8e94c21729
spelling: with
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
b536fcfa43
spelling: percentage
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
85005be07f
spelling: message
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
fc00392d68
spelling: installed
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
fe9affa349
spelling: healthchecks
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
3ecb3a4bfc
spelling: guidelines
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
787812cdc2
spelling: every time
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Josh Soref
91fb85d6b5
spelling: etc.
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2023-05-29 20:46:34 -04:00
Donal McBreen
db0bf6bb16
Add a pre-deploy hook
...
Useful for checking the status of CI before deploying. Doing this at
this point in the deployment maximises the parallelisation of building
and running CI.
2023-05-29 16:06:41 +01:00
David Heinemeier Hansson
de2de19434
Merge pull request #315 from basecamp/prune-unused-images
...
Prune unused images correctly
2023-05-29 11:42:49 +02:00
David Heinemeier Hansson
f9fbebaa72
Merge pull request #316 from f440/fix-typo
...
Fix typo
2023-05-29 11:42:26 +02:00
Donal McBreen
1e300f3798
Wait longer for app to come up
2023-05-29 08:31:19 +01:00
f440
0373f6c4de
Fix typo
2023-05-27 16:27:19 +09:00
Donal McBreen
9037088f99
Increase nginx timeouts in load balancer
2023-05-25 17:31:20 +01:00
Donal McBreen
ff7a1e6726
Prune unused images correctly
...
dangling=true doesn't prune any images, as we are not creating dangling
images.
Using --all should remove unused images, but it considers the Git SHA
tag on the latest image to be unused (presumably because there are two
tags, the SHA and latest and the running container is only considered to
be using "latest"). As a result it deletes the tag, which means that we
can't rollback to that SHA later.
Its a bit more complicated to only remove images that are not referenced
by any containers.
First we find the tags we want to keep from the containers (running and
stopped).
Then we append the latest tag to that list.
Then we get a full list of image tags and remove those tags from that
list (using `grep -v -w`).
Finally we pass the tags to `docker rmi`. That either deletes the tag if
there are other references to the image or both the tag and the image if
it is the only one.
2023-05-25 17:16:46 +01:00
David Heinemeier Hansson
602aa43496
Bump version for 0.13.1
2023-05-25 14:04:29 +02:00
David Heinemeier Hansson
e35334e5fe
Merge pull request #313 from basecamp/stop-restarting-containers
...
Stop containers with restarting status
2023-05-25 14:04:09 +02:00
Donal McBreen
cedb8d900f
Stop containers with restarting status
...
When stopping the old container we need to also look for ones with a
restarting status.
2023-05-25 12:10:26 +01:00
David Heinemeier Hansson
8f0b7829ce
Bump version for 0.13.0
2023-05-25 12:05:04 +02:00
David Heinemeier Hansson
57e4f08c4c
Merge pull request #308 from tannakartikey/hooks_small_fix
...
Hooks sample files typo fix
2023-05-25 09:02:25 +02:00
David Heinemeier Hansson
a8bfe90fbe
Merge pull request #312 from shafy/docs_docker_setup
...
docs: change intro command to mrsk setup
2023-05-25 09:01:04 +02:00
David Heinemeier Hansson
f114dd71f6
Merge pull request #311 from basecamp/pre-connect-hook
...
Add a pre-connect hook
2023-05-25 08:58:19 +02:00
Can Olcer
d1b5b9cf7a
docs: change intro command to mrsk setup
2023-05-24 20:32:41 +02:00
Donal McBreen
66f9ce0e90
Add a pre-connect hook
...
This can be used for hooks that should run before connecting to remote
hosts. An example use case is pre-warming DNS.
2023-05-24 14:39:30 +01:00
Kartikey Tanna
956ab3560b
Hooks typo fix
2023-05-23 22:12:49 +05:30
David Heinemeier Hansson
483b893018
Merge pull request #291 from basecamp/hooks
...
MRSK Hooks
2023-05-23 17:07:04 +02:00
Donal McBreen
19f0f40adf
Add skip_hooks option
2023-05-23 15:56:47 +01:00
Donal McBreen
f9cb87e55a
Fixup rebase issues
2023-05-23 14:10:38 +01:00
Donal McBreen
cc2b321d93
Combine post-deploy and post-rollback
2023-05-23 13:57:24 +01:00
Donal McBreen
004f1b04e6
Remove the skip_broadcast option
2023-05-23 13:57:00 +01:00
Donal McBreen
3b695ae127
Add service_version and add running hook message
2023-05-23 13:56:19 +01:00
Donal McBreen
258887a451
Set sample hook permissions and preserve when copying
2023-05-23 13:56:19 +01:00
Donal McBreen
9fd184dc32
Add post-deploy and post-rollback hooks
...
These replace the custom audit_broadcast_cmd code. An additional env
variable MRSK_RUNTIME is passed to them.
The audit broadcast after booting an accessory has been removed.
2023-05-23 13:56:16 +01:00
Donal McBreen
38023fe538
Remove post push hook
2023-05-23 13:55:05 +01:00
Donal McBreen
0bc1fbfb74
Set max-concurrent-downloads to 1 to prevent timeouts
2023-05-23 13:55:05 +01:00
David Heinemeier Hansson
5ab630cb03
Style
2023-05-23 13:55:04 +01:00
Donal McBreen
910f14e9c0
Add configuration for hooks_path
2023-05-23 13:55:04 +01:00
Donal McBreen
f3ec9f19c8
Add debug for failed version checks
2023-05-23 13:55:04 +01:00
Donal McBreen
58c1096a90
MRSK hooks
...
Adds hooks to MRSK. Currently just two hooks, pre-build and post-push.
We could break the build and push into two separate commands if we
found the need for post-build and/or pre-push hooks.
Hooks are stored in `.mrsk/hooks`. Running `mrsk init` will now create
that folder and add sample hook scripts.
Hooks returning non-zero exit codes will abort the current command.
Further potential work here:
- We could replace the audit broadcast command with a
post-deploy/post-rollback hook or similar
- Maybe provide pre-command/post-command hooks that run after every
mrsk invocation
- Also look for hooks in `~/.mrsk/hooks`
2023-05-23 13:55:04 +01:00
Donal McBreen
340ed94fa9
Make verify_local_dependencies private
...
We don't need to what it returns, it raises if there is a problem.
Move it out of the run_locally block to make it easier to add hooks.
2023-05-23 13:55:04 +01:00
David Heinemeier Hansson
4e9c39f26d
Merge pull request #271 from basecamp/app-boot-for-rollback
...
Call app:boot to rollback
2023-05-23 13:17:30 +02:00
David Heinemeier Hansson
d08aacadac
Merge pull request #287 from Novtopro/traefik-inject-environment-variables
...
Allow to inject environment variables to traefik
2023-05-22 10:10:34 +02:00
David Heinemeier Hansson
702490d10f
Merge pull request #305 from johnmcdowall/update_readme_for_aws_ecr
...
Update the README with info on AWS ECR
2023-05-22 09:58:33 +02:00
David Heinemeier Hansson
13079dd2a3
Merge pull request #299 from basecamp/report-host-with-error
...
Report the host an error occurred on
2023-05-22 09:57:22 +02:00
John McDowall
7daee9a0df
Update the README on the use of shelling out to the aws cli command to obtain the token for ECR automatically
2023-05-20 13:46:05 -07:00
Donal McBreen
f7c5840473
Report the host an error occurred on
...
The cause message doesn't include the host the error occurred on.
Before:
```
$ mrsk deploy
Acquiring the deploy lock...
Finished all in 0.1 seconds
ERROR (SocketError): getaddrinfo: nodename nor servname provided, or not known
```
After:
```
$ mrsk deploy -d staging
Acquiring the deploy lock...
Finished all in 0.1 seconds
ERROR (SocketError): Exception while executing on host server-123: getaddrinfo: nodename nor servname provided, or not known
```
2023-05-17 08:51:01 +01:00
David Heinemeier Hansson
a7d869ad40
Merge pull request #298 from basecamp/more-integration-tests
2023-05-17 09:39:00 +02:00
Donal McBreen
7cd25fd163
Add more integration tests
...
Add tests for main, app, accessory, traefik and lock commands.
Other commands are generally covered by the main tests.
Also adds some changes to speed up the integration specs:
- Use a persistent volume for the registry so we can push images to to
reuse between runs (also gets around docker hub rate limits)
- Use persistent volume for mrsk gem install, to avoid re-installing
between tests
- Shorter stop wait time
- Shorter connection timeouts on the load balancer
Takes just over 2 minutes to run all tests locally on an M1 Mac
after docker caches are primed.
2023-05-16 10:35:35 +01:00
Donal McBreen
ee25f200d7
Call app:boot to rollback
...
The code in Mrsk::Cli::Main#rollback was very similar to
Mrsk::Cli::App#boot.
Modify Mrsk::Cli::App#boot so it can handle rollbacks by:
1. Only renaming running containers
2. Trying first to start then run the new container
2023-05-16 08:59:07 +01:00
David Heinemeier Hansson
059388cb02
Merge pull request #292 from basecamp/unique-uncommited-changes-version
...
Highlight uncommitted changes in version
2023-05-15 14:05:31 +02:00
Donal McBreen
a5ef1f254f
Highlight uncommitted changes in version
...
If there are uncommitted changes in the app repository when building,
then append `_uncommitted_<random>` to it to distinguish the image
from one built from a clean checkout.
Also change the version used when renaming a container on redeploy to
distinguish and explain the version suffixes.
2023-05-12 11:08:48 +01:00
David Heinemeier Hansson
15e8ac0ced
Merge pull request #290 from acidtib/check-interval
...
add healthcheck interval option
2023-05-11 14:13:13 +02:00
acidtib
9a31c20321
add healthcheck interval option
2023-05-10 20:27:21 -06:00
River He
44b83151e3
Allow to inject environment variables to traefik
2023-05-10 03:18:26 +00:00
David Heinemeier Hansson
0defcbb640
Merge pull request #283 from basecamp/better-lock-messages
...
Better lock messages
2023-05-09 16:06:50 +02:00
Donal McBreen
5d33fb6c33
Better lock messages
...
- Debug verbosity commands
- Show lock status when we fail to acquire it
- Include lock acquire/release in runtime
2023-05-09 14:17:58 +01:00
David Heinemeier Hansson
e9d838ec46
Update README.md
2023-05-09 14:32:02 +02:00
David Heinemeier Hansson
ee319fee1c
Merge pull request #277 from xiaohui-zhangxh/bugfix/readme
...
Fix readme bug on traefik volumes option
2023-05-09 12:37:38 +02:00
xiaohui
5646f6cc64
fix readme bug on traefik volumes option
2023-05-07 23:58:38 +08:00
David Heinemeier Hansson
31aaa82991
Merge pull request #272 from olimart/patch-1
...
Fix typo mesasge --> message
2023-05-07 10:58:11 +02:00
Olivier
5ea552be40
Fix typo in message
2023-05-05 10:43:21 -04:00
David Heinemeier Hansson
625be70e4d
Bump version for 0.12.1
2023-05-05 14:33:25 +02:00
David Heinemeier Hansson
aafaee7ac8
Merge pull request #223 from basecamp/customizable-audit-broadcast
...
Allow customizing audit broadcast with env
2023-05-05 14:30:04 +02:00
David Heinemeier Hansson
97a190300d
Merge pull request #270 from basecamp/fix-aggressive-prune-breaking-rollback
...
Fix aggressive prune breaking rollback
2023-05-05 14:28:22 +02:00
Donal McBreen
326711a3e0
Fix aggressive prune breaking rollback
...
In the image prune command --all overrides --dangling=true. This removes
the image git sha image tag for the latest image which prevented
us from rolling back to it.
I've updated the integration test to now test deploy, redeploy and
rollback.
2023-05-05 12:13:14 +01:00
Kevin McConnell
82be521e66
Merge branch 'main' into customizable-audit-broadcast
...
* main:
Fix staging label bug
Fix typo
Capture container health log when unhealthy
Bump version for 0.12.0
2023-05-05 11:40:29 +01:00
David Heinemeier Hansson
21110080d5
Merge pull request #267 from danthegoodman1/patch-1
...
Fix staging label bug in README
2023-05-05 11:25:22 +02:00
David Heinemeier Hansson
ef107c41b6
Merge pull request #265 from Jberczel/improve-healthcheck-logging
...
Improve healthcheck logging
2023-05-05 11:24:55 +02:00
Dan Goodman
1bf4b6b76f
Fix staging label bug
...
I think this is the correct fix based on the `service-role-destination` format, but seeing as it wasn't changed I assumed it was incorrect.
2023-05-04 17:47:17 -04:00
Jeremy Daer
36a3b13bf4
Fix SSHKit #command override args mangling
2023-05-04 08:58:18 -07:00
Jberczel
01483140f5
Fix typo
2023-05-03 15:03:05 -04:00
Jberczel
0e19ead37c
Capture container health log when unhealthy
2023-05-03 15:03:05 -04:00
Jeremy Daer
048aecf352
Audit details ( #1 )
...
Audit details
* Audit logs and broadcasts accept `details` whose values are included as log tags and MRSK_* env vars passed to the broadcast command
* Commands may return execution options to the CLI in their args list
* Introduce `mrsk broadcast` helper for sending audit broadcasts
* Report UTC time, not local time, in audit logs. Standardize on ISO 8601 format
2023-05-02 11:42:05 -07:00
David Heinemeier Hansson
38c85e8021
Bump version for 0.12.0
2023-05-02 17:23:10 +02:00
David Heinemeier Hansson
88a7413b3e
Merge branch 'main' into pr/223
...
* main:
Don't run actions twice on PRs
Further distinguish dependency verification
Naming
Reveal configured dockerfile path
Style
Distinguish from server dependencies
Distinguish from local dependency verification
Improve clarity and intent
Style
Style
Style
Add local dependencies check
Bootstrap: use multi-platform installer
2023-05-02 14:44:16 +02:00
David Heinemeier Hansson
9cc73fed9a
Merge branch 'main' into pr/223
...
* main:
Simplify domain language to just "boot" and unscoped config keys
Retain a fixed number of containers when pruning
Don't assume rolling back in message
Check all hosts before rolling back
Ensure Traefik service name is consistent
Extend traefik delay by 1 second
Include traefik access logs
Check if we are still getting a 404
Also dump load balancer logs
Dump traefik logs when app not booted
Fix missing for apt-get
Report on container health after failure
Fix the integration test healthcheck
Allow percentage-based rolling deployments
Move `group_limit` & `group_wait` under `boot`
Limit rolling deployment to boot operation
Allow performing boot & start operations in groups
2023-05-02 14:43:17 +02:00
David Heinemeier Hansson
787ef96639
Don't run actions twice on PRs
2023-05-02 14:41:18 +02:00
David Heinemeier Hansson
1e8edc25e2
Merge pull request #205 from basecamp/docker-readiness
...
Bootstrap: multi-OS Docker install
2023-05-02 14:35:26 +02:00
David Heinemeier Hansson
b7877c59b4
Merge branch 'main' into docker-readiness
2023-05-02 14:30:35 +02:00
David Heinemeier Hansson
35b5b317af
Merge branch 'main' into pr/205
...
* main:
Simplify domain language to just "boot" and unscoped config keys
Retain a fixed number of containers when pruning
Don't assume rolling back in message
Check all hosts before rolling back
Ensure Traefik service name is consistent
Extend traefik delay by 1 second
Include traefik access logs
Check if we are still getting a 404
Also dump load balancer logs
Dump traefik logs when app not booted
Fix missing for apt-get
Report on container health after failure
Fix the integration test healthcheck
Allow percentage-based rolling deployments
Move `group_limit` & `group_wait` under `boot`
Limit rolling deployment to boot operation
Allow performing boot & start operations in groups
2023-05-02 14:29:06 +02:00
David Heinemeier Hansson
4c448f7eb1
Merge pull request #256 from Jberczel/check-local-dependencies
...
Add local dependencies check
2023-05-02 14:13:23 +02:00
David Heinemeier Hansson
263a24afe3
Further distinguish dependency verification
2023-05-02 14:09:10 +02:00
David Heinemeier Hansson
a2d99e48bf
Naming
2023-05-02 14:08:29 +02:00
David Heinemeier Hansson
a22e27dbf8
Reveal configured dockerfile path
2023-05-02 14:07:47 +02:00
David Heinemeier Hansson
bb74a74dc4
Style
2023-05-02 14:07:30 +02:00
David Heinemeier Hansson
c611a1616a
Distinguish from server dependencies
2023-05-02 14:06:06 +02:00
David Heinemeier Hansson
98e7b995d5
Distinguish from local dependency verification
2023-05-02 14:04:37 +02:00
David Heinemeier Hansson
ae2effb80c
Improve clarity and intent
2023-05-02 14:04:23 +02:00
David Heinemeier Hansson
f719540e0c
Style
2023-05-02 13:35:05 +02:00
David Heinemeier Hansson
cbda851436
Style
2023-05-02 13:34:56 +02:00
David Heinemeier Hansson
8854bb63a1
Merge pull request #254 from basecamp/retain-last-5-containers
...
Retain a fixed number of containers when pruning
2023-05-02 13:16:49 +02:00
David Heinemeier Hansson
35ea9f3c81
Merge pull request #255 from basecamp/check-all-hosts-for-rollback-container
...
Check all hosts before rolling back
2023-05-02 13:16:03 +02:00
David Heinemeier Hansson
18312f5191
Merge pull request #253 from basecamp/ensure-consistent-service-name
...
Ensure Traefik service name is consistent
2023-05-02 13:15:36 +02:00
David Heinemeier Hansson
71bc9bcf54
Merge pull request #222 from basecamp/deploy-groups
...
Allow booting containers in groups for rolling restarts
2023-05-02 13:14:32 +02:00
David Heinemeier Hansson
c83b74dcb7
Simplify domain language to just "boot" and unscoped config keys
2023-05-02 13:11:31 +02:00
Donal McBreen
971a91da15
Retain a fixed number of containers when pruning
...
Time based container and image retention can have variable space
requirements depending on how often we deploy.
- Only prune stopped containers, retaining the 5 newest
- Then prune dangling images so we only keep images for the retained
containers.
2023-05-02 10:15:08 +01:00
Donal McBreen
86d6f8d674
Don't assume rolling back in message
2023-05-02 10:14:50 +01:00
Donal McBreen
7fe24d5048
Check all hosts before rolling back
...
Hosts could end up out of sync with each other if prune commands are run
manually or when new hosts are added.
Before rolling back confirm that the required container is available on
all hosts and roles.
2023-05-02 10:14:50 +01:00
Kevin McConnell
a72f95f44d
Ensure Traefik service name is consistent
...
If we don't specify any service properties when labelling containers,
the generated service will be named according to the container. However,
we change the container name on every deployment (as it is versioned),
which means that the auto-generated service name will be different in
each container.
That is a problem for two reasons:
- Multiple containers share a common router while a deployment is
happening. At this point, the router configuration will be different
between the containers; Traefik flags this as an error, and stops
routing to the containers until it's resolved.
- We allow custom labels to be set in an app's config. In order to
define custom configuration on the service, we'll need to know what
it will be called.
Changed to force the service name by setting one of its properties.
2023-05-02 09:43:04 +01:00
David Heinemeier Hansson
dc3be30b16
Style
2023-05-02 10:29:49 +02:00
David Heinemeier Hansson
54881a0298
Merge pull request #250 from basecamp/integration-test-healthcheck-wget
...
Integration test healthcheck wget
2023-05-02 10:27:49 +02:00
David Heinemeier Hansson
19527b4f65
Merge branch 'main' into customizable-audit-broadcast
2023-05-02 10:25:25 +02:00
Jberczel
bfb70b2118
Add local dependencies check
...
Add checks for:
* Docker installed locally
* Docker buildx plugin installed locally
* Dockerfile exists
If checks fail, it will halt deployment and provide more specific error messages.
Also adds a cli subcommand:
`mrsk build dependencies`
Fixes : #109 and #237
2023-05-01 16:32:41 -04:00
Jeremy Daer
e85bd5ff63
Bootstrap: use multi-platform installer
...
* Limit auto-install to root users; otherwise, give manual install guidance
* Support non-Debian/Ubuntu with the multi-OS get.docker.com installer
2023-05-01 13:26:00 -07:00
Donal McBreen
d0f66db33c
Extend traefik delay by 1 second
2023-05-01 18:58:46 +01:00
Donal McBreen
650f9b1fbf
Include traefik access logs
2023-05-01 18:55:10 +01:00
Donal McBreen
1170e2311e
Check if we are still getting a 404
2023-05-01 18:32:07 +01:00
Donal McBreen
94f87edded
Also dump load balancer logs
2023-05-01 18:27:08 +01:00
Donal McBreen
548a1019c1
Dump traefik logs when app not booted
2023-05-01 18:21:22 +01:00
Donal McBreen
ca2e2bac2e
Fix missing for apt-get
2023-05-01 12:50:45 +01:00
Donal McBreen
494a1ae089
Report on container health after failure
2023-05-01 12:13:12 +01:00
Donal McBreen
a77428143f
Fix the integration test healthcheck
...
The alpine nginx container doesn't contain curl, so let's override the
healthcheck command to use wget.
2023-05-01 12:11:24 +01:00
David Heinemeier Hansson
4fa6a6c06d
Merge pull request #219 from basecamp/docker-health-checks
2023-04-28 11:43:33 +02:00
David Heinemeier Hansson
2ad0dc0703
Merge pull request #241 from Jberczel/fix-traefik-subcommand-typo
2023-04-28 11:38:46 +02:00
David Heinemeier Hansson
df067e4893
Merge pull request #244 from basecamp/get-lock-status-without-invoke
2023-04-25 18:57:05 +02:00
Donal McBreen
cd668066ff
Get lock status by executing directly
...
Getting the lock status with invoke passes through any options from the
original command which will raise an exception if they are not also
valid for the lock status command.
Fixes https://github.com/mrsked/mrsk/issues/239
2023-04-25 16:57:02 +01:00
David Heinemeier Hansson
1a7d123746
Merge pull request #245 from basecamp/integration-test-wait-for-healthy
...
Wait for healthy containers in integration test
2023-04-25 16:54:22 +02:00
Donal McBreen
52ca5b846a
Wait for healthy containers in integration test
...
Rather than waiting 5 seconds and hoping for the best after we boot
docker compose, add docker healthchecks and wait for all the containers
to be healthy.
2023-04-25 15:41:25 +01:00
Jberczel
126e0bbd06
Fix traefik remove_image desc typo
2023-04-24 17:40:28 -04:00
David Heinemeier Hansson
9ec3895dab
Merge pull request #216 from dmrty/add-ssh-client-to-dockerised-mrsk
2023-04-15 08:29:49 +02:00
David Heinemeier Hansson
a6245a6bc9
Merge pull request #221 from iamFIREcracker/patch-1
2023-04-15 08:29:03 +02:00
David Heinemeier Hansson
0d80709e2d
Merge pull request #224 from basecamp/integration-tests
2023-04-15 08:25:47 +02:00
Kevin McConnell
aceabb3824
Update README with env name change
2023-04-14 16:13:59 +01:00
Kevin McConnell
99fe31d4b4
Rename MRSK_EVENT -> MRSK_MESSAGE
...
It's a better name, and frees up `MRSK_EVENT` to be used later.
2023-04-14 16:11:42 +01:00
Donal McBreen
bcf8a927f5
Run a mrsk deploy integration test
...
Adds a simple integration test to ensure that `mrsk deploy` works.
Everything required is spun up with docker compose:
- shared: a container that contains an ssh key and a self signed cert to
be shared between the images
- deployer: the image we will deploy from
- registry: a docker registry
- two vm images to deploy into
- load_balancer: an nginx load balancer to use between our images
The other images are in privileged mode so that we can run
docker-in-docker. We need to run docker inside the images - mapping in
the docker socket doesn't work because both VMs would share the host
daemon.
The docker registry requires a self signed cert as you cannot use basic
auth over HTTP except on localhost. It runs on port 4443 rather than 443
because docker refused to accept that "registry" is a docker host and
tries to push images to docker.io/registry. "registry:4443" works fine.
The shared container contains the ssh keys for the deployer and vms, and
the self signed cert for the registry. When the shared container boots,
it copies them into a shared volume.
The other deployer and vm images are built with soft links from the
shared volume to the require locations. Their boot scripts wait for the
files to be copied in before continuing.
The root mrsk folder is mapped into the deployer container. On boot it
builds the gem and installs it.
Right now there's just a single test. We confirm that the load balancer
is returning a 502, run `mrsk deploy` and then confirm it returns 200.
2023-04-14 15:49:43 +01:00
Kevin McConnell
f055766918
Allow percentage-based rolling deployments
2023-04-14 12:46:14 +01:00
Kevin McConnell
a8726be20e
Move group_limit & group_wait under boot
...
Also make formatting the group strategy the responsibility of the
commander.
2023-04-14 11:31:51 +01:00
Kevin McConnell
100b72e4b4
Limit rolling deployment to boot operation
2023-04-14 10:41:07 +01:00
Kevin McConnell
828e56912e
Allow customizing audit broadcast with env
...
When invoking the audit broadcast command, provide a few environment
variables so that people can customize the format of the message if they
want.
We currently provide `MRSK_PERFORMER`, `MRSK_ROLE`, `MRSK_DESTINATION` and
`MRSK_EVENT`.
Also adds the destination to the default message, which we continue to
send as the first argument as before.
2023-04-13 17:54:25 +01:00
Kevin McConnell
df202d6ef4
Move health checks into Docker
...
Replaces our current host-based HTTP healthchecks with Docker
healthchecks, and adds a new `healthcheck.cmd` config option that can be
used to define a custom health check command. Also removes Traefik's
healthchecks, since they are no longer necessary.
When deploying a container that has a healthcheck defined, we wait for
it to report a healthy status before stopping the old container that it
replaces. Containers that don't have a healthcheck defined continue to
wait for `MRSK.config.readiness_delay`.
There are some pros and cons to using Docker healthchecks rather than
checking from the host. The main advantages are:
- Supports non-HTTP checks, and app-specific check scripts provided by a
container.
- When booting a container, allows MRSK to wait for a container to be
healthy before shutting down the old container it replaces. This
should be safer than relying on a timeout.
- Containers with healthchecks won't be active in Traefik until they
reach a healthy state, which prevents any traffic from being routed to
them before they are ready.
The main _disadvantage_ is that containers are now required to provide
some way to check their health. Our default check assumes that `curl` is
available in the container which, while common, won't always be the
case.
2023-04-13 16:08:43 +01:00
Kevin McConnell
f530009a6e
Allow performing boot & start operations in groups
...
Adds top-level configuration options for `group_limit` and `group_wait`.
When a `group_limit` is present, we'll perform app boot & start
operations on no more than `group_limit` hosts at a time, optionally
sleeping for `group_wait` seconds after each batch.
We currently only do this batching on boot & start operations (including
when they are part of a deployment). Other commands, like `app stop` or
`app details` still work on all hosts in parallel.
2023-04-13 15:58:27 +01:00
Matteo Landi
4b36df5dab
Configure git to trust /workdir
...
Resolves : #220
2023-04-13 15:13:13 +02:00
Gilles Demarty
79d46ceb16
Add OpenSSH Client to the alpine server
2023-04-12 19:20:09 +02:00
David Heinemeier Hansson
bc8875e020
Merge pull request #183 from basecamp/cleanup-excessive-containers-running
...
Clear stale containers
2023-04-12 15:58:59 +02:00
David Heinemeier Hansson
d4a72da9d8
Merge pull request #213 from ncreuschling/fix-spelling-of-label
...
fix spelling of label
2023-04-12 15:58:46 +02:00
David Heinemeier Hansson
04a04c05e0
Merge branch 'main' into fix-spelling-of-label
2023-04-12 15:58:41 +02:00
David Heinemeier Hansson
cff8b058af
Merge pull request #214 from tannakartikey/traefik_lables_readme_example_fix
...
Traefik label example typo fix
2023-04-12 15:58:08 +02:00
David Heinemeier Hansson
b6f7d94ac3
Merge pull request #144 from monorkin/shell-escape-dollar-signs
...
Shell escape dollar signs
2023-04-12 15:57:37 +02:00
Stanko K.R
3ab16c8994
Shell escape dollar signs
...
But allow for shell expansion using curly braces e.g. ${PWD}
2023-04-12 15:55:54 +02:00
Kartikey Tanna
b6743e5e1c
Traefik label example typo fix
2023-04-12 19:21:20 +05:30
Jacopo
9ddb181f50
Merge branch 'main' into cleanup-excessive-containers-running
...
* main:
Pull the primary host from the role
Minimise holding the deploy lock
2023-04-12 15:19:19 +02:00
Nicolai Reuschling
fbe1458478
fix spelling of label
2023-04-12 14:56:39 +02:00
David Heinemeier Hansson
2f1393cd92
Merge pull request #212 from basecamp/role-primary-hosts
...
Pull the primary host from the role
2023-04-12 14:09:38 +02:00
David Heinemeier Hansson
76673c0c1b
Merge pull request #211 from basecamp/minimise-lock-retention
...
Minimise holding the deploy lock
2023-04-12 14:08:05 +02:00
Donal McBreen
fb62f2e6e1
Pull the primary host from the role
...
So commands like this run on a host with the specified role:
```
mrsk app exec -r=console -i "/bin/bash`
mrsk app logs -f -r=workers
```
2023-04-12 13:03:02 +01:00
Donal McBreen
051556674f
Minimise holding the deploy lock
...
If we get an error we'll only hold the deploy lock if it occurs while
trying to switch the running containers.
We'll also move tagging the latest image from when the image is pulled
to just before the container switch. This ensures that earlier errors
don't leave the hosts with an updated latest tag while still running the
older version.
2023-04-12 12:09:56 +01:00
Jacopo
3cbf4aea46
Make method private method and use :send
2023-04-12 11:53:49 +02:00
Jacopo
5ed431b807
Merge branch 'main' into cleanup-excessive-containers-running
...
* main: (24 commits)
Bump version for 0.11.0
Labels can be added to Traefik
Make rollbacks role-aware
fix typo role to roles
Explained the latest modifications of Traefik container labels
Remove .idea folder
Updated README.md with new healthcheck.max_attempts option
Fix test case: console output message was not updated to display the current/total attempts
Require net-ssh ~> 7.0 for SHA-2 support
Improved deploy lock acquisition
Excess CR
Style
Simpler
Make it explicit, focus on Ubuntu
More explicit
Not that --bundle is a Rails 7+ option
Update README.md
Update README.md
Improved: configurable max_attempts for healthcheck
Traefik service name to be derived from role and destination
...
2023-04-12 11:52:47 +02:00
David Heinemeier Hansson
60a19f0b30
Bump version for 0.11.0
2023-04-12 11:45:33 +02:00
David Heinemeier Hansson
2d0a7e1b67
Merge pull request #208 from tannakartikey/add_labels_to_traefik
...
Labels can be added to Traefik
2023-04-12 11:35:28 +02:00
David Heinemeier Hansson
49df19fb0d
Merge pull request #209 from ncreuschling/fix-roles-documentation
...
fix typo role to roles
2023-04-12 11:34:02 +02:00
David Heinemeier Hansson
cef8fddfb4
Merge pull request #210 from basecamp/role-aware-rollbacks
...
Make rollbacks role-aware
2023-04-12 11:33:45 +02:00
Kartikey Tanna
c59eb00dd0
Labels can be added to Traefik
2023-04-12 14:53:48 +05:30
Donal McBreen
43f7409de0
Make rollbacks role-aware
...
Rollbacks stopped working after https://github.com/mrsked/mrsk/pull/99 .
We'll confirm that a container is available for the first role on the
primary host before attempting to rollback.
2023-04-12 09:59:39 +01:00
Nicolai Reuschling
448ea7719f
fix typo role to roles
2023-04-12 10:53:10 +02:00
Jacopo
72b70e3e9e
More compact
2023-04-11 16:22:47 +02:00
Jacopo
e8697327fa
Use no_commands block
2023-04-11 16:20:16 +02:00
Jacopo
0bfd4ca780
Use cli = self approach
2023-04-11 16:04:46 +02:00
Jacopo
12e3a562c4
Extract helper
2023-04-11 15:26:55 +02:00
David Heinemeier Hansson
ab54dbdb8b
Merge pull request #206 from tannakartikey/traefik_rule_docs
...
Explained the latest modifications of Traefik container labels
2023-04-11 14:18:31 +02:00
David Heinemeier Hansson
ac3771447a
Merge pull request #203 from matharvard/main
...
Require net-ssh ~> 7.0 for SHA-2 support
2023-04-11 14:17:52 +02:00
David Heinemeier Hansson
daa0c9b5be
Merge pull request #196 from handy-la/main
...
Configurable max_attempts for healthcheck
2023-04-11 14:17:17 +02:00
Jacopo
c3393c8213
Remove dot
2023-04-11 11:03:11 +02:00
Jacopo
03d933d10b
Add Role to the message
2023-04-11 10:59:25 +02:00
Jacopo
579b4cd9aa
Simplify
...
By using and ad-hoc command to detect and stop stale containers.
By default stale containers are only detected.
2023-04-11 10:22:03 +02:00
Jacopo
f9436d5673
Style
2023-04-11 08:53:33 +02:00
Jacopo
8ae5331d97
Boot stop all the old containers
2023-04-11 08:53:33 +02:00
Jacopo
4d47fbdf41
Merge stop and stop_stale_containers
2023-04-11 08:53:33 +02:00
Jacopo
e980f1164e
Avoid using GNU-only Perl Regepx Grep
2023-04-11 08:53:33 +02:00
Jacopo
e2f6db5cae
Clear stale containers
...
By stopping all the older containers with matching /#{service}-#{role}-#{dest}-.*/ running on the same host.
2023-04-11 08:53:33 +02:00
Kartikey Tanna
d3936363d0
Explained the latest modifications of Traefik container labels
2023-04-11 10:20:16 +05:30
Arturo Ojeda
cfc8fa0590
Remove .idea folder
2023-04-10 22:33:20 -06:00
Arturo Ojeda
161ebe4bc1
Updated README.md with new healthcheck.max_attempts option
2023-04-10 22:26:10 -06:00
Arturo Ojeda
514b2aa243
Fix test case: console output message was not updated to display the current/total attempts
2023-04-10 09:29:19 -06:00
David Heinemeier Hansson
18031bc552
Merge pull request #202 from basecamp/deploy-lock-acquisition
...
Improved deploy lock acquisition
2023-04-10 16:42:03 +02:00
Mat Harvard
d8c61004e4
Require net-ssh ~> 7.0 for SHA-2 support
...
Versions of net-ssh before 7.0 do not support the SHA-2 algorithm and result in mrsk not being able to connect to hosts using keys generated with it. net-ssh is also a dependency of sshkit, however, sshkit has a version requirement of >= 2.8.0 for net-ssh, so is not effective at ensuring mrsk has the version it needs to be the most compatible.
2023-04-10 07:29:07 -07:00
Donal McBreen
c4df440c79
Improved deploy lock acquisition
...
1. Don't raise lock error for non-lock issues during lock acquire
(see https://github.com/mrsked/mrsk/pull/181 )
2. If there is an error while the lock is held, don't release the lock
and send a warning to stderr
2023-04-10 15:23:00 +01:00
David Heinemeier Hansson
fb1718ca6d
Merge pull request #197 from tannakartikey/traefik_rules_with_destination
...
Traefik service name to be derived from role and destination
2023-04-10 15:11:07 +02:00
David Heinemeier Hansson
7d17a6c3b5
Excess CR
2023-04-10 15:10:08 +02:00
David Heinemeier Hansson
f4133de896
Merge pull request #176 from dilpreet92/enable_ssh_over_proxy_command
...
Enable ssh over proxy command
2023-04-10 14:41:45 +02:00
David Heinemeier Hansson
a9488e935d
Style
2023-04-10 14:39:18 +02:00
David Heinemeier Hansson
ac61528dfc
Merge pull request #189 from basecamp/traefik-image
...
Traefik image config for version pinning, upgrades, and custom images
2023-04-10 14:35:30 +02:00
David Heinemeier Hansson
0eb7a8d087
Merge branch 'main' into pr/176
...
* main:
Simpler
Make it explicit, focus on Ubuntu
More explicit
Not that --bundle is a Rails 7+ option
Update README.md
Update README.md
Add github discussions link to readme
Bump debug to fix missing deps in CI
Only redact the non-sensitive bits of build args and env vars.
improve code sample (traefik configuration)
2023-04-10 14:31:43 +02:00
David Heinemeier Hansson
7559f439e9
Merge pull request #195 from nickhammond/patch-1
...
Add github discussions link to readme
2023-04-10 14:28:59 +02:00
David Heinemeier Hansson
54a5b90d8f
Simpler
2023-04-10 14:28:52 +02:00
David Heinemeier Hansson
a245adfad2
Merge pull request #200 from huksley/main
...
Add sample commands to bootstrap non-root ssh server
2023-04-10 14:27:13 +02:00
David Heinemeier Hansson
f386c3bdab
Make it explicit, focus on Ubuntu
2023-04-10 14:26:49 +02:00
David Heinemeier Hansson
2a3e576182
More explicit
2023-04-10 14:24:51 +02:00
David Heinemeier Hansson
f3e3196ce5
Not that --bundle is a Rails 7+ option
2023-04-10 14:22:58 +02:00
Ruslan Gainutdinov
fca5b11682
Update README.md
...
Use docker.io on Ubuntu
2023-04-10 12:26:57 +03:00
Ruslan Gainutdinov
d09cddde8d
Update README.md
...
Add sample commands to bootstrap non-root ssh server.
2023-04-10 12:23:06 +03:00
Arturo Ojeda
3969f56fa6
Improved: configurable max_attempts for healthcheck
2023-04-09 12:07:27 -06:00
Kartikey Tanna
c60cc92dfe
Traefik service name to be derived from role and destination
2023-04-09 13:44:57 +05:30
Arturo Ojeda
cb3c5a53f4
Configurable max_attempts for healthcheck
2023-04-08 19:52:53 -06:00
Nick Hammond
ef04410d77
Add github discussions link to readme
...
I realize that there's a discussions link on github but I didn't realize mrsk actually utilized it until I saw it mentioned on Discord. I was thinking adding it to the readme would help push people there.
2023-04-08 13:33:31 -07:00
Jeremy Daer
bd8f13dd5e
Traefik image config for version pinning, upgrades, and custom images
...
Accounts for the 2.9.10 security release and allows testing Traefik 3 betas.
* Use `image` to configure a specific Traefik Docker image.
* Default to `traefik:v2.9` to track future 2.9.x minor releases rather
than tightly pinning to `v2.9.9`.
* Support images from the configured registry.
References #165
2023-04-07 14:15:25 -07:00
David Heinemeier Hansson
2146f6d0ec
Merge pull request #182 from basecamp/sensitive-args
...
Only redact the non-sensitive bits of build args and env vars.
2023-04-06 16:19:41 +02:00
David Heinemeier Hansson
52d8c112d3
Merge branch 'main' into pr/182
...
* main:
Bump debug to fix missing deps in CI
2023-04-06 16:18:22 +02:00
David Heinemeier Hansson
c9afd66222
Merge pull request #184 from basecamp/fix-ci
2023-04-06 13:21:26 +02:00
Jeremy Daer
36c458407f
Bump debug to fix missing deps in CI
2023-04-05 12:00:15 -07:00
Jeremy Daer
c137b38c87
Only redact the non-sensitive bits of build args and env vars.
...
* `-e [REDACTED]` → `-e SOME_SECRET=[REDACTED]`
* Replaces `Utils.redact` with `Utils.sensitive` to clarify that we're
indicating redactability, not actually performing redaction.
* Redacts from YAML output, including `mrsk config` (fixes #96 )
2023-04-05 09:45:28 -07:00
David Heinemeier Hansson
f851d6528d
Merge pull request #169 from ncreuschling/patch-1
...
improve code sample (traefik configuration)
2023-04-05 16:31:10 +02:00
Dilpreet Singh
12632aa7f9
Enable ssh over proxy command
2023-04-03 17:14:06 +05:30
Nicolai Reuschling
2f97bc488f
improve code sample (traefik configuration)
...
fixed yaml format (code sample traefik configuration)
2023-03-31 11:50:43 +02:00
David Heinemeier Hansson
032266a76a
Bump version for 0.10.1
2023-03-29 16:23:58 +02:00
David Heinemeier Hansson
33cc6c8bae
Merge pull request #166 from calmyournerves/exit-code
...
Set proper exit code on failure
2023-03-29 16:21:54 +02:00
Samuel Sieg
5638ab8594
Set proper exit code on failure
2023-03-29 13:47:34 +02:00
David Heinemeier Hansson
60916cdac3
Bump version for 0.10.0
2023-03-28 18:05:46 +02:00
David Heinemeier Hansson
1f83b5f6be
Fix failure to pass on class options to subcommands
2023-03-28 18:04:16 +02:00
David Heinemeier Hansson
070c6e8e75
Merge pull request #165 from basecamp/pin-traefik-version
...
Pin Traefik to v2.9.9
2023-03-28 16:27:49 +02:00
Kevin McConnell
2957388bf6
Pin Traefik to v2.9.9
2023-03-28 14:59:03 +01:00
David Heinemeier Hansson
7f178101f7
Merge pull request #164 from basecamp/accessory-hosts-or-roles
...
Run accessories on multiple hosts or roles
2023-03-28 14:31:24 +02:00
David Heinemeier Hansson
aed345466f
Dropped "all"
2023-03-28 14:28:54 +02:00
Donal McBreen
c06585fef4
Daemon/host/role accessories
...
Allow the hosts for accessories to be specified by host or role, or on
all app hosts by setting `daemon: true`.
```
# Single host
mysql:
host: 1.1.1.1
# Multiple hosts
redis:
hosts:
- 1.1.1.1
- 1.1.1.2
# By role
monitoring:
roles:
- web
- jobs
```
2023-03-28 13:26:27 +01:00
David Heinemeier Hansson
fd5313ec3e
Merge pull request #163 from milk1000cc/rolify-app-logs
...
Rolify app logs cli/command
2023-03-28 14:13:02 +02:00
David Heinemeier Hansson
4184d3204e
Merge pull request #161 from tbuehlmann/push-latest-image
...
Push <image>:latest in addition to <image>:<git-ref>
2023-03-28 14:09:32 +02:00
milk1000cc
15a41d3fd8
Follow web role logs when no roles are specified
2023-03-28 09:02:42 +09:00
milk1000cc
03614bfb79
Rolify app logs cli/command
2023-03-27 23:08:46 +09:00
Tobias Bühlmann
078d68b170
Push <image>:latest in addition to <image>:<git-ref>
2023-03-27 12:52:11 +02:00
David Heinemeier Hansson
cec82ac641
Merge pull request #158 from basecamp/zero-downtime-redeploys
2023-03-24 18:27:29 +01:00
Donal McBreen
05488e4c1e
Zero downtime redeploys
...
When deploying check if there is already a container with the existing
name. If there is rename it to "<version>_<random_hex_string>" to remove
the name clash with the new container we want to boot.
We can then do the normal zero downtime run/wait/stop.
While implementing this I discovered the --filter name=foo does a
substring match for foo, so I've updated those filters to do an exact
match instead.
2023-03-24 17:09:20 +00:00
David Heinemeier Hansson
01a2b678d7
Merge pull request #154 from basecamp/lock-deploys
...
Deploy locks
2023-03-24 15:50:33 +01:00
David Heinemeier Hansson
84540cee7b
Merge branch 'main' into pr/154
...
* main: (32 commits)
Inline default as with other options
Symbols!
Fix tests
test stop with custom stop wait time
No need to replicate Docker default
Describe purpose rather than elements
Style and ordering
Customizable stop wait time
Fix tests
Ensure it also works when configuring just log options without setting a driver
Add accessory test
Undo change
Improve test
Update README
Ensure default log option `max-size=10m`
#142 Allow to customize container options in accessories
Fix flaky test
Fix tests
More resilient tests
Fix other tests
...
2023-03-24 15:43:17 +01:00
David Heinemeier Hansson
5bbb4aeb58
Merge pull request #131 from calmyournerves/global-logging-config
...
Global logging configuration
2023-03-24 15:36:11 +01:00
David Heinemeier Hansson
6a27a46e5f
Inline default as with other options
2023-03-24 15:34:34 +01:00
David Heinemeier Hansson
b5ccc1fa5d
Merge branch 'main' into global-logging-config
2023-03-24 15:32:41 +01:00
David Heinemeier Hansson
e2e5e18af9
Merge pull request #155 from basecamp/gracefully-shut-down-containers
...
Customizable stop wait time
2023-03-24 15:31:14 +01:00
David Heinemeier Hansson
4fa71834ad
Symbols!
2023-03-24 15:27:11 +01:00
David Heinemeier Hansson
65663ae2ea
Merge branch 'main' into pr/155
...
* main:
Describe purpose rather than elements
Style and ordering
#142 Allow to customize container options in accessories
2023-03-24 15:25:45 +01:00
Samuel Sieg
4044abdde1
Fix tests
2023-03-24 15:25:29 +01:00
Samuel Sieg
bc64a07a95
Merge branch 'main' into global-logging-config
2023-03-24 15:24:06 +01:00
David Heinemeier Hansson
fdb2502216
test stop with custom stop wait time
2023-03-24 15:22:34 +01:00
David Heinemeier Hansson
a9bb8d7376
No need to replicate Docker default
2023-03-24 15:18:18 +01:00
David Heinemeier Hansson
53095a053e
Describe purpose rather than elements
2023-03-24 15:16:38 +01:00
David Heinemeier Hansson
4ab5199853
Style and ordering
2023-03-24 15:16:15 +01:00
David Heinemeier Hansson
348f5844d5
Merge pull request #153 from javierav/feature/accessory-options
...
#142 Allow to customize container options in accessories
2023-03-24 15:09:12 +01:00
Jacopo
9b43a6b23b
Customizable stop wait time
...
Configurable via a global `stop_wait_time` option.
The default is `10` which matches Docker defaults.
2023-03-24 15:04:45 +01:00
David Heinemeier Hansson
1f196045a9
Merge pull request #99 from tbuehlmann/role-awareness
...
Role aware container names
2023-03-24 15:01:34 +01:00
Samuel Sieg
86e99fb079
Merge branch 'main' into global-logging-config
2023-03-24 14:40:27 +01:00
David Heinemeier Hansson
494e29d672
Fix tests
2023-03-24 14:35:17 +01:00
David Heinemeier Hansson
93423f2f20
Merge branch 'main' into pr/99
...
* main:
Wording
Remove accessory images using tags rather than labels
Update readme to point to ghcr.io/mrsked/mrsk
Validate that all roles have hosts
Commander needn't accumulate configuration
Pull latest image tag, so we can identity it
Default to deploying the config version
Remove unneeded Dockerfile.dind, update Readme
add D-in-D dockerfile, update Readme
2023-03-24 14:26:31 +01:00
Donal McBreen
8d8f9f6ada
Deploy locks
...
Add a deploy lock for commands that are unsafe to run concurrently.
The lock is taken by creating a `mrsk_lock` directory on the primary
host. Details of who took the lock are added to a details file in that
directory.
Additional CLI commands have been added to manual release and acquire
the lock and to check its status.
```
Commands:
mrsk lock acquire -m, --message=MESSAGE # Acquire the deploy lock
mrsk lock help [COMMAND] # Describe subcommands or one specific subcommand
mrsk lock release # Release the deploy lock
mrsk lock status # Report lock status
Options:
-v, [--verbose], [--no-verbose] # Detailed logging
-q, [--quiet], [--no-quiet] # Minimal logging
[--version=VERSION] # Run commands against a specific app version
-p, [--primary], [--no-primary] # Run commands only on primary host instead of all
-h, [--hosts=HOSTS] # Run commands on these hosts instead of all (separate by comma)
-r, [--roles=ROLES] # Run commands on these roles instead of all (separate by comma)
-c, [--config-file=CONFIG_FILE] # Path to config file
# Default: config/deploy.yml
-d, [--destination=DESTINATION] # Specify destination to be used for config file (staging -> deploy.staging.yml)
-B, [--skip-broadcast], [--no-skip-broadcast] # Skip audit broadcasts
```
If we add support for running multiple deployments on a single server
we'll need to extend the locking to lock per deployment.
2023-03-24 12:28:08 +00:00
David Heinemeier Hansson
17e74910e4
Merge pull request #150 from basecamp/remove-accessory-image
...
Remove accessory images using tags rather than labels
2023-03-24 13:21:15 +01:00
David Heinemeier Hansson
8ebcafd3d8
Wording
2023-03-24 13:20:52 +01:00
David Heinemeier Hansson
89b4b909db
Merge pull request #118 from kumulustech/kumulus/docker-in-docker
...
Add docker in docker to Dockerfile for container dev
2023-03-24 13:19:33 +01:00
David Heinemeier Hansson
c89b77127b
Merge pull request #143 from djmb/default-to-deploying-config-version
...
Default to deploying the config version
2023-03-24 12:36:20 +01:00
Samuel Sieg
9c27ead21f
Ensure it also works when configuring just log options without setting a driver
2023-03-24 09:38:02 +01:00
Samuel Sieg
c3de89bb59
Add accessory test
2023-03-24 09:19:13 +01:00
Samuel Sieg
20a6bc31cd
Undo change
2023-03-24 09:15:37 +01:00
Samuel Sieg
ba5bdf95ec
Improve test
2023-03-24 09:15:30 +01:00
Samuel Sieg
3392fc6c1b
Update README
2023-03-24 09:15:03 +01:00
Samuel Sieg
7369be48ff
Ensure default log option max-size=10m
2023-03-24 09:10:36 +01:00
Samuel Sieg
4670db7f6d
Merge branch 'main' into global-logging-config
2023-03-24 08:35:43 +01:00
Jeremy Daer
e859a581ab
Remove accessory images using tags rather than labels
2023-03-23 15:59:28 -07:00
Javier Aranda
5d5d58a4ec
#142 Allow to customize container options in accessories
2023-03-23 23:56:59 +01:00
Robert Starmer
cf38feb1d6
Update readme to point to ghcr.io/mrsked/mrsk
2023-03-23 12:35:15 -07:00
David Heinemeier Hansson
e2d10ec5a9
Merge pull request #145 from basecamp/config-version
...
Commander needn't accumulate configuration
2023-03-23 17:51:30 +01:00
Jeremy Daer
035e4afff7
Validate that all roles have hosts
2023-03-23 08:57:34 -07:00
Jeremy Daer
1887a6518e
Commander needn't accumulate configuration
...
Commander had version/destination solely to incrementally accumulate CLI
options. Simpler to configure in one shot.
Clarifies responsibility and lets us introduce things like
`abbreviated_version` in one spot - Configuration.
2023-03-23 08:57:32 -07:00
Donal McBreen
1ed4a37da2
Pull latest image tag, so we can identity it
...
`docker image ls` doesn't tell us what the latest deployed image is (e.g
if we've rolled back). Pull the latest image tag through to the server
so we can use it instead.
2023-03-23 14:39:32 +00:00
David Heinemeier Hansson
7e1596e722
Fix flaky test
2023-03-23 15:36:02 +01:00
David Heinemeier Hansson
e7e3cd98eb
Fix tests
2023-03-23 15:16:10 +01:00
David Heinemeier Hansson
a1fc00347b
Merge branch 'main' into pr/99
...
* main:
Ask for access token
Style
Style
config.traefik is already nil safe
Update README.md
Bump dev deps and consolidate platform matches
Deploys mention the released service@version
Accessories aren't required to publish a port
Accessories may be pulled from authenticated registries
Polish destination config loading
Allow arbitrary docker options for traefik
Fixed typos
Fixed readme
Rebased on main
Added volume configuration in response to issue coments
Modified in response to PR comments
Added the additional_ports configuration
2023-03-23 14:48:13 +01:00
David Heinemeier Hansson
f73c526890
Ask for access token
2023-03-23 14:46:41 +01:00
David Heinemeier Hansson
65b90dd5c8
Merge branch 'main' into default-to-deploying-config-version
2023-03-23 14:42:31 +01:00
David Heinemeier Hansson
9648721ce7
Merge pull request #146 from basecamp/tell-me-more
...
Deploys mention the service and version
2023-03-23 14:38:31 +01:00
David Heinemeier Hansson
e409281bb2
Merge pull request #147 from basecamp/destination-config-polish
...
Polish destination config loading
2023-03-23 14:35:29 +01:00
David Heinemeier Hansson
bab8e42965
Merge pull request #151 from basecamp/portless-accessories
...
Accessories aren't required to publish a port
2023-03-23 14:32:58 +01:00
David Heinemeier Hansson
110df5244b
Merge pull request #152 from basecamp/deps
...
Bump dev deps and consolidate platform matches
2023-03-23 14:31:22 +01:00
David Heinemeier Hansson
01d684746e
Merge pull request #100 from stepbeekio/feature/multiple-traefik-entrypoints
...
Added the docker options override configuration for traefik
2023-03-23 14:28:40 +01:00
David Heinemeier Hansson
951a71f38e
Style
2023-03-23 14:26:12 +01:00
David Heinemeier Hansson
8b755c6973
Style
2023-03-23 14:24:34 +01:00
David Heinemeier Hansson
9a909ba7eb
config.traefik is already nil safe
2023-03-23 14:06:15 +01:00
David Heinemeier Hansson
14512fe409
Update README.md
2023-03-23 12:10:56 +01:00
David Heinemeier Hansson
e97216b0ea
Merge pull request #149 from basecamp/private-accessories
...
Private accessory images
2023-03-23 09:57:39 +01:00
Jeremy Daer
f3d93d3899
Bump dev deps and consolidate platform matches
2023-03-23 01:40:05 -07:00
Jeremy Daer
53d7f9d528
Deploys mention the released service@version
...
Less work for broadcast commands to take on.
Also fixes a bug where rollback on hosts without a running container
would stop the container they had just started.
2023-03-23 01:09:25 -07:00
Jeremy Daer
c870e560c1
Accessories aren't required to publish a port
...
Allows for background accessories like schedulers that don't act
as typical network service dependencies and have no port to expose.
2023-03-23 00:10:30 -07:00
Jeremy Daer
04b1d5e49e
Accessories may be pulled from authenticated registries
2023-03-22 23:48:22 -07:00
Robert Starmer
714960f184
Merge branch 'main' into kumulus/docker-in-docker
2023-03-22 11:27:28 -07:00
Jeremy Daer
c0d5b48f22
Polish destination config loading
...
* `Pathname#sub_ext` to munge .yml ext to .destination.yml
* Extract multi-file config merge
2023-03-22 10:38:37 -07:00
Donal McBreen
fb3353084f
Default to deploying the config version
...
If we don't supply a version when deploying we'll use the result of
docker image ls to decide which image to boot. But that doesn't
necessarily correspond to the one we have just built.
E.g. if you do something like:
```
mrsk deploy # deploys git sha AAAAAAAAAAAAAA
git commit --amend # update the commit message
mrsk deploy # deploys git sha BBBBBBBBBBBBBB
```
In this case running `docker image ls` will give you the same image
twice (because the contents are identical) with tags for both SHAs but
the image we have just built will not be returned first. Maybe the order
is random, but it always seems to come second as far as I have seen.
i.e you'll get something like:
```
REPOSITORY TAG IMAGE ID CREATED SIZE
foo/bar AAAAAAAAAAAAAA 6272349a9619 31 minutes ago 791MB
foo/bar BBBBBBBBBBBBBB 6272349a9619 31 minutes ago 791MB
```
Since we already know what version we want to deploy from the config,
let's just pass that through.
2023-03-22 16:14:50 +00:00
David Heinemeier Hansson
19104cafb4
Merge branch 'main' into role-awareness
2023-03-21 08:20:26 -04:00
Samuel Sieg
1bdfc217c4
Merge branch 'main' into global-logging-config
2023-03-21 13:20:12 +01:00
David Heinemeier Hansson
83dc82661b
Merge pull request #125 from calmyournerves/fix-destination-filter
...
Fix label filters when destination is passed
2023-03-21 07:44:59 -04:00
David Heinemeier Hansson
790be0f5f3
Style
2023-03-21 12:42:04 +01:00
David Heinemeier Hansson
49d60a045a
Style
2023-03-21 12:41:28 +01:00
David Heinemeier Hansson
60faf27a05
More resilient tests
2023-03-20 17:40:36 +01:00
David Heinemeier Hansson
43d1ecc94b
Fix other tests
2023-03-20 17:33:13 +01:00
David Heinemeier Hansson
00b970323b
Merge branch 'main' into pr/99
...
* main:
Add another assertion for `escape_shell_value`
Add tests for `Mrsk::Utils`
Fix indentation
Don't report exception here too
Don't report exception
Add CLI tests for remaining commands that are not tested yet
Minor: Properly require active_support
2023-03-20 17:31:50 +01:00
David Heinemeier Hansson
d0c4030257
Merge pull request #128 from calmyournerves/utils-tests
...
Tests for `Mrsk::Utils`
2023-03-20 02:28:42 -04:00
Robert Starmer
9591096131
Merge branch 'main' into kumulus/docker-in-docker
2023-03-19 12:34:32 -07:00
Samuel Sieg
b635b3198f
Fix
2023-03-19 09:49:23 +01:00
Samuel Sieg
662873de49
Add logging to README
2023-03-19 09:48:54 +01:00
Samuel Sieg
b5372988f7
Add global logging configuration
2023-03-19 09:21:08 +01:00
Samuel Sieg
c3d0382935
Add another assertion for escape_shell_value
2023-03-17 16:31:10 +01:00
Samuel Sieg
2de5250486
Add tests for Mrsk::Utils
2023-03-17 16:29:25 +01:00
Samuel Sieg
491777221f
Fix destination label filter
2023-03-16 16:15:31 +01:00
David Heinemeier Hansson
d167e48584
Merge pull request #122 from calmyournerves/add-cli-tests
...
Add CLI tests for remaining commands that are not tested yet
2023-03-16 09:31:28 -04:00
David Heinemeier Hansson
d071246865
Merge pull request #119 from ylecuyer/active_support-yle
...
Minor: Properly require active_support
2023-03-16 09:29:34 -04:00
Samuel Sieg
dae8b14469
Fix indentation
2023-03-16 08:35:12 +01:00
Samuel Sieg
b166f3fbf4
Don't report exception here too
2023-03-16 08:29:10 +01:00
Samuel Sieg
d33b723afb
Don't report exception
2023-03-16 08:24:54 +01:00
Samuel Sieg
aae290cefc
Add CLI tests for remaining commands that are not tested yet
2023-03-15 16:48:12 +01:00
Stephen van Beek
4c542930c5
Allow arbitrary docker options for traefik
2023-03-15 15:37:10 +00:00
Tobias Bühlmann
a15603655c
Adapt test for single host
2023-03-15 09:28:10 +01:00
Robert Starmer
11af999800
Remove unneeded Dockerfile.dind, update Readme
2023-03-14 16:27:19 -07:00
David Heinemeier Hansson
cb824bdc42
Merge branch 'main' into role-awareness
2023-03-14 19:11:10 -04:00
Yoann Lecuyer
85a0267447
Minor: Properly require active_support
2023-03-14 23:29:00 +01:00
Robert Starmer
886914c82e
Merge branch 'main' into kumulus/docker-in-docker
2023-03-14 14:14:07 -07:00
Robert Starmer
5b506a2daa
add D-in-D dockerfile, update Readme
2023-03-14 14:14:02 -07:00
Stephen van Beek
9843c5e1ce
Fixed typos
2023-03-14 20:13:13 +00:00
Stephen van Beek
c2ca269eb6
Fixed readme
2023-03-14 20:12:11 +00:00
Stephen van Beek
53046efad4
Rebased on main
2023-03-14 20:11:09 +00:00
Stephen van Beek
2db1bfde00
Added volume configuration in response to issue coments
2023-03-14 19:59:19 +00:00
Stephen van Beek
2cea12c56b
Modified in response to PR comments
2023-03-14 19:59:19 +00:00
Stephen van Beek
43a1b42f8c
Added the additional_ports configuration
...
ISSUE: https://github.com/mrsked/mrsk/issues/98
2023-03-14 19:59:19 +00:00
David Heinemeier Hansson
c282461265
Merge pull request #116 from tbuehlmann/traefik-command-options
...
Properly pass traefik command options
2023-03-14 15:08:27 -04:00
David Heinemeier Hansson
dcbe038555
Merge pull request #117 from calmyournerves/cli-main-tests
...
Add tests for main CLI commands
2023-03-14 15:07:07 -04:00
Samuel Sieg
3fd2f3f2c5
Improve comments
2023-03-14 16:05:57 +01:00
Samuel Sieg
46dad1ee6c
Add tests for main CLI commands
2023-03-14 15:58:12 +01:00
Tobias Bühlmann
3ca5bc50b6
Properly pass traefik command options
...
Traefik command options need to be passed as `--key=value`, not `--key value`.
2023-03-14 15:04:33 +01:00
David Heinemeier Hansson
b668ce3f25
Merge pull request #111 from calmyournerves/deploy-without-build-push
2023-03-14 07:32:27 -04:00
David Heinemeier Hansson
253d4ac37b
Merge pull request #115 from intrip/fix-traefik-default-middleware
2023-03-14 07:31:20 -04:00
Jacopo
50ee954ca9
Fix Traefik retry middleware
...
As per [Traefik docs](https://doc.traefik.io/traefik/middlewares/overview/#configuration-example )
a middleware to be activated needs to be applied to a route. Change the default settings
to apply the `retry` middleware on every role with Traefik enabled.
2023-03-14 12:15:00 +01:00
Samuel Sieg
0ac2cd2a4b
Add tests for deploy/redeploy commands
2023-03-14 11:49:31 +01:00
Tobias Bühlmann
72e0184e9f
Fix failing tests
2023-03-13 17:36:02 +01:00
Samuel Sieg
577cf2cec9
Merge branch 'main' into deploy-without-build-push
2023-03-13 16:11:38 +01:00
Samuel Sieg
5010850b86
Merge branch 'main' into deploy-without-build-push
2023-03-13 16:10:31 +01:00
David Heinemeier Hansson
fa07c2403c
Merge pull request #113 from moomerman/fix-healthcheck-test
...
Fix healthcheck test
2023-03-13 16:10:17 +01:00
Samuel Sieg
c29d1ddeba
Fix
2023-03-13 16:05:21 +01:00
Samuel Sieg
cb15800d25
Move option to deploy/redeploy, rename to skip-push
2023-03-13 16:02:24 +01:00
Richard Taylor
3e0b71b631
Fix healthcheck test
...
Looks like the tests started failing on the options healthcheck PR
after merging the container name env var PR.
2023-03-13 14:51:54 +00:00
David Heinemeier Hansson
9b666e54f3
Update README.md
2023-03-13 10:43:44 -04:00
David Heinemeier Hansson
d2f76dac6b
Merge branch 'main' into role-awareness
2023-03-13 15:16:44 +01:00
David Heinemeier Hansson
bf3d3f3ba7
Merge pull request #101 from davegudge/fix-docker-publish
...
fix: GitHub Workflow: Docker Publish
2023-03-13 15:14:06 +01:00
David Heinemeier Hansson
20733a4493
Merge pull request #102 from moomerman/cmd-options-for-healthcheck
...
Use custom web options for healthcheck
2023-03-13 15:12:25 +01:00
David Heinemeier Hansson
a267c1e835
Merge pull request #103 from 99linesofcode/fix-dockerfile-buildx
...
Install buildx inside container
2023-03-13 15:11:37 +01:00
David Heinemeier Hansson
c1c26a154d
Merge pull request #104 from moomerman/add-container-name-env-var
...
Add container name env var for containers
2023-03-13 15:10:02 +01:00
David Heinemeier Hansson
5969ff66d5
Merge pull request #107 from clowder/order-options-dig
...
Avoid `[ActiveSupport::OrderedOptions#dig]`
2023-03-13 15:08:31 +01:00
David Heinemeier Hansson
b1f5165dc0
Merge pull request #108 from clowder/patch-1
...
Update `accessory remove` description and warning
2023-03-13 15:07:47 +01:00
David Heinemeier Hansson
cce0fafdc4
Merge pull request #110 from kjellberg/patch-1
...
Update README.md to reflect backtick escaping in Utils.optionize
2023-03-13 15:07:09 +01:00
Samuel Sieg
6232175ef8
Undo changes from experimenting
2023-03-12 10:56:12 +01:00
Samuel Sieg
47af6d9483
Is a global option better?
2023-03-12 10:53:29 +01:00
Samuel Sieg
ff0170076e
Simplify
2023-03-12 10:44:33 +01:00
Samuel Sieg
9b39f2f3ab
Keep it simple for the proposal
2023-03-12 10:41:04 +01:00
Rasmus Kjellberg
600902ef5e
Update README.md
...
Backticks are handled by `Utils.optionize`
2023-03-12 07:39:07 +01:00
Richard Taylor
bb241dea43
Add container name env var for containers
...
Because the container name is generated it isn't possible to
determine this inside the container.
This adds the MRSK_CONTAINER_NAME env var when running the
container so it can be read by the service running inside the
container.
2023-03-11 10:14:41 +00:00
Chris Lowder
f26beeaa9f
Update accessory remove description and warning
...
Make it clear the accessory's data directory will also be removed.
2023-03-10 20:51:14 +00:00
Chris Lowder
41a5cb2a04
Avoid [ActiveSupport::OrderedOptions#dig]
...
The implementation has been updated upstream[^1] to expect symbolized
keys. MRSK relies heavily on the fact that nested keys are strings, so
we're removing existing uses of `#dig`.
[^1]: 5c15b586aa
2023-03-10 19:45:35 +00:00
Chris Lowder
643cb2c520
Include edge Rails in the build matrix
...
Highlighting an incompatibility with the new implementation of
`[ActiveSupport::OrderedOptions#dig]`.
[^1]: 5c15b586aa
2023-03-10 19:40:57 +00:00
Jordy Schreuders
b2c819fe32
Add README section on running MRSK from Docker
2023-03-10 19:23:14 +02:00
Jordy Schreuders
439b681308
Neglected to install buildx inside container
2023-03-10 18:13:32 +02:00
Richard Taylor
e5c5e89232
Use custom web options for healthcheck
...
If the web role has custom options, ensure these are used for the
healthcheck.
2023-03-10 15:55:04 +00:00
Samuel Sieg
4bf77ccd1b
Allow deploy/deliver without building and pushing the image
2023-03-10 11:26:35 +01:00
Dave Gudge
57e9231c5e
fix: Github Workflow: Docker Publish
...
The workflow was failing with:
```
The workflow is not valid. .github/workflows/docker-publish.yml (Line: 22, Col: 14): Unexpected symbol: '|'. Located at position 12 within expression: github.ref | replace('refs/tags/', '')
```
The `set-output` command is deprecated, so the issue has been fixed by utilising the `github.ref_name` context to retrieve the version tag that triggered the workflow.
> `github.ref_name`: The short ref name of the branch or tag that triggered the workflow run. This value matches the branch or tag name shown on GitHub. For example, `feature-branch-1`.
https://docs.github.com/en/actions/learn-github-actions/contexts
2023-03-10 10:02:33 +00:00
Tobias Bühlmann
ccf8762c98
Reuse web container per default
2023-03-10 10:50:26 +01:00
Tobias Bühlmann
418bc13ae7
Apply filters correctly
2023-03-10 10:33:55 +01:00
Tobias Bühlmann
7d4dfc4c86
Pass role names for simplicity
2023-03-10 09:18:47 +01:00
Tobias Bühlmann
fdb0c8ee91
Rolify app cli/command
2023-03-10 08:50:26 +01:00
Tobias Bühlmann
6b11303230
Prepare auditor to print a present role
2023-03-09 20:55:37 +01:00
Tobias Bühlmann
901484d75d
Filter roles and hosts by their respective counterpart
2023-03-09 18:21:39 +01:00
Tobias Bühlmann
e178907a21
Don't list duplicate hosts
2023-03-09 16:46:57 +01:00
David Heinemeier Hansson
3026a92c98
Merge pull request #71 from tbuehlmann/destination-awareness
...
Destination aware container names
2023-03-09 13:25:49 +00:00
David Heinemeier Hansson
ab7c6c6540
Use compact.join strategy here too
2023-03-09 14:24:19 +01:00
David Heinemeier Hansson
11f4dbfc5f
Bump version for 0.9.1
2023-03-09 14:11:42 +01:00
David Heinemeier Hansson
15e879e83c
Merge pull request #97 from martinbjeldbak/syntax-error-docker-install
...
Fix syntax error in dependency install step
2023-03-09 13:11:22 +00:00
Martin Bjeldbak Madsen
96180f9bd0
Fix syntax error in docker install exec
2023-03-09 22:34:11 +11:00
David Heinemeier Hansson
2f454c39e7
Bump version for 0.9.0
2023-03-09 11:22:44 +01:00
David Heinemeier Hansson
12f5b780b8
Merge pull request #93 from calmyournerves/update-readme-dockerfile-context
...
Update README with `dockerfile` and `context` builder options
2023-03-09 10:21:19 +00:00
David Heinemeier Hansson
3b7836f8e3
Merge pull request #95 from mrsked/cmd-args-for-roles
...
Custom options per role
2023-03-09 10:20:50 +00:00
David Heinemeier Hansson
64cc081f10
Explain container options
2023-03-09 11:20:28 +01:00
David Heinemeier Hansson
1f784176b7
Allow value-less options with true
2023-03-09 11:17:28 +01:00
David Heinemeier Hansson
d3f07d6313
Allow custom options per role
2023-03-09 11:09:19 +01:00
David Heinemeier Hansson
98a14f6173
Add cmd args for roles
2023-03-09 11:01:06 +01:00
David Heinemeier Hansson
487fcd4cea
Only used for traefik
2023-03-09 11:00:52 +01:00
David Heinemeier Hansson
c8badea6dd
Extract argumentization for cmd and add proper escaping
2023-03-09 10:54:53 +01:00
Samuel Sieg
16896fa8ad
💅
2023-03-09 10:15:07 +01:00
Samuel Sieg
716103590d
Keep it simple
2023-03-09 10:14:29 +01:00
Samuel Sieg
a9be6cc838
Add builder options for dockerfile and context to README
2023-03-09 10:12:53 +01:00
David Heinemeier Hansson
5a3ea24c6b
Merge pull request #77 from calmyournerves/dockerfile-context-build-options
...
Allow setting the Dockerfile and the Docker build context when building
2023-03-09 08:32:57 +00:00
David Heinemeier Hansson
a06c19633c
Merge pull request #92 from kjellberg/fix-traefik-host-port
...
fix: mrsk run command fails when traefik config is empty
2023-03-09 08:31:20 +00:00
David Heinemeier Hansson
46bec120c8
Test running without special config
2023-03-09 09:30:09 +01:00
David Heinemeier Hansson
0431bb5f97
Extract named constant and method
2023-03-09 09:29:56 +01:00
Samuel Sieg
2b95cdf8d0
Merge branch 'main' into dockerfile-context-build-options
2023-03-09 08:54:23 +01:00
Rasmus
eacdf34540
fix: mrsk deploy fails when traefik config is empty
2023-03-08 18:55:04 +01:00
David Heinemeier Hansson
7f0e6f1f13
Merge pull request #85 from clowder/traefik-host-port
...
Customizable Traefik host port
2023-03-08 17:06:51 +00:00
David Heinemeier Hansson
2e9d877185
Merge pull request #88 from simonrand/ensure-curl-is-available
...
Ensure curl is installed on hosts during bootstrapping
2023-03-08 17:05:40 +00:00
David Heinemeier Hansson
347046019f
Add test
2023-03-08 18:05:06 +01:00
David Heinemeier Hansson
3457c3f606
Style
2023-03-08 18:05:00 +01:00
David Heinemeier Hansson
155384472a
Allow primary host even when a specific role has been set
2023-03-08 18:00:13 +01:00
David Heinemeier Hansson
32ab79c0cc
Merge pull request #91 from kjellberg/lookup_username
...
Allow registry username to reference a secret
2023-03-08 16:44:09 +00:00
David Heinemeier Hansson
a4d576f105
Test ENV username
2023-03-08 17:43:29 +01:00
David Heinemeier Hansson
b809a971e2
One purpose per method
2023-03-08 17:43:23 +01:00
Rasmus
f531874be4
Allow registry username to be a reference to secret
2023-03-07 10:13:49 +01:00
Tobias Bühlmann
8b913068de
Add destination to healthcheck containers names
2023-03-06 16:54:13 +01:00
Simon Rand
9ae3886b2b
Ensure curl is installed during bootstrapping
2023-03-05 16:51:07 +00:00
Chris Lowder
963b96ff62
Customizable Traefik host port
...
Allow users to free up port 80 on the host machine, without losing
Traefik's Docker routing super-powers.
2023-03-05 13:13:22 +00:00
David Heinemeier Hansson
8c69990dbb
Merge pull request #82 from AxelTheGerman/ed25519
...
Add ed25519 and bcrypt_pbkdf to gemspec
2023-03-05 09:35:26 +01:00
Axel Gustav
3b6571ae55
Make sure ed25519 and bcrypt_pbkdf are in gemspec dependencies
2023-03-04 17:07:34 -04:00
David Heinemeier Hansson
013121c55d
Merge pull request #80 from kjellberg/patch-1
...
Publish Docker image for each release
2023-03-04 17:27:15 +01:00
Rasmus Kjellberg
059979b889
Update docker-publish.yml
2023-03-04 17:14:02 +01:00
Rasmus Kjellberg
11267b43c2
Publish and tag docker on a new version release
2023-03-04 17:05:50 +01:00
David Heinemeier Hansson
41168e8c23
Merge pull request #79 from calmyournerves/patch-1
...
Small README fixes
2023-03-04 15:19:23 +01:00
Samuel Sieg
cf73ae67a5
Fix README
2023-03-04 14:07:20 +01:00
Samuel Sieg
ff88ee0b22
Allow setting the build context used for building
2023-03-04 10:59:52 +01:00
Samuel Sieg
b6934b0f41
Allow configuring the Dockerfile used for building
2023-03-04 10:59:23 +01:00
David Heinemeier Hansson
e160b29693
Merge pull request #72 from kjellberg/patch-1
...
Update CONTRIBUTING.md
2023-03-04 08:50:03 +01:00
David Heinemeier Hansson
8ef88859ec
Build image on push
2023-03-04 08:23:24 +01:00
David Heinemeier Hansson
9c8bbb8640
Merge pull request #73 from kjellberg/dockerfile
...
Create Dockerfile
2023-03-04 08:18:48 +01:00
David Heinemeier Hansson
8faef72d33
Already created by WORKDIR
2023-03-04 08:15:32 +01:00
Rasmus
81cbd760d5
Group RUN commands - reduce image size
2023-03-04 07:38:29 +01:00
Rasmus
57b1a474fe
Create Dockerfile
2023-03-03 23:57:07 +01:00
Rasmus
38b8fe0d55
Added CODE_OF_CONDUCT.md
2023-03-03 19:17:35 +01:00
Rasmus Kjellberg
dcc4db1137
Update CONTRIBUTING.md
2023-03-03 17:44:04 +01:00
Tobias Bühlmann
170562c7e7
Let App be aware of destination
2023-03-03 15:29:00 +01:00
David Heinemeier Hansson
78927aa7a2
Create CONTRIBUTING.md
2023-03-03 15:00:56 +01:00
David Heinemeier Hansson
cec3468f50
Merge pull request #64 from jimt/typos-1
...
Fix typos
2023-03-02 10:26:52 +01:00
Jim Tittsler
cef13a2fe5
Fix typos
2023-03-02 10:48:12 +09:00
David Heinemeier Hansson
f9d6ffa746
Merge pull request #59 from lvnilesh/patch-1
...
add bitwarden erb for mrsk envify
2023-03-01 09:09:02 +01:00
David Heinemeier Hansson
8c8deb2e13
Update README.md
2023-03-01 09:05:22 +01:00
Nilesh Londhe
fa7b560d50
Update README.md
2023-02-28 17:24:05 -08:00
Nilesh Londhe
f7b0b9ac92
add bitwarden erb for mrsk envify
...
add bitwarden erb for mrsk envify
2023-02-28 17:22:11 -08:00
David Heinemeier Hansson
fcf226f790
Bump version for 0.8.4
2023-02-27 12:59:58 +01:00
David Heinemeier Hansson
2004cdaa0d
Fix test
2023-02-27 12:59:41 +01:00
David Heinemeier Hansson
b8413b3ab5
Recover README changes
...
Force push bad 😄
2023-02-26 11:34:32 +01:00
David Heinemeier Hansson
701f6ff237
Move sleep note out of host loop, so we only see it once
2023-02-26 11:27:19 +01:00
David Heinemeier Hansson
27279c6c82
Accessories can individually ask for confirmation
2023-02-23 15:41:49 +01:00
David Heinemeier Hansson
08dd468d87
Bump version for 0.8.3
2023-02-23 15:34:18 +01:00
David Heinemeier Hansson
9a4f502cc4
Pass confirmed flag to accessories
2023-02-23 15:31:56 +01:00
David Heinemeier Hansson
11e6f7914d
Merge pull request #56 from mrsked/more-resilient-zero-downtime-deploy
...
Start before stopping and longer timeouts
2023-02-23 12:24:06 +01:00
David Heinemeier Hansson
bc6963e6bf
Note that rebooting may cause air gap
2023-02-23 12:16:58 +01:00
David Heinemeier Hansson
f4f2b5cb17
Communicate the readiness delay
2023-02-23 12:04:57 +01:00
David Heinemeier Hansson
817336df49
No readiness delay in testing
2023-02-23 12:03:03 +01:00
David Heinemeier Hansson
4c399a74bb
Update to match latest
2023-02-23 12:02:56 +01:00
David Heinemeier Hansson
e12436a1db
Extract readiness_delay to config
2023-02-23 12:02:49 +01:00
David Heinemeier Hansson
b244e919bf
Merge branch 'main' into more-resilient-zero-downtime-deploy
...
* main:
Add option to skip audit broadcasts (useful when testing)
2023-02-23 11:52:45 +01:00
David Heinemeier Hansson
c1013543f9
Merge pull request #57 from intrip/document-cron
...
Example on how to set up Cron
2023-02-23 11:30:37 +01:00
Jacopo
eb46d0507e
Example on how to set up Cron
2023-02-23 11:02:39 +01:00
David Heinemeier Hansson
7ad416f029
Add option to skip audit broadcasts (useful when testing)
2023-02-23 10:04:35 +01:00
David Heinemeier Hansson
371f98d67f
Start before stopping and longer timeouts
2023-02-22 19:04:23 +01:00
David Heinemeier Hansson
b879412a6f
Upgrade to beta!
2023-02-21 15:31:28 +01:00
David Heinemeier Hansson
e678775a18
Merge pull request #54 from intrip/print-logs-for-healthcheck-status-mistmatch
...
Print container logs when HealthCheck response_code != 200
2023-02-21 14:34:46 +01:00
Jacopo
689b81014b
Print container logs when HealthCheck response_code != 200
...
The Healthcheck container is shut down right after performing the check, this
makes it harder to troubleshoot configuration issues in the healthcheck
endpoint, e.g DNS rebinding error. Printing the container logs helps the troubleshooting.
2023-02-21 11:48:29 +01:00
David Heinemeier Hansson
01a4eecf98
Bump version for 0.8.1
2023-02-20 18:21:05 +01:00
David Heinemeier Hansson
6f7422af44
Merge pull request #53 from pagbrl/fix-env-concatenation
...
fix(escape-cli-args): Always use quotes to escape CLI arguments
2023-02-20 18:20:28 +01:00
David Heinemeier Hansson
1fccaf60b2
Cleanup escaping logic
2023-02-20 18:20:08 +01:00
David Heinemeier Hansson
9b02a7668d
Merge branch 'main' into pr/53
...
* main:
Bump version for 0.8.0
Remove images of the same name before pulling a new one
Changed to a timeout
Better language
Switch to ruby-based retry
2023-02-20 18:14:47 +01:00
David Heinemeier Hansson
f6ea287e66
Bump version for 0.8.0
2023-02-20 18:06:56 +01:00
David Heinemeier Hansson
42b343436d
Remove images of the same name before pulling a new one
...
Or you'll end up with untagged dupes.
2023-02-20 18:06:16 +01:00
David Heinemeier Hansson
9d6ccf9889
Changed to a timeout
2023-02-20 17:59:41 +01:00
David Heinemeier Hansson
c4cc9e690b
Better language
2023-02-20 17:44:55 +01:00
David Heinemeier Hansson
1ccf679ca9
Switch to ruby-based retry
...
Retry connection errors with backoff
2023-02-20 17:42:55 +01:00
Paul Gabriel
f81ba12aa5
fix(escape): Escape double quotes and all other characters reliably
2023-02-20 16:49:47 +01:00
Paul Gabriel
25e8b91569
fix(escape-cli-args): Always use quotes to escape CLI arguments
2023-02-20 15:02:34 +01:00
Paul Gabriel
21c6a1f1ba
chore(rebase): Rebase main
2023-02-20 10:27:51 +01:00
David Heinemeier Hansson
5898fdd8f4
Expand arguments to be more self-explanatory in logs
2023-02-19 18:11:06 +01:00
David Heinemeier Hansson
5299826146
Alphabetical order
2023-02-19 17:43:56 +01:00
David Heinemeier Hansson
28be8dc0f0
Encourage registry password from ENV
2023-02-19 17:42:30 +01:00
David Heinemeier Hansson
2ed3ccc53e
More readable tests
2023-02-19 17:40:41 +01:00
David Heinemeier Hansson
11c726858d
Point to where secrets are from
2023-02-19 17:34:49 +01:00
David Heinemeier Hansson
8706fae2b5
Reveal all options in default config
2023-02-19 17:34:06 +01:00
David Heinemeier Hansson
67d6c3acfe
Think we can drop this
...
Now that we rescue at the top level
2023-02-19 17:33:54 +01:00
David Heinemeier Hansson
a5fd4c76ba
No need for invocation
2023-02-19 17:22:03 +01:00
David Heinemeier Hansson
f3a5845501
Remember this
2023-02-19 17:16:14 +01:00
David Heinemeier Hansson
5356f31e2e
Remove also removes accessories but requires confirmation
2023-02-19 17:16:14 +01:00
David Heinemeier Hansson
67cb89b9b9
Remove requires confirmation
2023-02-19 17:16:06 +01:00
David Heinemeier Hansson
745b09051e
Test app remove
2023-02-19 17:15:57 +01:00
David Heinemeier Hansson
0fa70f4688
Stop app before removing it
2023-02-19 17:15:57 +01:00
David Heinemeier Hansson
6bc2def677
No need for invoke
...
No double action possible
2023-02-19 17:15:57 +01:00
David Heinemeier Hansson
42bc691758
CLI doc updates
...
Match word
Language
Suggest what accessories are
There are also accessories
Default already shown
Better example
Warn about secrets being shown
Now also accessories
Wording
Clarifications
Clarify how to see options
General option for all
Options important here too
Hide subcommands
Implied
Simpler as just version
Be concise
Missing word
Wordsmith
Simpler and uniform words are better
Clarify what exactly we're manipulating
Wordsmithing
Implicit
Simpler language
Hide subcommands
Clarify its container management
Just one per server
Simpler
2023-02-19 17:15:44 +01:00
David Heinemeier Hansson
e5c4cb0344
Retry healthcheck for up to 10 seconds (in case container wasnt ready)
2023-02-19 15:34:36 +01:00
David Heinemeier Hansson
a0d71f3fe4
Protect against missing current version
2023-02-19 09:48:35 +01:00
David Heinemeier Hansson
389ce2f701
Only output if there's a failure
2023-02-19 09:36:04 +01:00
David Heinemeier Hansson
8e918b1906
Output logs when healthcheck fails
2023-02-19 09:33:49 +01:00
David Heinemeier Hansson
e37e5f7d09
Bump version for 0.7.2
2023-02-18 18:23:28 +01:00
David Heinemeier Hansson
7f1191bf59
Change broadcast cmd to just take an argument instead of STDIN
...
Simpler
2023-02-18 18:22:46 +01:00
David Heinemeier Hansson
0c03216fdf
Bump version for 0.7.1
2023-02-18 16:33:28 +01:00
David Heinemeier Hansson
1973f55c58
Don't include recorded_at with broadcast line
...
Receiving end will already add that
2023-02-18 16:33:12 +01:00
David Heinemeier Hansson
0a51cd0899
Update for healthcheck config
2023-02-18 16:28:31 +01:00
David Heinemeier Hansson
4b0a8728f1
Bump version for 0.7.0
2023-02-18 16:27:08 +01:00
David Heinemeier Hansson
3075f8daf1
Include healthcheck in config
2023-02-18 16:26:23 +01:00
David Heinemeier Hansson
9985834bd6
Use number
2023-02-18 16:26:17 +01:00
David Heinemeier Hansson
94b4461c76
Merge pull request #52 from mrsked/health-check-with-deploy
...
Add healthcheck before deploy
2023-02-18 16:24:41 +01:00
David Heinemeier Hansson
7afa9e0815
Mention healthcheck as part of steps instead
2023-02-18 16:23:46 +01:00
David Heinemeier Hansson
933ece35ab
Add healthcheck before deploy
2023-02-18 16:22:08 +01:00
David Heinemeier Hansson
2f80b300f0
Test rolling back to a good version too
2023-02-18 14:55:11 +01:00
David Heinemeier Hansson
2e06bf59a4
Protect against rolling back to a bad version
2023-02-18 14:33:47 +01:00
David Heinemeier Hansson
854795c2b6
Wording
2023-02-18 12:10:42 +01:00
David Heinemeier Hansson
4fe7fb705a
Use same sentence style as broadcasts for audit log lines
2023-02-18 12:00:15 +01:00
David Heinemeier Hansson
270e0d0e2c
Merge pull request #50 from pagbrl/labels-traefik-docs
...
docs(traefik-labels): Improve docs for traefik labels formatting
2023-02-18 11:42:43 +01:00
David Heinemeier Hansson
6ddc9cf017
Merge pull request #51 from mrsked/audit-broadcasts
...
Add audit broadcasts
2023-02-18 11:41:19 +01:00
David Heinemeier Hansson
2dcd76b2de
Merge branch 'main' into audit-broadcasts
...
* main:
Remove unnecessary audit recordings
2023-02-18 11:38:34 +01:00
David Heinemeier Hansson
a6eabd0b67
Remove unnecessary audit recordings
2023-02-18 11:36:52 +01:00
David Heinemeier Hansson
fb9357b5ba
Add audit broadcasts
2023-02-18 11:36:30 +01:00
Paul Gabriel
d484cfcc31
docs(traefik-labels): Improve docs for traefik labels formatting
2023-02-18 00:25:30 +01:00
David Heinemeier Hansson
5c93642f2a
Prepare for custom pruning
2023-02-15 20:34:08 +01:00
David Heinemeier Hansson
8ff206ba7e
Highlight
2023-02-15 18:08:46 +01:00
David Heinemeier Hansson
e36a5e111c
Make a note about the /up requirement
2023-02-15 18:08:26 +01:00
David Heinemeier Hansson
72522001e5
Merge pull request #46 from fschueller/fix-prune-desc
...
Adjust CLI description for prune command to mention 7 days
2023-02-15 14:09:06 +01:00
David Heinemeier Hansson
50c4bb83cb
Bump version for 0.6.4
2023-02-15 13:48:10 +01:00
David Heinemeier Hansson
b2875ad056
More readable tests
2023-02-15 13:47:16 +01:00
David Heinemeier Hansson
8ec94f105c
Tag images with service label so we can prune exclusively
2023-02-15 13:41:03 +01:00
David Heinemeier Hansson
90f4212a68
Stray copypasta
2023-02-15 13:39:53 +01:00
David Heinemeier Hansson
648894f9a9
No need for quoting
2023-02-15 13:32:59 +01:00
David Heinemeier Hansson
dc68639dfa
Prune all unused images matching time filter
2023-02-15 13:32:50 +01:00
David Heinemeier Hansson
244cf8b3b7
Add prune command test
2023-02-15 13:30:31 +01:00
David Heinemeier Hansson
f25f506d77
Don't use abbreviations when we don't have to
2023-02-15 13:26:57 +01:00
David Heinemeier Hansson
c29a177a7a
DRY the use of build options into one call
2023-02-15 13:23:14 +01:00
Farah Schüller
03328a998c
Adjust CLI description for prune command to mention 7 days
2023-02-14 17:05:36 +01:00
David Heinemeier Hansson
ec5fad5bea
Describe the vision
2023-02-11 14:30:23 +01:00
David Heinemeier Hansson
c671acf68f
Bump version for 0.6.3
2023-02-11 13:10:47 +01:00
David Heinemeier Hansson
4f2cb5e184
Shorter
2023-02-11 13:00:22 +01:00
David Heinemeier Hansson
63a065237a
Ensure .env file is only accessible to user
2023-02-11 12:56:57 +01:00
David Heinemeier Hansson
0f4e1888d9
Just delete the full cache directory, it isnt needed
2023-02-10 14:35:11 +01:00
David Heinemeier Hansson
d4d3308c34
Need to use args
2023-02-09 21:50:57 +01:00
David Heinemeier Hansson
b9c6d2966b
Bump version for 0.6.2
2023-02-09 19:57:39 +01:00
David Heinemeier Hansson
f371cda8d8
Stick with json logger for filebeat compatibility but cap at 10mb
2023-02-09 19:56:17 +01:00
David Heinemeier Hansson
9eaf0f3b8f
Lower default prune target for images to 7 days. Its just a local convenience cache. Dont risk filling up the disk on very active development.
2023-02-09 18:07:52 +01:00
David Heinemeier Hansson
a80289d046
Use local log driver for everything
...
Auto rotation, max is 100mb
2023-02-09 17:02:15 +01:00
David Heinemeier Hansson
aae45afb1b
Easier to read tests
2023-02-09 17:01:35 +01:00
David Heinemeier Hansson
f4157c95c4
Easier to read tests
2023-02-09 16:55:09 +01:00
David Heinemeier Hansson
bb5176673b
Deal with lazy-setting of configuration
2023-02-08 14:24:16 +01:00
David Heinemeier Hansson
e9cb5b64b3
Remove Fly as an example of k8s
2023-02-08 14:14:52 +01:00
David Heinemeier Hansson
0433619518
Tag new builds with latest
2023-02-08 14:08:36 +01:00
David Heinemeier Hansson
110bf44a3b
Recommend single layer
2023-02-08 10:27:27 +01:00
David Heinemeier Hansson
fbdf39a733
Code highlighting
2023-02-08 08:37:33 +01:00
David Heinemeier Hansson
f99ff47f75
Make sure folks dont leak GITHUB_TOKENs into the image when using git dependencies
2023-02-08 08:35:30 +01:00
David Heinemeier Hansson
bb18189b01
Bump version for 0.6.1
2023-02-07 15:05:58 +01:00
David Heinemeier Hansson
18bdb33de2
Fix issue with removing containers triggering twice, then ensure app stop runs closer to app run on each host
2023-02-07 15:05:58 +01:00
David Heinemeier Hansson
1ec016ecad
Add a brief note about Docker Swarm
...
A deeper comparison would be nice at some point.
2023-02-07 13:58:26 +01:00
David Heinemeier Hansson
bd61e04088
Merge pull request #38 from tbuehlmann/native-builder-image-tag-position
...
Move image tag to proper position
2023-02-06 09:22:57 +01:00
David Heinemeier Hansson
0da2a6408b
Merge pull request #39 from adammiribyan/outside-git
...
Commit hash as version but not in git
2023-02-06 09:22:25 +01:00
David Heinemeier Hansson
9697a9a6e0
Merge pull request #40 from adammiribyan/gemspec
...
Match README
2023-02-06 09:21:57 +01:00
Adam Miribyan
32d52b024c
Match README
...
Update gemspec description to match what's in README
2023-02-05 23:09:08 +01:00
Adam
2fe01f13df
Commit hash version but not in git
...
Fixes #11
2023-02-05 20:31:14 +01:00
Tobias Bühlmann
554a3558ab
Move image tag to proper position
2023-02-05 18:39:52 +01:00
David Heinemeier Hansson
9aa57dd0c7
Bump version for 0.6.0
2023-02-05 17:53:43 +01:00
David Heinemeier Hansson
cb9f57356e
Load destination ENV file also
2023-02-05 17:52:57 +01:00
David Heinemeier Hansson
02a5726072
Allow destination specific envifying
2023-02-05 16:35:37 +01:00
David Heinemeier Hansson
e865e823d5
Add envify for managing .env file
2023-02-05 16:30:56 +01:00
David Heinemeier Hansson
10cad5c459
Create binstub without bundler, document it all agnostically
...
You can use MRSK with something other than Rails.
2023-02-05 16:23:34 +01:00
David Heinemeier Hansson
ebcb297582
Merge pull request #24 from chrisdebruin/allow-bastion-server
...
Allow use of bastion host
2023-02-04 15:44:30 +01:00
David Heinemeier Hansson
0a293ae4d6
Fix and expand testing
2023-02-04 15:43:45 +01:00
Chris de Bruin
bdff11e1fc
Allow use of bastion host
2023-02-04 15:38:05 +01:00
David Heinemeier Hansson
9cfb6fb0a9
Merge issue
2023-02-04 15:34:48 +01:00
David Heinemeier Hansson
9ec6f9d74f
Merge branch 'main' into allow-bastion-server
2023-02-04 15:33:25 +01:00
David Heinemeier Hansson
45207f0c4f
Explain the dance
2023-02-04 15:27:41 +01:00
David Heinemeier Hansson
cf9a402ad8
Stop treating RAILS_MASTER_KEY as special
2023-02-04 15:26:59 +01:00
David Heinemeier Hansson
64a5a790a7
Ensure secret can be used alone
2023-02-04 15:26:43 +01:00
David Heinemeier Hansson
78d4e1e1e9
Easier to read
2023-02-04 15:12:06 +01:00
David Heinemeier Hansson
74c7a6d5de
Expand app command testing
2023-02-04 10:31:04 +01:00
David Heinemeier Hansson
340929e7e7
Use a version
2023-02-04 10:20:51 +01:00
David Heinemeier Hansson
6f1a3f5524
Don't need this, just use containers
2023-02-04 10:16:24 +01:00
David Heinemeier Hansson
7077da5a64
Spacing
2023-02-04 10:15:43 +01:00
David Heinemeier Hansson
77c63dcd04
Style
2023-02-04 10:14:35 +01:00
David Heinemeier Hansson
e7ac73be5a
Join in run_over_ssh instead of all over
2023-02-04 10:14:31 +01:00
David Heinemeier Hansson
dfca9d8c48
Merge branch 'main' into allow-bastion-server
2023-02-04 10:06:15 +01:00
David Heinemeier Hansson
6032d5651a
Merge pull request #35 from rails/zeitwerk
...
Load with Zeitwerk
2023-02-04 10:05:43 +01:00
Xavier Noria
539752e9bd
Load with Zeitwerk
2023-02-03 22:45:12 +01:00
David Heinemeier Hansson
94b28a1b29
Extract method
2023-02-03 20:53:33 +01:00
David Heinemeier Hansson
5911914e95
Bump version for 0.5.1
2023-02-03 20:48:21 +01:00
David Heinemeier Hansson
3daecf696a
Extract proper auditor and audit everything
2023-02-03 20:45:32 +01:00
David Heinemeier Hansson
497c57e3e5
Style
2023-02-03 20:44:43 +01:00
David Heinemeier Hansson
8a42fd2f30
Fix signature
2023-02-03 20:43:22 +01:00
David Heinemeier Hansson
2182cfb5c7
Bump version for 0.5.0
2023-02-03 17:49:47 +01:00
David Heinemeier Hansson
5c9a602d76
Fixed host
2023-02-03 17:46:41 +01:00
David Heinemeier Hansson
b964e04f93
Bring accessory execution in line with app
2023-02-03 17:24:36 +01:00
David Heinemeier Hansson
1fb2c71f65
Follow same dot style
2023-02-03 17:22:55 +01:00
David Heinemeier Hansson
58417f610f
Dupe comment
2023-02-03 17:20:14 +01:00
David Heinemeier Hansson
5856a77a53
Bring accessory execution in line with app
2023-02-03 17:19:20 +01:00
David Heinemeier Hansson
5ed3ea9d26
Grouping by spacing
2023-02-03 17:18:58 +01:00
David Heinemeier Hansson
59199cc69a
Fix bug
2023-02-03 17:18:47 +01:00
David Heinemeier Hansson
c453b947e0
Add exec tests
2023-02-03 17:18:42 +01:00
David Heinemeier Hansson
87e54d41e4
Need two stubs!
2023-02-03 17:03:26 +01:00
David Heinemeier Hansson
64b91daab1
Drop concerns
...
Not enough reuse possible
2023-02-03 16:55:34 +01:00
David Heinemeier Hansson
13e22f8a34
Repository really is app specific, since it relies on versions
2023-02-03 16:45:52 +01:00
David Heinemeier Hansson
8848335fbc
Extract executions into separate concern
2023-02-03 16:39:26 +01:00
David Heinemeier Hansson
a3fe8856c9
Fix test
2023-02-03 16:27:16 +01:00
David Heinemeier Hansson
d263b0ffa5
Extract xargs helper
2023-02-03 16:27:10 +01:00
David Heinemeier Hansson
3c1053fedd
Clarify exec modes and drop tailored versions
2023-02-03 16:07:25 +01:00
David Heinemeier Hansson
a3d998508b
Proper versioning for console and bash
2023-02-03 15:16:40 +01:00
David Heinemeier Hansson
3d71ecdf80
Only say if you're going to do it
2023-02-03 15:16:30 +01:00
David Heinemeier Hansson
37e216f2b7
Add some more tests
2023-02-03 15:08:44 +01:00
David Heinemeier Hansson
17e75ec2c9
No more reboot
2023-02-03 15:06:43 +01:00
David Heinemeier Hansson
7621784235
Bring back regular version with narration
2023-02-03 15:05:34 +01:00
David Heinemeier Hansson
687b8c9def
Rely on shared --version
2023-02-03 14:41:39 +01:00
David Heinemeier Hansson
13d4eb4017
Narrate multi-stage actions
2023-02-03 14:41:30 +01:00
David Heinemeier Hansson
78f0be9c76
Only multi-stage actions should talk
2023-02-03 14:33:49 +01:00
David Heinemeier Hansson
839a0df40e
Boot now does its own stopping
2023-02-03 14:31:56 +01:00
David Heinemeier Hansson
74c493def4
Don't actually need reboot now that boot can do that
2023-02-03 14:31:11 +01:00
Chris de Bruin
7d95472543
Added -J for ssh proxy
2023-02-03 14:31:09 +01:00
David Heinemeier Hansson
71681cb8be
Use single string-based proxy declaration
2023-02-03 14:30:20 +01:00
Chris de Bruin
1fef6ba505
Allow use of bastion host
2023-02-03 14:30:20 +01:00
David Heinemeier Hansson
22bbedf298
Show current running version
2023-02-03 14:08:00 +01:00
David Heinemeier Hansson
15a213eec6
Escape pipe and test for xargs
2023-02-03 14:07:52 +01:00
David Heinemeier Hansson
67f9ffe961
xargs when piping
2023-02-03 14:07:37 +01:00
David Heinemeier Hansson
25e52d6c93
Fix escaping
2023-02-03 14:07:20 +01:00
David Heinemeier Hansson
2023c377ab
Reboot if running
2023-02-03 13:52:31 +01:00
David Heinemeier Hansson
3bd2559c03
Version comes from config
2023-02-03 13:52:10 +01:00
David Heinemeier Hansson
ad26bce5a2
Add mocha for testing
2023-02-03 13:48:34 +01:00
David Heinemeier Hansson
aed7425b42
Streamline version handling
2023-02-03 13:21:11 +01:00
David Heinemeier Hansson
fadb73da39
Replace stub value
2023-02-03 13:20:10 +01:00
David Heinemeier Hansson
8024949fe7
Remove only specific container needed for rebooting
2023-02-03 13:20:03 +01:00
David Heinemeier Hansson
004c154abb
Reset MRSK between invocations in CLI tests
...
Don't love having #reset, but whatever for now.
2023-02-03 13:15:14 +01:00
David Heinemeier Hansson
35b42cc885
Fix tests
2023-02-02 18:05:56 +01:00
David Heinemeier Hansson
6d80005f5d
Run boot and console on relevant versions
...
Instead of just defaulting to local hash version
2023-02-02 18:05:03 +01:00
David Heinemeier Hansson
c8f673ef7c
Add images command to see what's on the server for the service repository
2023-02-02 16:53:46 +01:00
David Heinemeier Hansson
212d5ec783
Merge pull request #31 from fschueller/accessory-class
...
Align config class name with file name
2023-02-02 15:50:50 +01:00
David Heinemeier Hansson
f88685a525
Extract CliTestCase
2023-02-02 15:37:41 +01:00
David Heinemeier Hansson
08908c3925
Fix test
2023-02-02 15:31:33 +01:00
David Heinemeier Hansson
48a9f599b8
It's all of them
2023-02-02 15:31:27 +01:00
David Heinemeier Hansson
7cc64299c8
Add app reboot
2023-02-02 15:28:36 +01:00
David Heinemeier Hansson
7494f08978
Cleanup
2023-02-02 15:28:36 +01:00
David Heinemeier Hansson
2b232b41ce
Unbundle remove so parts can be triggered individually
2023-02-02 15:28:36 +01:00
David Heinemeier Hansson
c28065fd42
Fix doc
2023-02-02 15:28:36 +01:00
Farah Schüller
80b90ab689
Align config class name with file name
...
`Mrsk::Configuration::Assessory` -> `Mrsk::Configuration::Accessory` thus
aligning with the name of the file.
2023-02-02 12:44:48 +01:00
David Heinemeier Hansson
d71950f5e4
Merge pull request #30 from azolf/improve-test-coverage
...
Improve test coverage
2023-02-02 10:51:20 +01:00
David Heinemeier Hansson
00d194e3f3
Bump version for 0.4.0
2023-02-01 15:09:37 +01:00
David Heinemeier Hansson
3f44e25b63
Allow dynamic accessory files to reference declared ENVs
2023-02-01 14:45:56 +01:00
David Heinemeier Hansson
4c8b1a3e04
No longer needed
2023-02-01 14:11:52 +01:00
David Heinemeier Hansson
f06d639583
Add quiet mode
...
Only log errors
2023-02-01 14:10:51 +01:00
David Heinemeier Hansson
cdd77445d0
Not used
2023-02-01 14:04:57 +01:00
David Heinemeier Hansson
71f8f164ca
Expose ssh_run
2023-02-01 14:04:51 +01:00
David Heinemeier Hansson
1840f667d3
Accessory already knows its host
2023-02-01 14:04:36 +01:00
David Heinemeier Hansson
00afd5c6fc
Yield accessory
2023-02-01 13:30:04 +01:00
David Heinemeier Hansson
e17a7e28cb
Missing )
2023-02-01 13:29:14 +01:00
David Heinemeier Hansson
88b5e52b9f
Exec over ssh with accessory
2023-02-01 13:28:29 +01:00
David Heinemeier Hansson
bc0ae84eb1
Needn't pass existing ENVs either
2023-02-01 13:20:47 +01:00
David Heinemeier Hansson
cb6fdbefc8
Exec can't mount
2023-02-01 13:19:01 +01:00
Amirhosein Zolfaghari
5bf3c36001
added more test cases for traefik command
2023-02-01 11:53:25 +03:30
Amirhosein Zolfaghari
afb7b43f1a
added registry command tests
2023-02-01 11:48:47 +03:30
Amirhosein Zolfaghari
4f57976efe
ignore useless files
2023-02-01 11:48:47 +03:30
David Heinemeier Hansson
444e33721a
This is still there
2023-01-31 20:13:45 +01:00
David Heinemeier Hansson
ca86573d89
Custom cmd args for Traefik
2023-01-31 20:11:42 +01:00
David Heinemeier Hansson
e317935ab3
Already getting timestamps from Rails log
2023-01-30 19:19:35 +01:00
David Heinemeier Hansson
767991afe3
Clearer still
2023-01-30 16:59:44 +01:00
David Heinemeier Hansson
7e191dc267
Document use of .env
2023-01-30 16:59:10 +01:00
David Heinemeier Hansson
0f0529c785
Use dotenv to load .env
2023-01-30 16:39:38 +01:00
David Heinemeier Hansson
3ebf8d7777
Fix interpolation
2023-01-30 13:59:44 +01:00
David Heinemeier Hansson
cd8570d776
Catch all other exceptions too
2023-01-30 13:52:24 +01:00
David Heinemeier Hansson
7c72dfcb5d
Include env validation of new config
...
So we fail fast when required ENVs are missing!
2023-01-30 13:50:15 +01:00
David Heinemeier Hansson
52d75508ea
Ensure there's some cap on output
...
Need to DRY this out
2023-01-30 12:49:52 +01:00
David Heinemeier Hansson
ea6144e664
Set ENV verbose too to display backtraces
2023-01-30 12:49:52 +01:00
David Heinemeier Hansson
d1559949ba
Merge pull request #26 from adammiribyan/explicit-clear-only
...
Allow "clear" only env configuration
2023-01-29 16:13:50 +01:00
David Heinemeier Hansson
60c2d45bdc
Merge pull request #25 from dzhulk/docker-exec-options-fix
...
Exclude volume_args from `docker exec` arguments
2023-01-29 16:12:16 +01:00
Adam Miribyan
afefd32379
Allow "clear" only env configuration
2023-01-28 17:19:07 +01:00
David Heinemeier Hansson
c23928348b
Bump version for 0.3.1
2023-01-27 17:04:52 +01:00
Murat Dzhulkuttiev
4937673aac
Merge branch 'rails:main' into docker-exec-options-fix
2023-01-27 20:04:41 +04:00
David Heinemeier Hansson
979b7d80ba
Need the command, not config
2023-01-27 16:57:02 +01:00
Murat Dzhulkuttiev
c1cf834dfc
Exclude volume args from docker exec arguments
2023-01-27 22:29:31 +07:00
David Heinemeier Hansson
0111fcc4e4
Bump version for 0.3.0
2023-01-27 16:19:31 +01:00
David Heinemeier Hansson
407e1cc028
Protect accessory cli from missing accessory
2023-01-27 16:12:18 +01:00
David Heinemeier Hansson
f58e5e0935
Better error reporting and failure capture for build push
2023-01-27 15:56:07 +01:00
David Heinemeier Hansson
03fdb9a9ac
Chain builder setup for better resiliency
...
Context may already exist while buildx does not
2023-01-27 15:41:28 +01:00
David Heinemeier Hansson
a5ebb30de2
Include accessories in main details
2023-01-27 15:20:27 +01:00
David Heinemeier Hansson
ec18a2a1c4
Tolerable error reporting
2023-01-27 15:04:27 +01:00
David Heinemeier Hansson
9af09256d9
Nicer output
2023-01-26 22:17:02 +01:00
David Heinemeier Hansson
29a8a52cef
Execute over SSH too
2023-01-26 16:17:00 +01:00
David Heinemeier Hansson
de0a3f8ee8
Only catch what we can carry
2023-01-26 16:16:47 +01:00
David Heinemeier Hansson
08cac72475
Allow skipping master key
2023-01-24 13:19:12 +01:00
David Heinemeier Hansson
200f12a4a1
Single setup command
2023-01-23 14:13:17 +01:00
David Heinemeier Hansson
f0d88a5ffe
Bootstrap accessory hosts too
2023-01-23 14:13:10 +01:00
David Heinemeier Hansson
d6a6f000f9
Inspect accessories too
2023-01-23 14:12:50 +01:00
David Heinemeier Hansson
15495fb48c
Allow partial overwrites
2023-01-23 14:12:43 +01:00
David Heinemeier Hansson
05f84cdbef
Makes it easier to resume remove
2023-01-23 14:12:27 +01:00
David Heinemeier Hansson
03488bc67a
Add managed accessory directories
2023-01-23 13:36:47 +01:00
David Heinemeier Hansson
eceafbedf4
Better explaining variables
2023-01-23 12:50:44 +01:00
David Heinemeier Hansson
e1d518216a
Add dynamic file expansion
2023-01-23 12:45:49 +01:00
David Heinemeier Hansson
52d10394f7
Ensure uploads are readable
2023-01-23 12:45:36 +01:00
David Heinemeier Hansson
ddf52da132
Add exec and bash commands to accessories
2023-01-23 12:45:20 +01:00
David Heinemeier Hansson
747e0fd4c2
Fix tests
2023-01-23 10:58:31 +01:00
David Heinemeier Hansson
6177673870
Get details on all accessories
2023-01-23 10:39:22 +01:00
David Heinemeier Hansson
78e50f23cd
All boot/remove for all accessories
2023-01-23 10:38:03 +01:00
David Heinemeier Hansson
699f271e6e
No need for protecting against re-invocation
2023-01-23 10:37:49 +01:00
David Heinemeier Hansson
148c43fe29
Extract make_directory_for
2023-01-23 10:37:19 +01:00
David Heinemeier Hansson
cd44014069
Commands should do all the actual work
2023-01-23 10:35:22 +01:00
David Heinemeier Hansson
1bcc65bc56
Must use absolute path
2023-01-23 10:04:55 +01:00
David Heinemeier Hansson
62cc986c54
Cleanup files directory too
2023-01-23 10:04:46 +01:00
David Heinemeier Hansson
7b1ffbfd6d
Unify docs
2023-01-23 10:04:36 +01:00
David Heinemeier Hansson
8af7e48a90
Add file mapping to accessories
2023-01-23 09:43:57 +01:00
David Heinemeier Hansson
92565d58d5
Bump version for 0.2.0
2023-01-23 07:09:37 +01:00
David Heinemeier Hansson
2d0a1c33ae
Merge pull request #23 from rails/accessories
...
Accessories
2023-01-22 22:02:04 +01:00
David Heinemeier Hansson
75bfdaa702
Fix references
2023-01-22 22:00:16 +01:00
David Heinemeier Hansson
c69d6e1569
Fix volume args
2023-01-22 21:58:30 +01:00
David Heinemeier Hansson
25fb08791a
Correct merge conflict
2023-01-22 21:58:22 +01:00
David Heinemeier Hansson
6231a8668c
Merge branch 'main' into accessories
2023-01-22 21:54:52 +01:00
David Heinemeier Hansson
b74ce02f31
Document accessories
2023-01-22 21:54:13 +01:00
David Heinemeier Hansson
1099b6fa84
Fix tests
2023-01-22 21:51:11 +01:00
David Heinemeier Hansson
247aaeb6ef
Fix details to be per accessory
2023-01-22 21:39:12 +01:00
David Heinemeier Hansson
7ec7520d6d
Output command and logs
2023-01-22 21:39:02 +01:00
David Heinemeier Hansson
5e15de0394
Use shared filter
2023-01-22 21:38:43 +01:00
David Heinemeier Hansson
bb15f98496
Include env
2023-01-22 21:38:37 +01:00
David Heinemeier Hansson
beb77fd3ef
Merge pull request #21 from chrisdebruin/add-support-for-volumes
...
Added support for volumes
2023-01-22 19:48:16 +01:00
Chris de Bruin
6b19a0b6d4
Rename to volume_args
2023-01-22 17:09:08 +01:00
David Heinemeier Hansson
6b98eb3677
Operate accessories
...
When you want mysql, redis, and the like under MRSK management
2023-01-22 16:52:57 +01:00
David Heinemeier Hansson
48f8f7cb57
Fix test name from copypasta
2023-01-22 16:22:09 +01:00
Chris de Bruin
86ac1dd2d5
Add support for volumes
2023-01-22 16:21:50 +01:00
David Heinemeier Hansson
4432067585
Merge branch 'main' into add-support-for-volumes
2023-01-22 16:00:14 +01:00
David Heinemeier Hansson
a1c0cf39cb
Disambiguate
2023-01-22 15:47:46 +01:00
David Heinemeier Hansson
2213739156
Fix tests
2023-01-22 15:43:47 +01:00
David Heinemeier Hansson
936d346ca6
Use directory for better organization
2023-01-22 15:37:42 +01:00
David Heinemeier Hansson
2af4885b39
Doc tweaks
2023-01-22 11:47:06 +01:00
David Heinemeier Hansson
e9f8eea6c9
Word doesn't add anything
2023-01-22 11:34:58 +01:00
David Heinemeier Hansson
82067cd077
Use similar headline form
2023-01-22 11:32:59 +01:00
David Heinemeier Hansson
48c45a0cf8
Explain reboot procedure
2023-01-22 11:31:19 +01:00
David Heinemeier Hansson
3a9c8455ec
Style / presentatino
2023-01-22 11:27:39 +01:00
David Heinemeier Hansson
598e7ab97f
Add power to follow logs on app and traefik
2023-01-22 11:27:31 +01:00
David Heinemeier Hansson
6eb0abbb30
Explain traefik: true
2023-01-22 11:00:24 +01:00
David Heinemeier Hansson
34652ca321
Always fetch to fail quick
2023-01-22 11:00:18 +01:00
David Heinemeier Hansson
917d429901
Simpler
2023-01-22 10:51:18 +01:00
David Heinemeier Hansson
a16e5ce886
Use class specific buildx instances
...
So we don't have to muck with the machine default, and can swap between configurations without tearing down the old builder.
2023-01-22 10:47:22 +01:00
David Heinemeier Hansson
e783950825
Always be verbose about building
...
Serves as progress indicator, step too long without one
2023-01-22 10:45:05 +01:00
David Heinemeier Hansson
e4dc4c300e
Log more aggressively for now
2023-01-22 10:21:50 +01:00
David Heinemeier Hansson
925ac86459
No longer need actual class name with more descriptive name
2023-01-22 10:17:40 +01:00
David Heinemeier Hansson
1795c7c6a4
Doc updates
2023-01-22 10:12:46 +01:00
David Heinemeier Hansson
a3a7fce1e8
Note that it starts with SSH
2023-01-22 10:08:27 +01:00
David Heinemeier Hansson
bfec21c00f
Recommend fetch for early bail-out
2023-01-22 10:07:07 +01:00
David Heinemeier Hansson
2ad135c237
No builder definition needed for native multiarch
2023-01-22 10:06:20 +01:00
David Heinemeier Hansson
287798ad57
Add option for remote building of single-arch
2023-01-22 10:06:04 +01:00
David Heinemeier Hansson
5c75404fe9
Add reboot Traefik to apply new start config
2023-01-22 09:44:09 +01:00
Chris de Bruin
2dc0f7cb66
Add support for volumes
2023-01-21 14:48:01 +01:00
David Heinemeier Hansson
652e17f260
Configure Traefik logs and catch all
2023-01-21 12:39:47 +01:00
David Heinemeier Hansson
ff636c3df6
Fix doc line to match new options
2023-01-21 12:39:28 +01:00
David Heinemeier Hansson
885fd5d2c9
Also restrick traefik logs command]
2023-01-21 12:31:55 +01:00
David Heinemeier Hansson
578bf79a7d
Include builder options in to_h
2023-01-21 12:30:36 +01:00
David Heinemeier Hansson
fd23fc1dfd
Ensure env secrets are merged correctly with roles
2023-01-21 11:32:40 +01:00
David Heinemeier Hansson
dda20eec11
Ensure secret envs are present
2023-01-21 10:58:11 +01:00
David Heinemeier Hansson
f6ca864e06
Add secret envs
2023-01-21 10:56:24 +01:00
David Heinemeier Hansson
3bf56c2fdb
Allow custom version to be passed in via CLI
2023-01-20 17:46:09 +01:00
David Heinemeier Hansson
3d66e9ed33
Docs and outdated option
2023-01-20 17:19:37 +01:00
David Heinemeier Hansson
31389bc7b5
Global option for designating primary host only
2023-01-20 17:18:32 +01:00
David Heinemeier Hansson
79b5ed179e
Move hosts/roles specification to cli args instead of ENV
2023-01-20 16:57:25 +01:00
David Heinemeier Hansson
0388495819
Extract capture_with_info
2023-01-20 16:32:12 +01:00
David Heinemeier Hansson
5d629d0600
Extract puts_by_host
2023-01-20 16:27:05 +01:00
David Heinemeier Hansson
73c53dd138
Add command to start a bash session
2023-01-20 15:14:24 +01:00
David Heinemeier Hansson
cdc06dff11
Spacing
2023-01-20 15:04:22 +01:00
David Heinemeier Hansson
95d8e7a75c
All filters are optional
2023-01-20 14:55:28 +01:00
David Heinemeier Hansson
9551837c17
Allow since as an option
...
And properly output/grep logs
2023-01-20 14:48:53 +01:00
David Heinemeier Hansson
5f125f509f
Flat arrays please
2023-01-20 14:40:08 +01:00
David Heinemeier Hansson
435b558260
Extract pipe pattern
2023-01-20 14:38:27 +01:00
David Heinemeier Hansson
ef9259fdd8
Hash uses except not without
2023-01-20 14:37:43 +01:00
David Heinemeier Hansson
af22c32c94
Get the current running container ID
2023-01-20 14:26:07 +01:00
David Heinemeier Hansson
8e69514b78
Actually use the build secrets!
2023-01-20 14:05:31 +01:00
David Heinemeier Hansson
8a32cc9c84
Traefik hosts can now be more than just web
2023-01-20 13:38:57 +01:00
David Heinemeier Hansson
2cb09be0cd
Allow any role to turn on traefik labels
2023-01-20 13:32:12 +01:00
David Heinemeier Hansson
135fcdd9d3
Allow role to set env
2023-01-20 13:26:27 +01:00
David Heinemeier Hansson
c4006ee373
Add comparison to other options
2023-01-20 10:37:39 +01:00
David Heinemeier Hansson
4434b6e09b
Merge pull request #17 from anoldguy/switch-to-docker-secrets
...
Enable docker secrets as a more secure alternative to build args
2023-01-20 10:27:53 +01:00
David Heinemeier Hansson
9bb1fb7166
Move argumentize to Utils
2023-01-20 10:26:36 +01:00
David Heinemeier Hansson
454015b294
Reuse argumentize for build secrets
2023-01-20 10:24:23 +01:00
David Heinemeier Hansson
52fe8d358e
Secrets come just as keys
2023-01-20 10:13:03 +01:00
David Heinemeier Hansson
fe453ed38e
Setup CI
2023-01-20 10:09:37 +01:00
David Heinemeier Hansson
a8779f7055
Simpler API
...
No need for redactions, since values aren't shared.
2023-01-20 10:07:17 +01:00
David Heinemeier Hansson
c16d950136
Refine docs on build secrets
2023-01-20 10:04:34 +01:00
Nathan Anderson
e516f427cd
Enable docker secrets in the builder as a more secure alternative to build args.
2023-01-18 17:35:36 -05:00
David Heinemeier Hansson
84597e2fcd
Damn instance eval
2023-01-17 15:32:36 +01:00
David Heinemeier Hansson
611fbd1dab
Aliases and default
2023-01-17 15:19:02 +01:00
David Heinemeier Hansson
77fc10defb
Default to 1K lines
2023-01-17 15:18:54 +01:00
David Heinemeier Hansson
5d641b932c
Don't repeat the obvious
2023-01-17 15:18:45 +01:00
David Heinemeier Hansson
a342b565e8
Add grep and line configuration to logs
2023-01-17 14:11:27 +01:00
David Heinemeier Hansson
d580630ad2
Docs
2023-01-17 13:58:37 +01:00
David Heinemeier Hansson
7c844bf61d
servers are a must key too
2023-01-17 13:42:24 +01:00
David Heinemeier Hansson
3c6309b4dd
Add option to see combined config
...
Easier to realize how merged configs appear
2023-01-17 13:39:33 +01:00
David Heinemeier Hansson
9a84460754
Add option for two-part configs with the destination option
2023-01-17 13:35:55 +01:00
David Heinemeier Hansson
98af1d3d96
Naming
2023-01-17 13:34:59 +01:00
David Heinemeier Hansson
668b4060cb
Move tests into directory
2023-01-17 12:18:32 +01:00
David Heinemeier Hansson
cb26fb9dca
Run update as well before install (as some servers dont have it available otherwise)
2023-01-16 19:06:00 +01:00
David Heinemeier Hansson
9833a41382
Not interactive
2023-01-15 13:52:37 +01:00
David Heinemeier Hansson
8e58a9385a
Allow exec to run in its own container
2023-01-15 13:51:08 +01:00
David Heinemeier Hansson
89161b66a1
Use delegation for shorter access
2023-01-15 13:50:38 +01:00
David Heinemeier Hansson
8fac321973
Forgot a spot
2023-01-15 13:24:47 +01:00
David Heinemeier Hansson
b96d760b9b
Add the utils
2023-01-15 13:23:20 +01:00
David Heinemeier Hansson
760a87fe06
Redact build args (since they are often tokens)
2023-01-15 13:15:14 +01:00
David Heinemeier Hansson
bb8a8d3399
Singular form
2023-01-15 12:31:10 +01:00
David Heinemeier Hansson
2a0bcaf776
Shouldn't recommend embedding actual tokens in the config
2023-01-15 10:36:04 +01:00
David Heinemeier Hansson
bafbde52fe
Add build args
2023-01-15 10:35:17 +01:00
David Heinemeier Hansson
53cd13a0fa
Update README.md
2023-01-14 16:28:14 +01:00
David Heinemeier Hansson
15b0cc1df3
Check for remote/local
2023-01-14 13:07:22 +01:00
David Heinemeier Hansson
3c42d73ea7
Catch registry credentials errors nicer
2023-01-14 13:07:14 +01:00
David Heinemeier Hansson
f32ae43138
Bump version for 0.1.0
2023-01-14 12:35:17 +01:00
David Heinemeier Hansson
c3d2888c51
Update summary
2023-01-14 12:34:56 +01:00
David Heinemeier Hansson
6d1a166fdc
Simplify
2023-01-14 12:33:05 +01:00
David Heinemeier Hansson
59be40cf12
Merge pull request #12 from rails/convert-to-thor
...
Switch to proper standalone executable with Thor
2023-01-14 12:28:24 +01:00
David Heinemeier Hansson
78494bdb0f
Just rely on ENV for now
2023-01-14 12:27:38 +01:00
David Heinemeier Hansson
cce3d9ccfb
Fix rollback
2023-01-14 12:23:34 +01:00
David Heinemeier Hansson
f0a3466d9d
Rollback is clearer
2023-01-14 12:23:30 +01:00
David Heinemeier Hansson
e19e7f9bde
Explicitly trying to start a specific version should fail if it can't
2023-01-14 12:23:22 +01:00
David Heinemeier Hansson
0b7af9ac14
Simplify
2023-01-14 12:17:04 +01:00
David Heinemeier Hansson
4551a2b9d7
Always try to log the command we're running remotely
2023-01-14 12:13:31 +01:00
David Heinemeier Hansson
e78da2a925
Update README to match new exec approach
2023-01-14 12:09:09 +01:00
David Heinemeier Hansson
94b3cfd0f4
Ship is cuter, but deploy is clearer
...
Kill your darlings
2023-01-14 12:07:52 +01:00
David Heinemeier Hansson
e3c1992ae9
Move HOST option to real option
2023-01-14 12:04:41 +01:00
David Heinemeier Hansson
ec31e931bf
Add version task
2023-01-14 11:51:46 +01:00
David Heinemeier Hansson
e1e768d7cf
Log traefik details commands
2023-01-14 11:51:38 +01:00
David Heinemeier Hansson
c44e224587
Add option to skip binstubs for older apps
2023-01-14 11:44:16 +01:00
David Heinemeier Hansson
fed64ef244
Switch to proper standalone executable with Thor
2023-01-14 11:31:37 +01:00
David Heinemeier Hansson
bf98a0308c
Namespace buildx and contexts
...
To prevent clashes on remote builders
2023-01-13 17:29:53 +01:00
David Heinemeier Hansson
5179d0db37
Go with ship and make it the default
2023-01-13 17:12:46 +01:00
David Heinemeier Hansson
100d68d67e
Only install docker if missing
2023-01-13 17:11:01 +01:00
David Heinemeier Hansson
eed8165ec1
Not worth the log noise
2023-01-13 15:44:56 +01:00
David Heinemeier Hansson
be89077917
Bump version for 0.0.3
2023-01-13 10:42:19 +01:00
David Heinemeier Hansson
6bfcc582c8
Singular
2023-01-13 10:30:02 +01:00
David Heinemeier Hansson
fd5172266e
More expansive info on builder
2023-01-13 10:28:46 +01:00
David Heinemeier Hansson
e85c8161df
Style
2023-01-13 10:28:35 +01:00
David Heinemeier Hansson
a1fc01639e
Add build:info to check builder
2023-01-13 10:24:23 +01:00
David Heinemeier Hansson
7e764cbcd9
Explain how to use native builder
2023-01-13 10:18:42 +01:00
David Heinemeier Hansson
f177ee4cfe
Make remote builder quack as any other builder
2023-01-13 10:16:28 +01:00
David Heinemeier Hansson
ea9a50ec95
Extract command #combine
2023-01-13 10:00:11 +01:00
David Heinemeier Hansson
6ea06fd04e
Log the builder used
2023-01-13 09:49:06 +01:00
David Heinemeier Hansson
6ccb3d2319
Allow for fully native builds too
...
Skipping multiarch if there's a platform match between dev and prod.
2023-01-13 09:31:47 +01:00
David Heinemeier Hansson
05f1ef5ee8
Registry login actually not necessary
2023-01-12 22:22:22 +01:00
David Heinemeier Hansson
f1a98457b0
Pin platforms
2023-01-12 22:14:05 +01:00
David Heinemeier Hansson
7ae596ef60
Document remote native builds
2023-01-12 21:45:45 +01:00
David Heinemeier Hansson
2257c99189
Add local/remote builder combo for multiarch
2023-01-12 21:35:31 +01:00
David Heinemeier Hansson
5afadb10ca
Nicer name for CLI
2023-01-12 18:50:18 +01:00
David Heinemeier Hansson
b3992973d6
Extract builder from app
...
Building is different from running
2023-01-12 18:16:52 +01:00
David Heinemeier Hansson
08c30a14b9
Use a single builder for MRSK
2023-01-12 18:08:33 +01:00
David Heinemeier Hansson
76d34d2a1c
Note quoting issue
2023-01-12 17:42:49 +01:00
David Heinemeier Hansson
184ab18667
Style
2023-01-12 17:38:26 +01:00
David Heinemeier Hansson
87abf06076
Note on exception seen
2023-01-12 17:37:57 +01:00
David Heinemeier Hansson
453570b895
Breakout remove so we can do just containers
2023-01-12 17:37:50 +01:00
David Heinemeier Hansson
f61beb6827
Basic binstub
2023-01-12 17:29:26 +01:00
David Heinemeier Hansson
c481938cdb
Reference Traefik docs for more routing rules
2023-01-12 17:16:30 +01:00
David Heinemeier Hansson
7e9b73f86a
Add custom labels
2023-01-12 17:15:29 +01:00
David Heinemeier Hansson
1f06b1ff94
Switch to just last 100 log lines for now
2023-01-12 16:00:21 +01:00
David Heinemeier Hansson
d554ae8500
Add back prune
2023-01-12 15:51:01 +01:00
David Heinemeier Hansson
730de486b7
More doc changes
2023-01-12 15:29:56 +01:00
David Heinemeier Hansson
b333c4a05b
Simplify presentation of configuration
2023-01-12 15:22:48 +01:00
David Heinemeier Hansson
eec6670dbf
Tokens are good too
2023-01-12 15:16:29 +01:00
David Heinemeier Hansson
4aa96d6578
Switch to a Commander base to allow lazy loading config
2023-01-12 14:58:17 +01:00
David Heinemeier Hansson
d3ab10be22
Better require setup
2023-01-12 14:57:34 +01:00
David Heinemeier Hansson
d92318e234
Excess line
2023-01-11 17:58:50 +01:00
David Heinemeier Hansson
e62610069b
Correct commadn
2023-01-11 17:46:35 +01:00
David Heinemeier Hansson
a0582c1bdf
Explain registry
2023-01-11 17:46:00 +01:00
David Heinemeier Hansson
880ce46c39
Match service name
2023-01-11 17:44:26 +01:00
David Heinemeier Hansson
d049d73547
Realistic looking IP
2023-01-11 17:43:36 +01:00
David Heinemeier Hansson
453fea6c45
Don't rely on ERB interpolation that might fail
...
Error message isn't good
2023-01-11 17:43:28 +01:00
David Heinemeier Hansson
2694cf5d5f
Make init more resilient and communicative
2023-01-11 17:43:07 +01:00
David Heinemeier Hansson
5324fbe3d0
Give feedback on what happened
2023-01-11 17:35:53 +01:00
David Heinemeier Hansson
5e214cde3c
Explain where to set this
2023-01-11 17:35:46 +01:00
David Heinemeier Hansson
f61f41ad73
Document app console
2023-01-11 17:28:18 +01:00
David Heinemeier Hansson
d9cdbb87f9
Heads up that this could take a while
2023-01-11 17:26:49 +01:00
David Heinemeier Hansson
543af475d5
Create missing buildx builder if missing automatically
2023-01-11 17:24:32 +01:00
David Heinemeier Hansson
1bb9fe9095
Reuse existing exec command
2023-01-11 17:11:57 +01:00
David Heinemeier Hansson
c6fd4399f1
Hint at which version to start
2023-01-11 17:07:34 +01:00
David Heinemeier Hansson
a4a9f619ad
Protect against missing envs
2023-01-11 17:07:22 +01:00
David Heinemeier Hansson
4392bf0ee9
Allow you to turn full verbosity on easily
2023-01-11 17:05:20 +01:00
David Heinemeier Hansson
3b3ab48120
Set a different verbosity level for the duration of the yield
2023-01-11 17:01:19 +01:00
David Heinemeier Hansson
606550d46b
Reveal what was pruned
2023-01-11 17:01:12 +01:00
David Heinemeier Hansson
e1b327915f
Use error logger instead
2023-01-11 17:01:03 +01:00
David Heinemeier Hansson
9d3871d667
Split out proper Prune command
2023-01-11 16:48:10 +01:00
David Heinemeier Hansson
7d83be2d18
Readability
2023-01-11 16:26:26 +01:00
David Heinemeier Hansson
3e2c48782c
Explaining consts
2023-01-11 13:31:25 +01:00
David Heinemeier Hansson
bcdeeff94f
Start remote Rails console on primary host
2023-01-10 20:45:15 +01:00
David Heinemeier Hansson
c5249b4a9e
Host yield not needed
2023-01-10 20:44:54 +01:00
David Heinemeier Hansson
57e49bb26c
Bump version for 0.0.2
2023-01-10 19:16:34 +01:00
David Heinemeier Hansson
1609b43ef8
Temporary fix for #2
2023-01-10 19:15:40 +01:00
David Heinemeier Hansson
f9010c1b75
Only run Traefik on web role
2023-01-10 19:04:35 +01:00
David Heinemeier Hansson
73b7c691d6
Fix references
2023-01-10 18:56:30 +01:00
David Heinemeier Hansson
3473ec7a86
Explain running job servers separately
2023-01-10 17:31:36 +01:00
David Heinemeier Hansson
e8beb362d0
Add role concern with specialized cmds for job running
2023-01-10 17:27:56 +01:00
David Heinemeier Hansson
1cee87d440
Latest bundler
2023-01-10 15:02:25 +01:00
David Heinemeier Hansson
c2e09b9b2f
Added debug
2023-01-10 14:24:25 +01:00
David Heinemeier Hansson
78a5d08d3f
Switch to host naming
...
Servers concept will encompass custom cmd and labels. Host is just the IP address.
2023-01-10 14:15:16 +01:00
David Heinemeier Hansson
5ca6f32ee7
Use debug gem
2023-01-10 13:17:28 +01:00
David Heinemeier Hansson
6b098a1e2e
Ruby 3.2.0 compatibility
2023-01-10 13:17:18 +01:00
David Heinemeier Hansson
ff5ccac8fe
Cleanup
2023-01-09 20:44:54 +01:00
David Heinemeier Hansson
b4edf8eef9
Ignore nil command bits
...
They might come from conditional options
2023-01-09 18:08:34 +01:00
David Heinemeier Hansson
fe52ce6547
Add command execution
2023-01-09 14:36:33 +01:00
David Heinemeier Hansson
9641ce0edd
Update README.md
2023-01-08 18:38:55 +01:00
David Heinemeier Hansson
1dab9c1fb5
More documentation
2023-01-08 16:50:06 +01:00
David Heinemeier Hansson
10d973200d
Add command to list containers (to ease rollback)
2023-01-08 16:45:41 +01:00
David Heinemeier Hansson
fdfdff65e9
Explain command map overwrite
2023-01-08 16:33:09 +01:00
David Heinemeier Hansson
94d61f3d9a
Proper param array separation
2023-01-08 16:32:31 +01:00
David Heinemeier Hansson
483f686efc
Test config labels
2023-01-08 16:29:59 +01:00
David Heinemeier Hansson
51adbc032e
Test app#run
2023-01-08 16:29:51 +01:00
David Heinemeier Hansson
dcb3e4d491
Switch envs and labels to param array
2023-01-08 16:29:44 +01:00
David Heinemeier Hansson
55445ae110
Style
2023-01-08 16:22:50 +01:00
David Heinemeier Hansson
998525c93d
Switch to cmd array so we can redact
2023-01-08 16:20:06 +01:00
David Heinemeier Hansson
4ec04f8959
Language
2023-01-08 15:13:51 +01:00
David Heinemeier Hansson
3ddf2b9c41
Distinguish run from start
2023-01-08 15:13:45 +01:00
David Heinemeier Hansson
d4210b66d0
Language
2023-01-08 15:13:28 +01:00
David Heinemeier Hansson
7f37abac59
If already started, just carry on
2023-01-08 15:13:24 +01:00
David Heinemeier Hansson
399d32d7d0
Known VERSION means we've already pushed
2023-01-08 15:13:14 +01:00
David Heinemeier Hansson
8d16271150
Make run resilient to same version having already been run
2023-01-08 15:13:03 +01:00
David Heinemeier Hansson
e1724e0cd9
Clarify output
2023-01-08 14:55:51 +01:00
David Heinemeier Hansson
43eac9d414
Use DRY extraction
2023-01-08 14:55:14 +01:00
David Heinemeier Hansson
ffb532a50d
Add remove tasks to clean up
2023-01-08 14:55:06 +01:00
David Heinemeier Hansson
23c2cb898c
Explain need to match with Dockerfile LABEL
2023-01-08 14:38:03 +01:00
David Heinemeier Hansson
14867a2f61
Allow logging out of registry
2023-01-08 14:18:00 +01:00
David Heinemeier Hansson
4b46449fdf
Split out repository to be used alone
2023-01-08 14:07:29 +01:00
David Heinemeier Hansson
87ca059f32
Fix dangling parenthesis
2023-01-08 14:07:08 +01:00
David Heinemeier Hansson
1fcc2d3cfd
Remember to use Shellwords later
2023-01-08 13:39:38 +01:00
David Heinemeier Hansson
d43ceb975f
Create config stub with mrsk:init
2023-01-08 13:39:29 +01:00
David Heinemeier Hansson
4f06b5f99b
Clarify that one server needn't an LB
2023-01-08 12:14:46 +01:00
David Heinemeier Hansson
21df2aefe5
Prune containers first to release images
2023-01-08 12:13:19 +01:00
David Heinemeier Hansson
5979f1d43e
Prune by default after deploy
2023-01-08 12:11:44 +01:00
David Heinemeier Hansson
9e7ce59b85
Use a shared prune
2023-01-08 12:08:28 +01:00
David Heinemeier Hansson
6e853786eb
Prepare for auto-pruning
2023-01-08 11:54:43 +01:00
David Heinemeier Hansson
e378e9a6dd
Not used
2023-01-08 11:54:32 +01:00
David Heinemeier Hansson
6c3a4b1792
Explain rollback
2023-01-08 11:47:04 +01:00
David Heinemeier Hansson
73019bedfb
Keep containers around for quick rollback + restarting
...
Now need to deal with pruning.
2023-01-08 11:45:48 +01:00
David Heinemeier Hansson
e8fc046537
Update README.md
2023-01-08 11:33:09 +01:00
David Heinemeier Hansson
a45a40b996
Done
2023-01-08 11:29:55 +01:00
David Heinemeier Hansson
3cad095e2b
Add ERB eval so we can use credentials
2023-01-08 11:11:57 +01:00
David Heinemeier Hansson
cc3619173d
Split out push/pull and aggregate in deliver
2023-01-08 10:07:32 +01:00
David Heinemeier Hansson
ddb4d549f2
Need setup
2023-01-08 10:07:13 +01:00
David Heinemeier Hansson
7f220ea987
Bootstrap entirely clean new server
2023-01-08 10:07:08 +01:00
David Heinemeier Hansson
4cbc4aa9b7
Update README.md
2023-01-08 09:37:12 +01:00
David Heinemeier Hansson
9c6cd33dec
Ensure we're logged in
2023-01-08 09:35:55 +01:00
David Heinemeier Hansson
ef87cd5634
Explain registry configuration
2023-01-08 09:35:45 +01:00
David Heinemeier Hansson
9d9a9c4116
Only need absolute_image
2023-01-07 22:02:28 +01:00