Commit Graph

31 Commits

Author SHA1 Message Date
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
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
Tobias Bühlmann
078d68b170 Push <image>:latest in addition to <image>:<git-ref> 2023-03-27 12:52:11 +02: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
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
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
8ec94f105c Tag images with service label so we can prune exclusively 2023-02-15 13:41:03 +01:00
David Heinemeier Hansson
c29a177a7a DRY the use of build options into one call 2023-02-15 13:23:14 +01:00
David Heinemeier Hansson
0433619518 Tag new builds with latest 2023-02-08 14:08:36 +01:00
Tobias Bühlmann
554a3558ab Move image tag to proper position 2023-02-05 18:39:52 +01:00
Xavier Noria
539752e9bd Load with Zeitwerk 2023-02-03 22:45:12 +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
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
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
8e69514b78 Actually use the build secrets! 2023-01-20 14:05:31 +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
a8779f7055 Simpler API
No need for redactions, since values aren't shared.
2023-01-20 10:07:17 +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
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
bafbde52fe Add build args 2023-01-15 10:35:17 +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
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
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
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