Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
3c5c9d7
feat: update buildkit
gilescope Mar 28, 2026
23f0c9f
feat: fix vulnerabilites
gilescope Mar 28, 2026
a8b7691
point to buildkit PR to check works
gilescope Apr 8, 2026
8b5ca75
feat: update go-grpc to support new security standard
gilescope Apr 8, 2026
3fa09e5
feat: point to latest buildkit
gilescope Apr 10, 2026
6d45875
feat: point to latest buildkit
gilescope Apr 10, 2026
8669479
chore: merge main
gilescope Apr 10, 2026
ec7e281
fix: point to updated buildkit in bootstrap also
gilescope Apr 10, 2026
c0c2488
fix: legacy iptables is gone.
gilescope Apr 10, 2026
d94cab3
fix: tweak image name
gilescope Apr 10, 2026
98caa61
fix: search /usr/sbin for iptables on Alpine 3.22
gilescope Apr 10, 2026
c42959c
fix: bump buildkitd to fix.4 with ALPN compat and iptables path fixes
gilescope Apr 11, 2026
ec88522
fix: fix TOML parsing for new buildkit's stricter parser
gilescope Apr 11, 2026
8968d83
fix: update buildkit ref to da92d3419 (multi-ref platform warning)
gilescope Apr 11, 2026
6e1648a
fix: handle os.Setenv error to satisfy gosec G104
gilescope Apr 11, 2026
34a5b66
fix: add blank line to satisfy wsl_v5 linter
gilescope Apr 11, 2026
f646283
fix: temporarily disable +build-ticktock to reduce CI memory pressure
gilescope Apr 11, 2026
4bc242f
fix: update earthly-next to current buildkit fork
gilescope Apr 11, 2026
cfd8252
fix: limit buildkit parallelism to 2 for Podman CI builds
gilescope Apr 11, 2026
859b0e1
fix: limit buildkit parallelism for Podman in stage2-setup too
gilescope Apr 11, 2026
d3465b3
fix: limit buildkit parallelism for earthly-next builds too
gilescope Apr 11, 2026
ca0a64d
fix: set all buildkitd config before bootstrap
gilescope Apr 11, 2026
6c597d1
fix: apply max-parallelism=2 unconditionally for all CI builds
gilescope Apr 11, 2026
9b7faa6
fix: update buildkit ref to 447cef529 (cache mount stale read fix)
gilescope Apr 11, 2026
69f516d
fix: use prebuilt buildkit base image in CI via EARTHLY_BUILDKIT_IMAG…
gilescope Apr 11, 2026
6817746
fix: thread EARTHLY_BUILDKIT_IMAGE_BASE through to +buildkitd
gilescope Apr 11, 2026
57f7d6f
fix: default to prebuilt buildkit image instead of compiling from source
gilescope Apr 11, 2026
9d9caab
fix: remove duplicate ARG declaration in buildkitd Earthfile
gilescope Apr 11, 2026
1384f1d
fix: use GOPROXY=direct for update-buildkit go mod tidy
gilescope Apr 11, 2026
c227876
fix: use max_parallelism=1 for Podman, 2 for Docker
gilescope Apr 11, 2026
8274470
fix: add 8GB swap for Podman CI instead of reducing parallelism
gilescope Apr 11, 2026
4451a5d
fix: set GOPRIVATE for update-buildkit to enable full git clone
gilescope Apr 11, 2026
9d0b4a5
fix: use tag v0.8.17-fix.4 instead of SHA for buildkit ref
gilescope Apr 11, 2026
60c00ca
fix: use /extra-swapfile to avoid conflict with existing runner swap
gilescope Apr 11, 2026
a34ec4e
fix: Podman CI: parallelism=1 and 12GB extra swap
gilescope Apr 11, 2026
1ec6bb9
fix: limit nested buildkit parallelism to 4 in integration test base
gilescope Apr 11, 2026
88d8085
fix: add swap unconditionally for build-earthly (Docker also OOMs on …
gilescope Apr 11, 2026
38db13d
fix: simplify parallelism to 2 for both Docker and Podman (swap provi…
gilescope Apr 11, 2026
31fdce0
fix: fix yq quoting and move parallelism config earlier
gilescope Apr 11, 2026
e715318
fix: move yq parallelism config after setup-registry.sh (config file …
gilescope Apr 11, 2026
c703e96
fix: set GOMEMLIMIT=4GiB for buildkitd to reduce memory pressure
gilescope Apr 11, 2026
e3bb895
fix: flip iptables detection priority to nft, use go.dev/dl
gilescope Apr 13, 2026
3b36309
fix: bump buildkitd image to v0.8.17-fix.5 (iptables nft priority)
gilescope Apr 13, 2026
1e04212
fix: pin earthly-next to 40-char buildkit SHA (fix.5 + EarthBuild bra…
gilescope Apr 13, 2026
316f49a
fix: bump buildkit fork to include nil-map Client.solve panic fix
gilescope Apr 13, 2026
895c7e5
fix: lower nested buildkit parallelism from 4 to 2 to avoid OOM
gilescope Apr 13, 2026
cfbf651
ci: add ubuntu-24.04-arm experimental workflow
gilescope Apr 21, 2026
486cc26
ci(docker-ubuntu): add matrix +test-misc native on x86 and arm64
gilescope Apr 21, 2026
3b85217
ci(docker-ubuntu): expand native matrix to group5 and slow
gilescope Apr 21, 2026
7b8c245
ci(docker-ubuntu): reduce ARM matrix to one target
gilescope Apr 21, 2026
64b42da
ci(docker-ubuntu): narrow native matrix to +test-misc only
gilescope Apr 21, 2026
cf039d5
ci(stage2-setup): add 12G swap for docker test runners
gilescope Apr 21, 2026
d01d9d2
fix: drop GOMEMLIMIT=4GiB from buildkitd entrypoint
gilescope Apr 21, 2026
5ed29a3
ci: single retry on transient earthly 'Canceled' failures
gilescope Apr 21, 2026
823cacc
ci: extend single-retry loop to examples and misc-tests-2
gilescope Apr 21, 2026
2041bdc
ci(docker-ubuntu): add retry to matrix native test-misc
gilescope Apr 21, 2026
21c4063
ci: reset earthly-buildkitd between retry attempts
gilescope Apr 21, 2026
2523cea
fix(buildkitd): default OOM_SCORE_ADJ to 500 to protect buildkitd
gilescope Apr 21, 2026
e52ddc2
revert: OOM_SCORE_ADJ=500 default made CI worse
gilescope Apr 21, 2026
7b36967
fix(tests): trim nested buildkit memory — parallelism=1, cache=4G
gilescope Apr 21, 2026
32035a3
ci(stage2-setup): outer buildkit = PR's dev buildkit, not pinned fix.5
gilescope Apr 21, 2026
0dc18c2
ci: split group4 into group4+group13; matrix uses PR staging buildkit
gilescope Apr 21, 2026
36d585d
ci(build-earthly): wrap +ci-release in single retry
gilescope Apr 21, 2026
8a3c226
fix(tests): actually commit the group4→group13 split
gilescope Apr 21, 2026
0bb93a8
ci: add retry to reusable-earthbuild-image-tests
gilescope Apr 21, 2026
730e08e
ci(race-test): wrap buildkitd-image build step in retry too
gilescope Apr 21, 2026
91c55d5
test(git-ssh,git-metadata): add ssh -v output for diagnostics
gilescope Apr 22, 2026
12d0963
fix(tests): force ssh-handler for git user to bypass git-shell intera…
gilescope Apr 22, 2026
2a225c6
test(git-ssh,git-metadata): swallow SSH exit 128 from no-interactive-…
gilescope Apr 22, 2026
5af93e6
ci(push-integrations): add retry to cloud-push-pull earthly call
gilescope Apr 22, 2026
c95a229
test(remote-cache): relax after-copy RUN count to >=1 for new buildkit
gilescope Apr 22, 2026
1d7d498
test(remote-cache): also relax before-copy-after-input-change assertion
gilescope Apr 22, 2026
340db82
test(remote-cache): drop '*cached*' progress-marker assertions
gilescope Apr 22, 2026
06a9503
test(remote-cache): downgrade test1 to smoke test for new buildkit
gilescope Apr 22, 2026
bb77cf9
ci(misc-tests-1): retry around remote-cache/test.sh + shellcheck fixes
gilescope Apr 22, 2026
3c36fef
ci(misc-tests-1): 3 attempts + continue-on-error on remote-cache test
gilescope Apr 22, 2026
979629b
ci: split +test-no-qemu-slow into four sub-groups
gilescope Apr 22, 2026
a7093cf
ci(build-earthly): clean earthly state + bootstrap between retries
gilescope Apr 22, 2026
30a7e11
ci: mark podman-examples-* as continue-on-error
gilescope Apr 22, 2026
4720cad
ci: split group5 into group5+group14 to avoid OOM on aws-flag tests
gilescope Apr 22, 2026
49f1d09
ci: drop earthly -P (parallel) for podman example runs
gilescope Apr 22, 2026
ddeb426
Merge branch 'main' into giles-update-latest-buildkit
gilescope Apr 22, 2026
96aede0
ci: make Tick-Tock (earthly-next) opt-in + nightly instead of per-PR
gilescope Apr 23, 2026
41b9dfc
ci: share staging buildkitd image as GHA artifact for all runs
gilescope Apr 23, 2026
ee39487
ci: pull staging image before docker/podman save
gilescope Apr 23, 2026
0bfa6f5
ci: also drop earthly-dev-buildkitd on +ci-release retry reset
gilescope Apr 24, 2026
f77d22f
Merge branch 'main' into giles-update-latest-buildkit
gilescope Apr 24, 2026
227d0da
ci: restore -P (allow-privileged) on podman example runs
gilescope Apr 24, 2026
e8e3674
ci: remove continue-on-error from podman-examples-* jobs
gilescope Apr 24, 2026
8a1ee52
ci: remove remaining continue-on-error usages
gilescope Apr 24, 2026
61ea83e
ci: move native x86/ARM tests out of PR gate to nightly + dispatch
gilescope Apr 24, 2026
3fba908
Merge branch 'main' into giles-update-latest-buildkit
gilescope Apr 24, 2026
63ea98d
ci: reduce buildkit retry flakiness
gilescope Apr 26, 2026
b71fb68
test: reduce flaky integration coverage
gilescope Apr 26, 2026
a01854e
ci: fix flaky build and fixture tests
gilescope Apr 26, 2026
b748cdb
test: run builtin arg CLI check outside nested earth
gilescope Apr 26, 2026
3ccabb4
Merge branch 'main' into giles-update-latest-buildkit
gilescope Apr 26, 2026
8908e36
ci: fix manual with-next build publishing
gilescope Apr 26, 2026
1c48a23
ci: reset buildkit state in flaky retry paths
gilescope Apr 26, 2026
b935bd2
ci: clear buildkit volumes before retries
gilescope Apr 27, 2026
f69c535
ci: reduce buildkit pressure in test jobs
gilescope Apr 27, 2026
95c4b43
ci: apply buildkit retry cleanup consistently
gilescope Apr 27, 2026
62958e5
ci: reduce build workflow buildkit pressure
gilescope Apr 27, 2026
d9869fd
ci: pin build workflow earth setup version
gilescope Apr 27, 2026
11fae86
ci: configure source-built earth buildkit
gilescope Apr 27, 2026
c1f3a3f
test: move config CLI checks out of nested earth
gilescope Apr 27, 2026
ed7d887
test: keep config cli fixtures self-contained
gilescope Apr 28, 2026
27f27f8
test: fix cli helper lint issues
gilescope Apr 28, 2026
ec39b13
test: move build arg repeat out of nested earth
gilescope Apr 28, 2026
3088e48
test: move validation cases out of nested earth
gilescope Apr 28, 2026
3173998
test: satisfy cli test lint
gilescope Apr 28, 2026
be7de7d
test: move init cli checks out of nested earth
gilescope Apr 28, 2026
9df86e8
test: avoid fixture go module in cli init test
gilescope Apr 28, 2026
73185a4
test: move cache command checks out of nested earth
gilescope Apr 29, 2026
2ebf8d7
test: move infinite recursion checks out of nested earth
gilescope Apr 29, 2026
aef5f7b
test: move let checks out of nested earth
gilescope Apr 29, 2026
7d6ee75
fix: restore lower-memory buildkit defaults
gilescope Apr 29, 2026
96adb70
fix: use patched buildkit in release targets
gilescope Apr 29, 2026
e090e25
fix: avoid source buildkit in nested tests
gilescope Apr 29, 2026
fcd7e40
fix: reuse staged buildkitd in nested tests
gilescope Apr 29, 2026
b1d8976
fix: reduce test job memory pressure
gilescope Apr 29, 2026
9c275b9
Add CI memory telemetry for EarthBuild and BuildKit
gilescope Apr 29, 2026
fe974b9
Improve CI memory diagnostics
gilescope Apr 29, 2026
c5861a0
Fix CI failure diagnostics process dump
gilescope Apr 29, 2026
65f5ad2
Update BuildKit cancellation diagnostics
gilescope Apr 30, 2026
884493c
Update BuildKit runc kill diagnostics
gilescope Apr 30, 2026
362de86
Surface first solve failure on cancellation
gilescope Apr 30, 2026
9c20dae
Fix first failure lint issues
gilescope Apr 30, 2026
03a61bb
Make telemetry and cancellation diagnostics best effort
gilescope Apr 30, 2026
44a0438
Fix telemetry cancellation lint
gilescope Apr 30, 2026
d5d869b
Serialize slow nested test groups
gilescope Apr 30, 2026
66fbcff
Improve BuildKit cancellation diagnostics
gilescope May 1, 2026
6333ee0
Update BuildKit cancellation diagnostics
gilescope May 1, 2026
736bd9b
Batch group4 nested CI tests
gilescope May 1, 2026
89424b8
Improve BuildKit cancellation diagnostics
gilescope May 1, 2026
ded599a
Point CI buildkitd at diagnostic BuildKit
gilescope May 1, 2026
096b5f0
Merge remote-tracking branch 'origin/main' into giles-update-latest-b…
gilescope May 1, 2026
6210518
Use BuildKit with clearer graph-state diagnostics
gilescope May 1, 2026
f197b05
Use BuildKit with subbuild edge-merge fix
gilescope May 1, 2026
336f45e
Merge remote-tracking branch 'origin/main' into giles-update-latest-b…
gilescope May 1, 2026
9441cbb
Explain exit code 126 failures
gilescope May 1, 2026
7020677
Bump BuildKit diagnostics revision
gilescope May 6, 2026
159623d
Build staging buildkitd from diagnostics revision
gilescope May 7, 2026
90415bf
Fix data race in stringutil enum casers
gilescope Jun 10, 2026
adecca0
Retry flaky downloads in Earthfiles
gilescope Jun 10, 2026
26ddc61
Merge remote-tracking branch 'origin/main' into giles-update-latest-b…
gilescope Jun 10, 2026
0c6a4e1
Fix govulncheck failures via x/crypto v0.52.0
gilescope Jun 10, 2026
9684bce
Fix GO-2026-4985 via OTLP exporter bumps
gilescope Jun 10, 2026
bd6ad1c
Reclaim runner disk before allocating swap
gilescope Jun 10, 2026
5c93b38
Tolerate Docker Hub login flake in test setup
gilescope Jun 10, 2026
16bf657
Preserve buildkitd logs across test retry resets
gilescope Jun 10, 2026
6810ca3
Record diff-apply evidence and keepalive hypothesis
gilescope Jun 10, 2026
f92c9bc
Class-3 session loss is reproducible at one vertex
gilescope Jun 10, 2026
59bc6df
Use BuildKit with race-free scheduler diagnostics
gilescope Jun 10, 2026
75cfc32
Record scheduler-diagnostics root cause in plan
gilescope Jun 10, 2026
96ffec4
Use BuildKit that tolerates slow session clients
gilescope Jun 10, 2026
bde2ae6
Record session-healthcheck root cause
gilescope Jun 10, 2026
e692116
Report which side originated a canceled solve
gilescope Jun 10, 2026
fa703f4
Use BuildKit with flightcontrol waiter-poison fix
gilescope Jun 11, 2026
b7965ee
Record flightcontrol waiter-poison conviction
gilescope Jun 11, 2026
8d9a9b5
Merge remote-tracking branch 'origin/main' into giles-update-latest-b…
gilescope Jun 11, 2026
db84320
Surface earth-side errgroup self-cancellation
gilescope Jun 13, 2026
095d9f2
Cap go test parallelism in nested test runner
gilescope Jun 13, 2026
01ab4d9
Record errgroup-masking reframe and probe
gilescope Jun 13, 2026
dc2d948
Merge remote-tracking branch 'origin/main' into giles-update-latest-b…
gilescope Jun 13, 2026
9a116e3
Fix merge resolver newline-join in earthly-docker
gilescope Jun 13, 2026
12d8a69
Restore implicit base for IF-before-FROM targets after merge
gilescope Jun 13, 2026
9304368
Merge origin/main into giles-update-latest-buildkit
gilescope Jun 13, 2026
e4cfa2a
Make stats-stream decode failures non-fatal (fixes class-3 cancellati…
gilescope Jun 13, 2026
00bd4b0
Record stats-stream root cause and fix
gilescope Jun 13, 2026
074edaa
Bump build-earthly bootstrap retries 2->3
gilescope Jun 13, 2026
a229b1c
Merge origin/main into giles-update-latest-buildkit
gilescope Jun 14, 2026
71318cf
Merge branch 'main' into giles-update-latest-buildkit
gilescope Jun 14, 2026
82c278e
Merge branch 'main' into giles-update-latest-buildkit
gilescope Jun 15, 2026
e791c12
chore: merge main
gilescope Jun 18, 2026
fab20c9
chore: fix build
gilescope Jun 19, 2026
420b810
chore: merge main
gilescope Jun 19, 2026
f9efeb6
Merge branch 'main' into giles-update-latest-buildkit
gilescope Jun 19, 2026
b0dc24f
chore: merge main
gilescope Jun 28, 2026
f15ddca
fix: bump deps to remove vuln
gilescope Jun 28, 2026
f952ff1
fix: try get back to green build
gilescope Jun 28, 2026
828b6c1
refactor: drop fsutil fork, rewire verbose progress onto stock fsutil…
gilescope Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,19 @@
"Bash(ls:*)",
"Bash(git rev-parse:*)",
"WebFetch(domain:earthly.dev)",
"Bash(gh issue view:*)"
"Bash(gh issue view:*)",
"Bash(go get:*)",
"Bash(go mod:*)",
"Bash(go build:*)",
"Bash(go doc:*)",
"Bash(earth +build)",
"Bash(gh api:*)",
"Bash(cd:*)",
"Read(//private/tmp/**)",
"Bash(unzip -o ci-logs-435.zip -d ci-logs-435)",
"Bash(gh pr:*)",
"Bash(awk -F'\\\\t' '$2==\"fail\"')",
"Bash(earthly --version)"
]
}
}
69 changes: 69 additions & 0 deletions .github/actions/failure-diagnostics/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Failure diagnostics
description: Dump useful host and buildkit state after a CI job failure.
inputs:
BINARY:
description: "Container engine to inspect, usually docker or podman."
required: true
SUDO:
description: "Optional sudo prefix."
required: false
default: ""
runs:
using: composite
steps:
- shell: bash
run: |
set +e

engine="${{ inputs.BINARY }}"
sudo_prefix="${{ inputs.SUDO }}"

run_cmd() {
echo "+ $*"
"$@"
}

run_shell() {
echo "+ $*"
bash -lc "$*"
}

echo "::group::host memory, disk and pressure"
date -u
uname -a
run_cmd free -h
run_cmd df -h
run_cmd uptime
run_shell 'test -r /proc/pressure/memory && cat /proc/pressure/memory || true'
run_shell 'test -r /proc/pressure/io && cat /proc/pressure/io || true'
echo "::endgroup::"

echo "::group::top processes"
run_shell 'ps -eo pid,ppid,stat,pcpu,pmem,rss,vsz,comm,args --sort=-rss | head -80'
run_shell 'for pid in $(ps -eo pid= --sort=-rss | head -80); do printf "%s oom_score=%s oom_score_adj=%s\n" "$pid" "$(cat /proc/$pid/oom_score 2>/dev/null || echo unknown)" "$(cat /proc/$pid/oom_score_adj 2>/dev/null || echo unknown)"; done'
echo "::endgroup::"

echo "::group::kernel oom and cgroup messages"
$sudo_prefix dmesg -T 2>/dev/null | grep -Ei 'out of memory|oom|killed process|memory cgroup|cgroup' | tail -200 || true
echo "::endgroup::"

echo "::group::container engine state"
run_shell "$sudo_prefix $engine version || true"
run_shell "$sudo_prefix $engine info || true"
run_shell "$sudo_prefix $engine ps -a || true"
run_shell "$sudo_prefix $engine stats --no-stream --all || true"
echo "::endgroup::"

echo "::group::buildkit containers"
for name in earthly-buildkitd earthly-dev-buildkitd earthly-integration-buildkitd earthly-test-buildkitd; do
echo "--- $name inspect ---"
$sudo_prefix "$engine" inspect "$name" 2>/dev/null || true
echo "--- $name logs tail ---"
$sudo_prefix "$engine" logs --tail 300 "$name" 2>&1 || true
done
echo "::endgroup::"

echo "::group::earthly directories"
run_shell 'du -sh ~/.earthly ~/.earthly-dev 2>/dev/null || true'
run_shell 'find ~/.earthly ~/.earthly-dev -maxdepth 2 -type d 2>/dev/null | sort | head -100 || true'
echo "::endgroup::"
53 changes: 47 additions & 6 deletions .github/actions/stage2-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,34 @@ inputs:
DOCKERHUB_MIRROR_PASSWORD:
description: "Docker Hub mirror password (legacy - GCR mirror is public)"
required: false
MORE_MEMORY:
description: "Add 8GB swap to increase available memory (useful for Podman)"
required: false
default: 'false'

runs:
using: "composite"
steps:
- name: Add swap for extra memory headroom
# build-earthly always adds 12G swap; stage2-setup previously only did
# so for podman / MORE_MEMORY. Tests on docker runners fail with
# earthly "Canceled" mid-build and runc "file already closed" errors,
# consistent with silent OOM-killed buildkit-runc children on the
# 16 GiB runner. Mirror build-earthly and add swap unconditionally so
# the test path has the same headroom as the build path.
shell: bash
run: |
# The 12G swapfile alone nearly fills the runner's ~14G free root
# disk, causing "No space left on device" build failures. Reclaim
# ~25G of preinstalled toolchains we never use before allocating.
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \
/usr/local/.ghcup /opt/hostedtoolcache/CodeQL
df -h / | tail -1
sudo fallocate -l 12G /extra-swapfile
sudo chmod 600 /extra-swapfile
sudo mkswap /extra-swapfile
sudo swapon /extra-swapfile
echo "Swap added: $(swapon --show)"
- name: Unset CI
shell: bash
run: |
Expand All @@ -58,14 +82,16 @@ runs:
echo "is_fork=false" >> $GITHUB_OUTPUT
echo "Running on main repo - will use GHCR"
fi
- name: Download artifacts (fork)
if: steps.fork-check.outputs.is_fork == 'true'
- name: Download build-earthly artifacts
# Always download — the artifact contains at minimum the
# buildkitd-image tarball (every run) and on fork PRs also the
# earthly binary + tag-suffix.txt. Loading the local tarball
# avoids a per-job ghcr pull of the ~300 MB staging image.
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: earthly-build-ubuntu-latest-${{ inputs.BINARY }}${{ inputs.USE_NEXT == 'true' && '-ticktock' || '' }}
path: ./fork-artifacts
- name: Load buildkitd image from artifact (fork)
if: steps.fork-check.outputs.is_fork == 'true'
- name: Load buildkitd image from artifact
shell: bash
run: |
echo "Loading buildkitd image from artifact..."
Expand Down Expand Up @@ -115,6 +141,10 @@ runs:
password: ${{ env.GITHUB_TOKEN }}
- name: Login to Docker Hub
if: inputs.BINARY == 'docker' && inputs.DOCKERHUB_PASSWORD != '' && steps.fork-check.outputs.is_fork != 'true'
# Hub auth only raises pull rate limits (the GCR mirror serves most
# pulls); a transient registry-1.docker.io timeout must not fail the
# whole job.
continue-on-error: true
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
with:
username: ${{ inputs.DOCKERHUB_USERNAME }}
Expand Down Expand Up @@ -159,11 +189,19 @@ runs:
# qemu-user-static needed for cross-compilation (--platform) targets
run: ${{inputs.SUDO}} apt-get update && ${{inputs.SUDO}} apt-get install -y qemu-user-static
shell: bash
- name: Set fixed buildkitd image for Docker 29+ (non-fork)
- name: Point outer buildkit at the PR's own staging image (non-fork)
# Previously hardcoded to buildkitd-v0.8.17-fix.5 (the stable pinned
# image). That meant CI was testing the PR's earthly CLI against the
# *old* buildkit on the outer layer, and only exercising the PR's
# buildkit inside earthly-in-earthly tests. Use the staging tag that
# build-earthly pushed for this SHA so the outer layer covers the
# PR's buildkit too — matches what the fork path already does above.
if: steps.fork-check.outputs.is_fork != 'true'
shell: bash
run: |
echo "EARTHLY_BUILDKIT_IMAGE=ghcr.io/earthbuild/earthbuild:buildkitd-v0.8.17-fix.1" >> $GITHUB_ENV
TAG_SUFFIX="ubuntu-latest-${{inputs.BINARY}}"
if [ "${{inputs.USE_NEXT}}" = "true" ]; then TAG_SUFFIX="$TAG_SUFFIX-ticktock"; fi
echo "EARTHLY_BUILDKIT_IMAGE=ghcr.io/earthbuild/earthbuild:buildkitd-staging-${{ github.sha }}-${TAG_SUFFIX}" >> $GITHUB_ENV
- name: Get binary from GHCR (non-fork)
if: steps.fork-check.outputs.is_fork != 'true'
run: |-
Expand All @@ -190,6 +228,9 @@ runs:
(strings ${{inputs.BUILT_EARTHLY_PATH}} | grep "$expected_buildkit_client_sha" ) || ( echo "expected to find $expected_buildkit_client_sha in earthly binary" && exit 1)
echo "correctly found $expected_buildkit_client_sha in earthly binary; this confirms earthly-next was used"
shell: bash
- name: Limit buildkit parallelism to avoid OOM on CI runners
run: ${{inputs.SUDO}} ${{inputs.BUILT_EARTHLY_PATH}} config global.buildkit_max_parallelism 1
shell: bash
- if: ${{ inputs.BINARY == 'podman' }}
run: ${{inputs.SUDO}} ${{inputs.BUILT_EARTHLY_PATH}} bootstrap
shell: bash
Expand Down
Loading