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.

“Trabajo manual de GitLab en caso de fallo y automáticamente en caso de éxito”

No puedo encontrar una solución satisfactoria para mi caso.

Quiero comenzar un trabajo manualmente solo cuando un trabajo previo específico haya fallado. El trabajo en cuestión realiza una validación. Quiero hacer que el siguiente trabajo sea manual para que el usuario reconozca que algo no estuvo bien y lo haga investigar el problema y continuar solo si considera que el fallo se puede ignorar.

etapas:
  - prueba
  - validar
  - construir

lint:
  etapa: prueba
  permitir_fallo: true
  script:
    - npm run lint

check:reducer:
  etapa: prueba
  permitir_fallo: true
  script:
    - chmod +x ./check-reducers.py
    - ./check-reducers.py $CI_PROJECT_ID $CI_COMMIT_BRANCH
  excepto:
    - master
    - development

fail:pause:
  etapa: validar
  permitir_fallo: true
  script:
    - echo El trabajo 'validar:reducer' ha fallado.
    - echo Verifique el trabajo y decida si esto debe continuar.
  cuando: manual
  necesita: ["check:reducer"]

build:
  etapa: construir
  script:
    - cp --recursive _meta/ $BUILD_PATH
    - npm run build
  artefactos:
    nombre: "build"
    expirar_en: 1 semana
    rutas:
      - $BUILD_PATH
  necesita: ["fail:pause"]

Me gustaría que si check:reducer falla, fail:pause espere la entrada del usuario. Si check:reducer finaliza con 0, fail:pause debería comenzar automáticamente o build debería comenzar.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, podemos agregar una sección rules al trabajo fail:pause, que solo se activará cuando el trabajo check:reducer falle. También podemos agregar un parámetro when al trabajo build que solo se iniciará si el trabajo check:reducer tiene éxito.

    Aquí hay una versión actualizada del archivo gitlab-ci.yml que debería solucionar el problema:

    stages:
      - test
      - validate
      - build
    
    lint:
      stage: test
      allow_failure: true
      script:
        - npm run lint
    
    check:reducer:
      stage: test
      allow_failure: true
      script:
        - chmod +x ./check-reducers.py
        - ./check-reducers.py $CI_PROJECT_ID $CI_COMMIT_BRANCH
      except:
        - master
        - development
    
    fail:pause:
      stage: validate
      allow_failure: true
      script:
        - echo El trabajo 'validate:reducer' ha fallado
        - echo Verifica el trabajo y decide si esto debe continuar
      when: manual
      needs: ["check:reducer"]
      rules:
        - if: $CI_JOB_NAME == "fail:pause"
          when: on_failure
    
    build:
      stage: build
      script:
        - cp --recursive _meta/ $BUILD_PATH
        - npm run build
      artifacts:
        name: "build"
        expire_in: 1 week
        paths:
          - $BUILD_PATH
      needs: ["fail:pause"]
      when: on_success
    

    Con estos cambios, el trabajo build solo se ejecutará si el trabajo check:reducer tiene éxito, y el trabajo fail:pause solo solicitará entrada del usuario si el trabajo check:reducer falla.

Comments are closed.