summaryrefslogtreecommitdiffci
diff options
from:
to:
context:
space:
mode:
authorGravatar Saya Andy <saya.andy@posteo.com> 2026-06-22 22:30:31 +0700
committerGravatar Saya Andy <saya.andy@posteo.com> 2026-06-22 22:30:39 +0700
commit4e807e9df21b44b0080487f9ae43a2d0d4011ddd (patch)
tree4a8cd4fc17502953a743c5c8e6b051f41593ba98
parent59ebca24c40390a2f7f087bab2dc83938fd0c933 (diff)
downloadweb-4e807e9df21b44b0080487f9ae43a2d0d4011ddd.tar.gz
web-4e807e9df21b44b0080487f9ae43a2d0d4011ddd.zip
feat: stitch manifests of each architecture
-rw-r--r--Jenkinsfile71
1 files changed, 63 insertions, 8 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
index ff90dad..34b6f5d 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -74,15 +74,11 @@ spec:
sh '''#!/busybox/sh
mkdir -p /kaniko/.docker
echo "{\"auths\":{\"https://registry.sayag.it\":{\"username\":\"jenkins\",\"password\":\"$REGISTRY_SAYAGIT_JENKINS_PASSWORD\"}}}" > /kaniko/.docker/config.json
- pushToTags="$IMAGE_PUSH_DESTINATION:latest $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT"
- if [ "$TAG_NAME" != "" ]; then
- pushToTags="$pushToTags $IMAGE_PUSH_DESTINATION:stable $IMAGE_PUSH_DESTINATION:$TAG_NAME"
- fi
/kaniko/executor --context `pwd` \
- --custom-platform=${GOOS}/${GOARCH} \
- --build-arg TARGETOS=${GOOS}
- --build-arg TARGETARCH=${GOARCH}
- --destination $pushToTags
+ --custom-platform=linux/${GOARCH} \
+ --build-arg TARGETOS=linux \
+ --build-arg TARGETARCH=${GOARCH} \
+ --destination $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-$GOARCH
'''
} catch (Exception e) {
echo "Caught exception: ${e.getMessage()}"
@@ -98,5 +94,64 @@ spec:
}
}
}
+ stage('Stitch Manifest') {
+ agent {
+ kubernetes {
+ defaultContainer 'manifest-tool'
+ yaml """
+apiVersion: v1
+kind: Pod
+metadata:
+ namespace: jenkins
+spec:
+ containers:
+ - name: manifest-tool
+ image: mplatform/manifest-tool:alpine-v2.2.2
+ imagePullPolicy: Always
+ entrypoint: [ 'true' ]
+ tty: true
+ resources:
+ requests:
+ cpu: "1"
+ memory: 2Gi
+ ephemeral-storage: 4Gi
+"""
+ }
+ }
+ environment {
+ IMAGE_PUSH_DESTINATION="registry.sayag.it/sayauz/web"
+ }
+ steps {
+ script {
+ env.GIT_COMMIT_SHORT = env.GIT_COMMIT ? env.GIT_COMMIT.take(7) : "unknown"
+ sh '''#!/busybox/sh
+ mkdir -p /kaniko/.docker
+ echo "{\"auths\":{\"https://registry.sayag.it\":{\"username\":\"jenkins\",\"password\":\"$REGISTRY_SAYAGIT_JENKINS_PASSWORD\"}}}" > /kaniko/.docker/config.json
+ pushToTags="$IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-$GOARCH"
+ if [ "$TAG_NAME" != "" ]; then
+ pushToTags="$pushToTags $IMAGE_PUSH_DESTINATION:$TAG_NAME-$GOARCH"
+ fi
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-ARCH \
+ --target $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-ARCH \
+ --target $IMAGE_PUSH_DESTINATION:latest
+ if [ "$TAG_NAME" != "" ]; then
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-ARCH \
+ --target $IMAGE_PUSH_DESTINATION:stable
+ manifest-tool push from-args \
+ --platforms linux/amd64,linux/arm64 \
+ --template $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-ARCH \
+ --target $IMAGE_PUSH_DESTINATION:$TAG_NAME
+ fi
+ '''
+ }
+ }
+ }
}
}