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:
- 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).
- 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.
- 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.