Skip to content

Commit 9b18a22

Browse files
committed
Theia Cloud Image for ARM64 #403
1 parent 58a376d commit 9b18a22

File tree

1 file changed

+56
-18
lines changed

1 file changed

+56
-18
lines changed

.github/workflows/reusable-docker.yml

+56-18
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ on:
1212
docker_file:
1313
required: true
1414
type: string
15+
platforms:
16+
required: false
17+
type: string
18+
default: "linux/amd64,linux/arm64"
1519
secrets:
1620
dockerhub_username:
1721
required: true
@@ -73,10 +77,23 @@ jobs:
7377
echo "latest_tag=${{ inputs.docker_org }}/${{ inputs.docker_image }}:latest" >> $GITHUB_OUTPUT
7478
fi
7579
76-
# Only build when we will publish, so either a main merge with next-version or a release
77-
- name: Build Docker image
78-
if: github.event_name == 'push' && steps.version_check.outputs.is_next_version == 'true' || github.event_name == 'release'
79-
run: docker build -t ${{ steps.get_tags.outputs.version_tag }} -f ${{ inputs.docker_file }} .
80+
# Set up QEMU for multi-architecture builds
81+
- name: Set up QEMU
82+
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
83+
84+
# Set up Docker Buildx for multi-architecture builds
85+
- name: Set up Docker Buildx
86+
uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
87+
with:
88+
install: true
89+
driver: docker-container
90+
driver-opts: |
91+
image=moby/buildkit:latest
92+
network=host
93+
94+
# List available platforms
95+
- name: List docker buildx available platforms
96+
run: docker buildx inspect --bootstrap
8097

8198
# Only log in to dockerhub when we will publish, so either a main merge with next-version or a release
8299
- name: Login to DockerHub
@@ -86,20 +103,41 @@ jobs:
86103
username: ${{ secrets.dockerhub_username }}
87104
password: ${{ secrets.dockerhub_token }}
88105

89-
# Push for main merges with next version
90-
- name: Push Docker tags (for push events with next version)
106+
# Build (and push) for main merges with next version
107+
- name: Build and push Docker image (push event)
91108
if: github.event_name == 'push' && steps.version_check.outputs.is_next_version == 'true'
92-
run: |
93-
docker push ${{ steps.get_tags.outputs.version_tag }}
94-
docker tag ${{ steps.get_tags.outputs.version_tag }} ${{ steps.get_tags.outputs.sha_tag }}
95-
docker push ${{ steps.get_tags.outputs.sha_tag }}
109+
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
110+
with:
111+
context: .
112+
file: ${{ inputs.docker_file }}
113+
push: true
114+
tags: |
115+
${{ steps.get_tags.outputs.version_tag }}
116+
${{ steps.get_tags.outputs.sha_tag }}
117+
platforms: ${{ inputs.platforms }}
96118

97-
# Push for releases
98-
- name: Push Docker tags (for release events)
119+
# Build (and push) for releases
120+
- name: Build and push Docker image (release event)
99121
if: github.event_name == 'release'
100-
run: |
101-
docker push ${{ steps.get_tags.outputs.version_tag }}
102-
docker tag ${{ steps.get_tags.outputs.version_tag }} ${{ steps.get_tags.outputs.latest_tag }}
103-
docker push ${{ steps.get_tags.outputs.latest_tag }}
104-
docker tag ${{ steps.get_tags.outputs.version_tag }} ${{ steps.get_tags.outputs.next_tag }}
105-
docker push ${{ steps.get_tags.outputs.next_tag }}
122+
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
123+
with:
124+
context: .
125+
file: ${{ inputs.docker_file }}
126+
push: true
127+
tags: |
128+
${{ steps.get_tags.outputs.version_tag }}
129+
${{ steps.get_tags.outputs.latest_tag }}
130+
${{ steps.get_tags.outputs.next_tag }}
131+
platforms: ${{ inputs.platforms }}
132+
133+
# Build for verification
134+
- name: Build Docker image (verification)
135+
if: github.event_name == 'push' && steps.version_check.outputs.is_next_version == 'false'
136+
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
137+
with:
138+
context: .
139+
file: ${{ inputs.docker_file }}
140+
push: false
141+
tags: |
142+
${{ steps.get_tags.outputs.version_tag }}
143+
platforms: linux/amd64 # only verify for fastest platform

0 commit comments

Comments
 (0)