Skip to content

Commit a5084ac

Browse files
authored
Merge pull request #1344 from o1-labs/dw/split-push-docker-frontend
CI: split docker push jobs
2 parents 19cf7da + 3bf32ee commit a5084ac

File tree

2 files changed

+78
-37
lines changed

2 files changed

+78
-37
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: 'Push Docker Multi-Arch Manifest'
2+
description: 'Create and push multi-architecture Docker manifest from digests'
3+
inputs:
4+
registry_image:
5+
description: 'Docker registry image name (e.g., o1labs/mina-rust)'
6+
required: true
7+
git_commit:
8+
description: 'Git commit or tag for image tagging'
9+
required: true
10+
digest_pattern:
11+
description: 'Pattern to match digest artifacts'
12+
required: true
13+
dockerhub_username:
14+
description: 'Docker Hub username'
15+
required: true
16+
dockerhub_token:
17+
description: 'Docker Hub token'
18+
required: true
19+
20+
runs:
21+
using: 'composite'
22+
steps:
23+
- name: Login to Docker Hub
24+
uses: docker/login-action@v3
25+
with:
26+
username: ${{ inputs.dockerhub_username }}
27+
password: ${{ inputs.dockerhub_token }}
28+
29+
- name: Set up Docker Buildx
30+
uses: docker/setup-buildx-action@v3
31+
32+
- name: Download image digests
33+
uses: actions/download-artifact@v4
34+
with:
35+
path: /tmp/digests
36+
pattern: ${{ inputs.digest_pattern }}
37+
merge-multiple: true
38+
39+
- name: Create manifest list and push
40+
shell: bash
41+
working-directory: /tmp/digests
42+
run: |
43+
docker buildx imagetools create \
44+
--tag ${{ inputs.registry_image }}:${{ inputs.git_commit }} \
45+
$(printf '${{ inputs.registry_image }}@sha256:%s ' *)

.github/workflows/docker.yaml

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,13 @@ jobs:
110110
if-no-files-found: error
111111
retention-days: 1
112112

113-
# Create and push multi-arch manifests for production releases
114-
push-multi-arch-images:
113+
# Push frontend multi-arch manifest
114+
push-frontend-image:
115115
runs-on: ubuntu-latest
116116
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release')
117117
needs:
118-
- build-mina-node-image
119118
- build-mina-frontend-image
120119
steps:
121-
- name: Login to Docker Hub
122-
uses: docker/login-action@v3
123-
with:
124-
username: ${{ secrets.DOCKERHUB_USERNAME }}
125-
password: ${{ secrets.DOCKERHUB_TOKEN }}
126-
127120
- name: Set up environment variables
128121
run: |
129122
if [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
@@ -135,35 +128,38 @@ jobs:
135128
echo "GIT_COMMIT=${BRANCH_NAME}" >> $GITHUB_ENV
136129
fi
137130
138-
- name: Set up Docker Buildx
139-
uses: docker/setup-buildx-action@v3
140-
141-
# Create mina-rust multi-arch manifest
142-
- name: Download mina-rust digests
143-
uses: actions/download-artifact@v4
131+
- name: Push frontend multi-arch manifest
132+
uses: ./.github/actions/push-docker-manifest
144133
with:
145-
path: /tmp/mina-digests
146-
pattern: node-digests-*
147-
merge-multiple: true
148-
149-
- name: Create mina-rust manifest list and push
150-
working-directory: /tmp/mina-digests
134+
registry_image: ${{ env.REGISTRY_FRONTEND_IMAGE }}
135+
git_commit: ${{ env.GIT_COMMIT }}
136+
digest_pattern: 'frontend-*-digests-*'
137+
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
138+
dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }}
139+
140+
# Push node multi-arch manifest (after node build completes)
141+
push-node-image:
142+
runs-on: ubuntu-latest
143+
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release')
144+
needs:
145+
- build-mina-node-image
146+
steps:
147+
- name: Set up environment variables
151148
run: |
152-
docker buildx imagetools create \
153-
--tag ${{ env.REGISTRY_NODE_IMAGE }}:${{ env.GIT_COMMIT }} \
154-
$(printf '${{ env.REGISTRY_NODE_IMAGE }}@sha256:%s ' *)
149+
if [[ "${{ github.ref }}" == "refs/heads/develop" ]]; then
150+
echo "GIT_COMMIT=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
151+
elif [[ "${{ github.ref }}" == refs/tags/* ]]; then
152+
echo "GIT_COMMIT=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
153+
elif [[ "${{ github.ref }}" == refs/heads/release/* ]]; then
154+
BRANCH_NAME="${GITHUB_REF#refs/heads/}"
155+
echo "GIT_COMMIT=${BRANCH_NAME}" >> $GITHUB_ENV
156+
fi
155157
156-
# Create mina-rust-frontend multi-arch manifest
157-
- name: Download mina-rust-frontend digests
158-
uses: actions/download-artifact@v4
158+
- name: Push node multi-arch manifest
159+
uses: ./.github/actions/push-docker-manifest
159160
with:
160-
path: /tmp/frontend-digests
161-
pattern: frontend-*-digests-*
162-
merge-multiple: true
163-
164-
- name: Create mina-rust-frontend manifest list and push
165-
working-directory: /tmp/frontend-digests
166-
run: |
167-
docker buildx imagetools create \
168-
--tag ${{ env.REGISTRY_FRONTEND_IMAGE }}:${{ env.GIT_COMMIT }} \
169-
$(printf '${{ env.REGISTRY_FRONTEND_IMAGE }}@sha256:%s ' *)
161+
registry_image: ${{ env.REGISTRY_NODE_IMAGE }}
162+
git_commit: ${{ env.GIT_COMMIT }}
163+
digest_pattern: 'node-digests-*'
164+
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
165+
dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }}

0 commit comments

Comments
 (0)