3333 # Copy all binaries to root for consistent access
3434 cp ./binaries/radar-agent-linux/radar-agent-linux ./radar-agent-linux
3535 cp ./binaries/radar-agent-linux-musl/radar-agent-linux-musl ./radar-agent-linux-musl
36+ cp ./binaries/radar-agent-linux-arm64/radar-agent-linux-arm64 ./radar-agent-linux-arm64
3637 cp ./binaries/radar-agent-darwin/radar-agent-darwin ./radar-agent-darwin
3738
3839 # Make binaries executable
5152 path : |
5253 radar-agent-linux
5354 radar-agent-linux-musl
55+ radar-agent-linux-arm64
5456 radar-agent-darwin
5557 retention-days : 1
5658
6870 name : agent-binaries
6971 path : ./
7072
73+ - name : Set up QEMU
74+ uses : docker/setup-qemu-action@v3
75+
7176 - name : Set up Docker Buildx
7277 uses : docker/setup-buildx-action@v3
7378
@@ -98,33 +103,31 @@ jobs:
98103 run : |
99104 echo "tag_name=${{ github.event.client_payload.ref }}" >> $GITHUB_OUTPUT
100105
101- - name : Build and push Debian image
106+ - name : Build and push multi-platform Debian image
102107 uses : docker/build-push-action@v5
103108 with :
104109 context : .
105- file : ./docker/Dockerfile
106- build-args : |
107- BINARY=radar-agent-linux
110+ file : ./docker/Dockerfile.multiplatform
108111 push : true
109112 tags : |
113+ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag_name }}
114+ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
110115 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:debian-${{ steps.tag.outputs.tag_name }}
111116 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:debian-latest
112117 labels : ${{ steps.meta.outputs.labels }}
113- platforms : linux/amd64
118+ platforms : linux/amd64,linux/arm64
114119
115- - name : Build and push Alpine image
120+ - name : Build and push multi-platform Alpine image
116121 uses : docker/build-push-action@v5
117122 with :
118123 context : .
119- file : ./docker/Dockerfile.alpine
120- build-args : |
121- BINARY=radar-agent-linux-musl
124+ file : ./docker/Dockerfile.alpine.multiplatform
122125 push : true
123126 tags : |
124127 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:alpine-${{ steps.tag.outputs.tag_name }}
125128 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:alpine-latest
126129 labels : ${{ steps.meta.outputs.labels }}
127- platforms : linux/amd64
130+ platforms : linux/amd64,linux/arm64
128131
129132 release :
130133 name : Create Release
@@ -156,7 +159,7 @@ jobs:
156159 run : |
157160 # Create and explicitly sign the tag with -s flag
158161 git tag -s ${{ steps.tag.outputs.tag_name }} -m "Release ${{ steps.tag.outputs.tag_name }}" --force
159-
162+
160163 # Push the signed tag to the repository
161164 git push origin ${{ steps.tag.outputs.tag_name }} --force
162165
@@ -168,24 +171,30 @@ jobs:
168171 files : |
169172 radar-agent-linux
170173 radar-agent-linux-musl
174+ radar-agent-linux-arm64
171175 radar-agent-darwin
172176 make_latest : true
173177 body : |
174178 ## Radar Agent Release ${{ steps.tag.outputs.tag_name }}
175179
176180 ### Quick Install
177181
178- **Linux (glibc):**
182+ **Linux AMD64 (glibc):**
179183 ```bash
180184 curl -L "https://github.com/redis-field-engineering/radar-agent/releases/download/${{ steps.tag.outputs.tag_name }}/radar-agent-linux" -o radar-agent
181185 ```
182186
183- **Linux (musl):**
187+ **Linux AMD64 (musl):**
184188 ```bash
185189 curl -L "https://github.com/redis-field-engineering/radar-agent/releases/download/${{ steps.tag.outputs.tag_name }}/radar-agent-linux-musl" -o radar-agent
186190 ```
187191
188- **macOS:**
192+ **Linux ARM64:**
193+ ```bash
194+ curl -L "https://github.com/redis-field-engineering/radar-agent/releases/download/${{ steps.tag.outputs.tag_name }}/radar-agent-linux-arm64" -o radar-agent
195+ ```
196+
197+ **macOS (Apple Silicon):**
189198 ```bash
190199 curl -L "https://github.com/redis-field-engineering/radar-agent/releases/download/${{ steps.tag.outputs.tag_name }}/radar-agent-darwin" -o radar-agent
191200 ```
@@ -196,13 +205,25 @@ jobs:
196205 sudo cp radar-agent /usr/local/bin/radar-agent
197206 ```
198207
199- **Docker:**
208+ **Docker (Multi-Platform - AMD64 & ARM64) :**
200209 ```bash
201- # Alpine (recommended)
202- docker pull ghcr.io/redis-field-engineering/radar-agent:alpine-${{ steps.tag.outputs.tag_name }}
210+ # Latest (Debian-based, works on both AMD64 and ARM64)
211+ docker pull ghcr.io/redis-field-engineering/radar-agent:latest
212+
213+ # Specific version
214+ docker pull ghcr.io/redis-field-engineering/radar-agent:${{ steps.tag.outputs.tag_name }}
203215
216+ # Alpine (recommended for minimal size)
217+ docker pull ghcr.io/redis-field-engineering/radar-agent:alpine-latest
218+
204219 # Debian
205- docker pull ghcr.io/redis-field-engineering/radar-agent:debian-${{ steps.tag.outputs.tag_name }}
220+ docker pull ghcr.io/redis-field-engineering/radar-agent:debian-latest
206221 ```
222+
223+ ### Platform Support
224+
225+ - **AMD64 (x86_64)**: All binaries and Docker images
226+ - **ARM64 (aarch64)**: Native binary + multi-platform Docker images
227+ - **Apple Silicon (M1/M2/M3)**: Native macOS binary + ARM64 Docker images
207228 env :
208229 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments