Commit Graph

160 Commits (78946823432b32cc22fb4ad4e998c1d5cac474f5)

Author SHA1 Message Date
Claude 7894682343 refactor: Remove buildkit management from build-push-action
- Remove buildkitd startup and configuration logic
- Remove buildkitd shutdown and cleanup from both main and post actions
- Remove buildkitd-related imports and helper functions
- Update startBlacksmithBuilder to check for existing builder from setup-docker-builder
- Keep sticky disk setup and build reporting functionality intact

BREAKING CHANGE: This action now requires setup-docker-builder to be run first to manage the Docker builder lifecycle
5 months ago
Claude f9f71c9f11 src: only prune if buildkitd was spun up 6 months ago
Claude a7fa33c366 fix: use correct platform when creating remote buildx builder
The remote builder was hardcoded to use --platform linux/amd64
regardless of user input or runner architecture. This caused
performance issues on ARM runners and cache inefficiencies.

Now properly uses the platforms input or detects host architecture
to avoid unnecessary QEMU emulation and improve build performance.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
7 months ago
Claude 28c244705c *: allow users to pass in a buildx version 7 months ago
Claude 9dbab7fbd2 src: add a retry with backoff to combat 429s when downloading buildkit 7 months ago
Claude 296109dd1e src: only commit stickydisk in post step if in setup-only
Firstly this was a bug where we were trying to commit in the post
step even if we had already committed at the end of the main step in
a non-setup-only invocation.

Secondly, if the action is canceled before the exposeID is set in the main
process, we don't want to send a commit request with an empty exposeID.
8 months ago
Claude c80185915d src: move buildkit prune to cleanup stage and invoke it inline
Previously, we were firing off an async buildkit prune to clean
up layers unused in 14 days. This changes that to cleanup layers
unused in 7 days and fires it off inline on cleanup. It just seems
easier to reason about that way.
8 months ago
Claude ab514e31b5 *: introduce a setup-only mode to the build-push-action
This setup-only mode will setup a docker builder with the stickydisk
mounted but will not run a Docker build. The use case here is to allow
customers to then run their custom Tilt files or Docker commands against
our builder. The other subtle change is that we only cleanup in the post
step of this builder action. It is still to be seen if you can start several
of these builders at the same time in a workflow but we can do that as a follow
on.
9 months ago
Aditya Maru 4a3e86e9c9 src: add scaffolding for support multi-platform builds 10 months ago
Aditya Maru 2331ad873b src: add sync before umount 11 months ago
Aditya Maru f440133b20 wip 12 months ago
Aditya Maru 34ea2f79e5 src: change warning to debug 12 months ago
Aayush Shah 4ed3ba5c73
src: ignore unset sentinel value for tailscale token (#89) 12 months ago
Aditya Maru aa6b213b0b src: join and leave tailnet on start and cleanup of builder 12 months ago
Aditya Maru 9fdeb57c53 src: disable automatic buildkit GC
We have reason to believe that automatic GC is affecting
daemon startup times. In this patch we disable automatic GC
and instead rely on manual pruning of the buildkit cache.
Once the daemon is ready we spawn an async task to run prune
on any objects older than 14 days. We are already manaing the
ceph volume approaching its size limit ourselves in the VM
Agent.

Patch also adds some alerting when inode usage is high on a mountpoint.
1 year ago
Aditya Maru def1585067 *: report metrics to the VM agent 1 year ago
Aditya Maru 4723a2a346 src: stop spurious warnings on buildkit shutdown 1 year ago
Aditya Maru 1672d6fbad src: fix shutdown retry behavior 1 year ago
Aditya Maru 9302d2aea9 src: stop running process as nohup to avoid missing logs 1 year ago
Aditya Maru ac42783fa9 src: cleanup flakiness in different parts of the action 1 year ago
Aditya Maru 54bc4e0788 src: refactor cleanup logic to expose buildkitd.log
Previosuly, we only killed the buildkitd process and unmounted
if builderInfo was non null. This was wrong cause we could have setup
builkdkitd, but failed after that step. This would then rely on the last
ditch effort by the post action to cleanup. We now change the proc kill
and unmount to happen on any build error.
1 year ago
Aditya Maru 53000f0f59 ignore error when nothing is mounted 1 year ago
Aditya Maru 1df1b3c361 src: ignore error when theres nothing mounted 1 year ago
Aditya Maru de0451e517 src: make post unmount even if buildkitd is no longer present
Also increase retries when trying to unmount the buildkit directory.
Retry up to 3 seconds now, previously we were only retrying 3 times
with a 100ms backoff.
1 year ago
Aditya Maru f06a558c36 src: alert if an exception is thrown on cleanup 1 year ago
Aayush f9d1e150a9
*: unify error handling and add more unit tests 1 year ago
Aditya Maru c71ad2dbef *: refactor methods to support mocking
Additionally, write some tests to ensure the driver method
`startBlacksmithBuilder` handles all exceptions correctly in
both nofallback=true and nofallback=false configurations.
1 year ago
Aditya Maru 5ab78173d3 backend: default to /dev/vdb when ExposeVolume response is empty 1 year ago
Aditya Maru edc01b36df backend: use device returned in ExposeVolume response 1 year ago
Aditya Maru 72c7e93db9 src: send stickydisk key with commit 1 year ago
Aditya Maru 6d7db93fa2 src: bump socket creation timeout to 5s from 3s 1 year ago
Aditya Maru c308f14958 src: report the correct sticky disk key 1 year ago
Aditya Maru 17d922af1a src: shuttle a expose ID between expose and commit 1 year ago
Aditya Maru a55bae5255 src: prevent top-level ref variable from being shadowed 1 year ago
Aditya Maru 9841eabab1 src: only resolve buildref on success 1 year ago
Aditya Maru 4938a7e10a src: change arch to use BLACKSMITH_ENV 1 year ago
Aditya Maru 9336122050 src: add some idempotent cleanup safeguard in post action 1 year ago
Aditya Maru bdf7f0bb37 src: wrap all steps after blacksmith builder in try catch
This ensures we always run cleanup if any step after creating the Blacksmith
builder errors out.
1 year ago
Aditya Maru 9b63433194 src: make blacksmith builder name unique 1 year ago
Aditya Maru bda6587832 src: change sticky disk key to repo name 1 year ago
Aditya Maru c33190b3c9 src: add local mirror to buildkit toml 1 year ago
Aditya Maru 1dee25cffd src: fix the movement of cleanup to the main step 1 year ago
Aditya Maru f16c36e819 src: add resize2fs call if the block device is formatted 1 year ago
Aditya Maru e1da38ff9d src: add petname and vmID to notification 1 year ago
Aditya Maru ac4af6279b src: move shutdown, cleanup, commit from post to after build 1 year ago
Aditya Maru 138e3a2a14 dist: cat buildkit log file if build fails 1 year ago
Aayush Shah bdd6696880
Only use buildRef if it exists (#42) 1 year ago
Aayush Shah 03e2c54ea5
report cache hit ratio and build size back to backend (#40) 1 year ago
Aditya Maru 3cdd1d81fc *: blkid returns non-zero code if no fs found 1 year ago
Aditya Maru 88ab597dfe *: move formatting of the block device to the client
Previously, we were incorrectly formatting the block device
on the ceph server. This could cause corruption. As a mitigation
we now conditionally format the block device on the client. This
should only kick in if a previous parent clone has not already been
formatted.
1 year ago