@@ -3,6 +3,12 @@ name: Kurtosis Assertoor GitHub Action
33env :
44 DOCKERHUB_REPOSITORY : " erigontech/erigon"
55 APP_REPO : " erigontech/erigon"
6+ # Pinned versions of third-party containers — bump here when upgrading.
7+ # These are cached via actions/cache (docker save/load) to avoid re-pulling
8+ # on every run and to eliminate Docker Hub rate-limit exposure.
9+ LIGHTHOUSE_IMAGE : " sigp/lighthouse:v7.0.1"
10+ TEKU_IMAGE : " consensys/teku:25.9.1"
11+ ASSERTOOR_IMAGE : " ethpandaops/assertoor:v0.0.17"
612
713on :
814 push :
@@ -35,18 +41,54 @@ jobs:
3541 # Only login if we can. Workflow works without it but we want to avoid
3642 # rate limiting by Docker Hub when possible. External repos don't
3743 # have access to our Docker secrets.
44+ # continue-on-error: transient Docker Hub network timeouts should not
45+ # abort the entire workflow — the run proceeds without login (unlogged pull).
3846 if : |
3947 github.repository == 'erigontech/erigon' &&
4048 github.actor != 'dependabot[bot]' &&
4149 (github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork)
50+ continue-on-error : true
4251 uses : docker/login-action@v3
4352 with :
4453 username : ${{ secrets.ORG_DOCKERHUB_ERIGONTECH_USERNAME }}
4554 password : ${{ secrets.ORG_DOCKERHUB_ERIGONTECH_TOKEN }}
4655
47- - name : Docker build current branch
56+ - name : Set up Docker Buildx
57+ uses : docker/setup-buildx-action@v3
58+
59+ - name : Restore cached third-party containers
60+ id : cache-cl-images
61+ uses : actions/cache@v4
62+ with :
63+ path : /tmp/docker-cache
64+ key : docker-cl-${{ env.LIGHTHOUSE_IMAGE }}-${{ env.TEKU_IMAGE }}-${{ env.ASSERTOOR_IMAGE }}
65+
66+ - name : Load cached containers into daemon
67+ if : steps.cache-cl-images.outputs.cache-hit == 'true'
4868 run : |
49- docker build -t test/erigon:current .
69+ docker load -i /tmp/docker-cache/lighthouse.tar
70+ docker load -i /tmp/docker-cache/teku.tar
71+ docker load -i /tmp/docker-cache/assertoor.tar
72+
73+ - name : Pull third-party containers and save to cache
74+ if : steps.cache-cl-images.outputs.cache-hit != 'true'
75+ run : |
76+ mkdir -p /tmp/docker-cache
77+ docker pull ${{ env.LIGHTHOUSE_IMAGE }}
78+ docker pull ${{ env.TEKU_IMAGE }}
79+ docker pull ${{ env.ASSERTOOR_IMAGE }}
80+ docker save ${{ env.LIGHTHOUSE_IMAGE }} -o /tmp/docker-cache/lighthouse.tar
81+ docker save ${{ env.TEKU_IMAGE }} -o /tmp/docker-cache/teku.tar
82+ docker save ${{ env.ASSERTOOR_IMAGE }} -o /tmp/docker-cache/assertoor.tar
83+
84+ - name : Build erigon Docker image (with BuildKit layer cache)
85+ uses : docker/build-push-action@v6
86+ with :
87+ context : .
88+ load : true
89+ tags : test/erigon:current
90+ cache-from : type=gha,scope=kurtosis-erigon-build
91+ cache-to : type=gha,mode=max,scope=kurtosis-erigon-build
5092
5193 - name : Run regular Kurtosis + assertoor tests
5294 uses : ethpandaops/kurtosis-assertoor-github-action@v1
@@ -76,18 +118,54 @@ jobs:
76118 # Only login if we can. Workflow works without it but we want to avoid
77119 # rate limiting by Docker Hub when possible. External repos don't
78120 # have access to our Docker secrets.
121+ # continue-on-error: transient Docker Hub network timeouts should not
122+ # abort the entire workflow — the run proceeds without login (unlogged pull).
79123 if : |
80124 github.repository == 'erigontech/erigon' &&
81125 github.actor != 'dependabot[bot]' &&
82126 (github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork)
127+ continue-on-error : true
83128 uses : docker/login-action@v3
84129 with :
85130 username : ${{ secrets.ORG_DOCKERHUB_ERIGONTECH_USERNAME }}
86131 password : ${{ secrets.ORG_DOCKERHUB_ERIGONTECH_TOKEN }}
87132
88- - name : Docker build current branch
133+ - name : Set up Docker Buildx
134+ uses : docker/setup-buildx-action@v3
135+
136+ - name : Restore cached third-party containers
137+ id : cache-cl-images
138+ uses : actions/cache@v4
139+ with :
140+ path : /tmp/docker-cache
141+ key : docker-cl-${{ env.LIGHTHOUSE_IMAGE }}-${{ env.TEKU_IMAGE }}-${{ env.ASSERTOOR_IMAGE }}
142+
143+ - name : Load cached containers into daemon
144+ if : steps.cache-cl-images.outputs.cache-hit == 'true'
89145 run : |
90- docker build -t test/erigon:current .
146+ docker load -i /tmp/docker-cache/lighthouse.tar
147+ docker load -i /tmp/docker-cache/teku.tar
148+ docker load -i /tmp/docker-cache/assertoor.tar
149+
150+ - name : Pull third-party containers and save to cache
151+ if : steps.cache-cl-images.outputs.cache-hit != 'true'
152+ run : |
153+ mkdir -p /tmp/docker-cache
154+ docker pull ${{ env.LIGHTHOUSE_IMAGE }}
155+ docker pull ${{ env.TEKU_IMAGE }}
156+ docker pull ${{ env.ASSERTOOR_IMAGE }}
157+ docker save ${{ env.LIGHTHOUSE_IMAGE }} -o /tmp/docker-cache/lighthouse.tar
158+ docker save ${{ env.TEKU_IMAGE }} -o /tmp/docker-cache/teku.tar
159+ docker save ${{ env.ASSERTOOR_IMAGE }} -o /tmp/docker-cache/assertoor.tar
160+
161+ - name : Build erigon Docker image (with BuildKit layer cache)
162+ uses : docker/build-push-action@v6
163+ with :
164+ context : .
165+ load : true
166+ tags : test/erigon:current
167+ cache-from : type=gha,scope=kurtosis-erigon-build
168+ cache-to : type=gha,mode=max,scope=kurtosis-erigon-build
91169
92170 - name : Run Pectra Kurtosis + assertoor tests
93171 uses : ethpandaops/kurtosis-assertoor-github-action@v1
0 commit comments