Donal McBreen
c62bd1dc31
Merge pull request #815 from basecamp/envify-already-pushes-env
...
Envify already env pushes
2024-05-21 11:57:55 +01:00
Donal McBreen
a83df9e135
Merge pull request #620 from mlitwiniuk/allow_custom_ports_for_ssh
...
Allow custom user and port for builder host
2024-05-21 11:49:06 +01:00
Donal McBreen
7b55f4734e
Envify already env pushes
...
`kamal envify` will do `kamal env push` for us, so no need to call it
ourselves during setup.
2024-05-21 11:47:51 +01:00
Donal McBreen
1e296c4140
Update sshkit_with_ext.rb
2024-05-21 11:38:30 +01:00
Donal McBreen
9700e2b3c4
Merge pull request #646 from nickhammond/server/exec
...
Add in a server exec command for running ad-hoc commands directly on the server
2024-05-21 11:34:20 +01:00
Donal McBreen
060e5d2027
Update lib/kamal/cli/server.rb
...
Co-authored-by: Sijawusz Pur Rahnama <sija@sija.pl >
2024-05-21 08:22:20 +01:00
Nick Hammond
8a4f7163bb
Apply suggestions from code review
...
Co-authored-by: Donal McBreen <dmcbreen@gmail.com >
2024-05-20 11:15:14 -07:00
Donal McBreen
990f1b4413
Merge pull request #798 from basecamp/git-clone
...
Build from within a git clone by default
2024-05-20 12:18:07 +01:00
Donal McBreen
17dcaccb6a
Don't blow up if there are no env tags
2024-05-20 10:50:07 +01:00
Donal McBreen
0ea2a2c509
Don't include destination in clone directory
...
Reusing the clone directory should allow caching of the build context
between deployments to different destinations.
2024-05-20 09:34:42 +01:00
Donal McBreen
307750ff70
Build from within a git clone by default
...
Docker does not respect the .dockerignore file when building from a tar.
Instead by default we'll make a local clone into a tmp directory and
build from there. Subsequent builds will reset the clone to match the
checkout.
Compared to building directly in the repo, we'll have reproducible
builds.
Compared to using a git archive:
1. .dockerignore is respected
2. We'll have faster builds - docker can be smarter about caching the
build context on subsequent builds from a directory
To build from the repo directly, set the build context to "." in the
config.
If there are uncommitted changes, we'll warn about them either being
included or ignored depending on whether we build from the clone.
2024-05-20 09:30:56 +01:00
Donal McBreen
f48c227768
Move env_tags under env key
...
Instead of:
```
env:
CLEAR_TAG: untagged
env_tags:
tag1:
CLEAR_TAG: tagged
```
We'll have:
```
env:
clear:
CLEAR_TAG: untagged
tags:
tag1:
CLEAR_TAG: tagged
```
2024-05-15 10:19:22 +01:00
David Heinemeier Hansson
e58d2f67f2
Fix env template path check and tests
2024-05-14 10:07:31 -07:00
David Heinemeier Hansson
938ac375a1
Only envify if there is a template file available
2024-05-13 17:08:53 -07:00
David Heinemeier Hansson
033f2a3401
Correct invocation
2024-05-13 16:59:50 -07:00
David Heinemeier Hansson
7cac7e6fb0
Envify during setup
2024-05-13 15:18:11 -07:00
Nick Hammond
fb58fc0ba6
Add in a server exec command for running ad-hoc commands directly on the server
2024-05-13 14:17:06 -07:00
Donal McBreen
12cad5458a
Merge pull request #762 from kryachkov/main
...
Trim long hostnames
2024-05-10 16:05:27 +01:00
Donal McBreen
f8b7f74543
Merge pull request #786 from hundredwatt/add-target-option-to-builder
...
Add --target option to Builder to support multi-stage Docker builds
2024-05-10 15:15:31 +01:00
Donal McBreen
6d062ce271
Host specific env with tags
...
Allow hosts to be tagged so we can have host specific env variables.
We might want host specific env variables for things like datacenter
specific tags or testing GC settings on a specific host.
Right now you either need to set up a separate role, or have the app
be host aware.
Now you can define tag env variables and assign those to hosts.
For example:
```
servers:
- 1.1.1.1
- 1.1.1.2: tag1
- 1.1.1.2: tag2
- 1.1.1.3: [ tag1, tag2 ]
env_tags:
tag1:
ENV1: value1
tag2:
ENV2: value2
```
The tag env supports the full env format, allowing you to set secret and
clear values.
2024-05-09 16:02:45 +01:00
Jason Nochlin
1e44cc2597
fix rubocop violation
2024-05-08 19:22:25 -06:00
André Falk
63c47eca4c
Trim long hostnames
...
Hostnames longer than 64 characters are not supported by docker
2024-05-07 19:06:39 +02:00
Donal McBreen
3c8428504d
Bump version for 1.5.2
2024-05-07 09:44:11 +01:00
Donal McBreen
8e71c48747
Merge pull request #759 from basecamp/details-accessory-host
...
Output the host when running accessory details
2024-05-02 15:54:08 +01:00
Donal McBreen
b67f40bdf7
Warn on missing builder
...
We are going to try to create a builder if one is missing, so let's warn
rather than report it as an error.
2024-05-02 12:38:20 +01:00
Jason Nochlin
947be0877f
add --target option for builder configuration
2024-04-27 10:24:47 -06:00
Matthew Kent
b8aaddb4c9
Apply --hosts and --roles filters to traefik hosts as well.
2024-04-26 17:08:57 -07:00
Donal McBreen
f48f528043
Bump version for 1.5.1
2024-04-26 14:26:02 +01:00
Donal McBreen
ec0a082542
Merge pull request #779 from basecamp/fix-log-following
...
Escape single quotes to fix log following
2024-04-26 14:25:27 +01:00
Donal McBreen
1f5b936fa2
Escape single quotes to fix log following
...
Fixes: https://github.com/basecamp/kamal/issues/777
2024-04-26 14:16:19 +01:00
Donal McBreen
f785451cc7
Allow glob matches for roles and hosts
...
This lets you do things like:
```
kamal details -h '1.1.1.[1-9]'
kamal details -r 'w{eb,orkers}'
```
2024-04-26 13:43:52 +01:00
Donal McBreen
d475e88dbe
Bump version for 1.5.0
2024-04-25 13:39:06 +01:00
Donal McBreen
d551f044d6
Merge pull request #772 from aishek/take-accessory-hosts-into-account
...
Take accessory hosts into account for --hosts
2024-04-25 11:57:45 +01:00
Donal McBreen
2611179d5e
Merge pull request #773 from xiaohui-zhangxh/docker-env-file-keep-non-ascii
...
don't escape non-ascii characters in docker env file
2024-04-25 11:57:14 +01:00
Maciej Litwiniuk
2f912367ac
Allow custom user and port for builder host
...
When ssh options are set, they overwrite username and password passed as ssh builder uri. Passing part of uri for ssh-kit is fine, as it then properly extracts username and password and forwards it as host.ssh_options (in which case it's no longer empty)
2024-04-17 17:49:50 +02:00
xiaohui
9a9a0914cd
don't escape non-ascii characters in docker env file
2024-04-17 17:42:06 +08:00
Alexandr Borisov
12c518097f
Take accessory hosts into account
2024-04-17 11:45:33 +03:00
Tim Tilberg
69f90387a8
Allow capital letters to match valid service name, such as in MyApp
2024-04-15 09:09:58 -05:00
Donal McBreen
e6d436f646
Output the host when running accessory details
...
We already do this for app and Traefik hosts.
2024-04-05 12:46:51 +01:00
Donal McBreen
9d20c1466e
Merge pull request #757 from basecamp/executable-sample-docker-setup-hook
...
Make the sample docker setup hook executable
2024-04-03 16:12:46 +01:00
Donal McBreen
f8b0883036
Make the sample docker setup hook executable
...
Fixes https://github.com/basecamp/kamal/issues/754
2024-04-03 15:50:47 +01:00
Donal McBreen
c8100d1f26
Tidy up role and host commander setup
...
Extract Kamal::Commander::Specifics to deal with host and role setup and
ensure that primary hosts and roles always come first. This means that
in a rolling deploy we deploy to the primary ones first.
This will be important when we remove the healthcheck step as we want
to confirm the primary host can be deployed to before completing a
deployment for other roles.
By setting the hosts and roles all together in one place we can sort
the primary ones to the front without creating infinite loops.
2024-04-03 15:46:30 +01:00
Donal McBreen
67a2d5e7ca
Include error message on failure
2024-04-03 10:43:20 +01:00
Donal McBreen
5e492ecc4d
Merge pull request #748 from basecamp/latest-by-tag
...
Latest by tag
2024-04-03 09:11:03 +01:00
Donal McBreen
77bad291a1
Merge pull request #751 from basecamp/app-exec-env
...
Set env variables when running kamal app exec
2024-04-02 11:03:38 +01:00
Donal McBreen
82962c375d
Use default verbosity for hooks
2024-04-02 10:47:05 +01:00
Donal McBreen
8a6a51977f
Set env variables when running kamal app exec
...
Allow additional env variable to be set when running `kamal app exec`.
Works for both new and existing containers.
2024-04-01 15:01:32 +01:00
Donal McBreen
ba7a13f895
Only tag after deploying to all hosts
2024-03-29 10:29:58 +00:00
Donal McBreen
05ac808f2a
Use image tag to determine stale containers
...
Use current_running_version to determine the latest version when finding
stale containers.
2024-03-29 10:23:50 +00:00
Donal McBreen
fb7d9077ff
Use latest tag for the current destination
2024-03-29 09:48:09 +00:00