Copying labels from one stage to another

I found a way without using a file for my GitLab CI

It copies all the labels from the source image and passes a list of --label arguments to docker build

.docker_build_args: &docker_build_args
  - DOCKER_BUILD_ARGS="--build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA"
  - DOCKER_LABEL_ARGS=$(docker inspect $CI_REGISTRY/$CI_PROJECT_NAMESPACE/project:$PLATFORM_TAG | jq -r '.[] | .Config.Labels | to_entries | map("--label \(.key)=\"\(.value | tostring | gsub("\""; "\\\""))\"") | join(" ")')
  - DOCKER_ARGS="$DOCKER_BUILD_ARGS $DOCKER_LABEL_ARGS"
build_image:
  stage: deploy
  image: docker:28.0.4
  services:
    - docker:28.0.4-dind
  # Do not download artifacts from previous stage
  dependencies: []
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
  script:
    - TAG=debug
    - *docker_build_args
    - |
      eval "docker build \
      --build-arg TAG=$TAG \
      $DOCKER_ARGS \
      -t $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME ."
    - docker push $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME