Sobes.tech
Middle

¿Cómo configurar la ejecución de una tarea en GitLab al presionar un botón?

sobes.tech AI

Respuesta de la IA

Para configurar la ejecución manual de un trabajo en GitLab CI/CD, se utiliza la palabra clave when: manual en la descripción del trabajo en el archivo .gitlab-ci.yml.

Ejemplo:

stages:
  - build
  - deploy

build_job:
  stage: build
  script:
    - echo "Construyendo el proyecto..."
    # Comandos de construcción

deploy_staging:
  stage: deploy
  script:
    - echo "Desplegando en staging..."
    # Comandos de despliegue
  when: manual # Este trabajo debe iniciarse manualmente
  allow_failure: false # Por defecto false, pero se especifica explícitamente para claridad

Explicación:

  • when: manual: Indica a GitLab que este trabajo no se ejecutará automáticamente al cambiar el código (commit) o según un horario. Esperará a que el usuario lo inicie manualmente a través de la interfaz de GitLab.
  • allow_failure: false: Define si los trabajos siguientes (si los hay) deben ejecutarse si este trabajo manual termina en error. Si se establece en false (valor predeterminado), el pipeline se detendrá en caso de fallo de este trabajo. Si se establece en true, el pipeline continuará incluso si falla.

Después de agregar y hacer commit de un archivo .gitlab-ci.yml con esta configuración, en la interfaz de pipelines de GitLab (CI/CD -> Pipelines) aparecerá un botón de inicio ("Run") o su estado será mostrado como "Manual" junto al trabajo deploy_staging. Al hacer clic en este botón, se inicia la ejecución del trabajo.

También se pueden incluir trabajos manuales en etapas que automáticamente inician otros trabajos. Por ejemplo:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Construyendo..."

test_job:
  stage: test
  needs: [build_job]
  script:
    - echo "Probando..."

deploy_production:
  stage: deploy
  needs: [test_job]
  script:
    - echo "Desplegando en producción..."
  when: manual # Solo después de una prueba exitosa, y de forma manual
  variables:
    TARGET_ENVIRONMENT: "production" # Ejemplo: pasando variables a un trabajo manual

Aquí, el trabajo deploy_production solo estará disponible para su ejecución manual después de que test_job finalice con éxito.

Adicionalmente:

  • variables: Los trabajos manuales pueden usar variables definidas tanto en el archivo .gitlab-ci.yml como en la configuración del proyecto/grupo.
  • rules: Los escenarios de ejecución más complejos pueden usar la palabra clave rules junto con when: manual para definir condiciones bajo las cuales el trabajo manual estará disponible u obligatorio.
  • API: Los trabajos manuales también pueden iniciarse mediante la API de GitLab CI/CD.

En resumen, when: manual es el mecanismo principal para implementar la ejecución manual de trabajos en GitLab.