es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Verificar si la construcción de Docker ha fallado en el trabajo.

Obteniendo el estado de éxito del trabajo cuando la construcción de Docker falló

enter image description here

Muestra de CI

.release:build:template: &release_builder
    image: docker:stable
    stage: release:build
    services:
        - docker:dind
    before_script:
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    after_script:
        - export DOCKER_DEPLOY_IMAGE=$DOCKER_IMAGE_REPO:$(cat DOCKER_TAG)
        - docker build --build-arg DOCKER_BASE_IMAGE --build-arg DOCKER_FRONT_IMAGE --build-arg DOCKER_VENDOR_IMAGE --compress -t $DOCKER_DEPLOY_IMAGE . -f .deploy/docker/$CI_ENVIRONMENT_NAME/Dockerfile; echo $?
        - docker push $DOCKER_DEPLOY_IMAGE
    artifacts:
        paths:
            - DOCKER_TAG
.release_build_prod:
    <<: *release_builder
    only:
        - tags
    script:
        - echo $CI_COMMIT_TAG>DOCKER_TAG
    environment:
        name: prod

Intenté solucionarlo con docker build ... || exit 1 y también con echo $0? pero después de la construcción no se muestra nada y estos pasos no me ayudan a resolver el problema.

Entonces, ¿cómo puedo comprobar si el comando de construcción de Docker en GitLab finalizó sin errores o si hubo un error y el trabajo FALLÓ?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para verificar si el comando de construcción de Docker en GitLab terminó sin errores o falló, puedes usar la variable $? que devuelve el código de salida del comando anterior. En este caso, puedes modificar la sección after_script para incluir una declaración condicional que verifique si el código de salida devuelto por el comando docker build es cero (indicando éxito) o no cero (indicando fallo).

    Aquí tienes un ejemplo:

      after_script:
        - export DOCKER_DEPLOY_IMAGE=$DOCKER_IMAGE_REPO:$(cat DOCKER_TAG)
        - docker build --build-arg DOCKER_BASE_IMAGE --build-arg DOCKER_FRONT_IMAGE --build-arg DOCKER_VENDOR_IMAGE --compress -t $DOCKER_DEPLOY_IMAGE . -f .deploy/docker/$CI_ENVIRONMENT_NAME/Dockerfile
        - if [ $? -eq 0 ]; then docker push $DOCKER_DEPLOY_IMAGE; else exit 1; fi
    

    En este ejemplo, la declaración if verifica si el código de salida del comando docker build es igual a cero. Si es así, se ejecuta el comando docker push. Si no, el trabajo falla usando el comando exit 1.

Comments are closed.