# ============================================================================= # Pipeline CI: DevOps Toolbox (eStargz + GZIP) # ============================================================================= # Constrói imagem em ambos os formatos para benchmark # ============================================================================= stages: - build - push variables: REGISTRY: gitea.kube.quest IMAGE_NAME: factory/devops-toolbox DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_VERIFY: 1 DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client" # ----------------------------------------------------------------------------- # Build eStargz (lazy pulling) # ----------------------------------------------------------------------------- build-estargz: stage: build image: docker:27-dind services: - docker:27-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $REGISTRY - docker buildx create --use --name multiarch --driver docker-container script: - | docker buildx build \ --platform linux/arm64,linux/amd64 \ --output type=image,name=${REGISTRY}/${IMAGE_NAME}:latest,push=true,compression=estargz,force-compression=true,oci-mediatypes=true \ --cache-from type=registry,ref=${REGISTRY}/${IMAGE_NAME}:cache \ --cache-to type=registry,ref=${REGISTRY}/${IMAGE_NAME}:cache,mode=max \ . rules: - if: $CI_COMMIT_BRANCH == "main" # ----------------------------------------------------------------------------- # Build GZIP (tradicional, para benchmark) # ----------------------------------------------------------------------------- build-gzip: stage: build image: docker:27-dind services: - docker:27-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $REGISTRY - docker buildx create --use --name multiarch --driver docker-container script: - | docker buildx build \ --platform linux/arm64,linux/amd64 \ --output type=image,name=${REGISTRY}/${IMAGE_NAME}:gzip,push=true,compression=gzip,oci-mediatypes=true \ --cache-from type=registry,ref=${REGISTRY}/${IMAGE_NAME}:cache \ . rules: - if: $CI_COMMIT_BRANCH == "main" # ----------------------------------------------------------------------------- # Tag como versão # ----------------------------------------------------------------------------- push-tags: stage: push image: docker:27-cli services: - docker:27-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $REGISTRY script: - docker buildx imagetools create -t ${REGISTRY}/${IMAGE_NAME}:v1 ${REGISTRY}/${IMAGE_NAME}:latest rules: - if: $CI_COMMIT_BRANCH == "main" needs: - build-estargz