Skip to content
Snippets Groups Projects
images.gitlab-ci.yml 1.31 KiB
stages:
- build

variables:
  IMAGE_SERVER: registry.420joos.dev
  DOCKER_BUILDX_IMAGE: registry.420joos.dev/docker-buildx:1.1
  DOCKER_BUILDX_CONTEXT_NAME: autobuilder
  DOCKER_BUILDX_PLATFORMS: linux/amd64,linux/arm64
  DOCKER_BUILDX_CREATE_CMD:  docker buildx create --name $DOCKER_BUILDX_CONTEXT_NAME --platform $DOCKER_BUILDX_PLATFORMS --driver docker-container --bootstrap # --config testbuilder.toml only needed when using http image registry
  DOCKER_BUILDX_DELETE_CMD: docker buildx rm $DOCKER_BUILDX_CONTEXT_NAME
  DOCKER_PREPARE_CMD: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
  DOCKER_LOGIN_CMD: docker login $IMAGE_SERVER --username $DOCKER_USERNAME --password $DOCKER_PASSWORD
  DOCKER_LOGOUT_CMD: docker logout $IMAGE_SERVER

# Required vars:
## IMAGE_PATH
## IMAGE_NAME
# Optional vars:
.build_image_job_template:
  stage: build
  tags:
    - docker
  retry: 2
  image: $DOCKER_BUILDX_IMAGE
  allow_failure: false
  variables:
    IMAGE_PATH: "./"
  script:
    - $DOCKER_LOGIN_CMD
    - $DOCKER_PREPARE_CMD
    - $DOCKER_BUILDX_CREATE_CMD
    - docker buildx build $IMAGE_PATH $(echo $IMAGE_NAME | awk -F',' '{for (i=1; i<=NF; i++) printf "--tag %s ", $i}') --platform $DOCKER_BUILDX_PLATFORMS --builder $DOCKER_BUILDX_CONTEXT_NAME --push"
    - $DOCKER_BUILDX_DELETE_CMD
    - $DOCKER_LOGOUT_CMD