Optimize CI build performance - build amd64 only for main branch
The multi-architecture builds (amd64 + arm64) were taking 15-20+ minutes due to QEMU emulation for ARM64 cross-compilation. This is too slow for regular development iteration. Changes: - Main branch builds: amd64 only (much faster, ~3-5 minutes) - Tagged releases: Still build multi-arch (amd64 + arm64) - Added Docker layer caching to speed up subsequent builds - Cache stored in registry for persistence across CI runs The 'latest' tag will be amd64-only from main branch. Users needing ARM64 should use a specific version tag (e.g., v0.1.0).
This commit is contained in:
parent
813dafb46b
commit
c448b3dcfa
1 changed files with 9 additions and 6 deletions
|
|
@ -56,7 +56,7 @@ build:test:
|
|||
- main
|
||||
- tags
|
||||
|
||||
# Build and push for main branch (multi-architecture)
|
||||
# Build and push for main branch (amd64 only for speed)
|
||||
build:main:
|
||||
stage: build
|
||||
image: docker:24-dind
|
||||
|
|
@ -64,13 +64,14 @@ build:main:
|
|||
- docker:24-dind
|
||||
before_script:
|
||||
- echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
|
||||
# Enable buildx for multi-arch
|
||||
- docker buildx create --driver docker-container --name multiarch-builder --use || docker buildx use multiarch-builder
|
||||
- docker buildx create --driver docker-container --name builder --use || docker buildx use builder
|
||||
- docker buildx inspect --bootstrap
|
||||
script:
|
||||
- |
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--platform linux/amd64 \
|
||||
--cache-from type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache \
|
||||
--cache-to type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache,mode=max \
|
||||
--tag $REGISTRY/$IMAGE_NAME:latest \
|
||||
--tag $REGISTRY/$IMAGE_NAME:main-$CI_COMMIT_SHORT_SHA \
|
||||
--push \
|
||||
|
|
@ -82,7 +83,8 @@ build:main:
|
|||
only:
|
||||
- main
|
||||
|
||||
# Release build for tags (multi-architecture)
|
||||
# Release build for tags (multi-architecture with caching)
|
||||
# Note: Multi-arch builds are slow (~15-20 min) due to QEMU emulation for ARM64
|
||||
release:multiarch:
|
||||
stage: release
|
||||
image: docker:24-dind
|
||||
|
|
@ -90,7 +92,6 @@ release:multiarch:
|
|||
- docker:24-dind
|
||||
before_script:
|
||||
- echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
|
||||
# Enable buildx for multi-arch
|
||||
- docker buildx create --driver docker-container --name multiarch-builder --use || docker buildx use multiarch-builder
|
||||
- docker buildx inspect --bootstrap
|
||||
script:
|
||||
|
|
@ -99,6 +100,8 @@ release:multiarch:
|
|||
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--cache-from type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache \
|
||||
--cache-to type=registry,ref=$REGISTRY/$IMAGE_NAME:buildcache,mode=max \
|
||||
--tag $REGISTRY/$IMAGE_NAME:$VERSION \
|
||||
--tag $REGISTRY/$IMAGE_NAME:$CI_COMMIT_TAG \
|
||||
--tag $REGISTRY/$IMAGE_NAME:latest \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue