Skip to content

Commit ca8371b

Browse files
committed
arm64 metadata.json
1 parent 8f3d267 commit ca8371b

File tree

4 files changed

+94
-9
lines changed

4 files changed

+94
-9
lines changed

.github/workflows/release-prod.yaml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,12 @@ jobs:
212212
mkdir -p build
213213
./output/bin/embedded-cluster version metadata > build/metadata.json
214214
215+
- name: Upload binary artifact for metadata generation
216+
uses: actions/upload-artifact@v6
217+
with:
218+
name: embedded-cluster-linux-amd64
219+
path: output/bin/embedded-cluster
220+
215221
- name: Cache Staging Files
216222
env:
217223
S3_BUCKET: "tf-staging-embedded-cluster-bin"
@@ -247,6 +253,72 @@ jobs:
247253
build/*.tgz
248254
build/metadata.json
249255
256+
generate-metadata:
257+
runs-on: ubuntu-latest
258+
needs: [get-tag, release]
259+
strategy:
260+
matrix:
261+
arch: [amd64, arm64]
262+
steps:
263+
- uses: actions/checkout@v5
264+
265+
- name: Download AMD64 binary
266+
uses: actions/download-artifact@v6
267+
with:
268+
name: embedded-cluster-linux-amd64
269+
path: output/bin
270+
271+
- name: Make binary executable
272+
run: chmod +x output/bin/embedded-cluster
273+
274+
- name: Generate ${{ matrix.arch }} metadata
275+
run: |
276+
mkdir -p build
277+
CLUSTER_ARCH=${{ matrix.arch }} ./output/bin/embedded-cluster version metadata > build/metadata-${{ matrix.arch }}.json
278+
279+
- name: Upload metadata artifact
280+
uses: actions/upload-artifact@v6
281+
with:
282+
name: metadata-${{ matrix.arch }}
283+
path: build/metadata-${{ matrix.arch }}.json
284+
285+
upload-metadata:
286+
runs-on: ubuntu-latest
287+
needs: [get-tag, generate-metadata]
288+
strategy:
289+
matrix:
290+
arch: [amd64, arm64]
291+
steps:
292+
- uses: actions/checkout@v5
293+
294+
- name: Download metadata
295+
uses: actions/download-artifact@v6
296+
with:
297+
name: metadata-${{ matrix.arch }}
298+
path: build
299+
300+
- name: Upload to S3
301+
env:
302+
EC_VERSION: ${{ needs.get-tag.outputs.tag-name }}
303+
ARCH: ${{ matrix.arch }}
304+
S3_BUCKET: "tf-staging-embedded-cluster-bin"
305+
AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_EMBEDDED_CLUSTER_UPLOAD_IAM_KEY_ID }}
306+
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_EMBEDDED_CLUSTER_UPLOAD_IAM_SECRET }}
307+
AWS_REGION: "us-east-1"
308+
run: |
309+
./scripts/ci-upload-binaries.sh metadata
310+
311+
- name: Upload to S3 (Prod)
312+
env:
313+
EC_VERSION: ${{ needs.get-tag.outputs.tag-name }}
314+
ARCH: ${{ matrix.arch }}
315+
S3_BUCKET: "tf-embedded-cluster-binaries"
316+
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_EMBEDDED_CLUSTER_UPLOAD_IAM_KEY_ID }}
317+
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_EMBEDDED_CLUSTER_UPLOAD_IAM_SECRET }}
318+
AWS_REGION: "us-east-1"
319+
run: |
320+
./scripts/ci-upload-binaries.sh metadata
321+
250322
find-previous-stable:
251323
name: Determine previous stable version
252324
runs-on: ubuntu-latest

kinds/types/release_metadata.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
// ReleaseMetadata holds the metadata about a specific release, including addons and
99
// their versions.
1010
type ReleaseMetadata struct {
11+
Architecture string `json:"architecture"` // "amd64" or "arm64"
1112
Versions map[string]string
1213
K0sSHA string
1314
K0sBinaryURL string

pkg-new/metadata/metadata.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,10 @@ func GatherVersionMetadata(channelRelease *release.ChannelRelease) (*types.Relea
110110
}
111111

112112
meta := types.ReleaseMetadata{
113-
Versions: versionsMap,
114-
K0sSHA: sha,
115-
Artifacts: artifacts,
113+
Architecture: helpers.ClusterArch(),
114+
Versions: versionsMap,
115+
K0sSHA: sha,
116+
Artifacts: artifacts,
116117
}
117118

118119
chtconfig, repconfig, err := addons.GenerateChartConfigs(context.Background(), nil)

scripts/ci-upload-binaries.sh

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,23 @@ function kotsbin() {
135135

136136
function metadata() {
137137
if [ -z "${EC_VERSION}" ]; then
138-
echo "EC_VERSION unset, not uploading metadata.json"
138+
echo "EC_VERSION unset, not uploading metadata"
139139
return 0
140140
fi
141141

142-
# check if a file 'build/metadata.json' exists in the directory
143-
# if it does, upload it as metadata/v${EC_VERSION}.json
144-
if [ -f "build/metadata.json" ]; then
145-
# append a 'v' prefix to the version if it doesn't already have one
142+
# Upload architecture-specific metadata if provided
143+
if [ -n "${ARCH}" ] && [ -f "build/metadata-${ARCH}.json" ]; then
144+
retry 3 aws s3 cp --no-progress "build/metadata-${ARCH}.json" "s3://${S3_BUCKET}/metadata/v${EC_VERSION#v}-${ARCH}.json"
145+
146+
# For AMD64, also upload as the default metadata.json for backward compatibility
147+
if [ "${ARCH}" == "amd64" ]; then
148+
retry 3 aws s3 cp --no-progress "build/metadata-${ARCH}.json" "s3://${S3_BUCKET}/metadata/v${EC_VERSION#v}.json"
149+
fi
150+
# Fallback to legacy single metadata.json if no ARCH specified
151+
elif [ -f "build/metadata.json" ]; then
146152
retry 3 aws s3 cp --no-progress build/metadata.json "s3://${S3_BUCKET}/metadata/v${EC_VERSION#v}.json"
147153
else
148-
echo "build/metadata.json not found, skipping upload"
154+
echo "No metadata file found, skipping upload"
149155
fi
150156
}
151157

@@ -168,6 +174,11 @@ function embeddedcluster() {
168174
# there are three files to be uploaded for each release - the k0s binary, the metadata file, and the embedded-cluster release
169175
# the embedded cluster release does not exist for CI builds
170176
function main() {
177+
# If invoked with "metadata" as the first argument, only upload metadata and exit
178+
if [ "${1:-}" == "metadata" ]; then
179+
metadata
180+
return 0
181+
fi
171182
init_vars
172183
metadata
173184
if [ "${UPLOAD_BINARIES}" == "1" ]; then

0 commit comments

Comments
 (0)