Middle
Come creare attività ricorrenti in GitLab CI?
sobes.tech AI
Risposta dell'AI
Esistono diversi approcci per creare attività ricorrenti in GitLab CI:
- Programmi di pipeline (Pipeline Schedules): Questo è il metodo più comune e progettato appositamente per questo scopo. Configuri un orario nell'interfaccia di GitLab, indicando il branch/tag, le variabili (se necessario) e la frequenza di esecuzione (sintassi cron).
- Trigger API: Puoi usare l'API di GitLab per avviare pipeline da un sistema esterno o uno script. Questo è utile se la pianificazione è più complessa o dipende da eventi esterni.
- Variabili CI/CD per esecuzione condizionale: All'interno del file
.gitlab-ci.yml, puoi usare variabili predefinite o personalizzate per determinare le condizioni di esecuzione del task. Sebbene questo non crei una pianificazione di per sé, puoi avviare una pipeline secondo un orario (tramite Pipeline Schedules) e decidere quali task eseguire in base alle variabili di orario.
Esempio di utilizzo di Pipeline Schedules:
Nell'interfaccia di GitLab, vai al repository -> Build -> Pipeline schedules. Crea un nuovo orario indicando:
- Descrizione
- Branch/tag
- Intervallo (sintassi cron, ad esempio,
0 0 * * *per avvio quotidiano a mezzanotte) - Variabili (opzionale)
Esempio di trigger API (usando curl):
# Sostituisci Private-Token con il tuo token di accesso personale con permessi API
# Sostituisci <your_project_id> con l'ID del tuo progetto
# Sostituisci <your_ref_name> con il nome del branch o tag
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'
Esempio di utilizzo di una variabile in .gitlab-ci.yml per esecuzione condizionale:
stages:
- build
- deploy
scheduled_job:
stage: build
script:
- echo "Questo lavoro viene eseguito solo quando attivato da una pianificazione"
only:
variables:
- $CI_PIPELINE_SOURCE == "schedule"
other_job:
stage: deploy
script:
- echo "Questo lavoro viene eseguito per tutte le fonti del pipeline"
# Nessuna condizione `only: variables:`
La scelta del metodo dipende dai requisiti specifici. Per compiti semplici e ricorrenti, i Pipeline Schedules sono la scelta migliore. Per scenari più complessi o integrazione con sistemi esterni, sono adatti i trigger API. L'esecuzione condizionale con variabili è utile per controllare il flusso all'interno di un pipeline già avviato.