Skip to content

Commit 17d0b28

Browse files
committed
BLO-4373 Allow to set target architecture
1 parent bc88bec commit 17d0b28

2 files changed

Lines changed: 42 additions & 5 deletions

File tree

README.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
# 🚀 GitHub Action for GitOps
22

3-
This GitHub Action can be used for our GitOps workflow. The GitHub Action will build and push the Docker image for your service and deploys
3+
This GitHub Action can be used for our GitOps workflow. The GitHub Action will build and push the Docker image for your
4+
service and deploys
45
the new version at your Kubernetes clusters.
56

67
## Requirement
78

8-
When you want to use this GitHub Action your GitHub repository should have a `dev` and `master` / `main` branch and it should use tags for
9+
When you want to use this GitHub Action your GitHub repository should have a `dev` and `master` / `main` branch and it
10+
should use tags for
911
releases.
1012

1113
- For the `dev` branch we will change the files specified under `gitops-dev`.
@@ -119,6 +121,7 @@ jobs:
119121
| `docker-build-secrets` | List of secrets to expose to the build (e.g., key=string, GIT_AUTH_TOKEN=mytoken) | |
120122
| `docker-build-secret-files` | List of secret files to expose to the build (e.g., key=filename, MY_SECRET=./secret.txt) | |
121123
| `docker-build-target` | Sets the target stage to build like: "runtime" | |
124+
| `docker-build-platforms` | Sets the target platforms for build | linux/amd64 |
122125
| `docker-build-provenance` | Generate [provenance](https://docs.docker.com/build/attestations/slsa-provenance/) attestation for the build | `false` |
123126
| `docker-disable-retagging` | Disables retagging of existing images and run a new build instead | `false` |
124127
| `gitops-organization` | GitHub Organization for GitOps | `Staffbase` |
@@ -140,7 +143,8 @@ jobs:
140143

141144
## Contributing
142145

143-
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
146+
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull
147+
requests to us.
144148

145149
## License
146150

@@ -161,4 +165,5 @@ This project is licensed under the Apache-2.0 License - see the [LICENSE.md](LIC
161165

162166
## Releasing new versions
163167

164-
Go to the release overview page and publish the draft release with a new version number. Make sure to update the floating version commit.
168+
Go to the release overview page and publish the draft release with a new version number. Make sure to update the
169+
floating version commit.

action.yml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ inputs:
3939
docker-build-target:
4040
description: "Sets the target stage to build"
4141
required: false
42+
docker-build-platforms:
43+
description: "Sets the target platforms for build"
44+
required: false
45+
default: 'linux/amd64'
4246
docker-build-provenance:
4347
description: "Generate provenance attestation for the build"
4448
required: false
@@ -151,6 +155,34 @@ runs:
151155
echo "tag=$TAG" >> $GITHUB_OUTPUT
152156
echo "tag_list=$TAG_LIST" >> $GITHUB_OUTPUT
153157
158+
- name: Verify Architecture Match
159+
shell: bash
160+
if: steps.preparation.outputs.build == 'true'
161+
run: |
162+
RUNNER_ARCH="${{ runner.arch }}" # X64 (AMD64) or ARM64
163+
TARGET_PLATFORMS="${{ inputs.docker-build-platforms }}"
164+
165+
echo "Runner CPU Architecture: $RUNNER_ARCH"
166+
echo "Requested Build Platforms: $TARGET_PLATFORMS"
167+
168+
# Check for AMD64 mismatch (Runner is X64, but user requests ONLY arm64, OR user requests multi-arch which requires emulation)
169+
if [[ "$RUNNER_ARCH" == "X64" ]]; then
170+
if [[ "$TARGET_PLATFORMS" == *"linux/arm64"* ]]; then
171+
echo "::error::Runner is X64 (Intel/AMD) but build includes 'linux/arm64'. This requires emulation. Aborting strictly."
172+
exit 1
173+
fi
174+
fi
175+
176+
# Check for ARM64 mismatch
177+
if [[ "$RUNNER_ARCH" == "ARM64" ]]; then
178+
if [[ "$TARGET_PLATFORMS" == *"linux/amd64"* ]]; then
179+
echo "::error::Runner is ARM64 (Apple Silicon/Graviton) but build includes 'linux/amd64'. This requires emulation. Aborting strictly."
180+
exit 1
181+
fi
182+
fi
183+
184+
echo "Architecture match verified for native build ✅"
185+
154186
- name: Set up Docker Buildx
155187
if: inputs.docker-username != '' && inputs.docker-password != ''
156188
uses: docker/setup-buildx-action@v3
@@ -177,7 +209,7 @@ runs:
177209
tags: ${{ steps.preparation.outputs.tag_list }}
178210
secrets: ${{ inputs.docker-build-secrets }}
179211
secret-files: ${{ inputs.docker-build-secret-files }}
180-
platforms: linux/amd64
212+
platforms: ${{ inputs.docker-build-platforms }}
181213
cache-from: type=gha
182214
cache-to: type=gha,mode=max
183215
provenance: ${{ inputs.docker-build-provenance }}

0 commit comments

Comments
 (0)