Sobes.tech
Middle

¿Cómo crear tareas recurrentes en GitLab CI?

sobes.tech AI

Respuesta de la IA

Existen varios enfoques para crear tareas recurrentes en GitLab CI:

  1. Programaciones de pipelines (Pipeline Schedules): Es el método más común y diseñado para esto. Configuras un horario en la interfaz de GitLab, indicando la rama/etiqueta, variables (si es necesario) y la frecuencia de ejecución (sintaxis cron).
  2. Triggers API: Puedes usar la API de GitLab para iniciar pipelines desde un sistema externo o un script. Esto es útil si el horario es más complejo o depende de eventos externos.
  3. Variables CI/CD para ejecución condicional: Dentro del archivo .gitlab-ci.yml, puedes usar variables predefinidas o personalizadas para determinar las condiciones de ejecución de las tareas. Aunque esto no crea un horario en sí, puedes ejecutar un pipeline según un horario (a través de Pipeline Schedules) y decidir qué tareas ejecutar basándote en las variables del horario.

Ejemplo de uso de Pipeline Schedules:

En la interfaz de GitLab, ve al repositorio -> Build -> Pipeline schedules. Crea un nuevo horario indicando:

  • Descripción
  • Rama/etiqueta
  • Intervalo (sintaxis cron, por ejemplo, 0 0 * * * para ejecución diaria a medianoche)
  • Variables (opcional)

Ejemplo de trigger API (usando curl):

# Reemplaza Private-Token por tu token de acceso personal con permisos API
# Reemplaza <your_project_id> por el ID de tu proyecto
# Reemplaza <your_ref_name> por el nombre de la rama o etiqueta

curl --request POST \
     --header 'Content-Type: application/json' \
     --header 'Private-Token: <your_private_token>' \
     --data '{
       "ref": "<your_ref_name>",
       "variables": {
         "MY_VARIABLE": "some_value"
       }
     }' \
     'https://gitlab.com/api/v4/projects/<your_project_id>/trigger/pipeline'

Ejemplo de uso de una variable en .gitlab-ci.yml para ejecución condicional:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Este trabajo solo se ejecuta cuando es activado por un horario"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Este trabajo se ejecuta para todas las fuentes del pipeline"
  # Sin condición `only: variables:`

La elección del método depende de los requisitos específicos. Para tareas simples y recurrentes, los Programaciones de pipelines son la mejor opción. Para escenarios más complejos o integración con sistemas externos, los triggers API son adecuados. La ejecución condicional con variables es útil para controlar el flujo dentro de un pipeline ya iniciado.