Sobes.tech
Middle

Come creare attività ricorrenti in GitLab CI?

sobes.tech AI

Risposta dell'AI

Esistono diversi approcci per creare attività ricorrenti in GitLab CI:

  1. 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).
  2. 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.
  3. 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.